이 간단한 XOR 암호화 통신은 절대적으로 안전합니까?


23

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.keyand을 사용 하여 반대를 수행합니다 peter_pointer.

이 간단한 스키마를 사용하면 향후 50 년 동안 매일 2GB / (50 * 365) = ~ 115kB의 양방향 데이터를 전송할 수 있습니다. 더 많은 데이터를 전송해야하는 경우 더 큰 키를 사용할 수 있습니다 (예 : 오늘날의 2TB HD (1TB 키)). 향후 50 년간 하루 60MB를 교환 할 수 있습니다! 실제로 많은 데이터가 있습니다. 예를 들어, 압축을 사용하면 1 시간 이상의 고품질 음성 통신이 가능합니다.

공격자가 키없이 암호화 된 메시지를 읽을 수있는 방법이없는 것 같습니다. 무한 속도의 컴퓨터를 가지고 있더라도 무차별 강제로 가능한 모든 메시지를 제한 이하로 얻을 수 있기 때문에 천문적인 수입니다. 메시지의 일부이며 공격자는 실제 메시지를 알 수 없습니다.

내가 맞아? 이 통신 체계는 정말 절대적으로 안전합니까? 그리고 그것이 안전하다면, 그 자체의 이름이 있습니까? XOR 암호화는 잘 알려져 있지만 양쪽에 큰 키를 사용하는이 구체적인 실제 응용 프로그램의 이름을 찾고 있습니까? 이 응용 프로그램이 내 앞에 누군가를 발명 한 것을 겸손히 기대하고 있습니다. :-)

참고 : 절대적으로 안전한 경우 오늘날의 저렴한 대용량 저장 장치를 사용하면 값 비싼 양자 암호화보다 보안 통신을 수행하는 것이 훨씬 저렴하므로 보안이 동등하기 때문에 놀랍습니다!

편집 : 스토리지 비용이 감소함에 따라 앞으로 이것이 더 실용적이라고 생각합니다.안전한 통신을 영원히 해결할 수 있습니다.1 년이 지난 후에도 누군가 기존의 암호를 성공적으로 공격하고 값 비싼 구현이 안전하지 않은 경우에는 확실하지 않습니다. 의사 소통이 일어나기 전에 많은 경우에, 양측이 개인적으로 만나면 키를 생성 할 때입니다. 예를 들어 키가 큰 HD를 가질 수있는 잠수함과 각 잠수함에 대한 HD를 가질 수있는 잠수함 간의 군사 통신에 완벽하다고 생각합니다. 은행 계좌를 관리하는 등 일상 생활에서도 실용적 일 수 있습니다. 계좌를 만들 때 은행 등을 만나기 때문입니다.


4
사용할 키의 어느 부분을 조정하기위한 특정 구성표 이외의 이것은 단지 일회성 패드 입니다. 그러나 자세히 살펴보면 실제로 99 %의 사용 사례에는 유용하지 않은 것으로 나타났습니다.

10
이 질문은 특정 암호화 알고리즘의 장점에 관한 것이므로 crypto.stackexchange.com에 더 적합 할 수 있습니다 . 질문을 그곳으로 옮기기 위해 중재자주의 플래그를 지정하고 마이그레이션을 요청할 수 있습니다.
Bart van Ingen Schenau 2016 년

12
OTP는 1 세기 전에 발명되었으며, 세계 대전에서 실제 종이 패드로 사용되었습니다. ( en.wikipedia.org/wiki/One-time_pad ) 암호화의 문제는 현재 키 교환입니다.
로봇 고트

6
이것은 여전히 ​​두 당사자가 다시 만날 때까지 모든 예상 데이터에 대해 충분한 고유 키를 생성하는 문제를 해결하고 실제로 무작위 프로세스를 통해 키를 생성해야한다는 점에 유의하십시오. 의사 난수 생성기는 분석에 취약하므로 동일한 PRNG를 사용하는 더 많은 샘플을 사용할 수있게됩니다.
keshlam 2016 년

1
@keshlam. 진정한 양자 난수 생성은 매우 저렴 해지고 있습니다. 휴대폰에서 양자 난수 생성 : arxiv에서 흥미로운 기사 arxiv.org/abs/1405.0435
user3123061

답변:


50

예, 이것은 일회용 패드 입니다. 키 재료를 재사용하지 않으면 이론적으로 안전합니다.

단점은 통신 주체 쌍마다 하나의 키가 필요하고 통신하기 전에 키 자료를 안전하게 교환 할 수있는 방법이 필요하다는 것입니다.


52
"이론적으로 안전하다"는 것은 열쇠가 정말로 무작위적이고 재사용되지 않는다면 수학적으로 깨지지 않는다는 것을 의미한다고 강조 할 가치가 있다고 생각합니다 . 이는 암호화의 어느 곳에서나 얻을 수있는 가장 강력한 보증입니다.
Michael Borgwardt

1
@MichaelBorgwardt 거기에 큰 포인트가 있습니다. 이 경우 "이론적으로 안전한"은 실제로 "실제적으로 안전한"보다 낫습니다.
Mark

2
예 : 16GB의 연속 바이트가 0 인 2GB 임의 키가 있습니다.
Michael

@Michael 그 일이 일어날 확률은 10 ^ 27 중 1입니다.
이번

1
@Floris 나의 "계산": 바이트에는 256 개의 가능한 값이 있습니다. 256 개 중 1 개는 모두 0이됩니다. 256 ^ 16은 16 바이트의 기회를 얻습니다. 그런 다음 바이트 수를 2GB로 나눕니다. 어쨌든 여기에서 16의 나눗셈을 놓친 것 같습니다. (1024 * 1024 * 1024 * 1024 * 2 * (1/16)) / (256 ^ 16) 마지막 포인트는 어쨌든이 계산과 관련이 없습니다.

32

Vatine의 답변에서 알 수 있듯이 알고리즘은 기본적으로 일회용 패드입니다.

그러나 메모 중 하나에 댓글을 달려면

참고 : 오늘날의 저렴한 대용량 메모리를 사용하면 값 비싼 양자 암호화보다 동등한 보안 통신 방식과 실질적으로 훨씬 안전하기 때문에 절대적으로 안전하다면 놀랍습니다!

내 대답은 아니요, 놀랍지 않습니다. 악마는 항상 세부 사항에 있으며, 악마는 열쇠를 교환합니다. 귀하의 방법은 완벽한 대면 키 교환에 달려 있습니다. 나는 물건을 사거나 다른 안전한 연결을 원할 때마다 인터넷의 모든 판매자에게 4GB 플래시 디스크를 가지고있는 제임스 본드를 보낼 여유가 없다.

마지막으로 알고리즘의 XOR 측면은 중요하지 않습니다. 간단한 대체 암호는 OTP만으로도 충분합니다. OTP의 강점은 키가 재사용되지 않으며 James Bond가 양 당사자의 키를 완벽하게 교환한다고 가정합니다 (즉, 사전 보안 키 교환).


13
OTP 비밀번호에 대한 다른 것은 키가 한 암호화에 대한 메시지로 (적어도)이며, 필요가 있다는 것입니다 매우 높은 품질의 난수 소스를.
Donal Fellows

많은 암호화 알고리즘은 어떻게 든 키를 임의의 데이터와 구별 할 수없는 데이터 스트림으로 변환 한 다음 해당 데이터를 일회용 패드로 사용하여 작동합니다. 공격자의 관점에서 볼 때, 실제로 무작위 데이터와 무작위 데이터와 구별 할 수없는 데이터 (차별, 차이를 발견하면 구분할 수 없었던 데이터)에는 차이가 없으므로 이론 상으로는 OTP만큼 안전합니다. . 물론 데이터가 실제 무작위 데이터와 구별 할 수 없다고 말할 때 일반적으로 몇 가지 경고가 있습니다. 이 설명은 물론 과도한 단순화입니다.
Brian

21

일회용 패드는 메시지 만 읽을 수있는 공격자에 대해 무조건 (수학적으로 입증 된) 개인 정보 보호를 보장하지만 몇 가지 약점이 있습니다.

  • 일반 텍스트를 올바르게 추측하는 가로 채기 공격자는 암호 텍스트를 원하는 길이 (같은 길이)로 조작 할 수 있습니다.

  • 공격자가 일부 메시지 (또는 그 일부)를 삽입하거나 삭제하면 Alice와 Bob의 포인터가 동기화되지 않고 향후 모든 통신이 중단됩니다.

    업데이트 : 두 당사자가 두 포인터를 모두 추적한다고 가정했습니다. 현재 포인터 값을 보내면 두 번 패드 공격 (같은 범위의 키를 두 번 이상 사용할 수있는 경우) 또는 DOS 공격 (같은 키 범위를 허용하지 않는 경우)에 취약합니다 예를 들어 삭제하여 두 번 이상 사용).

이러한 문제는 무결성 및 인증 보호 기능이 없기 때문에 발생합니다. 완벽한 암호는 있지만 MAC은 없습니다.

일회용 패드 프로토콜에 MAC을 추가하여 실제로 보호하십시오. 각 메시지는 "체크섬 (checksum)"을 가져야한다. "체크섬 (checksum)"은 추정 된 발신자가 실제로 보낸 것이며 그 사이에 수정되지 않았 음을 보장한다. 또한 수신자가 이전 메시지를 잃어 버렸을 때 사용할 키 또는 복제 된 메시지를 거부 할 키 부분을 알 수 있도록 시퀀스 번호를 보내야합니다.이를 체크섬 계산에 포함 시키십시오.

일반적인 MAC 알고리즘은 여기에서 수행하지만 일회성 다항식 MAC을 사용하여 일회성 패드와 일치하는 보안을 원할 수 있습니다. (암호화 키 전후의 비트에서 MAC 키를 가져 오십시오. 즉, 두 목표에 대해 하나의 키를 재사용하지 마십시오.)


공격자가 일부 메시지 (또는 그 일부)를 삽입하거나 삭제하면 Alice와 Bob의 포인터가 동기화되지 않고 향후 모든 통신이 중단됩니다. 포인터는 독립적이며 동기화 할 필요가 없으므로 메시지가 손실 될 경우 향후 통신이 중단되지 않습니다 (메시지를 암호화하는 데 사용되는 키의 실제 오프셋이 해당 메시지와 함께 전송 됨). 그러나 부분적으로 맞습니다. 동기화되지 않은 메시지는 수신 측의 키 부분으로 삭제 된 메시지가 수신되지 않아 지워지지 않습니다 (사용 된 부분은 다음 수신 메시지와 함께 지워집니다).
user3123061 2016 년

그러나 당신이 옳습니다. 간단한 알고리즘 미스 무결성 및 인증을 제시했습니다. 실제적인 구현은보다 견고해야합니다.
user3123061 2016 년

내가 당신이라면 무결성과 인증을 으 rug하지 않을 것입니다. 의 기술 적응 선택 암호문 공격은 브레이크에 대한 무결성 보호의 부재 활용 비밀을 . 나는 고전적인 일회성 패드 (당신이 재발 명 한 것)가 명백한 수학적 견고 함에도 불구 하고이 공격 때문에 안전하지 않다고 말할 수 있습니다 .
zwol

2
적응 형 선택 사이퍼 텍스트 공격은 사람이 확인한 OTP에 대한 공격을 선택하기가 매우 어렵습니다. OOS가 알려지고 공격자가 꽤 빨리 펑크됩니다. 리시버가 기계 처리되어 응답을 생성하는 경우에만이 공격은 아무 소용이 없습니다.
Joshua

@Zack OTP에는 많은 문제가 있지만 기밀성을 위협하는 것은 없습니다. 이전 메시지의 plantext + key를 완벽하게 추측하더라도 다음 메시지는 완전히 새로운 독립 키 (대규모 크기)로 암호화됩니다. 여러 상호 작용에 적응할 것은 없습니다.

4

실제로 완전히 안전하지는 않습니다. 프로토콜 누출은 통신 된 메시지의 길이입니다.

예를 들어, 스파이가 "yes"또는 "no"로 응답하고 길이 = 2를 확인하면 "no"라고 추론 할 수 있습니다.

문맥을 추측 할 수 있다면 알려진 길이에서만 추론 할 수있는 것이 실제로 놀랍습니다.


3
임의의 정크 메시지로 메시지를 채울 수 있으므로 메시지 길이는 고정 블록 크기의 배수입니다 (예 : 256 자). 그것은 OTP를 더 빨리 사용하는 비용으로 간단한 분석을하지 않을 것입니다.
Peter Bagnall

실제로 - 당신은 이후 수 있습니다 향후 50 년 동안 매일 ~ 115kB를 보내, 각 블록이 될 것이라고 예상 할 수 수단 길이는 중요하지 않다 적어도 20킬로바이트,에서.
apnorton
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.