백인감자

[컴퓨터보안] User_Authentication (사용자 인증) 본문

컴퓨터보안

[컴퓨터보안] User_Authentication (사용자 인증)

백인감자 2017. 6. 10. 16:45

User Authentication

2단계 과정을 거친다.

1. identification (식별)

2. verification (검증)

 


메시지 인증과는 다른 개념이다.


사용자 인증 수단

knows - e.g. password, PIN  무엇을 아는지에 기반

possesses - e.g. key, token, smartcard 뭘 소유하고 있는지에 기반

is (static biometrics) - e.g. fingerprint, retina 누구인지에 기반

does (dynamic biometrics) - e.g. voice, sign  어떤것을 하는지에 기반


인증 프로토콜

인증 프로토콜은 서로의 신원을 확인하고 세션키를 교환하는 데 사용된다.

인증된 키 교환의 핵심문제는 confidentiality(기밀성), timeliness(적시성) 이다.


confidentiality : 세션키를 보호할 수 있어야한다.
timeliness : replay attack 을 방지할 수 있어야한다.


Replay Attack

유효한 서명된 메시지가 복사되어 나중에 재전송 되는것. 

세션키가 손상되거나 공격자가 원래 통신하던 송신자인 척 위장할 수 있게된다.

분류를 해보자면 4가지 정도가 된다.


simple replay

단순히 메시지를 복사하고 나중에 재전송 하는 방식

repetition that can be logged

허용시간 범위 내에서의 재전송 공격

repetition that can not be detected

원본메시지는 정지된 상태이며 재전송 공격용 메시지만 도착, 수신측은 fresh 한 것으로 받아들인다.

backward replay without modification

수정없는 역방향 재전송, 송신자가 전송된 메시지와 수신된 메시지 간의 차이를 쉽게 인식할 수 없는 경우 가능하다. 메시지를 반사시킨다고 생각하면 될 것 같다. 대칭키 암호 에서 공격가능하다.



이러한 replay attack 을 막기위한 수단들이 있다.

1. sequence number : 양 측의 sequence number 을 추적하여 replay attack 을 판별하여 막는 방법. 오히려 역으로 공격당할 수 있어서 비실용적인 방법이다. 

2. timestamp : 동기화된 clock 을 통해서 replay attack 인지 판별하여 막을 수 있다.

3. nonce : 랜덤한 고유값을 통해서 replay attack 을 막는다.



대칭키 암호를 이용한 사용자 인증

신뢰할 수 있는 KDC(Key Distribution Center) 를 사용하는 것이 특징이다.

각 사용자와 KDC 는 자신의 master key(비밀키) 를 공유하고 KDC는 사용자 간의 연결을 위한 세션키를 생성한다.

예를 들어 A, B 가 있으면 K_a 는 A와 KDC 가 공유하고 있고 K_b 는 B와 KDC 가 공유하고 있는 것이다.


대표적 예시 : Needham-Schroeder Protocol, Kerberos


Needham-Schroeder Protocol

KDC 는 송수신자 간의 메시지를 읽고 위조도 가능하기 때문에 KDC에 대한 신뢰를 기반으로 한다.

1. A는 KDC 에게 B와 통신하기 위해 필요한 정보를 보낸다.

2. KDC 는 A에게 세션키(K_s)를 비롯한 정보들을 K_a(a의 비밀키) 로 암호화하여 보낸다.

3. A는 B에게 토큰을 보낸다.

4. B는 세션키를 정상적으로 받았다는 것을 nonce를 포함하여 A에게 알린다.

5. A는 fresh message 임을 확인하고 B에게 알린다.




하지만 3번부터의  A가 A를 가장한 공격자 X 면 replay attack 이 가능하다.

공격자가 되기 위한 조건 : 예전에 사용된 세션키를 알고 있어야한다. 이전에 캡처해둔 메시지가 있어야한다.

이런 문제를 막기위해서는 timestamp 의 사용이나 추가적인 nonce 가 필요하다.




Kerberos

안전한 단일 sign-on, 신뢰할 수 있는 제 3자가 있는 상호인증서비스이다.


1. secure : Kerberos 는 암호를 절대 전송하지 않아서 안전하다.

2. single sign-on : 인증서버에 한 번 로그인 하면 다른 모든 서비스도 다 받을 수 있다.

3. Trusted third-party : 신뢰할 수 있는 중앙집중식 인증서버를 이용한다.

4. Mutual authentication : 상호인증을 한다.

토큰(티켓) 사용, 아주 빠르다

Needham-Schroeder 에 기반한 인증 프로토콜을 사용하여 구현한다.



Kerberos V4

1. 인증서버(AS, Authentication Server) 를 가진다. 모든 사용자와 서비스 이름, 모든 사용자의 password 를 알고 있다.

-> 사용자는 처음에 AS와 접촉하여 자신을 식별함.

-> AS는 손상되지 않는 인증권한정보(TGT) 를 제공한다.


2. 티켓부여서버(TGS, Ticket Granting Server) 를 가진다. 부여된 TGT 수, TGT 유효기간 , TG keys, AS keys 를 알고 있다.

-> 이후 사용자는 TGT를 기반으로 TGS에서 다른 서비스에 대한 액세스를 요청한다.


시나리오(server라고 되어있는것은 client 가 서비스 받기를 원하는 서비스를 관리하는 server를 뜻함)

1. client 는 AS에 자신을 인증한 후 TGT 를 발급받는다.

2. client 는 TGS에 접촉하여 AS로부터 받은 TGT 를 사용하여 자신의 신분을 확인시킨 후 특정서비스에 대한 사용권한을 요청

3. TGS 는 해당 client가 특정서비스를 받을 권한이 있다면 그에 해당하는 ticket_v 을 client 에게 준다.

4. client 는 ticket_v 를 사용하여 Server(==Application Server) 로 부터 해당 서비스를 받는다.

자료 참고 : https://www.slideshare.net/hawa143/week3-lecture

위의 시나리오를 자세히 나타낸 것이 아래의 그림들이다.











Comments