타원곡선 DSA
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
타원곡선 DSA(ECDSA)는 타원곡선 암호를 기반으로 하는 디지털 서명 알고리즘이다. ECDSA는 개인키와 공개키를 사용하여 서명을 생성하고 검증하며, 서명의 안전성은 타원곡선 이산 로그 문제의 어려움에 기반한다. ECDSA는 정의역 매개변수, 키 생성, 서명 생성, 서명 검증, 공개키 복구 등의 과정을 거치며, 값의 무작위성, 표준 구현의 어려움, NSA가 생성한 곡선의 신뢰성에 대한 의문 등의 보안 관련 취약점 및 우려 사항이 존재한다. 여러 암호화 라이브러리에서 ECDSA를 지원한다.
더 읽어볼만한 페이지
- 타원곡선 암호 - 비트코인
비트코인은 사토시 나카모토가 개발한 최초의 탈중앙화 암호화폐로, 중앙 기관 없이 P2P 네트워크에서 블록체인에 기록되며 채굴을 통해 발행량이 2100만 개로 제한된 자산이다. - 타원곡선 암호 - 타원곡선 디피-헬먼
타원곡선 디피-헬만(ECDH)은 타원 곡선을 사용하여 두 사용자가 공유 비밀 키를 안전하게 생성하는 암호화 프로토콜이며, 키 쌍을 생성하고 공개 키를 교환하여 공유 비밀값을 얻어 대칭 키 생성에 사용한다. - 암호학 - 양자 컴퓨터
양자 컴퓨터는 양자역학적 현상을 이용하여 정보를 처리하는 컴퓨터로, 큐비트를 통해 0과 1을 동시에 표현하여 특정 연산에서 기존 컴퓨터보다 빠른 속도를 보이며 암호 해독, 신약 개발 등 다양한 분야에 혁신을 가져올 것으로 기대된다. - 암호학 - 암호화
암호화는 정보를 보호하기 위해 사용되는 기술로서, 단순한 문자 치환 방식에서 시작하여 현대에는 강력한 암호화 표준과 다양한 종류로 발전했으며, IT 시스템 전반에 적용되지만, 사이버 공격과 양자 컴퓨팅의 발전에 대한 대응이 필요한 기술이다.
타원곡선 DSA |
---|
2. 정의역 매개변수
ECDSA에서 사용되는 정의역 매개변수는 다음과 같다.
매개변수 | 설명 |
---|---|
CURVE | 사용되는 타원 곡선 체와 방정식 |
G | 타원 곡선 기저점. 큰 소수 차수 n을 갖는 부분군을 생성하는 곡선상의 점 |
n | G의 정수 차수. (여기서 O는 항등원)을 의미한다. |
- CURVE: 타원곡선 체(field)와 여기에 사용된 수식이다.
- ''G'': 타원곡선의 기준점(base point)이다. 해당 타원곡선의 생성원(generator)이다.
- ''n'': G의 차수이다. n X g = 0이며, 반드시 소수이어야 한다. 보통 충분히 큰 소수를 사용한다.[2]
기저점 G의 차수 n은 '''반드시 소수여야 한다'''. 환 의 모든 영이 아닌 원소가 가역적이라고 가정하므로, 는 체여야 한다. 이는 n이 소수여야 함을 의미한다(베주 항등식 참조).
3. 키 생성
앨리스는 개인키와 공개키 쌍을 생성한다. 개인키는 1부터 n-1 사이의 무작위로 선택된 정수 이고, 공개키는 를 만족하는 정수이다. 여기서 는 타원 곡선 점의 스칼라 곱셈을 나타낸다.
매개변수 | 설명 |
---|---|
개인키: 범위에서 무작위로 선택되어 보관되는 정수 | |
공개키: ( 위의 점) |
와 의 대응은 1대1이며, 에서 를 계산하는 것은 비교적 용이하지만, 에서 를 계산하는 것은 실질적으로 불가능하다(이산대수 문제). 즉, 와 의 대응은 일방향 함수가 된다.[20]
4. 서명 생성
앨리스가 메시지 ''m''에 서명하는 과정은 다음과 같다.
# 암호화 해시 함수(예: SHA-2)를 사용하여 을 계산하고, 그 출력을 정수로 변환한다.
# 의 왼쪽부터 비트를 취하여 를 계산한다. 여기서 은 군 차수 의 비트 길이이다. (는 보다 '''클 수 있지만''' 길이는 더 '''길 수 없다''').[2]
# 구간에서 '''암호학적으로 안전한 무작위''' 정수 를 선택한다.
# 타원 곡선 점의 스칼라 곱셈을 통해 곡선 점 를 계산한다.
# 을 계산한다. 이면 3단계로 돌아간다.
# 을 계산한다. 이면 3단계로 돌아간다.
# 서명은 쌍 이다. (도 유효한 서명이다.)
표준에서 언급하듯이, 를 비밀로 유지하는 것뿐만 아니라 서로 다른 서명에 대해 서로 다른 를 선택하는 것도 매우 중요하다. 그렇지 않으면 6단계의 방정식을 풀어 개인 키 를 계산할 수 있다. 동일한 값을 사용하고 알려진 서로 다른 메시지 와 에 대해 생성된 두 서명 와 가 주어지면, 공격자는 와 를 계산할 수 있다. (모든 연산은 modulo 으로 수행됨)이므로, 공격자는 를 찾을 수 있다. 이므로, 공격자는 개인 키 를 계산할 수 있다.
이러한 구현상의 오류는 플레이스테이션 3 게임 콘솔에 사용된 서명 키를 추출하는 데 사용되었다.[3]
ECDSA 서명이 개인 키를 유출할 수 있는 또 다른 방법은 결함 있는 난수 생성기에 의해 가 생성되는 경우이다. 2013년 8월, 안드로이드 비트코인 지갑 사용자들이 자금을 잃게 된 원인이 바로 이러한 난수 생성 오류였다.[4]
각 메시지에 대해 가 고유하도록 하려면, 난수 생성을 완전히 건너뛰고 메시지와 개인 키 모두에서 를 도출하여 결정적 서명을 생성할 수 있다.[5]
5. 서명 검증
밥은 앨리스의 공개키 Q|A영어를 사용하여 서명을 검증한다. 우선 앨리스의 공개키 Q|A영어가 유효한지 확인해야 한다.
# Q|A영어가 항등원 ''O''와 같지 않은지 확인한다.
# Q|A영어가 타원 곡선 위의 점인지 확인한다.
# n|n영어 × Q|A영어 = ''O''인지 확인한다.
그다음 메시지 ''m''에 대한 앨리스의 서명 (''r'', ''s'')의 진위를 확인하기 위해 다음 단계를 따른다.
# ''r'', ''s''가 1부터 ''n''-1 사이의 정수인지 확인한다. 아니면 서명은 무효이다.
# ''e'' = H(''m'')을 계산한다. 여기서 H는 앨리스가 서명 생성에 사용했던 해시 함수와 동일하다.
# ''z''는 ''e''의 이진 값에서 왼쪽으로부터 L|n영어번째까지 잘라낸 값이다.
# w|w영어 = s|s영어⁻¹ mod ''n''을 계산한다.
# u|1영어 = zw|zw영어 mod ''n''과 u|2영어 = rw|rw영어 mod ''n''을 계산한다.
# 스트라우스 알고리즘(Shamir’s trick)을 사용하여 곡선점 (x|1영어, y|1영어) = u|1영어 × G|G영어 + u|2영어 × Q|A영어를 계산한다. 만약 (x|1영어, y|1영어) = ''O''이면 서명은 무효이다.
# r|r영어 ≡ x|1영어 mod ''n''일 때만 유효하다. 아니면 모두 무효이다.[6][22]
6. 공개키 복구
주어진 메시지 와 해당 메시지에 대한 앨리스의 서명 가 주어지면, 밥은 앨리스의 공개키를 복구할 수 있다.[7]
# 과 가 범위의 정수인지 확인한다. 그렇지 않으면 서명이 무효이다.
# 이 , , 등 중 하나(단, 이 곡선의 체에 대해 너무 크지 않아야 함)이고 이 곡선 방정식을 만족하는 값인 곡선 점 을 계산한다. 이러한 조건을 만족하는 여러 개의 곡선 점이 있을 수 있으며, 각기 다른 값은 서로 다른 복구된 키를 생성한다.
# 서명 생성에 사용된 것과 동일한 함수 HASH를 사용하여 을 계산한다.
# 의 왼쪽에서부터 비트를 로 한다.
# 과 을 계산한다.
# 곡선 점 을 계산한다.
# 가 앨리스의 공개키와 일치하면 서명이 유효하다.
# 모든 가능한 점을 시도했는데 앨리스의 공개키와 일치하는 점이 없으면 서명이 무효이다.
무효한 서명 또는 다른 메시지의 서명은 잘못된 공개키를 복구하게 된다는 점에 유의해야 한다. 서명자의 공개키(또는 해시값)를 미리 알고 있는 경우에만 이 복구 알고리즘을 사용하여 서명의 유효성을 검사할 수 있다.
7. 알고리즘의 정당성
검증 알고리즘의 정당성은 타원곡선 스칼라 곱셈의 분배 법칙과 서명 생성 과정의 수식을 통해 증명된다.
검증 단계 5에서 계산된 곡선 점을 로 표시하면,
:
공개 키 정의 를 대입하면,
:
타원곡선 스칼라 곱셈의 분배 법칙에 의해,
:
검증 단계 4의 과 정의를 대입하면,
:
공통 항 을 묶으면,
:
서명 단계 6의 정의를 대입하면,
:
역원의 역원은 원래 원소이고, 원소와 그 역원의 곱은 항등원이므로,
:
의 정의에 따르면, 이것은 검증 단계 6과 일치한다.
이는 올바르게 서명된 메시지가 올바르게 검증됨을 보여준다. 하지만 안전한 서명 알고리즘은 암호 해독 공격에 대한 저항성 등 다른 속성도 필요하다.
8. 보안
ECDSA의 안전성은 타원곡선 이산 로그 문제(ECDLP)의 어려움에 기반한다.
키 및 서명 크기: ECDSA에서 권장되는 개인키의 비트 크기는 보안 비트 수의 약 두 배이다. 예를 들어, 80비트 보안 수준에서는 160비트 ECDSA 개인키가 필요하다. 서명 크기는 DSA와 ECDSA 모두 동일하며, 보안 수준의 약 4배이다.[1]
취약점:
- 2010년 12월, "fail0verflow"라는 그룹이 소니가 플레이스테이션 3 게임 콘솔용 소프트웨어에 서명하는 데 사용한 ECDSA 개인 키 복구를 발표했다. 그러나 이 공격은 소니가 알고리즘을 제대로 구현하지 않았고, 값이 난수가 아닌 정적인 값이었기 때문에 가능했다.[8][23]
- 2011년 3월 29일, 두 명의 연구원이 IACR 논문을 통해 OpenSSL을 사용하여 이중체 체 상에서 타원곡선 DSA로 인증하는 서버의 TLS 개인 키를 타이밍 공격을 이용하여 검색할 수 있음을 보여주었다.[9][10][24] 이 취약점은 OpenSSL 1.0.0e에서 수정되었다.[11][25]
- 2013년 8월, 일부 자바 클래스 [https://docs.oracle.com/javase/10/docs/api/java/security/SecureRandom.html SecureRandom] 구현의 버그로 인해 값에 충돌이 발생하는 경우가 있다는 사실이 밝혀졌다. 이로 인해 안드로이드 앱 구현에서 비트코인 트랜잭션 제어 권한을 얻을 수 있었다.[12][26] RFC 6979에서 설명한 대로, k를 결정적으로 생성하면 이 문제를 방지할 수 있다.
- NIST에서 정의한 타원곡선(P-256, P-384, P-521 등)[27]이 주로 사용되는데, 시드 값의 근거가 불분명하고,[28][29] NSA이 백도어를 심었다는 의혹[30] 때문에 의심을 받기도 한다.[31][32]
9. 구현 라이브러리
- 보탄
- 바운시캐슬
- 크립틀립
- 크립토플러스플러스
- 크립토 API (리눅스)
- GNU TLS
- 리브지크립트
- 리브레SSL
- 엠베드 TLS
- 마이크로소프트 크립토API
- 오픈SSL
- 울프크립트
참조
[1]
논문
The Elliptic Curve Digital Signature Algorithm (ECDSA)
[2]
문서
NIST FIPS 186-4, July 2013, pp. 19 and 26
http://nvlpubs.nist.[...]
[3]
웹사이트
Console Hacking 2010 - PS3 Epic Fail
https://events.ccc.d[...]
[4]
웹사이트
Android Security Vulnerability
https://bitcoin.org/[...]
2015-02-24
[5]
기술보고서
RFC 6979 - Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)
https://www.rfc-edit[...]
2015-02-24
[6]
웹사이트
The Double-Base Number System in Elliptic Curve Cryptography
http://www.lirmm.fr/[...]
2014-04-22
[7]
문서
SEC 1: Elliptic Curve Cryptography (Version 2.0)
https://www.secg.org[...]
SECG
[8]
뉴스
Hackers Describe PS3 Security As Epic Fail, Gain Unrestricted Access
http://exophase.com/[...]
Exophase.com
2011-01-05
[9]
웹사이트
Cryptology ePrint Archive: Report 2011/232
http://eprint.iacr.o[...]
2015-02-24
[10]
웹사이트
Vulnerability Note VU#536044 - OpenSSL leaks ECDSA private key through a remote timing attack
https://www.kb.cert.[...]
[11]
웹사이트
ChangeLog
http://www.openssl.o[...]
OpenSSL Project
2014-04-22
[12]
웹사이트
Android bug batters Bitcoin wallets
https://www.theregis[...]
The Register
2013-08-12
[13]
웹사이트
The NSA Is Breaking Most Encryption on the Internet
https://www.schneier[...]
2013-09-05
[14]
웹사이트
SafeCurves: choosing safe curves for elliptic-curve cryptography
http://safecurves.cr[...]
2013-10-25
[15]
웹사이트
Security dangers of the NIST curves
https://www.hyperell[...]
2013-05-31
[16]
웹사이트
The Strange Story of Dual_EC_DRBG
https://www.schneier[...]
2007-11-15
[17]
웹사이트
NSA Efforts to Evade Encryption Technology Damaged U.S. Cryptography Standard
http://www.scientifi[...]
Scientific American
2013-09-18
[18]
웹사이트
curve25519-sha256@libssh.org.txt\doc - projects/libssh.git
https://git.libssh.o[...]
[19]
웹사이트
How to design an elliptic-curve signature system
http://blog.cr.yp.to[...]
2014-03-23
[20]
문서
FIPS 186-3, pp. 19 and 26
http://csrc.nist.gov[...]
[21]
웹사이트
Console Hacking 2010 - PS3 Epic Fail
http://events.ccc.de[...]
[22]
웹사이트
The Double-Base Number System in Elliptic Curve Cryptography
http://www.lirmm.fr/[...]
[23]
뉴스
Hackers Describe PS3 Security As Epic Fail, Gain Unrestricted Access
http://exophase.com/[...]
Exophase.com
2013-12-26
[24]
웹사이트
Vulnerability Note VU#536044 - OpenSSL leaks ECDSA private key through a remote timing attack
https://www.kb.cert.[...]
[25]
웹사이트
OpenSSL: News, ChangeLog
http://www.openssl.o[...]
[26]
웹사이트
Android bug batters Bitcoin wallets
http://www.theregist[...]
The Register
2013-12-26
[27]
웹사이트
RECOMMENDED ELLIPTIC CURVES FOR FEDERAL GOVERNMENT USE
http://csrc.nist.gov[...]
2015-07-11
[28]
웹사이트
SafeCurves: Rigidity
http://safecurves.cr[...]
2015-07-11
[29]
문서
MD5와 SHA-2에서의 난수 생성 방법
[30]
뉴스
Exclusive: Secret contract tied NSA and security industry pioneer
http://www.reuters.c[...]
Reuters
2015-07-11
[31]
웹사이트
Security dangers of the NIST curves
https://www.hyperell[...]
2015-07-11
[32]
웹사이트
[tor-talk] NIST approved crypto in Tor?
https://lists.torpro[...]
2015-07-11
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com