취미가 좋다
[보안] 1. 보안 기초, 암호화 본문
웹 보안에 대해서 알아보자.
보안이 왜 필요할까?
통신이 이루어질 때 데이터가 암호화되어 있지 않다면 다른 사람이 가로채서 보거나 데이터를 조작할 수 있다.
그래서 개인정보를 보호하기 위해 웹 보안이 필요하다.
보안을 지키기 위해 필요한 3가지
기밀성 (Confidentiality) | 내 정보를 탈취되지 않도록 하는 것 |
무결성 (Integrity) | 내 정보가 조작되지 않았다는 것을 증빙하는 것 |
인증 (Authentication) | 권한이 있는 사람에게만 정보에 접근할 수 있는 것 |
암호 관련 용어
암호화 (Encryption) | 특정 방법을 통해 평문을 암호문으로 변경하는 작업 |
복호화 (Decryption) | 암호화 된 문구를 해독하여 평문으로 변경하는 작업 |
평문 (Plaintext) | 일반인 누구나 읽을 수 있는 암호화 되어 있지 않은 문서 |
암호문 (Cyphertext) | 암호화되어 있는 문자열 |
단방향 암호화
암호문을 평문으로 복호화하는 것이 불가능한 암호화 기법
즉, 평문을 암호문으로 만들 수 있지만, 그 암호문을 다시 평문으로 만들 수 없다.
로그인할 때 사용하는 아이디와 비밀번호를 저장할 때 주로 사용한다.
나의 아이디와 비밀번호를 DB에 저장했다가 유출이 된다면 큰 문제가 발생한다.
하지만 정보를 암호화해서 저장한다면 유출되어도 큰 문제가 없다.
그래서 로그인할 때 아이디와 비밀번호를 암호화한 후 DB에 저장된 암호문과 비교하는 방식으로 로그인을 진행한다.
이런 단방향 알고리즘을 해시 함수라고 부른다.
MD5, SHA256, SHA512 다양한 종류가 있고 현재는 SHA256 사용을 권장한다.
이 사이트에서 실습이 가능하다.
양방향 암호화 - 대칭키 방식
양방향은 암호문을 복호화할 수 있는 알고리즘이다.
즉, 평문을 암호문으로 만들 수 있고 암호문을 평문으로 만들 수도 있다.
양방향 암호화의 대칭키 방식은 하나의 키를 사용하는 방식이다.
이를 대칭키라고 부르고, 대칭키로 암호화도 하고 복호화도 한다.
또한 타인에게 공개하면 안되므로 비공개키라고도 부른다.
이 사이트에서 실습이 가능하다.
Key of the encryption에 같은 키를 넣는다면, 평문과 암호문을 서로 암호화하거나 복호화할 수 있다.
대칭키 방식의 가장 큰 문제는 첫 키 배송이다.
대칭키는 양쪽 모두 가지고 있어야 하므로 처음 한 번은 암호화되지 않은 키를 주고 받아야 한다.
이 때 누군가 가로챌 수 있기 때문에 위험하다.
즉, 안전하게 데이터를 주고 받기 위해서 암호문을 만들었지만, 정작 암호화에 필요한 키를 주고 받을 때는 안전하게 전달할 수가 없다.
현재 가장 보편적으로 쓰이는 대칭키 암호화 방식은 AES이다.
128~256비트 키를 적용할 수 있어 보안성이 뛰어나며 공개된 알고리즘이라 누구든 사용할 수 있다.
양뱡향 암호화 - 비대칭키 방식
비대칭키 방식은 암호화하는 키와 복호화하는 키 2가지를 사용하는 방식이다.
키가 A, B가 있다고 가정하자.
A가 암호화한 것을 B가 복호화할 수 있다.
B가 암호화한 것은 A가 복호화할 수 있다.
보안을 위해 하나는 모두에게 공개하는 공개키(Public key) 다른 하나는 공개하지 않는 비밀키 (Private key)라고 한다.
이 사이트에서 실습할 수 있다.
RSA라는 대표적인 공개키 암호화 알고리즘 종류 중 하나이다.
비대칭형 암호의 단점으로는 암호화 및 복호화 과정이 느리다는 것이다.
그리고 메시지를 가로채서 공개키로 이상 한 내용을 암호화한 메시지를 보내는 공격에 취약합니다.
이러한 문제의 해결은 다음 글에서 해결해보겠습니다.