설명
- 암호화와 복호화에 서로 다른 key를 사용하는 암호
- 공개키(Public Key): 암호화에 사용하는 키
- 개인키(Private Key): 복호화에 사용하는 키
실제 사용 예시
- A가 B에게 데이터를 전송하려고 함
- B가 공개키와 개인키 쌍 생성
- B가 A에게 공개키 전달
- A가 평문을 공개키로 암호화 후 B에게 암호문 전송
- B가 암호문을 받아서 개인키로 복호화
장점
- 공격자가 중간에서 공개키를 훔쳐보더라도 암호문 복호화 불가능
- 공개키는 다른 사람에게 노출되어도 문제 없기 때문에 누구에게나 쉽게 전달 가능
단점
- 바꿔치기에 취약함
- 공격자가 공개키와 개인키 쌍 생성
- B가 A에게 공개키를 보낼 때, 공격자가 중간에서 B의 공개키를 공격자의 공개키로 바꿔치기해서 A에게 전달
- A는 공격자의 공개키로 암호화 후 B에게 암호문 전송
- 공격자는 중간에서 A의 암호문을 가로챈 뒤 공격자의 개인키로 복호화
- 공격자는 복호화한 평문을 B의 공개키로 암호화 후 B에게 암호문 전송
- A와 B는 중간에서 데이터가 노출된 걸 인지하지도 못함
- 암복호화에 걸리는 속도가 대칭키 암호에 비해 월등히 느림
대표 알고리즘
- RSA: 현재 가장 많이 이용되고 있는 비대칭키 알고리즘