다양한 기록

키 관리 본문

정보보호이론

키 관리

라구넹 2024. 12. 16. 13:00

Key 유형

- 대칭키 (대칭키 암호화 및 MAC 함수)

- 공개키 / 개인키 (공개키 암호화 및 전자서명)

 

** Key 생명주기 **

Key Generation (생성)

->

Key Distribution (분배)

->

Key Storage (저장)

->

Key Update (갱신)

Key Revocation (취소)

Key Destruction (폐기)

Key Archival (보관)


Key Generation

- Random Number Generator (RNG) .. Random Bit Generator (RBG)

- 대칭키 k 생성

- 공개키 암호(RSA) 소수(Prime) p, q

- Challenge-Response 인증에서의 난수 r

- Randomness(무작위성) == Unpredictability(예측 불가능성)

- 만약 128비트씩 끊어서 사용된다면 2^128개 발생 확률이 거의 동등해야 함

 

Random Bit Generation

- 하드웨어 기반의 Random Bit Generator .. ex. 하드 디스크 드라이브의 섹터에 접근하는데 소요되는 지연 시간

- 소프트웨어 기반의 Random Bit Generator .. ex. 키보드 누르는 과정, 마우스 클릭 과정에서의 시간적 지연

 

Pseudo Random Bit Generation

- 랜덤 비트 생성의 비용, 어려움 .. 

Seed -> PRBG -> ..001011110

- PRBG에 의해 생성된 비트들은 true random bit들은 아님

- seed 값을 기반으로 determistic algorithm (인풋 동일 시 아웃풋 동일 시)

- PRBG는 randomness(무작위성)을 확장시키는 역할


Key Distribution(키 분배) - Key Establishment(키 설정)

- 대칭키/(공개키, 개인키)는 기밀성 보장, 무결성 보장 및 인증에도 사용

마스터 키 (Master Key) MK
인증 키 (Authentication key, long-term key) AK
세션 키 (Session key, short-term key) SK

 

 

Session Key Establishment (세션 키 설정)

- 양자 간에 AK가 공유되어 있다면 이를 기반으로 매번 세션마다 새로운 세션키를 생성해 사용

- 세션 키 설정 프로토콜은 다음의 성질을 내포하고 있어야 함

    - 키 인증(Key authentication) .. 양자 간에 설정되는 세션 키는 양자 이외에는 접근 불가

    - 키 확인(Key comfirmation) .. 양자 간에 공통된 세션 키 공유 확인 기능

* 둘 중 하나 정도는 무시하기도 함

 

세션 키 설정 프로토콜

대칭키 암호에 기반을 둔 키 설정 #1 : 시각표를 이용한 세션 키 전송 프로토콜

k = 사전에 공유된 대칭키

ks = 클라이언트가 생성한 세션키, t = timestamp, Eks(Server) = 세션 키로 암호화한 서버 ID

- Step1 : 클라이언트가 서버에게 자신이 선정한 세션 키를 대칭 키로 암호화하여 전송

    - 사전에 공유된 대칭키 사용

    - Timestamp 사용해서 세션 키 현재성 확인

    - 세션 키로 Server ID를 암호화하여 전달

    - 서버는 세션 키로 암호화된 자신의 ID 확인

    - 서버는 클라이언트와 동일한 세션키를 공유했음을 확인

 

대칭키 암호에 기반을 둔 키 설정 #2 : 난수를 이용한 세션 키 전송 프로토콜

k = 사전에 공유된 대칭키

ks = 클라이언트가 생성한 세션키, r = 서버가 생성한 랜덤 값, Eks(Server) = 세션 키로 암호화한 서버 ID

- Step1 : 서버가 자신이 선정한 랜덤 값을 클라이언트에게 전달

- Step2 : 클라이언트가 서버에게 자신이 선정한 세션 키를 대칭 키로 암호화하여 전송

    - 사전에 공유된 대칭키 사용

    - r 사용하여 세션 키 현재성 확인

    - 세션 키로 Server ID 암호화하여 전달

    - 서버는 세션 키로 암호화된 자신의 ID 확인

    - 서버는 클라이언트와 동일한 세션 키를 공유했음을 확인

 

대칭키 암호에 기반을 둔 키 설정 #3 : 합의된 방식에 의한 세션 키 도출 프로토콜

k = 사전에 공유된 대칭키

ks = 세션키

r = 클라이언트가 생성한 랜덤값

- Step1 : 클라이언트가 서버에게 자신이 생성한 랜덤 값을 전송

    - 사전에 공유된 대칭키 사용

    - 서버와 클라이언트는 랜덤값 r 사용하여 세션 키 생성 - Ek(r)

 

공개키 암호에 기반을 둔 키 설정 #1

ks = 세션키, t = timestamp, Client = 클라이언트 ID

Ps = 서버의 공개 키

- Step1 : 클라이언트는 서버의 공개키를 이용하여 자신이 선정한 세션 키와 timestamp, 그리고 자신의 ID를 암호화하여 서버로 전달

- Step2 : 서버는 자신의 개인키를 활용하여 암호문을 복호화, 클라이언트가 선정한 세션키 획득

 

공개키 암호에 기반을 둔 키 설정 #2

ks = 세션키, r1 = 클라이언트가 생성한 랜덤값,  r2 = 서버가 생성한 랜덤값

Client = 클라이언트 ID

Ps = 서버의 공개 키, Pc = 클라이언트의 공개 키

- Step1 : 클라이언트는 서버의 공개키를 이용하여 자신이 선정한 랜덤값과 자신의 ID를 암호화하여 서버로 전달

- Step2 : 서버는 클라이언트의 공개키를 이용하여 자신이 선정한 랜덤값과 클라이언트로부터 전달받은 랜덤값을 암호화하여 클라이언트로 전달

- Step3 : 클라이언트는 서버로부터 전달받은 랜덤값을 서버의 공개키로 암호화하여 서버로 전달

* 일방향 해시 함수를 이용하여 세션 키 생성 ..ks = h(r1, r2)


키 분배 센터 (KDC, Key Distribution Center)

Kc : KDC와 클라이언트 사이에 사용하는 약속된 대칭키

Ks : KDC와 서버 사이에 사용하는 약속된 대칭키

- Step1 : 클라이언트는 서버와 사용할 세션키를 요청

- Step2 : KDC는 세션키를 생성하여 클라이언트에게 전달 (Kc 이용하여 암호화해서 전달)

- Step3 : KDC는 클라이언트에게 전달한 세션 키와 동일한 세션 키를 서버에 전달 (Ks 이용하여 암호화해서 전달)

 

Kc : KDC와 클라이언트 사이에 사용하는 약속된 대칭키

Ks : KDC와 서버 사이에 사용하는 약속된 대칭키

- Step1 : 클라이언트는 서버와 사용할 세션키를 요청

- Step2 : KDC는 세션 키 생성하여 클라이언트에게 전달, 두개의 키 파일 전달 (Kc 이용하여 암호화해서 전달) (Ks 이용하여 암호화하여 전달)

- Step3 : 클라이언트는 KDC로부터 전달받은 세션 키 파일 중 서버용 파일을 서버에게 전달

- KDC의 통신 부하를 줄여주는 방식


키 번역 센터 (KTC, Key Translation Center)

Kc : KTC와 클라이언트 사이에 사용하는 약속된 대칭 키

KsT : KTC와 서버 사이에 사용하는 약속된 대칭 키

- Step1 : 클라이언트는 서버와 사용할 세션 키 Ks를 생성한 후 Kc를 이용하여 암호화 후 KTC로 전달

- Step2 : KTC는 해당 클라이언트와 공유한 Kc를 이용하여 세션 키 복호화 후 다시 전달해야 하는 서버와 공유한 KsT를 이용하여 Ks 암호화 재수행, 이후 해당 서버에게 전달


인증기관(CA) : CA 개인키, CA 공개키

Alice의 공개키는 CA에 의해 인증받을 수 있음

특정 유저가 생성한 공개키에 대해 확인 가능

 

CA 계층적 구성

상위 CA - 상위 CA 공개키, 개인키

하위 CA들 - 공개키 + 상위 CA의 개인키로 만들어진 전자서명

유저들 - 같은 방식

 

국내 PKI 체계 - Root 인증 기관, 공인 인증 기관

Root 인증 기관 - KISA

공인인증기관 - 한국정보인증, 코스콤, 금융결제원, 한국전자인증, 한국무역정보통신

 

인증서 (Certificate Revocation)

- 인증서 취소 목록 (CRL : Certificate Revocation List)

- OCSP (Online Certificate Status Protocol)

 

OCSP?

인증서의 상태를 실시간으로 확인할 수 있도록 설계된 프로토콜

- CRL이 크기가 크면 다운로드하는데 오래걸리고, 폐기 정보가 실시간 업데이트가 되지 않을 수 있음

- OCSP 서버에 실시간으로 쿼리해서 상태 체크 가능

'정보보호이론' 카테고리의 다른 글

기타 정보보호 이슈  (0) 2024.12.17
인증과 인가  (0) 2024.12.15
공개키 암호  (0) 2024.12.15
해시 함수, 공격, 응용, MAC  (0) 2024.10.28
블록 암호 - 운용모드  (0) 2024.10.28