이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 12821|회답: 0

[C] SM2 디지털 서명 검증의 원리

[링크 복사]
게시됨 2019. 6. 26. 오전 10:09:45 | | |
SM2는 타원 곡선을 기반으로 한 디지털 서명 알고리즘이며, 타원 곡선에 대한 설명은 이전 웨이보에서 확인할 수 있고, 다음은 SM2 서명 과정에 대한 간략한 소개입니다.
서명할 정보 ee는 특정 처리 후 해시 함수를 통해 얻은 원본 정보이며, 해싱 알고리즘은 국가 비밀 SM3 알고리즘을 사용합니다. 이 과정도 생략되고 키 서명 및 검증 과정만 도입됩니다.

1. 서명 절차
GG를 타원 곡선의 기준점이고, dAdA를 개인 키, PAPA를 공개 키, PA=dA∗GPA=dA∗G
서명 결과 (r,s)(r,s)는 EE에 디지털 서명을 통해 얻어지며, 계산 과정은 다음과 같습니다:
우선, 무작위 숫자 kk를 선택하세요. 물론 이 숫자의 선택은 제한되어 있으니 지금은 그대로 두세요
r=e+x1r=e+x1을 계산하는데, 여기서 (x1,y1)=k∗G(x1,y1)=k∗G
s=(1+dA)−1∗(k−r∗dA)s=(1+dA)−1∗(k−r∗dA)를 계산합니다.
앞부분은 개인 키로 처리된 것을 알 수 있습니다.

2. 서명 검증 과정
서명 검증은 얻은 서명, 공개 키, 타원 곡선 매개변수 등을 사용하여 서명을 검증하는 것이며, 주요 검증 단계는 다음과 같습니다:
먼저 t=r+st=r+s를 계산하는데, 만약 t=0t=0이면 통과하지 못했다는 뜻입니다.
그 다음 곡선 위의 점 (x1,y1) = s∗G+t∗ PA (x1,y1)=s∗G+t∗ PA는 tt와 ss로 계산됩니다.
그 다음 R=x1+eR=x1+e를 계산한 후 RR과 rr이 같은지 확인하면, 검증이 통과된 것입니다.

3. 검증의 원칙
이것이 검증될 수 있으니, 다음과 같이 유도하는 것이 좋습니다:
(x1,y1)=s∗G+t∗PA =s∗G+(r+s)∗PA =s∗G+(r+s)∗dA∗G=(1+dA)∗s∗G+r∗dA∗G=(1+dA)∗(1+dA)−1∗(k−r∗dA)∗G+r∗dA∗G=(k−r∗dA)∗G+r∗dA∗G=k∗G(x1,y1)=s∗G+t∗PA =s∗G+(r+s)∗PA            =s∗G+(r+s)∗dA∗G=(1+dA)∗s∗G+r∗dA∗G=(1+dA)∗(1+dA)−1∗(k−r∗dA)∗G+r∗dA∗G=(k−r∗dA)∗G+r∗dA∗G=k∗G
공개 키에 따라 얻은 타원 곡선의 이 점이 서명 시점과 일치함을 알 수 있습니다.
그 다음 x1x1과 받은 정보를 더해 전송된 서명 rr과 일치하는지 확인하면 통과합니다.
---------------------
저자: leowang666
출처: CSDN
원본: https://blog.csdn.net/hugewaves/article/details/59205914
저작권 고지: 이 글은 블로거의 원본 기사입니다. 재인쇄를 위해 블로그 게시물 링크를 첨부해 주세요!





이전의:【원본】구글 애드센스 송금 모금 튜토리얼
다음:Angular 이벤트 바인딩/속성 바인딩@HostListener, @HostBinding
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com