- Published on
About Digital Signature and RSA, ECC
- Authors
- Name
- 이민기
- Github
- @mingi3442
Digital Signature
전자 문서의 데이터 무결성과 출처 증명을 위한 암호화 알고리즘
전자 서명 & 일반 서명의 차이점
일반 서명 | 전자 서명 | |
---|---|---|
특징 | 문서에 포함한다 (낱인, 서명 등..) | 문서와 서명이 분리된 파일로 존재 |
관계 | 1:n 관계 | 1:1 관계 |
복제 | 서명된 문서의 복사본과 원본은 구분이 가능 | 원본과 복사된 문서를 구분할 수 없으며 구분해야하는 경우 문서에 타임스탬프를 추가 |
전자서명 특징
Message Authentication (인증)
✓ 발신자의 공개키를 통해 검증되므로 발신자가 보낸 것을 인증 가능합니다.
Message Integrity (무결성)
✓ 메세지가 수정될 경우 서명이 변경되기 때문에 무결성이 검증됩니다.
Nonrepudiation (부인 방지)
✓ 신뢰가능한 제 3자를 있다면 발신자가 보낸 메세지를 발신자가 보내지 않았다고 주장하기 어렵습니다.
𖤐 전자서명은 기밀성유지를 위해 사용되지 않습니다.
⤷ Plain Text를 이용하여 서명할 경우에는 검증과정에서 PlainText가 그대로 노출 될 수 있으며, 이와 같은 이유와 비대칭 키 암호화의 특징을 고려해 PlainText를 해싱하여 Digest로 만든 후 서명합니다
RSA 디지털 서명
✓ RSA 알고리즘은 암호화에 수신자의 공개 키와 복호화에 수신자의 개인 키를 사용하는 반면, RSA 디지털 서명은 발신자의 개인 키로 서명을 생성하고 발신자의 공개 키로 그것을 검증합니다.
키 생성방법 🔑
✓ 키 생성방법은 전에 정리한RSA 알고리즘의 키 생성방법과 동일합니다! 😏
검증 🧐
검증부분 역시 RSA 검증 부분과 비슷합니다.🥲
: Signature : Message
⤷ 𖤐 φ⒩ 오일러의 정리 마지막 부분 😉
ECDSA (타원곡선 디지털 서명 구조)
키 생성 방법 🔑
타원 곡선 를 선택합니다.
⤷ 는 prime Number,소수입니다.
⤷
다른 소수 와 개인 키로 사용할 정수 선택합니다.
타원 곡선 상 한 점 를 선택합니다.
⤷ 이 점을 generator라고도 합니다.
선택한 와 개인 키로 사용하는 정수 를 이용해 다른 한 점 를 계산 합니다.
⤷
개인키는 선택한 정수 가 되고, 공개키는 가 됩니다.
⤷ 그러나 공개된 값이 이기 때문에 모두 공개키라고 볼 수도 있습니다.
검증 🧐
✓ Sign
Temporary Private Key :
⤷ 1 < < -1
Temporary Public Key :
:
:
⤷ ∴ Signature : (, )
✓ Verify
먼저 아래와 같이 가정합니다.
=
=
Sign할 때 를 만든 알고리즘을 통해 의 값을 구합니다.
:
⤷ :
Public Key를 이용하여 식을 간소화합니다.
⤷
=
=
=
타원 곡선 상 점 의 좌표를 생성합니다, ⤷ =
이므로 일 경우 검증 완료!! 🥳 📝