✅ 대칭키(=비밀키)란?
하나의 비밀키를 양쪽 모두가 같이 사용
암호화와 복호화에 사용하는 키가 같은 암호화 알고리즘
✔︎ 종류
DES, 3DES, AES, SEED, ARIA
✔︎ 장점
- 공개키와 비밀키를 별도로 가지는 것 보다 계산 속도가 빠르다는 장점
✔︎ 단점
- 키를 교환해야 하므로 키 배송 도중 탈취될 수 있는 문제가 있다.
- 비밀키 하나만 알아내면 암호화된 내용을 해독 가능하므로 안전하지 않음
- 사람이 증가할수록 전부 키교환을 해야하므로 관리해야 할 키가 방대하게 많아진다.
👉 해결방법
- 키의 사전 공유
- 키 배포 센터 운영
- Diffie-Hellman 키 교환에 의한 해결
- 공개키 암호에 의한 해결
✅ 공개키(=비대칭키)란?
공개키와 비밀키 두 개를 사용
암호화와 복호화에 사용하는 키가 서로 다름
암호화 할 때의 키를 공개키(public key), 복호화할 때의 키를 개인키(private key)
공개키는 누구나 알 수 있지만, 그에 대응하는 비밀키는 소유자만이 알 수 있어 특정한 비밀키를 가지는 사용자만이 내용을 열어볼 수 있도록 하는 방식
A가 B에게 데이터를 보낸다고 할 때, A는 B의 공개키로 암호화한 데이터를 보내고
B는 본인의 개인키로 해당 암호화된 데이터를 복호화해서 보기 때문에 암호화된 데이터는 B의 공개키에 대응되는 개인키를 갖고 있는 B만이 볼 수 있게 되는 것이다.
1) B 공개키/개인키 쌍 생성
2) 공개키 공개(등록), 개인키는 본인이 소유
3) A가 B의 공개키를 받아옴
4) A가 B의 공개키를 사용해 데이터를 암호화
5) 암호화된 데이터를 B에게 전송
6) B는 암호화된 데이터를 B의 개인키로 복호화 (개인키는 B만 가지고 있기 때문에 B만 볼 수 있음)
✔︎ 장점
- 따로 키 교환을 할 필요가 없음
- 공개키로 암호화한 메세지는 수신자의 개인키로만 해독할 수 있어 안전함(기밀성, 인증기능을 제공함)
✔︎ 단점
- 대칭키(비밀키)에 비해 속도가 (약 1000배) 느리다.
속도가 느리기 때문에 긴문서의 암호화하는 경우보다 대칭키 알고리즘의 키 값에 대한 암호에 사용
✔︎ 대표적인 공개키 암호화 알고리즘
- RSA
- 큰 정수의 인수분해의 어려움에 안정성을 두고 있다.
- 암호화 과정에서 난수를 사용하지 않기 때문에 같은 메세지에 대한 암호문은 항상 같다는 특징이 있다.
- 엘가말
- 이산대수 문제의 어려움에 기반을 둔 최초의 공개키 암호 알고리즘
- 엘가말로 암호화하면 메세지의 길이가 두 배로 늘어나는 특징이 있다. 하지만 암호화할 때 난수를 이용하므로 같은 메세지에 대해 암호화하여도 암호화할 때마다 서로 다른 암호문을 얻게 되는데, 이것이 장점이다.
- ECC
- 타원곡선 상의 이산대수 문제에 기반한 것으로 안정성이 높고 속도가 빨라서 새로운 공개키 암호 방식으로 각광받고 있다.
- 전원의 양이 한정된 휴대폰 등과 같은 이동 통신 기기의 암호화에 적합한 방식이다.
✅ SSL(=TLS) 원리
0. A(=Client)가 B(=Server)에게 통신을 요청하면 B가 A에게 공개키를 전송함
1. A가 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화하고 B에게 보냄
2. B는 암호문을 받고, 자신의 비밀키로 복호화함
3. B는 A로부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보냄
4. A는 자신의 대칭키로 암호문을 복호화함
5. 앞으로 이 대칭키로 암호화를 통신함
즉, 대칭키를 주고받을 때만 공개키 암호화 방식을 사용하고 이후에는 계속 대칭키 암호화 방식으로 통신하는 것!
'CS > 네트워킹' 카테고리의 다른 글
[네트워킹] NAT (Network Address Translation) (0) | 2022.03.10 |
---|---|
[네트워킹] DNS(Domain Name System) (0) | 2022.03.08 |
[네트워킹] Unicast, Broadcast, Multicast, Anycast (0) | 2022.03.05 |
[네트워킹] DHCP (Dynamic Host Configration Protocol) (0) | 2022.03.05 |
[네트워킹] MAC 주소 (0) | 2022.02.11 |
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!