Alice와 Peter가 각각 4GB USB 플래시 메모리 스틱을 가지고 있다고 가정하십시오. 그들은 무작위로 생성 된 비트를 포함하는 alice_to_peter.key
(2GB)와 peter_to_alice.key
(2GB) 라는 두 파일을 모두 스틱에 저장하고 저장합니다 . 다시는 만나지 않지만 전자적으로 의사 소통합니다. 또한 Alice는이라는 변수를 유지 alice_pointer
하고 Peter는이라는 변수를 유지 peter_pointer
하며 둘 다 초기에 0으로 설정됩니다.
Alice는 Peter에게 메시지를 보내야 할 때 메시지 n
의 n 번째 바이트가됩니다.
encrypted_message_to_peter[n] = message_to_peter[n] XOR alice_to_peter.key[alice_pointer + n]
encrypted_payload_to_peter = alice_pointer + encrypted_message_to_peter
alice_pointer += length(encrypted_message_to_peter)
(그리고 최대한의 보안을 위해 키의 사용 된 부분을 지울 수 있습니다)
Peter는을 받고 메시지 시작 부분에 저장된 내용을 encrypted_payload_to_peter
읽으며 다음을 alice_pointer
수행합니다.
message_to_peter[n] = encrypted_message_to_peter[n] XOR alice_to_peter.key[alice_pointer + n]
또한 최대 보안을 위해 메시지를 읽은 후 키의 사용 된 부분을 지 웁니다.
편집 : 실제로이 간단한 알고리즘 (무결성 검사 및 인증없이) 으로이 단계는 보안을 감소시킵니다. 아래 Pa belowlo Ebermann 게시물을 참조하십시오.
Peter가 Alice에게 메시지를 보내야 할 때, 이번에는 peter_to_alice.key
and을 사용 하여 반대를 수행합니다 peter_pointer
.
이 간단한 스키마를 사용하면 향후 50 년 동안 매일 2GB / (50 * 365) = ~ 115kB의 양방향 데이터를 전송할 수 있습니다. 더 많은 데이터를 전송해야하는 경우 더 큰 키를 사용할 수 있습니다 (예 : 오늘날의 2TB HD (1TB 키)). 향후 50 년간 하루 60MB를 교환 할 수 있습니다! 실제로 많은 데이터가 있습니다. 예를 들어, 압축을 사용하면 1 시간 이상의 고품질 음성 통신이 가능합니다.
공격자가 키없이 암호화 된 메시지를 읽을 수있는 방법이없는 것 같습니다. 무한 속도의 컴퓨터를 가지고 있더라도 무차별 강제로 가능한 모든 메시지를 제한 이하로 얻을 수 있기 때문에 천문적인 수입니다. 메시지의 일부이며 공격자는 실제 메시지를 알 수 없습니다.
내가 맞아? 이 통신 체계는 정말 절대적으로 안전합니까? 그리고 그것이 안전하다면, 그 자체의 이름이 있습니까? XOR 암호화는 잘 알려져 있지만 양쪽에 큰 키를 사용하는이 구체적인 실제 응용 프로그램의 이름을 찾고 있습니까? 이 응용 프로그램이 내 앞에 누군가를 발명 한 것을 겸손히 기대하고 있습니다. :-)
참고 : 절대적으로 안전한 경우 오늘날의 저렴한 대용량 저장 장치를 사용하면 값 비싼 양자 암호화보다 보안 통신을 수행하는 것이 훨씬 저렴하므로 보안이 동등하기 때문에 놀랍습니다!
편집 :
스토리지 비용이 감소함에 따라 앞으로 이것이 더 실용적이라고 생각합니다.안전한 통신을 영원히 해결할 수 있습니다.1 년이 지난 후에도 누군가 기존의 암호를 성공적으로 공격하고 값 비싼 구현이 안전하지 않은 경우에는 확실하지 않습니다. 의사 소통이 일어나기 전에 많은 경우에, 양측이 개인적으로 만나면 키를 생성 할 때입니다. 예를 들어 키가 큰 HD를 가질 수있는 잠수함과 각 잠수함에 대한 HD를 가질 수있는 잠수함 간의 군사 통신에 완벽하다고 생각합니다. 은행 계좌를 관리하는 등 일상 생활에서도 실용적 일 수 있습니다. 계좌를 만들 때 은행 등을 만나기 때문입니다.