나만의 작은 도서관
[Network] 대칭 키 암호화 방식과 공개 키 암호화 방식 본문
대칭 키 암호화(Symmetric Key Encryption)
대칭 키 암호화(Symmetric Key Encryption)방식은 하나의 키를 사용하여 데이터를 암호화하고 복호화하는 방식입니다. 즉, 데이터를 암호화하기 위해 특정 키를 사용했다면, 복호화 할 때도 동일한 키를 사용한다는 것입니다.
작동 원리
- 키 공유: 송신자와 수신자는 미리 비밀 키를 안전하게 공유합니다.
- 암호화: 송신자는 비밀 키를 사용해 데이터를 암호화합니다.
- 전송: 암호화된 데이터를 수신자에게 전송합니다.
- 복호화: 수신자는 동일한 비밀 키를 사용해 암호화된 데이터를 복호화합니다.
장점
- 빠른 처리 속도: 대칭 키 암호화는 일반적으로 공개 키 암호화보다 빠르며, 대량의 데이터를 처리하는 데 효율적입니다.
- 간단한 구현: 대칭 키 방식은 상대적으로 간단한 알고리즘을 사용합니다.
단점
- 키 관리 문제: 비밀 키를 안전하게 송신자와 수신자 간에 공유하고 저장하는 것이 어렵습니다.
- 확장성의 문제: 사용자 수가 증가하면 각 사용자 쌍마다 고유한 키를 관리해야 하므로, 키의 수가 기하급수적으로 증가합니다.
대칭키 암호화 알고리즘 종류
- AES(Advanced Encryption Standard)
- DES(Data Encryption Standard)
- 3DES(Triple DES)
- Blowfish
공개 키 암호화(Public Key Encryption)
비대칭 키 방식으로도 불리는 공개 키 암호화(Public Key Encryption)방식은 두 개의 키(공개 키와 비밀 키)를 사용하여 데이터를 암호화하고 복호화하는 방식입니다. 여기서 공개 키는 누구나 접근 가능하며, 비밀 키는 소유자만이 알고 있습니다.
특징
공개 키 암호화 방식은 평문(위 예시에서 data와 같은)을 암호화 할 때 공개 키를 사용해서 암호화 합니다. 공개 키로 암호화된 암호문은 해당 공개키의 발급자인 유저에게 지급된 비밀 키를 통해서만 복호화를 할 수 있습니다. 반대로, 유저가 비밀 키를 통해 암호화할 수도 있는데, 이 경우 복호화를 하기 위해서는 해당 유저의 공개 키로만 복호화 할 수 있습니다.
작동 원리
- 키 쌍 생성: 각 사용자는 공개 키와 비밀 키 쌍을 생성합니다.
- 공개 키 공유: 각 사용자는 자신의 공개 키를 다른 사용자에게 공유합니다.
- 암호화: 송신자는 수신자의 공개 키를 사용해 데이터를 암호화합니다.
- 전송: 암호화된 데이터를 수신자에게 전송합니다.
- 복호화: 수신자는 자신의 비밀 키를 사용해 암호화된 데이터를 복호화합니다.
왜 공개 키 방식을 사용할까?
대칭 키 방식의 한계
본인만 사용하는 데이터라면 사실 공개 키 암호화 방식을 사용할 필요가 없습니다. 본인이 아닌 누군가에게 복호화 키에 대한 정보를 알려줄 필요가 없기 때문에 암호화된 데이터를 통신을 통해 전송하는 경우 키에 대한 정보를 전송할 필요가 없게됩니다. 이런 경우 그저 간단하고 쉬운 대칭 키 암호화 방식을 사용해도 아무런 문제가 없습니다. 문제는 다른 사람들이 해당 데이터에 접근하게 하고 싶을 경우에 발생합니다.
접근을 허용하고 싶은 사람들에게 직접 찾아가 키에 대한 정보를 줄 수는 없는 노릇이기에 통신을 통해 키에 대한 정보를 전달해야 합니다. 통신을 통해서 다른 사람들에게 데이터와 함께 해당 키에 대한 정보를 보내게 되는 겁니다. 그런데, 여기서 악의적인 의도로 누군가가 해당 키에 대한 정보를 훔쳐갔다면 그 사람 또한 데이터를 복호화 할 수 있는 권한이 생기게 됩니다. 이런 결과는 원하지 않았을 뿐더러 암호화를 한 이유마저 사라지게 됩니다.
하지만 공개 키 방식을 사용하게 되면 전송한 데이터에 대한 정보를 훔져간다 하더라도 복호화 할 수 없습니다. 공개 키는 누구나 알 수 있기 때문에 악의적인 누군가 또한 공개 키를 알 수 있지만, <공개 키, 비밀 키>쌍에 대한 정보를 전부 알지 못해 복호화를 할 수 없게됩니다. 통신을 통해 전송된 적이 없는 비밀 키에 대한 정보는 오직 한 사람, 본인만 알고 있기 때문입니다.
장점
- 키 배포 문제 해결: 공개 키는 자유롭게 배포할 수 있으므로 키 배포 문제를 해결합니다.
- 디지털 서명: 비밀 키로 데이터를 암호화하면 해당 사용자의 신원을 확인할 수 있는 디지털 서명을 생성할 수 있습니다.
단점
- 느린 속도: 공개 키 암호화는 대칭 키 암호화에 비해 속도가 느립니다.
- 복잡한 구현: 공개 키 알고리즘은 수학적으로 복잡하고 계산 비용이 많이 듭니다.
사용 사례
- SSL/TLS: 웹 브라우저와 서버 간 안전한 통신을 보장합니다.
- 전자 메일 암호화: 이메일 메시지를 보호합니다.
- 디지털 서명: 문서와 트랜잭션의 무결성과 신뢰성을 보장합니다.
공개키 암호화 알고리즘 종류
- RSA(Rivest-Shamir-Adleman)
- ECC(Elliptic Curve Cryptography)
- DSA(Digital Signature Algorithm)
참고한 자료
'Common > CS-네트워크' 카테고리의 다른 글
[Network] TCP vs UDP (1) | 2024.06.28 |
---|---|
[Network] 1분 간단 질문. TCP Handshake란 무엇인가요? (0) | 2024.06.27 |
[Network] 로드 밸런싱(Load Balancing) (1) | 2024.06.26 |
[Network] 1분 간단 질문. OSI 7계층이란 무엇일까요? (0) | 2024.06.26 |
[Network] OSI 7계층 #5. 응용 계층, DNS, HTTP (0) | 2024.06.19 |