키 관리
비밀키 분배의 어려움
▶ 물리적인 방법으로 전달
• 링크 암호화에서 적용 가능
• 단대단 암호화에서 적용 어려움
▶ 이전의 키를 사용하여 암호화된 새로운 키를 전송
• 링크 암호화나 단대단 암호화 모두 적용 가능
• 공격자가 어떤 한 키를 안다면 이후의 모든 키가 노출
▶ 제 3자(키 분배 센터)를 통하여 키 분배
• 단대단 암호화에서 널리 채택
• 사용자는 키 분배 센터와 유일한 키를 공유
▶ KDC를 이용한 키분배 방법 (Kerboros)
전제조건
각 사용자 A, B는 KDC에서 분배한 마스터 키 1개씩 소유하고 있다.
1. Request || ID(A), A, B
- 발신자 A는 응답자 B와 통신하기위해 KDC에 Request 보낸다.
- 요청에는 자신의 신원정보 ID(A)와 B와 통신할 세션키를 요청한다. (*세션키=비밀키)
2.Eka[SK, ID(B), T]
- KDC는 발신자 A에게 B와 통신할 세션키, B의 신원정보 ID(B), 난수(T)를 응답한다.
- 응답시 KDC는 A의 마스터키로 암호화해 A에게 보낸다. (KDC는 A, B의 마스터키를 가지고 있다.)
2. Ekb[SK, ID(A), T]
- KDC는 발신자 B에게 세션키와 A의 신원정보 ID(A), 난수(T)를 B의 마스터 키로 암호화해서 보낸다.
3. Esk[ID(A), T]
- A가 자신의 신원정보 ID(A)와 난수 (T)를 세션키로 암호화해서 B에게 전송한다.
- B는 A의 난수(T)와 A의 신원정보 ID(A)를 통해 A의 신원을 확인한다.
4. Esk[ID(B), T+1]
- B는 자신의 신원정보 ID(B)와 난수(T+1)를 연산하여 세션키로 암호화해 A에게 전송한다.
- A는 난수(T+1)에 연산된 것을 확인해 B의 신원을 확인한다.
통신 종료
- 통신이 종료되면 발급받은 세션키는 폐기된다.
- 다시 통신하려면 세션키를 KDC에 요청한다.
▶ 공개키 기관에 의한 세션키 분배 (SESAME)
전제 조건
- A는 자신의 공개키(KUa)와 개인키(KRa)를 각각 소유한다.
A는 공개키 기관에 자신의 공개키(KUa)를 등록한다.
공개키 기관은 공개키 기관의 공개키인 (KUau)를 나눠준다.
- B는 자신의 공개키(KUb)와 개인키(KRb)를 각각 소유한다.
B는 공개키 기관에 자신의 공개키 (KUb)를 등록한다.
공개키 가관은 공개키 기관의 공개키인 (KUau)를 나눠준다.
1. Request || Time1
- A가 B와 통신하기 위해 B의 공개키를 공개키 기관에 요청한다.
- 이때 Request를 구분하기 위한 난수(Time1)를 같이 보낸다. (공개키 기관인지 알기 위해)
2. E(KRau)[KUb||Request||Time1]
- 공개키 가관은 요청 메시지와 공개키 기관에 등록된 B의 공개키(KUb)를 공개키 기관의 개인키 (KRau)로 암호화해 A에게 응답한다. - A는 공개키 기관이 보낸 것을 공개키 기관의 공개키(KUau)로 복호화해 확인하여 B의 공개키 (KUb)를 얻는다.
→ A는 B의 공개키를 얻게 된다.
3. E(KUb)[ID(A)||N1]
- A가 자신의 신원정보 ID(A)와 N1(난수)를 B의 공개키(KUb)로 암호화해 B에게 전송한다.
(ID(A): 자신이 누군지 알리기 위함 / N1: B인지 확인하기 위함)
- A가 B의 공개키로 암호화하여 전송한 것을 B가 개인키로 복호화하기에 기밀성이 보장된다.
4. Request||Time2
B는 자신의 개인키로 복호화하고 A의 공개키가 없으므로 공개키 기관에 Time2와 함께 요청한다.
5. E(KRau)[KUa||Request||Time2]
- 공개키 기관은 요청 메시지와 A의 공개키를 공개키 기관의 개인키로 암호화해 응답한다.
- 공개키 기관이 공개키 기관의 개인키(E(KRau))로 암호화하여 전송한 것을 B가 공개키 기관의 공개키로 복호화해 A의 공개키라는 것을 확인하고 얻는다.
→ B는 A의 공개키를 얻게 된다.
6. E(KUa)[N1||N2]
- B는 N1, N2 난수를 A의 공개키(KUa)로 암호화하여 전송한다.
(N1: B인것을 확인하기 위해 A가 전송, N2: A인지 확인하기 위해 B가 전송)
- B가 A의 공개키로 암호화하여 전송한 것을 A가 개인키로 복호화해 기밀성이 보장된다.
7. E(KUb)[N2]
- A는 N2라는 응답을 보내 자신이 A라고 응답한다.
- A가 B의 공개키로 암호화하혀 전송한 것을 B가 자신의 개인키로 복호화해 기밀성이 보장된다.
8. E(KUb)[E(KRa)[Ks]]
- A는 세션키(Ks)를 자신의 개인키로 암호화해 B의 공개키로 암호화하여 B에게 전송한다.
- B는 자신의 개인키로 복호화하고 A의 공개키로 복호화해 세션키를 획득한다. (기밀성 보장)
통신 종료
- 통신이 종료되면 세션키는 버려진다.
- 다시 통신하려면 8번 과정이 진행된다. (1-7 과정 진행X)
- A, B는 서로 공개키 기관으로부터 받은 안전한 공개키를 소유하고 있다고 생각하기 때문이다.
해시함수
- 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수
- 메시지 인증 코드에 대한 변형
- 메지시의 모든 비트들에 대한 함수
- 임의의 길이(M)을취해 정해진 크기 h의 메시지 Digest를 만드는 일방향 함수
- 해시의 목적 : 무결성 확보
▶ 해시함수의 요구조건
• 어떤 크기의 메시지 M에도 적용 가능
• H는 고정된 크기의 hash code를 만듦
• H(M)은 어떤 주어진 M에 대해서도 계산하는 것이 쉽다. (해시함수는 비밀키 암호 시스템보다 빠름
• 주어진 hash code h에 대해, H(M) = h인 M을 찾는 것이 계산적으로 실행불가능(one-way)
→ 해시코드 사용 이유: 계산방법이 없고 무작위로 대입하기때문(생일공격)
• 어떤 주어진 블록 M에 대해서, H(M’) = H(M) 인 M과 M’가서로 다른 것을 찾는 것이 계산적으로 실행 불가능
• H(M’) = H(M)인 어떤 (M, M’) 쌍을 찾는 것이 계산적으로 실행 불가능(collision-free)
▶ 단순 해시 함수
: 메시지를 n 비트 블록으로 m개로 나누어 블록끼리 XOR하여 출력되는 블록을 해쉬로 함
▶ 해시함수의 종류
'암호학 공부 기록' 카테고리의 다른 글
암호학 7 - 공개키와 비밀키를 이용한 전자서명 및 인증서 (2) | 2021.12.19 |
---|---|
암호학 5 - 공개키 암호 (0) | 2021.12.08 |
암호학 4 - DES (Data Encryption Standard) (0) | 2021.12.06 |
암호학 3 - 비밀키 암호의 원리 (0) | 2021.11.30 |
암호학 2 - 암호 기법(시저암호, 다중치환, 다중단일문자치환, 전치기법) (0) | 2021.11.29 |