이전에 HTTP와 HTTPS에 대해 포스팅 한 적이 있다. >이전 포스팅: HTTP? HTTPS?
이번에는 암호화와 복호화에 사용되는 대칭키/비대칭키에 대해 더 자세히 알아보고자한다.
- 암호화(Encryption): 데이터를 읽을 수 없는 형태로 변환하는 과정
- 복호화(Decryption): 암호화된 데이터를 원래의 평문(일반적인 텍스트)으로 변환하는 과정
대칭키(Symmetric Key)는 암호화와 복호화에 동일한 키를 사용하는 암호화 기술이다.
데이터를 암호화할 때 사용되는 키와 데이터를 복호화할 때 사용되는 키가 같으므로, '키의 길이' 와 '안전한 키 교환' 이 중요한 문제이다.
대표적인 대칭키 암호화 알고리즘에는 DES(Data Encryption Standard), AES(Advanced Encryption Standard), Triple DES 등이 있다.
대칭키 암호화는 빠르고 효율적이지만, 키 관리와 안전한 키 교환의 어려움이 있다.
따라서 이를 보완하기 위해 *공개키 암호화와 함께 사용되기도 한다.
비대칭키(Asymmetric Key)는 암호화와 복호화에 각각 다른 키(공개키와 개인키)를 사용하는 암호화 기술이다.
- 공개키(Public Key): 누구나 사용할 수 있고 공개되어 있는 키 (암호화에 사용)
- 개인키(Private Key): 특정 개체(보통은 키 소유자)만이 알고 있는 비밀한 키 (복호화에 사용)
비대칭키 암호화에서는 공개키와 개인키가 쌍을 이루며, 공개키로 암호화된 데이터는 해당 개인키로만 복호화할 수 있다. 따라서 공개키를 통해 안전하게 데이터를 암호화할 수 있고, 개인키는 소유자만이 가지고 있으므로 안전하게 데이터를 복호화할 수 있다.
대표적인 비대칭키 암호화 알고리즘에는 RSA(Rivest-Shamir-Adleman), ECC(Elliptic Curve Cryptography)등이 있다. 이러한 알고리즘은 키 교환 및 디지털 서명 등 다양한 보안 응용 분야에서 사용되고 있다.
대칭키와 비대칭키를 서버와 사용자에 대한 예시를 직접 그려보았다.
역시 그림으로 그려 설명하니 가장 이해가 쉬운 것 같다.
이제는 HTTPS의 통신구조에 대해 더 잘 이해 할 수 있을 것이다.