1. 인증
Client와 Server는 연결 및 통신을 진행하기 전에 서로를 인증하여 서로 통신에 대하여 높은 보안성을 제공 받는다.
Challenge & Response는 이러한 인증 방법 중 하나이다.
2. 기본 메커니즘
Challenge & Response의 기본 메커니즘은 단순하다.
먼저 서버에서 인증을 하고자 하는 대상한테 난수 값(Challenge)를 보낸다.
Challenge를 받은 Client쪽에서는 해당 값을 private key로 sign하고 다시 되돌려 준다.
sign 값을 받은 서버는 Public Key로 verify하고 처음 보낸 challenge값이 맞는지 비교 검증을 진행함으로써 Client를 인증할 수 있다.
3. 실사용
3-1) RSA 키쌍 주입
위의 Challenge & Response가 실제로 어떻게 쓰이는지 추가로 보면 아래와 같다.
먼저 가장 기본적으로는 위 메커니즘과 같이 사용된다. 무선 랜 보안 IEEE 802.11b에서는 위와 같은 Challenge & Response방법으로 인증을 진행한다.
하지만 위 메커니즘은 문제점이 존재한다. 바로 단방향 인증을 진행한다는 부분이다.
다시 말해 Server가 Client를 정상적으로 인증할 수는 있으나 Client가 Server가 정상인지는 인증히지 않는다.
때문에 위처럼 Private Key & Public Key쌍을 미리 주입해서 상호인증을 진행하도록 할 수 있다.
Private Key와 Public Key쌍을 먼저 HSM 장비등을 통해서 생성하고 각각 Client Server에 넣어준다.
키를 주입하게 된 후에는 challenge값을 각자 만들고 서로 sign & verify를 통해 인증함으로써 상호 인증을 진행할 수 있다.
물론 이경우에는 미리 Key를 주입하기 위한 과정이 따로 필요하기 때문에 같은 공정과정을 거치는 등의 문제가 발생할 수는 있다.
3-2) HMAC 키주입
위 방법과 동일하다 단 차이점은 난수에 sign이 아닌 hash를 해서 값을 전달하고 해시 값을 비교하는 방법의 차이만 있을 뿐이다.
4. 정리
정리하면 challenge & response방법은 서버와 client와 같은 두 개체에 대해서 인증을 진행하는 좋은 방법이다.
인증을 시도할 때마다 난수 값을 새로 만들기 때문에 높은 보안성을 보장하며 기본적으로 OTP등에 주로 사용된다.
하지만 기본적인 challenge & response는 단방향 인증만을 지원하며 위와 같이 양쪽에 키를 미리 주입해야만 상호 인증이 가능하다.
'Security > Security' 카테고리의 다른 글
[SSL] SSL 가시성 (0) | 2022.08.24 |
---|---|
[Certificate] 인증서 (0) | 2022.08.24 |