본문 바로가기
Lab & Research/Information Security

메시지 인증 & Kerberos & PKI

by jaeaemin 2022. 4. 16.

Message authentication 

정의

  1. 메시지 수신자가 발신자를 식별할 수 있도록 허용하는 것 
  2. 제 3자가 인증된 사용자처럼 위장하는 것을 어렵게 만드는 것 

 

메시지 인증 방법 

  1. 암호화 : 비밀 키의 소유자만 메시지를 해독할 수 있다.
  2. 해시 함수 : 해시와 일치하는 다른 메시지의 변조를 어렵게 만든다.
  3. MAC(메시지 인증 코드) : 비밀 키를 사용하여 암호화된 해시 값을 의미한다.

 

디지털 서명 

  • 서명은 문서에 대한 신뢰성을 제공하고 위조하는 것을 어렵게 만드는 기술이다.
  • 서명이 문서의 일부로 재사용 될 수 없다.
  • 서명은 변경하거나 삭제할 수 없어 거부될 수 없다.

 

Birtthday Attack :  암호학적 해시 함수 해시 충돌을 찾아내는 암호 해독 공격으로, 생일 문제의 확률적 결과를 기반으로 한다.

생일 문제에 따르면 해시 함수의 입력값을 다양하게 할수록 해시 값이 같은 두 입력값을 발견할 확률은 빠르게 증가한다. 

=> 큰 집합 M인 경우, 같은 값을 가지는 쌍 (mi, mj)를 찾기 어려움 ( 평균 2n/2 메시지를 검색함 ) 

Birthday Paradox
k의 최소값은 얼마이며, 그 확률은 얼마인가? 0.5보다 크면 k명의 그룹에서 적어도 2명이 같은 생일을 맞을 확률은 어떻게 될까 ?
Pr(365,k): 그룹에 중복이 있을 확률Pr(365,k) = 1 – Q(365,k) , 여기서 Q(365,k)는 그룹에 중복이 없을 확률

 N: 중복 없이 k 값을 가질 수 있는 여러 가지 방법의 수 ( k가 커질수록 같은 생일 존재 가능성이 줄어든다 )
 N = 365 x 364 x ... x (365-k+1) =  [ 365!  / (365-k)! ] 
 Q(365,k) = N / (365)^k       
 Pr(365,k) = 1 – N / (365)^k > 0.5 → 2n/2 
 - k =23

 

 

Dictionary Attack 

사전에 있는 단어를 입력하여 암호를 알아내거나 해독하는 컴퓨터 공격법이다.

사전의 단어를 순차적으로 입력하고 단어를 그대로 입력할 뿐 아니라, 대문자와 소문자를 뒤섞기도 하고, 단어에 숫자를 첨부하기도 하는 등의 처리도 병행하면서 공격을 할 수 있다

정리하면 사전에 있는 모든 단어의 단방향 해시를 계산하고 비교한다.

=> 모든 암호는 얻을 수 없더라도, 아마 40%정도의 암호는 얻을 수 있을 것이다.

 

 

OTP ( one-time-password ) 

[1] Challenge-response method

1. 송수신자 간 비밀키와 공유 키를 합의하거나 secret func을 합의한다.

2.송신자가 log-in을 요청한다.

3.서버는 nonce를 보낸다

4.엘리스는 마스터키로 암호화된 nonce를 보낸다.

5.연결 중간에 nonce를 교체하면 replay attack을 방지할 수 있다.

 

[2] S/Key method 

1. 송수신자 간 password 리스트를 만들어 두고 , pass-phrase를 선택하고 공유한다.

2. 클라이언트가 엑세스 할 때 각 암호를 하나씩만 사용한다.

3. 서버는 암호 목록을 통해서 암호를 확인한다.

4. 연결동안 각 엑세스에 대해 암호를 변경하면 replay attack을 방지할 수 있다.

 

[3] Timestamp

t는 타임스탬프(현재 시간)이며, 모든 사람이 동기화 할 수 있는 clock이다.

replay attack 
전자서명과 같은 암호화한 데이터를 주고받는데, 도중에 제3자가 네트워크상에 왕래하고 있는 데이터를 복사해뒀다가 나중에 이를 그대로 서버에 전송해서 합법적 이용자를 가장하려는 시도를 일컫는다.

 

 

2. Kerberos 

Kerberos는 인증 서비스 시스템으로 신뢰하는 제 3의 컴퓨터가 서비스를 이용하려는 클라이언트의 사용자를 인증함으로써 가능해진다. '인증을 함으로써 서버는 클라이언트의 사용자가 올바른 사용자 인지를 확인하게 되고 서로간에는 비밀통신이 가능해지고, Spoofing이나 Sniffing을 막을수 있다

 

< Kerberos로 해결 가능한 위협들 >

  1. 누군가 인증된 사용자로 위장하여 올바른 접근인 척 접근하려 할 수 있음
  2. 사용자가 워크스테이션의 네트워크 주소를 변경할 수 있음 (접속 거부)
  3. 사용자가 패킷을 중간에 도청하여 replay attack을 할 수 있다.

 

< Kerbero 역할 > 

  • B/W 사용자 및 서버 인증을 위한 중앙 집중식 인증 서버를 제공함
  • 기존 암호화 방식을 사용한다
  • 버전4와 버전5 2가지 버젼이 존재 ( v4: DES사용 ,  v5: 다른 암호화 알고리즘 허용 )
  • 티켓을 발급받고 접근 할 수 있음 ( TGS용 Tk & Server접근용 Tk ) 

 

< Kerveros 환경  >

AS  사용자 인증,  등록하고 TGS에 접근 가능한 Ticket을 발급해줌  (인증 서버)
TGS  티켓을 통해 서버에 엑세스하고, 목적지에 가기 위한 전용 티켓을 발행 함 ( 티켓 권한 서버 )
V  애플리케이션 서버 
K(c)  C의 마스터 키
K(tgs)  AS와 TGS사이 공유되는 시크릿 키 = TGS로 가는 티켓 (비밀키)
K(v)  TGS와 V 사이에 공유되는 시크릿 키  = V로 가는 티켓 ( 비밀키)

AS는 TGS에 접근 가능한 사용자를 체크 후 TGS 용 티켓 발급하고 , TGS에서는 Server로 갈 티켓을 발급해줌 

 

 

< Kerberos의 사용 조건 >

  1. 네트워크에 KDC( AS & TGS ) 가 존재해야 한다.
  2. 참여된 시스템 모두가 구동중인 경우 애플리케이션이 수정되어여 한다. (무결성 유지)
  3. 큰 문제 : 미국의 수출 제한  ( Kerveros는 소스 형식으로 미국 외부에서 배포 될 수 없음 ) 

 

 

 

One-Way & Mutual Authentication 

 

Man in the Middle Attack ( 중간자 공격 ) 

1. 엘리스는 밥에게 공개키를 보내고, 멜러리는 이를 가로채고 자신의 공개키를 보낸다. ( 엘리스 공개 키 획득 , 멜러리 -> 밥 )

2. 멜러리는 밥이 키 값을 엘리스에게 보낼 때 가로채기도 한다.

3. Alice가 Bob의 키로 암호화된 메시지를 보내면, 멜러리는 올바른 키로 가로채서 해독, 변경, 다시 암호화 한다.

이러한 중간자 공격때문에 다른 사람의 공개 키를 직접 보내기 보다는 안전하게 얻을 수 있는 방법이 필요함 !

 

Reflection Attack 

많은 셋으로 암호를 해독함 

 

 


One Way Authenticaton 
공유된 비밀키를 이용한다
클라이언트가 자신이 가진 세션키와 서버가 보낸 난수로 확인함
클라이언트가 요청 뒤, 서버는 세션키로 암호화 된 난수를 보내고 확인함 

효율성 향상: 짧은 메시지, 휘발성 상태를 유지할 필요가 없다.
 -TS를 사용하여 동기화한다.
 -누군가는 TS 클럭 내에서 Alice를 모방할 수 있다. 

Mutual Authentication
서로를 인증함 
송신자가 자신을 먼저 증명해야 한다.
비효율적: 인증을 위한 메시지 교환이 최소 5번 수행된다.
송신자가 난수를 보내고, 서버는 새로운 난수와 암호화 된 원래 난수를 보냄
그 후 송신자는 세션키로 암호화 된 서버가 보낸 난수를 보냄 
서로의 공개키를 전송하여 주고 받은 뒤, 공개키를 이용해 통신함 
 - 중간자 공격이 가능하다. 
 - PKI를 통해 다른 공개 키를 안전하게 획득할 수 있는 방법이 고안됨
효율성: 짧은 메시지 , 기존 프로토콜에 쉽게 추가(요청/응답 패러다임)
트루디는 E(KAB, 타임스탬프+1)를 도청하여 앨리스 흉내를 낼 수 있음.

 

 

X.509 인증 서비스

[1] X.500 directory service : 분산된 서버의 집합으로 사용자 정보를 가진 DB를 관리한다.

[2] X.509 Authentication Service 

  • X.500 디렉터리를 사용하여 사용자에게 인증 서비스를 제공하기 위한 프레임워크 정의
  • 각 인증서에는 사용자의 공개키가 포함되어 있고 CA의 비밀키로 서명되어 있다.
  • S/MIME, IP 보안, SSL/TLS 및 SET에 사용하고, RSA 공개 키 알고리즘으로 사용할 것을 권장한다.

 

 

 

3. Public-Key Infrastructure  (PKI)

사용자가 다른 사용자의 올바른 공개 키를 얻을 수 있는 인프라

PKI 직무 : 인증서 관련 발행, 키 저장소와 갱신, 다른 프로토콜 서비스 제공, 엑세스 제어 제공 

PKI의 신뢰모델은 아래와 같이 계층적 모델로 구성할 수 있다. 

 

 

사용자 1이 사용자 5의 공개키를 얻기 위해서의 스토리 보드
[조건] :  사용자1은 루트 CA의 공개키를 가짐 , 사용자5는 인증서의 연결이다. CA<CA2> , CA2<User5> to User1

1. 유저1은 CA1의 공개 키를 사용하여 CA<CA2>의 유효성을 검사함
2. 유저1은 CA에서 CA2의 공개 키를 얻어옴 
3. 유저1은 CA2의 공개 키를 사용하여 CA2<User5>의 유효성을 검사함
4. 유저1은 CA2<User5>에서 User5의 공개 키를 얻어옴 

 

교차 인증 ( Cross-certification )
: 일부 웹 브라우저에는 여러 독립 루트의 인증서 집합이 포함된 경우가 존재함.

▪ internet explorer : 제어판/인터넷옵션/내용/인증서/신뢰된 루트 인증기관

▪ Root CA들 사이에서 인증을 위해 교차 인증이 필요하다

 

다른 루트에 존재한 유저1과 유저4의 공개 키를 얻는 과정 
조건 : 유저1은 root1에서 root1<root4>를 획득한다.
          유저4는 root4에서 유저4의 인증서 체인을 유저1에게 송신함

1. 유저1이 Root1의 공개 키를 사용해 Root1<Root4>의 유효성을 검사한다.
2. 유저1은 Root1<Root4>에서 Root4의 공개키를 추출한다.
3. 유저1은 Root4의 공개키를 사용하여 Root4에서 Bob까지 인증서 체임은 단계별로 확인&추출한다.
반응형