DSA(Digital Signature Algorithm)에 대해 공부해 보겠습니다~
이 알고리즘 또한 핵심은 메세지에 해시된 값에 서명자의 개인키가 사용이 되어서 서명을 생성한다는 것입니다.
검증할 때는 서명자의 공개키를 가지고 검증을 하면 됩니다.
DSA는 DLP에 기반하기 때문에 앞서 공부했던 Elgamal 알고리즘 때 공개키,개인키 생성했던 방식과 비슷합니다.
● 사용자 public key(Y)
p,q : prime number를 임의로 선택합니다. 그래야 P보다 작은 G : generator를 고를 수 있기 때문이죠.
● 사용자 private key(x)
x는 0보다 크고 q보다 작은 어떤 임의의 자연수이기만 하면 됩니다.
● Signing<s,r>
어떤 메세지에 대해서 서명을 생성할 때, 임의의 숫자 k를 생성합니다. (이 숫자는 안정성의 용도로 사용합니다)
서명자가 k를 알려주면 x가 무엇인지 알 수 있기 때문에 g에 k승을 해서 r을 생성합니다. 이말은 r이 무엇인지 알아도 k가 무슨 값인지는 알 수 없습니다.(DLP 기반)
개인키 x와 r을 곱해줘서 해시한 메세지와 더해줍니다. 그리고 검증자에게 나는 이 r에 대한 k를 안다는 것도 증명을 해야 합니다. 내가 Y의 개인키인 x의 소유주 이기도 하지만 이 서명을 생성할 때 사용한 k도 안다는 것을 증명하기 위해서 를 곱해 주는 겁니다.
으로 k를 정리해볼 수 있습니다.
● Verifying
검증자는 메세지(원본), 서명자의 공개키(Y),s,r을 압니다.
검증자는 이 두 값을 검증하기 위해 임의로 만들어 줍니다.
v 값이 서명할 때 만들었던 r값과 같으면 서명검증이 됩니다.
'Computer Security' 카테고리의 다른 글
암호를 이용한 전자상거래 - 공인인증서, 전자 봉투 (0) | 2017.12.11 |
---|---|
전자 서명 알고리즘 - 해시, 공개키 기반 구조 (0) | 2017.12.11 |
전자 서명 알고리즘 - RSA (0) | 2017.12.09 |
암호를 이용한 전자상거래 - 전자 서명 (0) | 2017.12.09 |
암호에 대한 이해 - Hybrid (0) | 2017.12.09 |