암호화란
암호(Cryptography)란 0과 1로 이루어진 이진수 데이터를 수학적 계산을 통한 비트 변경을 수행하는 것을 말합니다. 정상적인 데이터(평문 - Plaintext)의 2진수 데이터를 암호화라는 과정으로 데이터를 변경하고, 복호화라는 과정을 통해 데이터를 원래대로 돌리는 기술을 의미합니다.
양방향 암호화에 사용되는 2가지 기법
- 대칭키 암호화 기법
- 비대칭키(공개키) 암호화 기법
대칭키 암호화 기법이란
- 대칭키(Symmetric Key) 암호화란 하나의 키로 암호화와 복호화를 모두 수행하는 것을 말합니다. 이러한 대칭키 암호 알고리즘은 다양한 종류가 있습니다.
장점
- 시스템 개발 환경에 용이하다.
- 데이터를 암호화하기 위한 연산이 빨라 대용량 데이터 암호화에 적합하다.
단점
- 강한 보안을 위해 키를 주기적으로 교환해주는 것이 좋다.
- 당사자간에 동일한 키를 공유해야 하기 때문에 키관리의 어려움이 있다.
- 부인 방지 기능을 제공하지 못한다
비대칭키 암호화 기법이란
- 비대칭키(Asymmetric Key) 암호화는 다른 말로 공개키 암호 알고리즘라고 알려져 있습니다. 이는 하나의 키가 아닌 암호화에 쓰이는 키 값과 복호화에 쓰이는 키 값이 다른 것을 의미합니다.
- 공개키 암호는 대칭키 암호의 키 전달에 있어서 취약점을 해결하고자 한 노력의 결과로 탄생했습니다. 한 쌍의 키가 존재하며, 하나는 특정 사람만이 가지는 개인키(또는 비밀키)이고 다른 하나는 누구나 가질 수 있는 공개키입니다
장점
- 키 분배 및 키 관리가 용이하다.
- 기밀성, 무결성을 지원한다.
- 부인 방지 기능을 제공한다.
- 암호학적 문제를 해결할 수 있다.
단점
- 상대적으로 키의 길이가 길다.
- 연산속도가 느리다.
부인 방지 기능이란
부인 방지란 송신자나 수신자가 메세지를 주고받은 사실을 부인하지 못하도록 방지하는 것을 말한다.
예를 들어 A 가 B 에게 돈을 빌린 후 '차용증'에 서명했는데, 후에 A 는 돈을 빌리지 않았으며 차용증 역시 자신의 서명이 아니라고 부인 하는 경우를 생각해 볼 수 있다.
이 때, B 는 문서에 있는 서명이 A 의 것이 맞다는 것을 확인하는 것이 '부인 방지'이다.
비대칭키/공개키 암호화 방식에서는 본질적으로 '발행자의 증명'과 동일한 절차로 이루어진다.
- B는 A에게 개인키/공개키를 생성한 뒤 공개키를 공개하도록 요구한다.
- B는 A에게 '문서'를 개인키로 암호화할 것으로 요구한다.
- B는 이 '암호화된 문서'를 수령한다.
- B는 '암호화된 문서'를 A 의 공개키로 해독하여, 이 문서가 A 의 개인키로 제대로 암호화 되었음을 검증할 수 있다.
- 만약 해독되지 않는다면, 개인키-공개키 쌍이 맞지 않음을 의미한다. 공개한 공개키가 잘못되었거나, 다른 개인키로 암호화 했음을 뜻한다.
이 '암호화된 문서'는 A 의 공개키로만 해독이 가능하므로, 이 '암호화된 문서'는 A 만이 발행할 수 있다는 증거가 된다. 또한, 변조되지 않았음도 동시에 증명할 수 있다.
대칭키와 비대칭키의 혼합 사용
- A가 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화하고 B에게 보냄
- B는 암호문을 받고, 자신의 비밀키로 복호화함
- B는 A로부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보냄
- A는 자신의 대칭키로 암호문을 복호화함
- 앞으로 이 대칭키로 암호화를 통신함
HTTPS
- HTTPS(HyperText Transfer Protocol Secure)는 HTTP에 SSL/TLS 프로토콜을 추가하여 데이터 통신을 암호화한 프로토콜로, 웹 브라우저와 서버 간의 안전한 통신을 보장합니다. 이는 TCP 기반에서 동작하며, 비대칭키 암호화로 세션 키를 교환한 후 대칭키 암호화로 데이터를 암호화하여 데이터의 기밀성, 무결성, 신뢰성을 제공합니다.
HTTPS에서는 대칭키 암호화와 비대칭키 암호화를 혼합하여 사용함으로써 보안성과 효율성을 모두 달성합니다.
- 비대칭키 암호화(공개키 암호화):
- 역할: 초기 통신 단계에서 세션 키(대칭키)를 안전하게 교환하고, 서버의 신원을 인증하는 데 사용됩니다.
- 과정:
- 클라이언트는 서버에 접속하여 서버의 디지털 인증서를 요청합니다.
- 서버는 자신의 공개키가 포함된 디지털 인증서를 클라이언트에게 전송합니다.
- 클라이언트는 인증서를 신뢰할 수 있는 인증 기관(CA)를 통해 검증합니다.
- 클라이언트는 세션 키로 사용할 프리마스터 시크릿을 생성하고, 서버의 공개키로 암호화하여 서버로 전송합니다.
- 서버는 자신의 개인키로 이를 복호화하여 세션 키를 얻습니다.
- 대칭키 암호화:
- 역할: 실제 데이터 통신을 암호화하는 데 사용됩니다.
- 이유: 대칭키 암호화는 속도가 빠르고 효율적이어서 대량의 데이터 전송에 적합합니다.
- 과정:
- 클라이언트와 서버는 공유한 세션 키를 사용하여 모든 통신 데이터를 암호화하고 복호화합니다.
- HTTPS의 동작 원리 요약:
- TCP 연결 수립: 클라이언트와 서버는 TCP 3-웨이 핸드셰이크로 연결을 수립합니다.
- SSL/TLS 핸드셰이크: 비대칭키 암호화를 통해 세션 키를 안전하게 교환합니다.
- 데이터 암호화 통신: 대칭키 암호화를 통해 빠르고 안전하게 데이터를 전송합니다.