프로젝트에 JWT를 도입하면서 암호화에 대한 개념도 접하게 되었지만, 용어 정리가 명확하게 되지 않아 헷갈리는 일이 많았습니다. 따라서 이번 아티클에서는 공개키와 개인키, 그리고 대칭키와 비대칭키에 대해 정리해보고자 합니다.
대칭키
대칭키란 어떤 정보를 암호화, 혹은 복호화할 때 사용하는 키가 동일한 경우입니다. 대칭키 암호화 방식을 사용하는 경우, 어떤 정보가 A라는 키로 암호화 되었다면 수신하는 쪽에서도 동일하게 A라는 키로 복호화해야 합니다.
대칭키 방식은 암호화 / 복호화 과정에 있어 속도가 빠르다는 장점이 있으나, 키를 안전하게 교환해야 하는 문제점을 가지고 있습니다. 키를 가진 누구나 암호화 / 복호화가 가능하기 때문에 탈취되었을 때의 위험도가 크기 때문입니다.
따라서 많은 암호화 통신에서 뒤에서 설명할 '공개키 암호화 방식'을 이용해 대칭 키를 교환하고, 실제 통신은 대칭 키로 진행합니다.(TLS 프로토콜이 이런 원리를 기반으로 합니다.)
대표적인 대칭키 알고리즘으로는 SEED, AES, DES, ARIA 등이 있습니다.
비대칭키
어떤 정보를 암호화, 복호화할 때 사용하는 키가 다른 경우를 의미합니다. 대칭키와는 다르게 비대칭키를 통해 암호화를 하는 경우에는 1. 개인키 방식과 2. 공개키 방식의 암호화로 나뉘게 됩니다. 여기서 공개키란, 누구나 알고 있는 키를 의미하며 개인키란 사용자 '개인'의 키를 의미합니다.
- 공개키를 이용하는 암호화 방식
공개키로 암호화는 경우, 사용자의 개인키로만 복호화가 가능합니다(공개키로는 복호화가 불가능합니다). 공개키는 누구나 알 수 있지만, 개인키는 키의 소유자만이 알 수 있어서 '특정한 사용자에게 내용을 전달하는 경우' 사용됩니다.
공개키로 암호화를 하기 때문에 누구나 암호화를 하는 것은 가능하지만, 암호화된 데이터를 볼 수 있는 것은 개인키를 갖고 있는 사용자 뿐입니다. 하지만 암호화 / 복호화를 위해 복잡한 수학 연산을 수행하기 때문에 대칭키 알고리즘에 비해 현저히 속도가 느리다는 단점이 있습니다.
- 개인키를 이용하는 암호화 방식
개인키로 암호화는 경우에는 공개키로만 복호화가 가능합니다. 공개키로 복호화가 가능하다는 것은 누구든지 복호화할 수 있다는 것인데, 그럼에도 이 방식이 존재하는 이유는 '누가 정보를 전송했냐'에 초점을 맞춘 방식이기 때문입니다.
개인키로 암호화를 했으니 암호화 주체를 알 수 있고, 받는 쪽에서는 데이터를 열람할 수 있더라도 누가 보냈는지 알 수 있다는 것이죠. 이런 기술은 데이터 제공자의 신원이 보장되는 '전자서명' 등의 공인인증체계의 기본이 된다고 합니다.
참고 자료
https://ko.wikipedia.org/wiki/%EA%B3%B5%EA%B0%9C_%ED%82%A4_%EC%95%94%ED%98%B8_%EB%B0%A9%EC%8B%9D
https://universitytomorrow.com/22
'네트워크' 카테고리의 다른 글
CSMA/CD, CSMA/CA (1) | 2024.03.26 |
---|---|
Software Defined Networking(SDN) (0) | 2024.03.23 |
Broadcast Domain & Collision Domain (2) | 2024.03.17 |
HTTP 요청 및 응답 구조 알아보기 (2) | 2023.09.04 |
Oauth의 등장 배경 및 개념 이해해보기 (0) | 2023.08.15 |