1. 키 교환 (Key Exchange)
- 통신을 할 때 공개키는 크므로 블록 암호를 사용한다.
- 처음에는 서로 공개키와, 개인키를 갖고 있다.
2. 키의 독립성 (Key Independence)
- 세션키는 동시에 열릴 수도 있고 아닐 수 도있다.
- 다만 모든 세션키는 서로 독립적이어야 한다.
- 유출된 세션키는 다른 유출되지 않은 세션 키의 정보를 얻기 위해 사용될 수 없어야 한다.
3. 순방향 비밀성 (Forward Secrecy)
- 만약 private 키가 유출되어도 다른 세션키는 알 수 없어야 한다.
- 그 이유는 기존의 주고 받은 내용을 보호하기 위해서이다.
- 유출된 private 키는 유출되지 않은 세션 키의 정보를 얻기 위해 사용될 수 없어야 한다.
4. SSR(Session state reveal) 에 대한 비밀성
- rA와 rB는 랜덤한 세션키를 위한 랜덤한 값이다.
- 항상 고정된 private 키와 public 키를 사용하므로 세션키는 랜덤적이어야만 한다.
- 다만 여기서 사용된 rA와 rB가 유출되더라도 세션키를 몰라야만 한다.
- 유출된 랜덤 값은 유출되지 않은 세션 키의 정보를 얻기 위해 사용될 수 없어야 한다.
5. 키 분배 (Key Distribution)
- 위에서 설명한 것을 가지고 교환방식을 알아본다.
1) Secret key를 A가 혼자 선택한 경우
- 이 방법의 경우 3가지의 단점이 있다.
가. Secret key를 A가 유리하게 만들 수 있다.
나. Secret key를 A 혼자 만드므로 불안정할 수 있다.
- 따라서 B와 A가 Secret key를 컨트롤 할 수 있게 해야 한다.
- does not provide secrecy against SSR
다. B의 개인키가 노출될 경우 Secret key를 알수 있다.
- does not provide forward secrecy
- 결론 : 다른 방식의 프로토콜이 필요
2) Diffie-hellman Key Exchange (= agreement)
- A가 선택한 값과 B가 선택한 값이 둘다 적용된다. -> SSR에는 안전함
- 하지만 이 방법의 경우 다음과 같은 단점이 존재한다.
가. 세션키는 항상 같은 값이므로 key의 독립성을 보장하지 못한다.
- does not provide key independence
나. xA나 xB가 노출되면 세션키 계산이 가능하다.
- does not provide key secrecy
- 결론 : 매 세션마다 다른 세션키를 사용하도록 해야함
3) BCK Key Exchange
- 매 세션마다 다른키를 생성하지만 메세지를 누가 보냈는지 알 수 없다. 따라서 g^b를 같이 보낸다.
- provide key independence
- 그리고 g^a 와 g^b를 같이 보내게 되면 세션에서 주고 받는 것을 보장하면서 전자서명을 할 수 있다.
- 이렇게 되면 매 세션마다 다른키이기 때문에 private 키가 노출되더라도 a를 구할 수 없게 된다.
- provide forward secrecy
- 하지만 난수가 노출되면 키가 노출된다
- does not provide secrecy against SSR
- 결론 : 위의 2가지를 합치면 된다.
4) HMQV-C
- 이 방법은 위의 방법과 비슷하나 CVC 대신 맥값을 이용하여 자기가 보낸 것을 인증할 수 있다.
- 이렇게 함으로서 모든 요구조건을 성립하게 된다.
6. 공개키 관리
1) PKI (public key Infrastructure)
- 개인키가 노출되면 공개키를 사용하지 못하도록 해야하는데 그걸 관리하는 곳이 필요하다.
- 공개키는 CA라는 인증기관이 관리해준다.
- 단 하나만 있으면 취약하니 여러개가 존재 한다.
2) CA (Certification Authority)
- Implementation and operation of public key (구현 및 운영)
- Delivery system of public key and certificates (공개키 요청시 알려줌)
- Network of Certification authority (CA관리)
가. A의 공개키를 알기 위해 CertA에 접근한다.
나. CertA를 알기 위해선 CA4 인증서가 필요하다.
다. CertCA4를 알기 위해선 CA1 인증서가 필요하다.
라. CertCA1을 알기 위해선 CA0 인증서가 필요하다.
마. CertCA0은 본인이 본인을 인증한다.
3) X.509 Certificates
- Version : 인증서의 버전
- Serial Number : 인증서의 유니크한 시리얼 번호
- Signature : 인증서의 서명을 만들 때 필요한 알고리즘
- Issuer : 발급자
- Validity : 유효한 기간
- Subject : 소유자의
- Subject Public-Key Info : yA 같은 값
- Issuer Unique Identifier : 발급자 고유 식별자
- Subject Unique Identifier : 소유자 고유 식별자
- Extensions
4) X.509 CRL ( Certificate Revocation List)
- 인증서가 언제 업데이트 되는지, 인증서가 언제 폐기되는지에 대한 정보가 들어있다.
- 인증서의 유효기간이 끝나거나 인증서 업데이트 날짜가 지나면 리스트에서 사라진다.
5) OCSP (online certificate status protocol)
- A는 OSCP서버에게 (버전, 서비스, 인증서식별자) 등의 정보를 요청할 수 있다.
'보안 > 정보보호이론' 카테고리의 다른 글
신원확인 방법 (Entity Authentication) (0) | 2015.03.05 |
---|---|
안전한 서명 (Security Model for Signature) (0) | 2015.03.05 |
Discrete Logarithm Based Problem (0) | 2015.03.04 |
RSA (Rivest, shamir, adelman) (8) | 2015.03.04 |
공개키 (Public Key) (0) | 2015.03.03 |