이것이 실행 가능한 키 교환 알고리즘이 아닌 이유는 무엇입니까? [복제]

Nov 21 2020

왜 이런 종류의 알고리즘을 Diffie-Hellman 대신 키를 교환하는 데 사용할 수 없는지 궁금합니다.

  1. Alice는 Bob과 공유 할 키를 결정합니다.
  2. Alice는 키와 길이가 같은 바이트 스트림을 생성합니다 (안전하게는 CSPRNG 사용).
  3. Alice는 Bob에게 다음을 보냅니다.
    C1 = (key ^ alice_random_bytes)
    
  4. Bob은 Alice와 비슷한 방식으로 임의의 바이트 스트림을 생성합니다.
  5. Bob이 Alice에게 돌아옵니다.
    C2 = (C1 ^ bob_random_bytes)
    
  6. Alice C2는 임의의 바이트 시퀀스를 다시 사용하여 XOR을 수행 하여 그대로두고 key ^ bob_random_bytesBob에게 보냅니다.
    C3 = (C2 ^ alice_random_bytes)
       = (C1 ^ bob_random_bytes ^ alice_random_bytes)
       = (key ^ alice_random_bytes ^ bob_random_bytes ^ alice_random_bytes)
       = (key ^ bob_random_bytes)
    
  7. Bob C3은 임의의 바이트로 XOR 하고 키를 얻습니다.
    K = (C3 ^ bob_random_bytes)
      = (key ^ bob_random_bytes ^ bob_random_bytes) 
      = key
    

이것은 Diffie Hellman보다 훨씬 간단 해 보입니다. 그래서 저는 궁금했습니다. 그러한 알고리즘의 문제는 무엇입니까?

답변

34 kelalaka Nov 21 2020 at 18:38

Alice 랜덤 바이트 를 ARB로, Bob 랜덤 바이트 를 BRB로 단순화했습니다 . 그런 다음 프로토콜은 다음과 같습니다.

앨리스는 알고 $key$$ARB$그리고 보냅니다 $$C_1 = key \oplus ARB$$

밥은 알고 $C_1$$BRB$그리고 보냅니다

$$C_2 = C_1 \oplus BRB = key \oplus ARB \oplus BRB$$

앨리스는 $C_2 \oplus key \oplus ARB = key \oplus key \oplus ARB \oplus BRB = BRB$

앨리스는 알고 $key, ARB,$$BRB$그리고 보냅니다

$$C_3 = (C_2 \oplus ARB) = key \oplus ARB \oplus BRB \oplus ARB = key \oplus BRB$$

우선, 이것은 3 패스 프로토콜을 필요로합니다.

이제 관찰자는

\begin{align} C_1 & = key \oplus ARB \oplus {}\\ C_2 & = key \oplus ARB \oplus BRB\\ C_3 & = key \oplus \phantom{ARB}\oplus BRB \\ \end{align}

수동적 인 관찰자 (도청 자)는 단순히 키를 도출하기 위해 모두 x-or $$key = C_1 \oplus C_2 \oplus C_3.$$따라서 공격자에 대한 약한 가정에 대해 안전하지 않습니다. 수동태!.

따라서 xor에 의존하지만 관찰자가 무엇을 얻고 계산할 수 있는지 확인하지 않았습니다.

반면 DHKE (Diffie–Hellman key exchange) 는 유출됩니다.$g^a$$g^b$ Alice는 임의의 정수를 선택합니다. $a$그리고 보냅니다 $g^a$ 그리고 Bob은 임의의 정수를 선택합니다. $b$그리고 보냅니다 $g^b$. 발견$a$ 또는 $b$그들로부터 이산 로그 문제가 있습니다. 반면에 CDH (Computational Diffie–Hellman) 가정은$g^{ab}$ 주어진 $g^a$$g^b$, 그리고 DHKE는 이것에 중계됩니다. 이산 로그가 쉬운 경우 CDH가 쉽습니다. 일반적으로 우리는 그 반대를 모릅니다.

1 JasonGoemaat Nov 23 2020 at 21:10

키 교환 알고리즘은 도청으로부터 보호하려고합니다. 유선 (C1, C2 및 C3)을 통해 전송 한 내용이 차단되었다고 가정해야합니다. C2는 단순히 C1 xor Bob의 임의 바이트이고 C3는 단순히 키 xor Bob의 임의 바이트이기 때문에 이는 메서드의 문제입니다.

C1, C2 및 C3의 공격자는 C1 x 또는 C2를 사용하여 Bob의 임의 바이트를 가져온 다음 C3으로 xor하여 Bob처럼 키를 가져올 수 있습니다.