본문 바로가기
Computer Security

전자 서명 알고리즘 - DSA(Digital Signature Algorithm)

by Doromi 2017. 12. 9.
728x90
반응형

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값과 같으면 서명검증이 됩니다.

 

 

728x90
반응형