이 글은 ref. 1 의 내용을 번역해서 각색했습니다.
Authenticity and Integrity
- authenticity : 유저가 code 가 어디서 왔는지 확신할 수 있는 것
- integrity : 발매(publication) 이후로 code 가 함부로 변경되지 않았다.를 증명해준다.
Authenticode 는 개발자들이 디지털 사인(digital signatures) 을 이용해서 개발자의 정보와 암호를 넣을 수 있다.
그러나 그것이 실행하는데 안전한 것을 보장하진 않는다.
Digital Signature
RSA public-key 암호(cipher) 같은 public-key signature 알고리즘을 이용해서 만들어진다.public key 와 private key 가 있어야 되는데, 하나는 encryption(암호화) 에 쓰이고, 다른 녀석은 decryption(복호화)에 쓰인다.
복호화키는 암호화키에서 계산될 수 없다.
디지털 서명에서 private key 는 signature 를 만든다. 대응되는 public key 가 그것이 유효한지 확인 한다.
실제에서는 public key 알고리즘은 긴 문서들을 sign 하기엔 충분하지 않다.
시간을 줄이기 위해서, digital signature 프로토콜들은 Cryptographic Digest 를 사용한다. 이것은 document 를 한방향으로 hashing 하는 것이다. 그래서 이 hash 값을 document 대신에 sign 한다
hashing 알고리즘과 digital signature 알고리즘은 사전에 미리 일치된다.
process 는 아래와 같다.
- document 의 one-way hash 가 생성된다.
- 이 hash 를 private key 로 암호화된다. 그렇게 하므로써 document 를 sign 하는 것이된다.
- document 와 signed hash(encrypted hash) 가 전송된다.
- 수신자는 document 의 one-way hash 를 만든다.
- digital signature 알고리즘을 사용해서 수신자는 보낸사람의 public key 를 이용해서 signed hash 를 복호화 한다.
signed hash 의 값과 수산자가 만든 hash 값이 같으면 이 서명(signature) 은 유효하고 document 는 누구도 건들지 않은 것이다.
그런데 여기서 public key 가 정확해야 한다. public key 가 틀리다면 hash 값도 틀리게 될 것이고, 결국 document 는 틀렸다는 결론이 나오게 된다. 그래서 이 public key 의 무결성에 대한 대책으로 Certificate 이 나오게 된다.
Digital Certificates
entity 를 구별해 주는 data 의 set 이다.certificate 은 authority entity 의 신분을 증명하고 난 이후에만 certification authority 에 의해 발행된다.
data set 은 entity 의 public cryptographic key 를 포함한다.
메시지의 sender 가 private key 로 message 를 사인할 때
수신자는 sender 의 신분을 확인하기 위해 public key 를 이용할 수 있다.
certificate 으로부터 가져오거나
message 와 함께 보내진다.
directory service 안의 어떤 곳에서 가져올 수도 있다.
Certificate Store Technology
code signing 을 위해서는 private key 와 sign 하는 사람(signer)의 정보가 필요하다.signature 에서 사용되는 디지털 인증서(digital certificate) 는 일반적으로 signer 의 신분 정보를 제공한다. 그래서 private key 는 다른 방법으로 제공되어야 한다.
signature 는 CSP(cryptographic service provider)를 위해서 certificate chain 을 포함해야만 한다.
signed file 을 authenticated 하기 위해서 순차적으로 user 가 신용하는 root certificate 까지 가는 certificate chain 을 포함해야만 한다.
Microsoft 는 certificate store 기술은 위에서 이야기 한 복잡성을 줄이기 위해 만들었다.
이 기술을 이용하면 유저가 인증서를 얻으려고 등록할 때 private key 정보, CSP 정보, certificate 에 대한 certificate store 이름 을 구체적으로 명시한다.
certificate 은 certificate store 에 저장되고 다른 item 과 연관되어진다.
user 가 document 를 sign 하고 싶을 때, 그들은 단지 certificate store 에 있는 certificate 을 구별하기만 하면 된다.
code signing tool 은 명시된 certificate 에 기초해서 certificate, private key, CSP 에 대한 certificate chain 을 불러올 것이다.
단지 certificate 하나만 있으면 digital code signing 을 할 수 있다.
user 가 private key 와 CSP 정보를 관리해야만 하는 것에서 벗아나게 해준다.
Digital Certification(public key certificate)
위에서도 이야기 했듯이 Digital 인증은 신뢰할 수 있는 public key 의 전달을 위해 만들었다.그래서 digital certificate 의 가장 중요한 목표중 하나는 certificate 에 들어 있는 public key 가 실제로 certificate 을 발행받게 되는 사람이나 entity 의 public key 인지를 확인해 주는 것이다.
예를 들면, certificate authority 는 user 의 이름, Alice 그리고 그녀의 public key 를 가지고 있는 특별한 메시지(certificate 정보) 를 디지털적으로 사인한다.
이 때 signed certificate information message 가 certification authority 에 의해 사인되었다는 것을 누구나 증명할 수 있는 방법으로 사인하게 된다.
certification authority 는 그것에 의해 Alice 의 public key 에 대한 신용(trust) 를 전달한다.
일반적은 digital certification 의 구현은 certificate 을 sign 하기 위한 signature 알고리즘을 포함한다.
프로세스는 아래와 같다.
- Alice 는 certification authority 에 자신의 이름, public key를 첨부해서 certification 요청을 보낸다.
- certification authority 는 Alice 의 request 로 부터 특별한 메시지(m)를 만든다. 이것이 certificate 의 대부분의 data 를 구성한다.
- certification authority 는 자신의 private key 로 message m 을 sign 한다. 이렇게 sign 을 하면서 seperate signature (sig) 를 얻는다.
- 그리고 나서, certification authority 는 message m 과 그리고 signature sig 를 Alice 에게 돌려준다. 이 두개가 함께 하나의 certificate 를 구성한다.
- Alice 는 그녀의 public key 에 대한 trust 를 전달하기 위해 certificate 을 Bob 에게 보낸다.
- Bob 은 certification authority 의 public key 를 사용해서 signature sig 를 확인한다.
- 만약 signature 가 확인되면, 그는 Alice 의 public key 를 수락한다.
누구나, 아무때나, 어떤 비밀스런 정보에 대한 접근없이도, certificate 이 certification authority 에 의해 sign 되었다는 것을 증명할 수 있다.
Bob 은 certification authority 의 public key 에 접근하기 위해 certification authority 의 certificate 의 복사본만 있으면 된다.
certificate 은 그것을 발행한 certification authority 에 의해 명시된 특정 시간 동안에만 유효하다. certificate 은 시작 날짜와 expiration 날짜에 대한 정보를 갖고 있다.
certification authority 는 자신이 발행한 어떤 certificate 도 폐지할 수 있고, 폐지된 certificate 들의 list 를 유지한다.
이 list 는 certificate 폐지 리스트(certificate revokation list, CRL)라고 부르는데, certification authority 에 의해 발행 된다. 그래서 아무나 주어진 certificate 의 유효성을 알아낼 수 있다.
댓글 없음:
댓글 쓰기