one-time pad(일회용패드)는 전사공격에서 키 공간을 모두 탐색하더라도 해독할 수 없는 암호이다.
평문과 랜덤한 비트열을 XOR연산을 하여 암호문을 생성하는 방법이다.
"PARIS" 라는 문자열을 일회용패드로 암호화 해보자.
우선 "PARIS"라는 문자열을 ASCII코드로 부호화하여 비트열을 준비한다.
P |
A |
R |
I |
S |
01010000 |
01000001 |
01010010 |
01001001 |
01010011 |
평문길이와 같은 40비트의 랜덤비트열을 준비한다.(비트열은 손이 가는대로 눌러서 만들었음)
KEY | 11010001 | 00010110 | 10101010 | 10100111 | 11000111 |
평문과 키 비트열의 XOR을 계산한다.
평문 | 01010000 | 01000001 | 01010010 | 01001001 | 01010011 |
키 | 11010001 | 00010110 | 10101010 | 10100111 | 11000111 |
(평문 XOR 키) 암호문 | 10000001 | 01010111 | 11111000 | 11101110 | 10010000 |
일회용패드 복호화는 암호화의 역계산이므로 암호문과 키의 XOR을 계산하면 평문을 얻을 수 있다.
암호문 | 10000001 | 01010111 | 11111000 | 11101110 | 10010000 |
키 | 11010001 | 00010110 | 10101010 | 10100111 | 11000111 |
(암호문 XOR 키) 평문 | 01010000 | 01000001 | 01010010 | 01001001 |
01010011 |
일회용 패드는 매우 단순하지만 현실적인 시간 내에 해독이 가능하기는 매우 어렵다.
왜냐하면 아무리 임의의 크기인 키 공간 전체를 빠르게 계산할 수 있는 컴퓨터가 발명되어
암호문을 복호화 했다고 하더라도 복호화한 평문이 올바른 평문인지 아닌지 판정할 수가 없기 때문이다.
하지만 일회용 패드는 아래와 같은 이유 때문에 사용 되지 않는다.
1. 키 배송문제
일회용패드를 사용하여 통신을 한다면 송/수신자가 동일한 키가 필요하다
수신자에게 키를 안전하게 보낼 수 있는 방법이 있다면
평문 그 자체를 안전하게 보낼 방법도 있을 것이다.
2. 키 보존
일회용패드에서는 평문과 같은 비트길이의 키가 필요하다.
그리고 그 키는 암호해독자에게 들키지 않도록 보존되어야 한다.
평문과 같은 비트길이의 키를 안전하게 보존할 수 있다면
평문 그 자체도 안전하게 보존할 수 있을 것이다.
3. 키 재사용
일회용패드에서는 과거에 사용한 패드를 재사용하는 일은 절대로 있어서는 안된다.
과거에 사용한 키가 누설되어 버리면 과거의 통신내용이 모두 복호화 될 것이다.
4. 키 동기화
평문이 100MB의 길이라고 한다면 키도 100MB의 길이가 될 것이다.
송/수신자 간에 키의 비트열이 1 비트라도 어긋나게 되면
수신자는 복호화가 불가능할 것이다.
5. 키 생성
재현성이 없는 실제 난수를 대량으로 생산해내야 한다.
일회용패드는 실용적인 암호는 아니지만
스트림암호(Stream cipher)에 활용되고 있다.
<참고 : 히로시 유키 - 알기 쉬운 정보보호개론>
'학부 > Network Security' 카테고리의 다른 글
ECB(Electric CodeBook)모드 (0) | 2019.04.20 |
---|---|
Triple-DES(트리플D (0) | 2019.04.20 |
DES(Data Encryption Standard) (0) | 2019.04.20 |
Simple Substitution Cipher(단일치환암호) (0) | 2019.04.20 |
Caesar cipher(시저암호, 카이사르 암호) (0) | 2019.04.20 |
댓글