본 글은 한기대 박승철 교수님의 타원 곡선 암호 강의를 듣고 정리한 내용입니다.
현재까지 공개키 암호는 주로 RSA
나 DH
를 많이 사용해왔다. 최근에 들어서는 ECC
(타원곡선 암호)를 많이 사용한다. ECC
는 디지털 서명, 키 교환을 위한 공개키 암호로 주로 사용된다.
타원 곡선 이산 대수 문제(ECDLP, Elliptic Curve Discrete Logarithm Problem)
보안 강도
RSA | ECC |
---|---|
1024 | 160 |
2048 | 224 |
3072 | 256 |
7680 | 384 |
15368 | 512 |
(단위 : 비트)
ECC
가 RSA
보다 훨씬 효율적임
응용 분야
Diffie-Hellman
알고리즘
기본 방정식
y^2 = x^3 + ax + b
비특이 타원 곡선 (nonsingular elliptic curve)
4a^3 + 27b^2 ≠ 0
비특이 타원 곡선의 특징
타원 곡선 점(point)의 정의
P = (x, y)
, x는 x축의 값, y는 y축의 값0 = (x, 0)
, y축의 값이 0인 점-P = (x, -y)
, P의 x축 상의 대칭점(비특이 타원 곡선에서 반드시 존재)
정의
P + Q + R = 0
P + Q = -R
(R의 대칭점)R + (-R) = R - R = 0
동일 점의 덧셈
P + P = 2P
, P의 접선과 만나는 점의 대칭점
동일점 덧셈과 스칼라 곱셈(scalar multiplication) 연산
P + P + ... + P = kP
(점 P의 k 스칼라 곱), k는 덧셈 횟수8G = G + G + G + G + G + G + G + G
타원 곡선 점 곱셈
결합법칙, 교환법칙, 분배법칙
3G = (G + G) + G = G + (G + G)
, 덧셈 결합법칙3G = 2G + G = G + 2G
, 덧셈 교환법칙(2 + 2)G = 2G + 2G
, 덧셈과 스칼라 곱셈 분배법칙6G = 3(2G) = 2(3G)
, 스칼라 곱셈 교환법칙24G = 2(2(4G)) = 4(2(3G))
, 스칼라 곱셈 결합법칙항등원, 역원
배가 연산(doubling operation)
2G = G + G
, G doubling4G = (2 + 2)G = 2G + 2G
, 2G doubling8G = (4 + 4) = 4G + 4G
, 4G doublingn(log(2)2^n)
빠른 덧셈 연산 : 배가와 덧셈(double-add) 알고리즘
2^(n-1) + 2^(n-2) + ... + 2^0
2^(n-1)G + 2^(n-2)G + ... + G
2(n-1)회
k가 256비트 값인 경우
결론
타원 곡선 이산 대수 문제
타원 곡선 이산 대수 문제의 해법
x가 n비트 값인 경우
모듈로 p 타원 곡선 방정식
y^2 mod p = (x^3 + ax + b)mod p
, p는 소수모듈로 p 타원 곡선
secp256k1 표준
개인키
공개키
G
k = 개인키, r = 비밀의 큰 수, kG = 공개키, m = 메시지
R = rG, s = hash(m, rG)k + r, K = kG
메시지 m의 서명
서명 확인
서명 위조의 어려움
서명 공개와 개인키 보호
사용자 A, 공개키를 B에게 전송
사용자 B, 공개키를 A에게 전송
사용자 A의 대칭키
사용자 B의 대칭키
증명