비밀문서는 1000년보다 더 전부터 사용돼 왔다. 어떤 기술, 알고리즘을 사용하여 암호화하고 복호화했을까?
우선 암호학에 쓰이는 용어들에 대해 알아보자!
plaintext : 평문, 상대방에게 보내고 싶은 데이터.
ciphertext : 비문/암호문, 원본을 제3자가 알아보지 못하도록 바꾼 데이터.
encryption(enciphering) : 암호화
decryption(deciphering) : 복호화
Bob이 Alice에게 비밀스러운 통신을 하려고한다.
여기서 밥이 쓴 "Hello Alice!"는 plaintext(평문)다. 이제 Bob은 secret key를 사용하여 plaintext를 ciphertext(비문)로 변환한다. 이 때 input이 key와 plaintext이고 encryption algorithm을 사용하여 ciphertext로 만든다. encryption algorithm은 다음 내용에서부터 차근차근 설명할 예정이다.
그럼 ciphertext를 받은 Alice는 어떤 작업을 할까? 그림에서처럼 secret key는 송신자와 수신자가 공유한다. 따라서 Bob이 encryption한 과정을 반대로 하면 된다. input이 key와 ciphertext이고 Bob이 사용한 encryption algorithm을 역으로 적용하면 plaintext("Hello Alice!")를 구할 수 있다.
위의 암호화 복호화가 잘 이루어지기 위해서는 2가지 조건이 필요하다.
- Strong encryption algorithm
- Secret key in a secure fashion
어찌보면 당연한 조건들이라 할 수 있다.
공격자가 비문을 여러개 획득하고나서 쉬운 암호 알고리즘이 적용됐다면 Key를 유추할 수 있는 위험성이 있다. 따라서 비문을 여러개 가진 공격자가 풀기 어려운 알고리즘을 사용하는 것이 안전성을 높여준다.
두번째로 당연히 key는 안전하게 관리될 필요가 있다. key를 알고 알고리즘을 알면 더이상 비문은 비문이라고 할 수 없을 것이다.
Type of attack | 공격자가 알고 있는 내용 | 난이도 |
---|---|---|
Ciphertext only | 알고리즘,비문 | 어려움 |
Known plaintext | 알고리즘,비문,예시 몇 개 | |
Chosen plaintext | 알고리즘, 비문, 공격자가 고른 평문 | |
Chosen ciphertext | 알고리즘, 비문, 공격자가 고른 비문 | |
Chosen text | 알고리즘,비문, 공격자가 고른 평/비문 | 쉬움 |
지금까지 암호학의 기본에 사용되는 용어들을 정리해봤다. 생각보다 상식선에 가까울만한 내용들이라 이해하기에 어려움이 없었다.