⚠️ 들어가기 앞서
경북대학교 컴퓨터학부 COMP0414-001 컴퓨터망 과목을 공부하며 정리한 글입니다.
입증, 증명, 인증 을 뜻하는 authentication
은 보안에서도 비슷한 의미로 사용된다.
앨리스, 밥, 트루디 세 사람이 있고 앨리스와 밥은 데이터를 주고 받는다. 밥은 앨리스의 identity를 검증하고 싶어 한다. 그리고 트루디는 나쁜 짓을 하려고 하는 놈이다.
그냥 이런 식으로 "나는 앨리스다" 라고 말하면 어떨까?
당연히 이는 효과가 없다... 트루디가 "나는 앨리스다" 라고 거짓 사칭을 해도 밥은 이 사칭을 판별해 낼 재간이 없기 때문이다.
그렇다면 이렇게, 앨리스의 IP 주소를 실어서 밥에게 보내면 어떨까?
트루디 역시 앨리스의 IP 주소를 알아낸 후 밥에게 보낼 수 있다. 따라서 이 방법도 실패.
앨리스는 이제, IP 주소를 포함하여 비밀 패스워드를 함께 추가하여 보낸다. 이건 효과가 있을까?
트루디는 앨리스의 패킷을 기록했다가 그대로 밥에게 전달할 수 있다. 이를 playback attack
이라고 한다.
이 방법도 실패 !!!
그럼 이제 패스워드를 그냥 보내는게 아니고 암호화를 한다면??
어차피 그대로 기록할 것인데, 아무 의미가 없다. 1234
라는 패스워드를 기록하여 그대로 전달을 하는 것이나, 1q2w3e4r
등으로 암호화된 패스워드를 기록하여 그대로 전달을 하는 것이나, 똑같다.
앨리스와 밥은 영악한 트루디를 물리치기 위해 조금 더 머리를 썼다.
대칭키 암호화 방식을 도입하여, 이를 암호화 및 복호화하는 과정을 거친다. 대칭키는 밥과 앨리스만 알고 있다.
앨리스가 밥에게 "나는 앨리스다" 라고 말하면, B는 어떤 숫자 R을 던져준다.
그러면 앨리스는 대칭키를 이용해서 이를 암호화한 값을 밥에게 보낸다.
밥은 이 암호화한 값을 다시 복호화하여 R을 복원할 수 있다. 앨리스랑만 공유하고 있는 공유 대칭키를 통해서 복호화가 가능하다는 것은, 그 키로 암호화를 했다는 뜻이므로 앨리스임이 증명될... 까?
이걸로는 부족하다. 왜냐면 트루디는 암호화할 수 있는 키를 가질 수는 없더라도, 앨리스가 밥에게 보내는 데이터 자체를 가로챌 수 있기 때문이다. 즉 '암호화한 값' 을 가질 수 있다. 따라서, 밥은 단순히 앨리스와 공유하고 있는 키로 복호화가 가능한 값
이 돌아왔다고 해서 그 값을 보낸 사람이 앨리스라고는 확신할 수 없다.
여기서 nonce
라는 것이 등장한다. nonce는 라이프사이클당 단 한번만 사용되는 숫자이다.
트루디가 후에 앨리스가 보낸 데이터를 가로채서 똑같이 밥에게 보낸다고 하면, 밥은 이 복호화한 값 R이 한 번만 사용되어야 하는 숫자임을 알기 때문에 복호화한 결과가 이전에 사용된 적이 있는 숫자라면 이를 버리게 된다.
위의 매커니즘을 공개키 암호화 방식으로도 가능할까?
결론부터 얘기하면, 안 된다.
트루디가 앨리스에게는 밥으로 사칭하고, 밥에게는 앨리스로 사칭해서 가운데에 존재한다고 가정해 보자.
그 결과 : 앨리스와 밥이 주고받는 데이터를 트루디가 모두 가로챌 수 있다.