작업공간

[Cryptography] 타원곡선알고리즘 본문

하루살이

[Cryptography] 타원곡선알고리즘

씨코더 2021. 7. 22. 13:24

타원곡선암호화 ? 

      비트코인에 키 값 암호화에 사용되는 알고리즘이다. 비트코인은 곡선 secp256r1 곡선을 사용하고있다.

 

먼저 다음 용어들을 이해한다.

 

     - 비대칭 키 : En/Decryption 에서 쓰이는 키가 서로 다른 키를 의미    ( 대칭 키보다 느리지만 훨씬 안전함 )

     - 공개 키    : 누구나 알고있는 키                                     -> 암호화에 사용

     - 개인 키    : 나만 알고 있고, 나만 알아야하는 키             -> 복호화에 사용

     - 트랩 도어 : 역을 구하기 힘든 일방향구조 , 백도어 ( BackDoor ) 라고도 한다.

 

타원곡선

 

 

타원곡선은 암호 작성에 적합한 속성을 가지고 있다.

 

Strange symmetry

타원 곡선을 살펴보면 수평 대칭이라는 특징을 볼 수 있다.

더욱 흥미로운 점은 비 수직선(non-vertical line)이 최대 3개 지점에서 곡선을 교차한다는 것이다.

 

당구 게임을 예로 들면 A 지점에서 B 지점으로 공을 보냈다면,

비 수직선의 경우라면 A와 B점이 아닌 나머지 한 점과 공이 만났을 때 공이 위로 혹은 아래로 굴절된다. ( 아래 그림 )

이러한 이상한 움직임을 두 점의 dot 이라고 한다. 곡선 위의 어떠한 두 점은 새로운 점을 얻기 위해 dotted 될 수 있다.

 

만약 두 점을 가지고 있고 최종점에 도착하기 위해 initial point에 임의의 n회 dot을 했다고 가정한다.

이 때 첫번째 점과 최종점을 가지고서는 dot한 횟수 n 을 구하기 어렵다.  --> do는 쉽고 undo가 어렵다. == 트랩도어

 

위의 가정을 이해하기 쉽게 당구 게임으로 예를 들면

상대방의 차례를 지켜보던 중 화장실을 갔다왔을 때 마침 target 공을 맞추었다고 하자.

이 때 상대방이 몇 번의 쿠션을 통해서 target 공을 맞추었는지 알 수 있는가? 불가능하다. --> undo 가 어렵다.

 

기존 사용되던 RSA도 modulus 를 사용한 트랩도어의 암호화 알고리즘이다.

타원곡선암호화가 기용되는 이유는 RSA보다 20배 이상 빠르기 때문이다.

 

Priv Key & Pub Key

타원 곡선 암호 시스템은 소수로서 최댓값, 곡선 방정식 및 곡선상의 공개점을 선택함으로써 정의 될 수 있다.

개인 키는 숫자 priv이고, 공개 키는 priv값을 priv 배수만큼 제곱하여 dotted된 공개점이다.

물론 최댓값을 넘어갈때마다 위에 그림처럼 줄바꿈 처리가 된다.

priv값을 모른다면 첫번째 점과 나중점의 위치를 알고있다고 하더라도 몇번 dot시켜주는지도 모를테니 do는 쉽고 undo는 어렵다고 할 수 있다. 이것은 우리가 찾고 있던 트랩도어 함수로서의 자격을 충분히 갖춘것처럼 보인다. --> 트랩도어