비대칭 암호라고도 불림.
기존에 우리가 계속 공부해오던건 대칭키 암호였다. 이놈은 문제점이 좀 있었지.
일단 첫번째, 키 분배가 굉장히 까다로웠다.
두번째, 너무 많은 키를 요구한다.
그런 이유로 공개키 암호화 라는 녀석이 등장한다. 그렇다고 대칭키를 안쓰는건 아니다.
공개키 암호화는 공개키, 비밀키 두가지를 한쌍으로 동시에 사용한다.
RSA라는 친구가 특히 많이 사용된다. ( 요건 나중에 설명함)
일반적으로 공개키 알고리즘은 대칭키 알고리즘보다 속도가 좀 느리다.
공개키 암호화는 2가지 기능을 제공하는데,
암호/복호화와 디지털 서명이다.
1. 암호화/복호화
* 송신자는 수신자의 공개키를 이용하여 메세지를 암호화 한다.
* 수신자는 송신자의 비밀키를 이용하여 메세지를 복호화 한다.
2. 디지털 서명
* 송신자는 비밀키를 이용해 메세지에 서명을 한다.
* 수신자는 송신자의 공개키를 이용해 메세지 서명을 해독한다.
일단 기본적인 공개키 암호/복호화 과정을 보자.
최초에 수신자 B가 공개키, 개인키 1쌍을 만든다. 그리고 공개키를 A에게 보낸다.
"야 공개키 줄테니까 이걸로 암호화 해서 보내라 그래야 내가 개인키로 풀수있으니까" 라면서.
그럼 A가 B의 공개키를 받아 그걸로 평문을 암호화해서 전송한다.
그걸 B가 받으면 자신의 개인키를 이용해 복호화 하면 전송이 완료되는 그런 과정이다.
쉽게 생각해서 공개키는 그저 암호화를 시키는 키 이고, 개인키는 복호화만 시키는 키이다.
공개키는 뽀록나도 별로 상관없지만.. 비밀키는 꼭꼭꼭 이름값을 하도록 해줘야 한다.
공개키 암호화 방식은 인증과 기밀성 면에서 튼튼하다고들 한다.
위 그림은 인증면에서 튼튼하다는 얘기다. KRa 는 a의 개인키 KUa는 a의 공개키라는 말이다.
물론 암호화/복호화 과정이 아니라 디지털 서명과정이다. 중간에 cryptanalyst (공격자)가
개인키를 알 수 없으니까 위조된 서명문 작성이 불가능하다. (평문은 알 수 있다.)
다음은 기밀성, 인증 모두 제공하는 경우이다.
개인키로 서명하고, 공개키로 암호화 하여 기밀성과 인증을 제공한다는 그림이다.
공개키 암호를 위한 요구사항에 대해 좀 알아볼텐데, 조건 뭐 그런것이다.
여기서 Diffie와 Hellman 이라는 사람들이 말한거다. (알고리즘과는 관계없음)
1. key pair 생성이 쉽다.
2. ciphertext를 생성하기 쉽다.
3. ciphertext를 복호화 하기 쉽다.
4. 공개키로부터 개인키를 결정하는 것은 불가능하다.
5. 공개키와 ciphertext로 plaintext를 복원하는 것은 불가능하다.
뭐 이정도 된다. 그냥 공개키를 알면 딱히 알필요 없는 내용이다.
보통 공개키가 안전하긴 하지만 속도가 느릿느릿하다.
그래서 상대적으로 보안은 약하지만 속도가 빠른 대칭키와 섞어서 쓰면 좋다.
뭐 어떻게 섞는지는 정확한 예를 보지 않아 모르겠지만.. 그렇다!
'IT 그리고 정보보안 > Knowledge base' 카테고리의 다른 글
공개키의 분배 (Public-Key Distribution) (0) | 2021.04.16 |
---|---|
RSA (Rivest, Shamir, and Adleman) 알고리즘 (0) | 2021.04.16 |
블록 암호 운영 모드 (Cipher Block Modes of Operation) (0) | 2021.04.16 |
AES 알고리즘 (Advanced Encryption Standard) (0) | 2021.04.16 |
대칭키 암호 알고리즘 (Symmetric key Cipher) (0) | 2021.04.16 |