프로그래밍[Univ]/네트워크

[네트워크] 메세지 무결성 Part 2 디지털 서명

Cloud Travel 2012. 11. 11. 10:18

* 디지털 서명(Digital Signature)

 - 공개키를 이용해 메세지 무결성을 보장하는 것

 - 디지탈 서명 또한 해쉬와 같이 암호화가 목표가 아니다.

 - 특정 메세지를 보내는 사람이 자신의 Private Key를 이용하여 암호화한다.

  > 이 암호화 하는 것을 서명을 한다고 한다.

  > 수신자는 송신자의 공개키로 복화하한다.

 - 공개키 알고리즘은 앞서 설명했듯이 느린 속도의 알고리즘이다. 이를 단축하기 위해서 메세지 다이제스트를 이용한다.

 - 메세지 다이제스트를 이용해 만들어진 짧아진 메세지(MAC)를 디지털 서명하는 것이다.

  > 수신자는 MAC을 공개키로 해독한후, 받은 메세지로 MAC을 만들어 서로 비교한다.

  > 이는 HMAC이 아님에도 메세지 무결성과 송신자 확신 모두를 가능하게 한다.(Shared secret key > 공개키)

 - 디지탈 서명로 인해 가능해진 것이 하나 있다. 그것은 "부인 봉쇄"이다.

  > 부인 봉쇄(non-repudiation)

   ~ 상대방이 보낸 메세지를 자신이 보낸 메세지가 아니라고 하는 것을 막을 수 있다.

   ~ 메세지를 보낼때 자신만이 알고 있는 private key를 이용하여 서명을 했기 때문에 부인하는 것을 봉쇄 할 수 있다.

    ? 그렇다면 Bob이 그것이 자신의 private key와 public key가 아니라고 한다면 어떻게 할까?


* 공개키 인증

 - 위에서 제시된 문제점을 해결하기 위해서 인증기관이 만들어 졌다.

 - 인증기관(Certification Authority:CA) : 특정 개체의 공개키가 시실인 것을 증명해주는 곳

 - 특정 사람은 자신의 공개키를 인증기관에 등록하여 사용한다.

 - 인증기관은 특정 사람과 공개키를 결합하는 인증서를 만들고, CA의 개인키로 암호화한다.

  > 다른 사람이 특정 사람의 공개키를 원한다면, 인증서를 보내준다.

  > 인증서를 인증기관의 공개키로 복호화하여 서로 비교를 하여 공개키의 사실 여부를 확인한다.

 ? 인증기관의 개인키는 어떻게 믿을 수 있는가? 

  > 이로 인해 계층적으로 인증기관이 존재하며, 최상위 기관(Root certificate)은 충분히 신뢰 할 수 있다고 생각한다.


* 인증서

 - 표준 : X.509

 - 발행자 이름, 개체 이름, 주소, 도메인 이름, 발행자의 공개키, 전자서명(발행자의 개인키로 서명)등이 포함된다.