15 장 : 키관리 Jeon Youngho dean83g@gmail.com 2009.05.29
Contents 대칭키분배 커버로스 대칭키합의 공개키배분
대칭키분배 크기가큰메시지를암호화할때효율적이지만, 사전에당사자끼리비밀키를공유해야함. N 명이통신시 N(N-1) 개의키필요 => N 2 문제라고함. 키의개수뿐만아니라, 키의배분도문제임. 따라서, 비밀키를배분하고관리하는방법이있어야함.
대칭키분배 (cont.) 키 - 배분센터 : KDC (Key-distribution center) KDC 와각각의개인은 1 개씩의비밀키를공유. 1. Alice 가 Bob 과통신하고싶다고 KDC 에요청 2. KDC 는 Alice 의요청을 Bob 에게알림 3. Bob 이동의하면두사람사이의세션키를생성
대칭키분배 (cont.) 평등다중 KDC 병목현상해결위해다중으로설치 키생성과정 1. 자신의도메인에속한 KDC와접속을함 2. 목적지의도메인에속한 KDC까지접속함 3. Alice와 Bob의비밀키생성
대칭키분배 (cont.) 계층다중 KDC 평등다중 KDC 의확장 국제 -> 국가 -> 지역등의계층으로나뉘어짐
대칭키분배 (cont.) 세션키 KDC 는각구성원을위해비밀키를생성 이비밀키는구성원과 KDC 사이에서만사용가능 ( 구성원끼리사용불가 ) 실제로 Alice 가 Bob 과통신을하려면공통비밀키가필요함. Alice 와 Bob 은각각 KDC 에인증을하면 KDC 는 1 회용세션키를생성할수있음.
대칭키분배 (cont.) 하나의 KDC 를이용한단순프로토콜
대칭키분배 (cont.) 하나의 KDC 를이용한단순프로토콜의절차 1. Alice 는자신과수신자의이름을평문메시지로보냄. 2. KDC 는메시지를수신하고티켓 (ticket) 이라고부르는것을생성후 K B (Key Bob) 로암호화후, 세션키와함께 K A (Key Alice) 로암호화하여전송. 3. Alice 는메시지를열어세션키를획득하고 Bob 을위한티켓을전송함. 4. Bob 이티켓을열어보고파라미터순서로 Alice 가 Bob 에대한세션요구를확인하며, 세션키를획득
대칭키분배 (cont.) Needham-Schroeder 프로토콜
대칭키분배 (cont.) Needham-Schroeder 프로토콜의절차 1. Alice 는자신의비표인 R A, 와자신의 ID, 상대의 ID 를보냄 2. KDC 는암호화된메시지를 Alice 에게보냄, 전체메시지는 Alice 의키로암호화 3. Alice 는 Bob 의티켓을 Bob 에게보냄. 4. Bob 은자신의시도인 R B 를세션키로암호화후 Alice 에게보냄 5. Alice 는 Bob 의시도에응답. (R B -1 을전송 )
대칭키분배 (cont.) Otway-Rees 프로토콜
대칭키분배 (cont.) Otway-Rees 프로토콜의절차 1. Alice 는자신의메시지 ( 두 ID, 비표와자신의키로암호화한두아이디, R, R A ) 를 Bob 에게보냄 2. Bob 도동일한티켓생성후이안에자신의비표포함. 3. KDC 는공통비표인 R 과각자를위한티켓생성후 Bob 에게보냄. 4. Bob 은 Alice 에게 Alice 의비표와 Alice 가사용할세션키를보냄. 5. Alice 는세션키획득을알리기위해 K AB 로암호화된메시지전송.
커버로스 인증프로토콜인동시에 KDC 서버 3 개의서버사용 ( 인증서버, 티켓 - 발급서버, 실질적데이터서버 )
커버로스 (cont.) 인증서버 (AS : authentication server) 커버로스프로토콜의 KDC 사용자는인증서버에등록을하고 id와 password발급받음. AS는사용자들의 id와 password에대한 DB를갖고있음. Alice와 TGS사이에사용될세션키를발급, TGS에게티켓발급 티켓 - 발급서버 (TGS : ticket-granting server) Bob에게티켓을발급해줌. Alice와 Bob사이에사용할세션키 K AliceBob ( 이하 K AB ) 발급 AS는한번검증하지만, TGS는접속할서버수만큼접속 실질서버 Server(Bob) 은사용자 (Alice) 에게실제서비스제공
커버로스 (cont.) 참고 : 커버로스의예
대칭키합의 (cont.) KDC 없이서로사용할세션키를생성하는방법 Diffie-Hellman 키합 K = (g x mod p) y mod p = (g y mod p) x = g xy mod p 이다. Diffie-Hellman 방법에서대칭 ( 공유 ) 키는 K = g xy mod p 이다.
대칭키합의 (cont.) Diffie-Hellman 키합의예제 1. Alice는 x=3을선택후 R 1 = 73mod 23 = 21을계산. 2. Bob은 y=6을선택후 R 2 = 76mod23 = 4를계산. 3. Alice는 21을 Bob에게보냄. 4. Bob은 4를 Alice에게보냄. 5. Alice는대칭키 K=4 3 mod23 = 18을계산. 6. Bob은대칭키 K=21 6 mod23=18을계산. K = g xy mod p = 7 18 mod35 = 18 이다. Diffie-Hellman 키의분석 키는 g, x, y 로구성되고 g xy = g yx 로되므로서로의키는알수없다. 실제상대의키를구하려면이산대수문제의복잡도가필요하다.
대칭키합의 (cont.) Diffie-Hellman 의안전성 이산대수공격 1. 소수 p 는매우큰수가되어야만함 ( 십진수로 300 자리이상 ) 2. 소수 p 를선택할때 p-1 이적어도하나의큰소인수 ( 십진수로 60 자리이상 ) 를가져야함. 3. 생성자는군 <Z p*, X> 에서선택 4. Bob 과 Alice 는대칭키생성후 x 와 y 를각자폐기해야함.
대칭키합의 (cont.) Diffie-Hellman 의안전성 중간자공격에취약함.
대칭키합의 (cont.) 국 - 대 - 국키합의 Bob 의개인키로한서명을보냄으로써, Bob 의공개키를모르는 Eve 는중간자공격을할수없다.
공개키배분 공개키암호시스템에서모든사람들은모든사람들의공개키를구할수있음 취약가능성 Eve 가자신의공개키를 Bob 의공개키라고할수있음 Eve 는 Bob 의공개키를 Alice 의공개키로바꾸어놓을수있음.
공개키배분 (cont.) 신뢰받는센터
공개키배분 (cont.) 통제된신뢰받는센터 공개키선언시의타임스탬프를전송 Bob 의키를알고싶을때에키선언시보냈던타임스탬프를다시보내어인증.
공개키배분 (cont.) 인증기관 ( 공개키인증서의등장배경 )
공개키배분 (cont.) 인증기관 ( 공개키인증서의등장배경 ) 요청이많아진다면센터는과부하걸릴가능성있음. 자신이원하는 2 가지 ( 자신의공개키를공개, 전달될때위조방지 ) 를위하여실제오프라인인증기관을방문. 인증서가위조되는것을방지하기위하여 CA 는이인증서를 CA 의개인키로서명. Bob 은이인증서를서버에업로드함. Bob 의인증서를알고싶은 Alice 는 CA 에인증을거친후, CA 의공개키를받아 Bob 의인증서를열어봄
공개키배분 (cont.) X.509 각각의인증서들의형식을통합할필요성을느낌
공개키배분 (cont.) X.509 버전번호 : 버전을정의, 현재는 2( 세번째 ) 를사용 순서번호 : 인증서발행기관의고유번호 서명알고리즘 ID : 서명하는알고리즘식별 발행자이름 : 인증기관이름 ( 국가-지방-조직-부서 ) 유효기간 : 유효시작시간, 끝나는시간 주체이름 : 공개키의소유자이름 주체공개키 : 공개키 발행자유일식별자 ( 옵션 ) : 발행자가유일한지 주체유일식별자 ( 옵션 ) : 주체가유일한지 확장 ( 옵션 ) : 인증서에추가적으로메모 서명 ( 세부분으로구성 ) 1. 인증서의모든필드포함 2. CA의공개키로암호화된첫번째부분의다이제스트 3. 알고리즘식별자
공개키배분 (cont.) X.509 버전번호 : 버전을정의, 현재는 2( 세번째 ) 를사용 순서번호 : 인증서발행기관의고유번호 서명알고리즘 ID : 서명하는알고리즘식별 발행자이름 : 인증기관이름 ( 국가-지방-조직-부서 ) 유효기간 : 유효시작시간, 끝나는시간 주체이름 : 공개키의소유자이름 주체공개키 : 공개키 발행자유일식별자 ( 옵션 ) : 발행자가유일한지 주체유일식별자 ( 옵션 ) : 주체가유일한지 확장 ( 옵션 ) : 인증서에추가적으로메모 서명 ( 세부분으로구성 ) 1. 인증서의모든필드포함 2. CA의공개키로암호화된첫번째부분의다이제스트 3. 알고리즘식별자
공개키배분 (cont.) 인증서갱신 유효기간만료전에새로운인증서발급 인증서폐지조건 1. 사용자의개인키가침해당했을때 2. CA가사용자를더이상인증하지않을때 3. CA의개인키가침해받았을때 이럴경우인증서를폐지하고목록을발행하게된다.
공개키배분 (cont.) 인증서폐지목록 (CRL ; certificate revocation list) 유효기간만료전에새로운인증서발급
공개키배분 (cont.) 인증서폐지목록의필드 서명알고리즘 ID : 인증서의필드와동일 발행자이름 : 인증서의필드와동일 금번업데이트일자 : 이목록의발표일자 다음업데이트일자 : 새로운목록의발표일자 폐지인증서 : 인증서순서번호와, 폐지일자로구성됨 서명 : 인증서의필드와동일 델타폐지 (delta CRL) 금번, 다음업데이트일자이후에변경이만들어서공표 최근에발행한 CRL 이후에발생한변경사항만포함
공개키배분 (cont.) 공개키기반 (PKI : Public Key Infrastructure) X.509 에기초하여인증서를만들고, 배분하고, 폐지하는모델 1. 인증서발급, 배분, 폐지 2. 키저장및갱신 3. 다른프로토콜에대한서비스제공 4. 접근제어제공
공개키배분 (cont.) PKI 의신뢰모델 계층모델 CA 가 CA1, CA2, CA3 의인증서에서명을함. 기관 X 가개체 Y 에게인증서를발급할경우에 X<<Y>> 라고표시.
공개키배분 (cont.) PKI 의신뢰모델 매쉬모델 ( 루트들끼리의묶음 ) 신뢰망 : PGP 에서사용