OTP암호화
One Time Pad 암호화는 해독이 거의 불가능합니다.
이 암호화의 키는 한번만 사용됩니다. 이로인해 최고의 무결성과 기밀성을 보장합니다.
OTP의 키는 랜덤으로 생성되며 평문의 크기와 동일합니다.
OTP의 핵심은 안전한 키 교환에 있습니다.
2000년대에 홈뱅킹이 시작되던 시점에 은행에서 나눠주는 OTP를 생각해보면 작은 기기를 은행에 가서 받아와야 했습니다.
직접 만나서 신원을 확인하고 전달하는것이 가장 안전하다는 뜻 입니다.
안전한 통신의 예시
이러한 특징은 군사적 목적에 잘 부합합니다.
예시로 앨리스는 사단장이고 밥과 캐롤은 대대장입니다. (앨리스가 가장 계급이 높음) 앨리스는 대대장들로부터 최고로 안전하게 통신을 하고 싶어합니다.
1. 사전 키전달
- 앨리스는 매월 1일 자신의 사무실에서 대대장과의 간담회를 가집니다.
- 앨리스는 자신의 컴퓨터에 2TB하드디스크3개를연결합니다.
- 각각의 하드디스크에는 1TB용량의 동일한 키 파일을 생성하고 저장합니다.
- 앨리스는 대대장 간담회에서 직접 만나 회의를 한 후 밥과 캐롤에게 각각 하드디스크를 나눠주고 본인이 하나를 갖습니다.
2. 통신
- 사무실에 돌아온 밥과 캐롤은 하드디스크를 자신의 컴퓨터에 설치합니다.
- 앨리스가 메시지를 보내고 싶을 때에는 자신의 컴퓨터에서 암호화 작업을 하여 전송합니다.
- 네트워크는 일반 인터넷을 사용하면 됩니다. 카카오톡도 상관이 없습니다.
- 암호화된 파일을 받은 밥은 자신의 키를 이용하여 암호를 해독합니다.
- 암호를 풀면 앨리스가 보낸 내용을 확인할 수 있습니다.
- 키가 동일하므로 밥은 캐롤에게도 보안통신을 할 수 있습니다.
취약점
이 방식은 키가 탈취당하면 암호화가 풀립니다. 따라서 키는 네트워크가 연결되어있지 않은 환경에 놓는것이 좋습니다.
은행에서 받아온 OTP는 서랍에 넣어두고 위의 예시에서는 컴퓨터를 분리하여 네트워크가 없는 컴퓨터에서 작업하고 네트워크가 연결된 컴퓨터에서는 전송만 하는 역할로 분리를 할 수 있습니다.
숫자로보기
앨리스는 밥의 성과에 만족하였습니다.
따라서 “A”라는 문자를 보안통신으로 보내고 싶습니다.
- A는 아스키코드 로 십진수 65 이며 65는 이진수로
0100 0001입니다. - 이제 앨리스는 랜덤으로 생성해놓은 키를 조회합니다. 사용하지 않은 키 중 첫번째 부분은
1010 0011같이 생겼습니다. - 이제 키를 해석하기를 0은 해당위치의 숫자를 바꾸지 않음. 1은 해당위치의 숫자를 바꿈 이라고 해석하기로 합의했습니다.
- 앨리스는 이 규칙으로
1110 0010이라는 암호문을 얻었습니다.
놀라운 점은 평문을 키가 지시하는대로 바꾸는것과 키를 평문으로 생각하고 평문의 지시로 바꾸는것이 같은 결과를 낸다는 점 입니다.
| 평문 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
| 키 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 |
| 암호문 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 |
밥이 해독을 하는 과정
- 밥은 일반 네트워크로 1110 0010이라는 숫자를 받습니다.
- 밥이 자신의 키에서 앨리스와 같은위치의 키를 읽었더니 키는 1010 0011을 찾았습니다.
- 앨리스와 합의한 위의 규칙을 동일하게 적용합니다.
- 밥은 0100 0001 이라는 결과를 얻었고 이를 아스키코드로 찾아본 결과 A라는 평문을 얻게 되었습니다.
- 따라서 밥은 안전한 통신으로 앨리스가 자신에게 A라고 보냈다는것을 알게 되었습니다.
| 암호문 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 |
| 키 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 |
| 평문 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
XOR연산
이러한 연산은 XOR연산이라고 합니다. XOR연산은 더하기와 유사한 기호로 나타내는 만큼 더하기로 해석을 하여도 됩니다. 단 이때 1+1 =2 가 아닌 1+1=0 으로 해석하여야 합니다. 이진수에서는 2를 나타낼 수 없기 때문입니다. 그리고 2가 나왔다고 이진수 덧셈을 하는 방식으로 다른 자릿수에 1을 더해주면 안됩니다. 각각의 자릿수에서 연산을 하여야 합니다.
| 입력 1 | 입력 2 | 결과 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |