- 하나의 비밀키를 양쪽 모두가 같이 사용
- 암호화와 복호화에 사용하는 키가 같은 암호화 알고리즘
✔︎ 종류
DES, 3DES, AES, SEED, ARIA
✔︎ 장점
✔︎ 단점
👉 해결방법
- 공개키와 비밀키 두 개를 사용
- 암호화와 복호화에 사용하는 키가 서로 다름
- 암호화 할 때의 키를 공개키(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만 볼 수 있음)
✔︎ 장점
✔︎ 단점
속도가 느리기 때문에 긴문서의 암호화하는 경우보다 대칭키 알고리즘의 키 값에 대한 암호에 사용
🖍 Advanced
SSL(=TLS) 탄생의 배경
1. A가 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화하고 B에게 보냄
2. B는 암호문을 받고, 자신의 비밀키로 복호화함
3. B는 A로부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보냄
4. A는 자신의 대칭키로 암호문을 복호화함
5. 앞으로 이 대칭키로 암호화를 통신함
즉, 대칭키를 주고받을 때만 공개키 암호화 방식을 사용하고 이후에는 계속 대칭키 암호화 방식으로 통신하는 것!
대칭키 = 비밀키
비대칭키 = 공개키