일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- dirty cow
- 게임 개발
- 배경 그림
- 메카님
- DP
- convolution
- Frequency Response
- polymorphism
- frequency-domain spectrum analysis
- sampling theory
- dtft
- STCF
- ret2libc
- stride
- MAC
- Race condition
- 운영체제
- 유니티
- DSP
- pdlc
- SNR
- AINCAA
- MLFQ
- RBAC
- 유스케이스
- Security
- Unity #Indie Game
- linear difference equation
- 게임개발
- link layer
- Today
- Total
다양한 기록
키 관리 본문
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 |