본문 바로가기

Library/Cryptography

station-to-station protocol(STS)

중간자 공격을 막기 위한 표준적인 방법은 디지털 서명을 사용하는 station-to-station protocol(STS)이라 불리는 방법이다. 각각의 사용자 U는 검증 알고리즘 ver(U)를 가지는 서명 함수 sig(U)를 가진다. 예를 들어, sig(U)는 RSA나 ElGamal 서명을 사용할 수도 있고, ver(U)는 이 서명이 유효한지 검사한다. 검증 알고리즘 ver(U)는, ver(U)가 Eve에 의한 것이 아닌, 사용자 U의 검증 알고리즘임을 인증하고 공개한다.


Alice와 Bob이 Encryption 함수 Ek를 사용하는 키 K를 생성하려고 한다고 하자. 키 교환은 Diffie-Hellman 키 교환 방식으로 이루어지지만, 여기에 디지털 서명 과정이 추가된다.

1. Alice와 Bob은 큰 Prime Number p와 Primitive Root α를 선택한다.

2. Alice는 1 ≤ x ≤ p - 2인 임의의 x를 선택하고, Bob도 마찬가지로 1 ≤ y ≤ p - 2인 y를 선택한다.

3. Alice는 α^x (mod p)를 계산하고, Bob도 α^y (mod p)를 계산한다.

4. Alice는 Bob에게 α^x를 보낸다.

5. Bob은 K ≡ (α^x)^y (mod p)를 계산한다.

6. Bob은 Alice에게 α^y와 Ek(sigB(α^y, α^x))를 보낸다.

7. Alice는 K ≡ (α^y)^x (mod p)를 계산한다.

8. Alice는 sigB(α^y, α^x)를 얻기 위해 Ek(sigB(α^y, α^x))를 decryption 한다.

9. Alice는 Trent에게 verB가 Bob의 검증 알고리즘이 맞는지 확인한다.

10. Alice는 Bob의 서명을 확인하기 위해 verB를 사용한다.

11. Alice는 Bob에게 Ek(sigA(α^y, α^x))를 보낸다.

12. Bob은 Trent에게 verA가 Alice의 검증 알고리즘이 맞는지 여부를 확인하고, 맞다면 verA를 사용하여 Alice의 서명을 확인하고 암호화를 decryption 한다.


이 방법이 어떻게 중간자 공격에서 안전할 수 있는가? 먼저, 7 단계까지는 Diffie-Hellman 키 교환과 동일한 방법으로 키 교환이 이루어지며, Eve가 키를 위조하기 위해 중간자 공격을 할 수 있다. 위조된 키로 Ek를 decryption 하면 sigB(α^y, α^x)를 얻게 되는데, Alice는 Trent에게 Bob의 검증 알고리즘 verB를 사용하여 sigB(α^y, α^x)가 유효한 서명인지를 확인하며, 자신이 받은 α^y와 sigB(α^y, α^x)의 결과로 얻은 α^y이 같은지 확인하는 과정을 거치게 된다. 이 과정에서, Eve가 위조된 α^z를 보냈다면 서로의 키가 잘못된 것임을 알 수 있다.

STS에서는 Alice와 Bob은 Trent를 신뢰해야 하며, Trent와의 연결은 안전해야 한다.


Reference
Wade Trappe, Lawrence Washington, Introduction to Cryptography with Coding Theory, Second Edtion, PEASRSON Education