타원곡선 디지털 서명 알고리즘
Elliptic Curve Digital Signature Algorithm암호학에서 Elliptic Curve Digital Signature Algorithm(ECDA; 타원곡선 디지털 서명 알고리즘)은 타원곡선 암호화를 사용하는 Digital Signature Algorithm(DSA; 디지털 서명 알고리즘)의 배리언트를 제공합니다.
키와 시그니처 사이즈
일반적으로 타원곡선암호법과 마찬가지로 ECDSA에 필요하다고 생각되는 개인키의 비트사이즈는 보안수준의 약 2배(비트)[1]입니다.예를 들어 보안 레벨이 80비트인 경우(즉 공격자가 개인 키를 찾기 위해 최대 약 })의 조작이 필요함)에서는 ECDSA 개인 키의 크기는 160비트가 됩니다.한편 시그니처 사이즈는 DSA와 ECDSA 모두 동일합니다.약 \ 비트는80비트의 보안 수준에 대해 비트 단위로 측정된 보안 수준입니다.
시그니처 생성 알고리즘
Alice가 Bob에게 서명된 메시지를 보내고 싶다고 가정합니다.처음에는 곡선 파라미터 {CURVE에 동의해야 합니다.곡선의 필드 및 방정식 외에 곡선의 기본점인 G G가 합니다. n는 G(\ G의 곱셈입니다를 클릭합니다.
파라미터 | |
---|---|
곡선 | 사용되는 타원 곡선장과 방정식 |
G | 타원 곡선 기준점, 큰 소수점 n의 부분군을 생성하는 곡선상의 점 |
n | 의 정수 순서는n × G (\ n G을 의미합니다. 서 O O는 식별 요소입니다. |
개인 키(선택된 암호) | |
공개키(타원곡선으로 표현) | |
m | 보낼 메시지 |
G의 nn은 소수여야 합니다. 링Z / 의 0이 아닌 요소(\ /는 모두 반전 가능하므로Z / (\ / 는 필드여야 합니다.이는 nn이 소수여야 함을 합니다(cf).베주트의 신원).
Alice는 개인 키 로 구성된 키 쌍을 만듭니다. [,- 1 및 공개키 ×({}=에서 랜덤으로 선택됨 G 를사용하여 타원곡선점 곱셈을 스칼라로 나타냅니다.
Alice가 m에 서명하려면 다음 절차를 따릅니다.
- (m ) { e ={HASH (} . (여기서 HASH는 SHA-2와 같은 암호화 해시 함수이며 출력은 정수로 변환됩니다.)
- z 는 e e의 끝 부분displaystyle L_{n})으로 합니다서 (\n})은 그룹 n(\ n의 비트 길이입니다(zz)는 n n보다 클 수 있지만 길 수는 없습니다).[2]
- , - { , 에서 암호화로 안전한 랜덤 k { k} 를 선택합니다.
- 곡선점 1, ) × })= G를 계산합니다.
- r n {\ r을 합니다. {\ r=0이면 스텝 3으로 돌아갑니다.
- s - ( + d ) n s을 합니다. {\ s {\ s이면 3단계로 돌아갑니다.
- 시그니처는 쌍, , n r, - , { \ { , , , , )도 유효한 시그니처입니다).
표준주로서 k k는 이어야 할 뿐만 아니라 서명마다 k(\ k를 선택하는 것도 중요합니다.그렇지 않으면 스텝 6의 방정식은 에 대해 풀 수 있습니다.A 개인 키: 2개의 시그니처 {)} 및( s{, {m} 및 m { m {{ k를 사용하여 는를 할수 . { z} 、 -s′- ( - ) )} } 、 ( 이 항의 모든 은 수행되므로 공격자는 k -′ - s - s stylen}의 { k - s - s - s }를 찾을 수 공격자는 이제 개인 키 - r {\를 계산할 수 있습니다.입니다
이 구현 실패는 예를 들어 PlayStation 3 게임 [3]콘솔에 사용되는 서명 키를 추출하기 위해 사용되었습니다.
ECDSA 시그니처가 개인 키를 누출할 수 있는 또 다른 방법은결함이 있는 난수 생성기에 k k가 생성된 입니다.이 같은 난수 생성 실패는 2013년 [4]8월 안드로이드 Bitcoin Wallet 이용자들의 자금 손실을 초래했다.
k k가 각 메시지에 대해 을 보증하기 위해 랜덤 번호 생성을 완전히 생략하고 메시지와 개인 [5]키 모두에서k(\ k를 도출하여 결정론적 서명을 생성할 수 있습니다.
시그니처 검증 알고리즘
Bob이 Alice의 서명을 인증하려면 공개키 Q_의 복사가 필요합니다.Bob은 Q_가 유효한 커브포인트임을 할 수 있습니다.
- 가 ID 요소 O와 동일하지 , 그 좌표가 유효한지 확인합니다.
- 가 곡선상에 있는지 합니다.
- n× A (\ n Q_}=인지 확인합니다.
그 후 Bob은 다음 단계를 수행합니다.
- r 및 s가 [, -1, n-1정수임을 확인합니다.그렇지 않으면 시그니처는 비활성화됩니다.
- (m ) { e {HASH 을 계산합니다.여기서 HASH는 시그니처 생성에서 사용되는 함수와 동일합니다.
- z를 e의 왼쪽 의 L_}) 비트로 합니다.
- 1 - n {\} = {\ 2 s- n {\} = {- {\을 합니다.
- 곡선점1, 1) 1 × + 2 × A}, })=G+ Q_ If(1, 1)= O{1})= 그러면 서명이 잘못되었습니다
- 시그니처는 r x ( n) { r \ _ { } { \ {} 유효합니다.
효율적인 구현에서는 - 1 n s을 한 번만 계산합니다.또한 Shamir의 트릭을 사용하면 [6]2개의 스칼라 1× + 2 × { _ { \ G + _ { \ Q {A }의 합계가 독립적으로 이루어지는 2개의 스칼라 곱셈보다 빠르게 계산될 수 있습니다.
Correctness of the algorithm
It is not immediately obvious why verification even functions correctly. To see why, denote as C the curve point computed in step 5 of verification,
From the definition of the public key as ,
Because elliptic curve scalar multiplication distributes over addition,
Expanding the definition of and from verification step 4,
Collecting the common term ,
Expanding the definition of s from signature step 6,
Since the inverse of an inverse is the original element, and the product of an element's inverse and the element is the identity, we are left with
From the definition of r, this is verification step 6.
This shows only that a correctly signed message will verify correctly; many other properties[which?] are required for a secure signature algorithm.
Public key recovery
Given a message m and Alice's signature on that message, Bob can (potentially) recover Alice's public key:[7]
- Verify that r and s are integers in . If not, the signature is invalid.
- 곡선 R ( , y ) R=( )을 계산합니다. 서 x1 { 은r {\ r+ {\ r ( 1{r}) 필드는 너무 크지 않습니다.{\는 곡선 방정식을 만족시키는 값입니다이러한 조건을 만족시키는 여러 개의 곡선 지점이 있을 수 있으며, R 값이 다를 때마다 다른 키가 복구됩니다.
- (m ) { e {HASH 을 계산합니다.여기서 HASH는 시그니처 생성에서 사용되는 함수와 동일합니다.
- z를 e의 왼쪽 의 L_}) 비트로 합니다.
- 1 - - n { \ _ { 1} = - { , { \ { , } n 2 - n {} , { \ { , 을 합니다.
- A ( , A ) 1 × + 2 × ( \ } = ( ,A} ) = \ G} \ R)을 계산합니다.
- 서명은 가 Alice 공용 키와 일치하는 유효합니다.
- 가능한 모든 R 포인트를 시도했지만 Alice의 공용 키와 일치하는 항목이 없으면 서명이 유효하지 않습니다.
무효 시그니처 또는 다른 메시지로부터의 시그니처는, 잘못된 공개 키를 회복하는 것에 주의해 주세요.복구 알고리즘은 서명자의 공용 키(또는 해당 해시)가 미리 알려진 경우에만 시그니처의 유효성을 확인하는 데 사용할 수 있습니다.
복구 알고리즘의 정확성
복구 단계 6에서 의 정의부터 시작합니다.
R ( 1, y) × R=(}) G에서 서명 단계 4에서
타원곡선 스칼라 곱셈은 덧셈에 따라 분산되기 때문에
복구 단계 5에서 스타일 스타일 의 를 확장하면
시그니처 스텝6부터의 정의를 확장합니다.
원소의 역수와 원소의 곱이 동일성이기 때문에, 우리는 다음과 같이 남는다.
첫 번째 항과 두 번째 항은 서로를 상쇄한다.
A × { _ { A } _ {G 이것은 Alice의 공개 키입니다.
이는 서명 값 r에서 곡선 R ( , )({1},1})}을(를) 고유하게 계산하기 위해 추가 정보를 공유한 경우 올바른 서명된 메시지가 올바른 공용 키를 복구함을 나타냅니다.
보안.
2010년 12월, Fail0verflow라고 하는 그룹이, 소니가 PlayStation 3 게임 콘솔의 소프트웨어에 서명하기 위해서 사용한ECDSA 개인 키의 회복을 발표했습니다.그러나 이 공격은소니가 알고리즘을 제대로 구현하지 않았기 때문에 K(\ k가 랜덤이 아닌 정적이었기 때문에 가 있었습니다.위의 '시그니처 생성 알고리즘' 섹션에서 설명한와 같이 displaystyle 해결 가능, 전체 알고리즘이 [8]무용지물이 됩니다.
2011년 3월 29일, 2명의 연구자가 OpenSSL을 사용하여 서버의 TLS 개인 키를 취득할 수 있음을 나타내는 ICR 논문을[9] 발표했습니다.이 문서는 타이밍 [10]공격을 통해 바이너리 필드를 통해 Elliptic Curves DSA를 사용하여 인증할 수 있습니다.이 취약성은 OpenSSL 1.0.[11]0e에서 수정되었습니다.
2013년 8월에는 Java 클래스의 SecureRandom 일부 구현에서 kk 에서 충돌이 발생하는 버그가 발견되었습니다.이를 통해 해커들은 합법적인 키 소유자가 가지고 있던 것과 동일한 방식으로 개인 키를 복구할 수 있게 되었고, 이는 일부 안드로이드 앱 구현에서 PS3 서명 키를 공개하는 데 사용된 것과 동일한 악용으로,[12] 해커들은 자바를 사용하고 거래 인증에 ECDSA에 의존합니다.
이 문제는예측 불가능한 k\k(RFC 6979에 기재된 결정론적 절차 등)으로 방지할 수 있습니다.
걱정
ECDSA에 대한 우려는 다음과 같습니다.
- 정치적 관심사 후에 폭로는 NSA기꺼이 소프트웨어, 하드웨어 구성 요소와 발행된 표준에 backdoors를 삽입하게 만들어졌다NIST-produced 곡선의 신뢰도 조사를 받고 있던;잘 알려 진 cryptographers[13]및 자발적인 tainting 벌써 끝났다 어떻게 자는 NIST곡선 설계되었다에 대해 의문 expressed[14][15]다.t에서 증명했다그는 지나갔다.[16][17](libssh curve25519의 개요도 참조).[18]그럼에도 불구하고, 명명된 NIST 곡선이 드문 약점을 이용한다는 증거는 아직 없다.
- 기술적인 문제: 표준의 적절한 구현의 어려움, 그 속도 저하 및 불충분한 방어적 [19]구현의 보안을 저하시키는 설계상의 결함.
실장
ECDSA를 지원하는 암호화 라이브러리를 다음에 나타냅니다.
- 보탄
- 번시 캐슬
- cryptlib의
- 암호++
- libg크립트
- GnuTLS
- OpenSSL
- 울프크립트
- LibreSSL
- Mbed TLS
- Microsoft CryptoAPI
- 암호화 API(Linux)
「 」를 참조해 주세요.
레퍼런스
- ^ Johnson, Don; Menezes, Alfred (1999). "The Elliptic Curve Digital Signature Algorithm (ECDSA)". CiteSeerX. CiteSeerX 10.1.1.38.8014. Retrieved May 9, 2021.
- ^ NIST FIPS 186-4, 2013년 7월, 19페이지 및 26페이지
- ^ Console Hacking 2010 - PS3 Epic Fail Archived 2014년 12월 15일 Wayback Machine (123-128페이지)
- ^ "Android Security Vulnerability". Retrieved February 24, 2015.
- ^ "RFC 6979 - Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)". Retrieved February 24, 2015.
- ^ "The Double-Base Number System in Elliptic Curve Cryptography" (PDF). Retrieved April 22, 2014.
- ^ Daniel R. L. Brown SECG SEC 1: 타원곡선암호화(버전 2.0) https://www.secg.org/sec1-v2.pdf
- ^ Bendel, Mike (December 29, 2010). "Hackers Describe PS3 Security As Epic Fail, Gain Unrestricted Access". Exophase.com. Retrieved January 5, 2011.
- ^ "Cryptology ePrint Archive: Report 2011/232". Retrieved February 24, 2015.
- ^ "Vulnerability Note VU#536044 - OpenSSL leaks ECDSA private key through a remote timing attack". www.kb.cert.org.
- ^ "ChangeLog". OpenSSL Project. Retrieved April 22, 2014.
- ^ "Android bug batters Bitcoin wallets". The Register. August 12, 2013.
- ^ Schneier, Bruce (September 5, 2013). "The NSA Is Breaking Most Encryption on the Internet". Schneier on Security.
- ^ "SafeCurves: choosing safe curves for elliptic-curve cryptography". October 25, 2013.
- ^ Bernstein, Daniel J.; Lange, Tanja (May 31, 2013). "Security dangers of the NIST curves" (PDF).
- ^ Schneier, Bruce (November 15, 2007). "The Strange Story of Dual_EC_DRBG". Schneier on Security.
- ^ Greenemeier, Larry (September 18, 2013). "NSA Efforts to Evade Encryption Technology Damaged U.S. Cryptography Standard". Scientific American.
- ^ "curve25519-sha256@libssh.org.txt\doc - projects/libssh.git". libssh shared repository.
- ^ Bernstein, Daniel J. (March 23, 2014). "How to design an elliptic-curve signature system". The cr.yp.to blog.
추가 정보
- 공인 표준 위원회 X9, ASC X9는 공개 키 암호/ECDA의 새로운 표준을 발행합니다.2020년 10월 6일출처
- 인정표준위원회 X9, American National Standard X9.62-2005, 금융서비스업용 공개키 암호화, ECDSA(Elliptic Curve Digital Signature Algorithm), 2005년 11월 16일.
- Certicom Research, 효율적인 암호화를 위한 표준, SEC 1: Elliptic Curve Cryptography, 버전 2.0, 2009년 5월 21일.
- 로페즈, J., 다합, R.Elliptic Curve Cryptography의 개요, 기술 보고서 IC-00-10, Campinas 주립 대학교, 2000.
- Daniel J. Bernstein, Pippenger의 지수화 알고리즘, 2002.
- Daniel R. L. Brown, 범용 그룹, 충돌 방지 및 ECDSA, 설계, 코드 및 암호, 35, 119–152, 2005. ePrint 버전
- Ian F. Blake, Gadiel Serousi 및 Nigel Smart 편집자, Elliptic Curve Cryptography, London Mathematical Society 강의 노트 시리즈 317, Cambridge University Press, 2005.
- Hankerson, D.; Vanstone, S.; Menezes, A. (2004). Guide to Elliptic Curve Cryptography. Springer Professional Computing. New York: Springer. doi:10.1007/b97644. ISBN 0-387-95273-X. S2CID 720546.
외부 링크
- ECDSA에 관한 정보를 포함한 디지털 서명 규격
- Elliptic Curve Digital Signature Algorithm(ECDA; 타원곡선 디지털시그니처 알고리즘)은 ECDSA에 대한 자세한 가이드를 제공합니다.웨이백 링크