암호화
수정하기
문서 생성 2021-04-23 21:04:11 최근 수정 2022-11-18 23:49:53
- 임의의 키를 통해 평문을 암호문으로 만드는 처리
- 반대로 키를 통해 암호문을 평문으로 만드는 처리는 복호화라고 한다.
- RSA 공개키 암호화 알고리즘은 큰 수를 소인수분해하기 어렵다는 점을 이용한 암호화 알고리즘으로 두 개의 큰 소수를 기반으로 두개의 키를 생성하고, 이를 이용해 메세지를 암호화/복호화한다. (키가 있어야 복원 가능)
암호화의 방식
대칭키 암호화
- 암호의 발신자와 수신자가 동일한 알고리즘과 그 열쇠를 공유하는 방식
- 예
- 알파벳을 1칸 앞으로(secret key) 옮기는 방식의 암호 알고리즘을 이용하면
hello
는ifmmp
로 암호회 되고, 암호 키를 알고 있다면 역으로 복호화도 가능하다.
- 알파벳을 1칸 앞으로(secret key) 옮기는 방식의 암호 알고리즘을 이용하면
- 속도가 빠르고 연산량이 적지만, 키가 유실되면 보안 체계가 그대로 무너지기 때문의 키의 분배가 힘들다.
비대칭키 암호화
- 대칭키의 키 분배 문제를 해결한 방식
- 공개키(Public Key), 개인키(Private Key)라고 불리는 두개의 키를 생성
- 공개키로 암호화한 암호문은 개인키로만 복호화가 가능, 개인키로 암호화한 암호문은 공개키로만 복호화가 가능
- 발신자는 사전에 입수한 수신자의 공개키로 메시지를 암호화하고 수신자는 전달 받은 암호문을 개인키로 복호화할 수 있다.
- 서버-클라이언트와 같은 일대다 구조에서 키의 분배 문제를 해결할 수 있지만 속도가 느리고 연산량이 많은 단점이 있다.
- 공개키는 모두에게 공개되어 있다. 그래서 누가 중간에 가로챌 수 있지 않나?
- -> '무엇이 암호화된 것이냐' 보다 '누가 보낸 것이냐'에 초점을 두는 것
- 따라서 공개키로 열리는 것이라면 보낸이가 개인키로 암호화했다는 것이 증명된다. 즉, 신원확인이 되는 것.
전자서명
- 비대칭키 알고리즘인 RSA는 전자서명에 많이 이용되고 있다.
- 데이터의 작성자를 증빙하기 위해 데이터에 전자적인 서명을 첨부하는 것
인증서
- 단순히 전자서명만으로는 데이터의 생성자, 즉 공개키 소유자의 실제(오프라인) 신원을 증빙할 수 없다는 문제가 있음
- 전자서명에 이용할 키 쌍을 정부기관이나 은행 등 공인된 기관에서 개인정보를 인증해 발급받을 수 있다.
- 인증서에는
- 발급자의 신원 정보
- 발급자의 공개키
- 인증 유효기간
- 인증기관 정보
- 위 모든 내용에 대한 인증기관의 전자서명
- 공개키 및 인증서를 활용하는 소프트웨어, 플랫폼, 정책, 제도 등을 통틀어 공개키 기반 구조(PKI; Public Key Infrastructure)라고 한다.
- HTTPS, SFTP, SSH, SCP 등 SSL 위에서 작동하는 프로토콜, 공인 인증서를 이용한 금융거래까지
SSL 연결 과정 (SSL HandShake)
- 서버는 클라이언트에게 인증서(+공개키) 전달
- 이때 클라이언트는 서버의 인증서를 본인이 미리 알고 있는 CA 목록을 통해 검증해서, 신뢰할 수 없는 서버의 경우 유저에게 경고 가능
- 클라이언트는 대칭키를 하나 생성해서 서버의 공개키로 암호화하여 서버에 전달
- 이후 양측간에 주고 받는 데이터는 대칭키로 암호화
- SSL에서는 비대칭키로 최초의 연결을 맺지만, 실제 통신에서는 서버측의 연산량 절감을 위해 대칭키를 사용한다.
HTTPS (HTTp over SSL)
- Let's Encrypt 라는 비영리 CA가 있음
- HTTPS의 보급을 위해 무료로 인증서를 발급해주고 있다.