12. Key Agreement Protocols

KyoungJae Jung ·2022년 3월 1일
0

암호학

목록 보기
7/7

Authentication and Session Key

대부분 인증을 하는 동시에 키 교환을 한다.
각각 발생할 수 있지만 세션을 맺을 초기에 동시에 발생한다.

  • Session key를 교환하는 방법
    1. PKE
    1. DS + DH

항상인증에서 상호인증을 하는 것은 아니다.


교환 방법들

Using DH+DS+SKE

  • STS Protocol
    둘다 전자서명용 Cert가 필요하다
    또한 둘다 g,p가 공유된 상태이다.


    STS에서 배웠던 그대로 진행한다.
    이 STS는 TLS 1.3에 해당한다.
    이는 상호인증 및 키 교환까지 가능하다.

Using DH+DS

  • Simple STS Protocol
    이 역시 둘다 전자서명용 Cert가 필요하다
    또한 g, p가 공유된 상태이다.

    그러나 위와는 다르게 Sign에는 암호화를 하지 않는다.

    이는 TLS 1.2에 해당한다.

Encrypted Key Exchange (EKE)

Password를 기반으로 하는 인증이다.
but 이는 offline dictionary attack에 취약하다

이 둘다 Pw를 공유하고 있는 상태이다.
Password를 가지고 offline dictionary attack을 극복하기 위해 새로운 공개키 암호를 생성해서 PK, SK를 생성하고 이를 암호화 해서 준다.
공격자가 이를 탈취해서 가져간 후 이를 복호화 하기위해 본다면 공격자가 public key가 random이므로 어떠한 key에서 나왔는지 모르게된다.
그후 Password를 공유했으니 이를 복호화해서 이 새로운 key를 다시 암호화해서 이를 대칭키의 메시지로 취급해서 암호화하는 작업을 진행한다.
이후 Challenge-response방식으로 통해 검증한다.
장점은 Password로부터 시작해 강한 key를 공유한다.
Cert가 필요가 없다.
그러나 문제는 alice와 bob이 서로 Password를 공유하는게 문제이다.
즉 어차피 Cert가 처음에는 필요하다.

EKE based on Diffie-Hellman

위의 구조는 간단하게 Diffie-Hellman을 통해 아래와 같이 구현된다.

이 역시 offline dictionary attack에 강하다

Using PKE

통신 주체가 암호화용 Cert를 가지고 있다.

단 Rb를 그대로 주지말고 MAC을 통해 이전메시지를 넣는 방식을 가져야한다.
그리고 key는 Hash(Kab,Kba)의 양쪽 각각을 넣은 값을 Hash해서 key를 만든다.
그러나 현실에서는 위의 방식을 사용하는 것보다 아래의 방식을 사용한다.
이는 서버만인 Cert를 가지고 있다.

이 방식은 bob이 server를 인증하는 방식이다.
이후 안전한 암호화된 통신위에서 사용자를 인증하는 방식을 사용한다.
TLS v1.2, RSA encryption에서 사용된다.

Using DS

이 방법으로 key를 교환할 수 없다.

왜냐하면 Cert를 통해 검증을 하려면 모든 메시지를 open해야하므로 비밀키를 교환할 수 없다.
따라서 인증은 가능하나 키교환이 불가능하다.

Using DS+DH

둘다 전자서명용 Cert와 Diffie의 g,p를 공유했을 경우
아래와 같이 진행한다.(simple STS Protocol)

그러나 현실은 아래의 방법을 사용한다.
서버는 전자서명용 Cert를 지니고 둘다 Diffie의 g,p를 공유한다.

TLS v1.2, ECDSA is used for DSS and ECDH is used for DH
이는 사용자가 서버를 인증하는 것이다.

Simplified TLS Protocol

실제로는 TLS를 할때 어떠한 방식으로 암호화 Hash를 할지 선택지를 준다.
이후 서버가 이에 대한 대답을 주고 통신을 이어간다.

MAC검증을 통해 상대방이 같은 key를 교환했는지 알 수 있다.
아래는 DS+DH를 통해 하는 것이다.

TLS에서 Man in the Middle Attack이 가능한가?


위에서 보다 싶이 CA의 전자서명을 동일하게 하지않는 이상 절대로 Cert를 위조할 수 없기에 불가능 하다.

Kerberos Protocol

이 방법은 SSO(single Sign On)과 동일하게 여러 서버에서 토큰을 통해 로그인을 할 수 있게 하는 방식이다.

Kerberos Architecture

How Kerberos works

profile
보안전문가를 꿈꾸는 대학생

0개의 댓글