4. 12 (목) - 암호 (비밀키 / 공개키 암호의 키분배센터 키 교환)
◎ 비밀키 분배의 어려움
▷ 물리적인 방법으로의 키전달
- 링크 암호화의 방식
→ 장비를 받아야 통신이 가능 (장비는 물리적으로 존재하기에)
- 단대단 암호화에서 적용 어려움
▷ 이전의 키를 사용해 암호화된 새로운 키를 전송
- 링크 암호화 / 단대단 암호화 모두 적용 가능
- 공격자가 한 키를 알게 되면, 이후 모든 키가 노출
▷ 신뢰할 수 있는 제 3자(키분배센터)를 통하여 키 분배
- 단대단 암호화에서 채택
- 사용자는 키분배센터와 유일한 키를 공유
◎ KDC(키분배센터)를 이용한 비밀키 분배
▷ Kerboros 방식 73-76p
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirASy012DS5jYZswVOS-RpFIVSTtvJp4BWuY8wLktwXoChVGP27Zrb3pppjVKQTfcoz0X9oDs3Uakv8xERYISXFathXL2y4D7UlRkZpNbvZxp3yEdPKEgXR5hNoFOhPPjbmhYAh6Nay4w/s640/1.PNG)
(1) - ID(A) : KDC에 등록된 A의 신원정보 (A가 보내는 요청) - 시스템마다 다른 설정
ex) MAC 주소, ID의 해쉬값 등등...
- A, B : IP 주소
- SK : 세션 키
(2) - : A의 마스터키 KA로 암호화 (세션키의 노출을 방지)
- T : 타임스탬프 (현재성을 보장)
(3) - B에게 A의 인증
(4) - A에게 B의 인증 : 이 시점에 A와 B는 상호인증 성공
→ 이후 통신 종료시 세션키 폐기
→ 5~10초간 A에서 통신이 없으면 B는 세션키를 폐기
→ 그렇게 되면 KDC로부터 다시 세션키를 발급
▷ 해석
KDC - 인증과 키 분배의 담당
- 1차 도메인 컨트롤러
응답자 B - 2차 도메인 컨트롤러, 실질적 서버
발신자 A - 클라이언트
KDC로 부터 키를 부여받기 위해서는 A, B가 KDC에 등록/가입 되어있어야 함
→ A와 B는 사전에 KDC와 마스터키를 공유하고 있다.
◎ 공개키의 유효성
▷ 공개키의 공개 발표
- 자신의 공개키를 다른 사용자에게 전송
- 문제점
→ 어떤 사용자가 다른 사용자 A로 위장하여 공개키 공개
(A에 전송되는 암호화 메시지를 도청)
◎ 공개키 기관에 의한 세션키 분배
- 세서미 방식
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9-H_augrv71FmEWkDchvGWMRMrDmJp9wf7ImqoJZzsKy8CzSewqrFsUFw7SO10BsGewKWmR1G3mESVVea2Ai0kJ05iFUUCdWrwdsK5dUadYpSUKGjrVzE1xBrLjB44QwGzTc18T0cjUk/s640/2.PNG)
▷ A와 공개키 기관이 상면한다
상면하다 : 자신의 공개키를 공개키 기관에 등록, 공개키 기관의 공개키를 가져옴
= face to face
▷ 순서
(1) - 클라이언트 A는 공개키 기관에 타임스탬프를 주며 B의 공개키를 요구한다(Request)
(2) - 공개키기관은 KUb와 질의내용, 타임스탬프를 공개키기관의 개인키로 암호화하여 회송
→ 근원지 증명 → A는 공개키기관이 맞음을 확신
(3) - B의 공개키로 자신의 ID와 N1(난수)을 암호화하여 전송
→ B만이 볼 수 있어야 함
(4) - B는 A의 ID를 확인, 공개키기관에게 A의 공개키를 요구
(5) - 자신의 개인키로 B가 요구한 결과와 A의 공개키를 타임스탬프와 함께 암호화하여 회송
(6) - A가 보낸 난수 N1과 자신이 생성한 난수 N2를 A의 공개키로 암호화하여 전송
→ A는 B가 진짜 B임을 확신
(7) - A는 B의 공개키로 N2를 암호화하여 회신
→ B는 A가 진짜 A임을 확신
(8) - A는 자신의 개인키로 세션키를 암호화한 결과를 B의 공개키로 암호화하여 전송
→ 세션키의 공유 성공
▷ 비밀키 방식보다 공개키기관의 부담이 덜 함
▷ 재선송 시에는?
- A의 경우
→ 공개키 기관은 저장하고 있는 키의 해쉬 값을 저장하고 있음,
→ A는 공개키 기관에 B의 공개키의 해쉬 값이 맞나 물어봄
- B가 맞을 경우
→ (8)번 과정부터 시행
- B가 틀릴 경우
→ (1)번 과정부터 재시행
- B의 경우
→ A에게 값을 받았을 때, 역시 공개키기관에 A의 해쉬 값을 요청
= A가 틀릴 경우
→ 모든 A가 보낸 메시지를 무시
= A가 맞을 경우
→ 정상 시행
▷ 물리적인 방법으로의 키전달
- 링크 암호화의 방식
→ 장비를 받아야 통신이 가능 (장비는 물리적으로 존재하기에)
- 단대단 암호화에서 적용 어려움
▷ 이전의 키를 사용해 암호화된 새로운 키를 전송
- 링크 암호화 / 단대단 암호화 모두 적용 가능
- 공격자가 한 키를 알게 되면, 이후 모든 키가 노출
▷ 신뢰할 수 있는 제 3자(키분배센터)를 통하여 키 분배
- 단대단 암호화에서 채택
- 사용자는 키분배센터와 유일한 키를 공유
◎ KDC(키분배센터)를 이용한 비밀키 분배
▷ Kerboros 방식 73-76p
(1) - ID(A) : KDC에 등록된 A의 신원정보 (A가 보내는 요청) - 시스템마다 다른 설정
ex) MAC 주소, ID의 해쉬값 등등...
- A, B : IP 주소
- SK : 세션 키
(2) - : A의 마스터키 KA로 암호화 (세션키의 노출을 방지)
- T : 타임스탬프 (현재성을 보장)
(3) - B에게 A의 인증
(4) - A에게 B의 인증 : 이 시점에 A와 B는 상호인증 성공
→ 이후 통신 종료시 세션키 폐기
→ 5~10초간 A에서 통신이 없으면 B는 세션키를 폐기
→ 그렇게 되면 KDC로부터 다시 세션키를 발급
▷ 해석
KDC - 인증과 키 분배의 담당
- 1차 도메인 컨트롤러
응답자 B - 2차 도메인 컨트롤러, 실질적 서버
발신자 A - 클라이언트
KDC로 부터 키를 부여받기 위해서는 A, B가 KDC에 등록/가입 되어있어야 함
→ A와 B는 사전에 KDC와 마스터키를 공유하고 있다.
◎ 공개키의 유효성
▷ 공개키의 공개 발표
- 자신의 공개키를 다른 사용자에게 전송
- 문제점
→ 어떤 사용자가 다른 사용자 A로 위장하여 공개키 공개
(A에 전송되는 암호화 메시지를 도청)
◎ 공개키 기관에 의한 세션키 분배
- 세서미 방식
▷ A와 공개키 기관이 상면한다
상면하다 : 자신의 공개키를 공개키 기관에 등록, 공개키 기관의 공개키를 가져옴
= face to face
▷ 순서
(1) - 클라이언트 A는 공개키 기관에 타임스탬프를 주며 B의 공개키를 요구한다(Request)
(2) - 공개키기관은 KUb와 질의내용, 타임스탬프를 공개키기관의 개인키로 암호화하여 회송
→ 근원지 증명 → A는 공개키기관이 맞음을 확신
(3) - B의 공개키로 자신의 ID와 N1(난수)을 암호화하여 전송
→ B만이 볼 수 있어야 함
(4) - B는 A의 ID를 확인, 공개키기관에게 A의 공개키를 요구
(5) - 자신의 개인키로 B가 요구한 결과와 A의 공개키를 타임스탬프와 함께 암호화하여 회송
(6) - A가 보낸 난수 N1과 자신이 생성한 난수 N2를 A의 공개키로 암호화하여 전송
→ A는 B가 진짜 B임을 확신
(7) - A는 B의 공개키로 N2를 암호화하여 회신
→ B는 A가 진짜 A임을 확신
(8) - A는 자신의 개인키로 세션키를 암호화한 결과를 B의 공개키로 암호화하여 전송
→ 세션키의 공유 성공
▷ 비밀키 방식보다 공개키기관의 부담이 덜 함
▷ 재선송 시에는?
- A의 경우
→ 공개키 기관은 저장하고 있는 키의 해쉬 값을 저장하고 있음,
→ A는 공개키 기관에 B의 공개키의 해쉬 값이 맞나 물어봄
- B가 맞을 경우
→ (8)번 과정부터 시행
- B가 틀릴 경우
→ (1)번 과정부터 재시행
- B의 경우
→ A에게 값을 받았을 때, 역시 공개키기관에 A의 해쉬 값을 요청
= A가 틀릴 경우
→ 모든 A가 보낸 메시지를 무시
= A가 맞을 경우
→ 정상 시행
댓글
댓글 쓰기