본문 바로가기

My Study/Cryptography

ECC 디피-헬먼

ECC 디피-헬먼은 DH의 ECC 버전이다.

공개된 정보는 곡선과 곡선 상의 한 점으로 구성된다.

y^2 = x^3 + 11x + b (mod 167)

다음 점 (x,y)를 선정하고 b를 이 점이 곡선 상에 위치하도록 결정

(x,y) = 2,7   -> b = 19

최종적으로 공개된 정보
y^2 = x^3 + 11x + 19 (mod 167), 점 (2,7)

A와 B는 각각 자신들의 비밀 승수를 선정한다.
A의 비밀 승수 a = 15
B의 비밀 승수 b = 22

그러면 A는 다음과 같이 계산할 수 있다.
a(2,7) = 15(2,7) = (102,88) 

15(2,7)은 (2,7) + (2,7) + ... + (2,7) 총 15회는 더하는 것과 같다.
타원곡선 암호에서 두 점을 더하는 방법은 전 글에서 해보았다. 
http://ezbeat.tistory.com/335

하지만 (102,88)을 보면 타원곡선 내 없는 점 같이 보인다.
y^2 = 1062349 mod 167 = 62 mod 167
하지만
62에서 167을 계속 더해가면 88의 제곱인 7744 값이 나오게 된다.
즉, 62 mod 167 = 7744 mod 167 ( 7744 = 88^2 )

위에서 본 15회의 덧셈을 손으로 한다는 것은 시간상 문제도 있으므로 프로그램을 짜서 돌리는게 훨씬 현명하다.
ECC에서 두 점 합을 구하는 프로그램을 만들어 보았다. 단순히 두 점의 합을 구하는 것이기 때문에
15회의 덧셈을 위해선 입력을 몇 번 더 해주어야한다. 코드이다.

 


A는 이 결과를 B에게 보낸다.
B도 다음과 같이 계산하고 그 결과를 A에게 보낸다.
b(2,7) = 22(2,7) = (9,43)

A는 다음과 같이 자신의 비밀 승수 a를 B에게서 받은 값에 곱한다.
a(9,43) = 15(9,43) = (131,140)

B도 유사한 방식으로 다음과 같이 계산한다.
b(102,88) = 22(102,88) = (131,140)

이렇게 하여 A와 B는 대칭키로 사용하기에 적절한 비밀정보를 공유하게 된다.
이것이 가능한 것은 AB(2,7) = BA(2,7) 이기 때문이다. ( 간략한 그림 )


이러한 DH ECC도 중간자 공격에 취약하기는 마찬가지이다.
 

'My Study > Cryptography' 카테고리의 다른 글

PKCS 용도  (0) 2011.06.07
타원곡선 암호  (1) 2011.06.03
디피-헬먼 키교환 알고리즘  (2) 2011.06.03
RSA  (1) 2011.06.03
배낭암호  (2) 2011.06.03