일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 백준
- 서버리스
- 비트코인
- Props
- kubernets
- vue.js
- Programmers
- alert
- BaaS
- 모각코
- 너비 우선 탐색
- docker
- 설치과정
- 코딩테스트
- cloud
- 타원곡선
- 프로그래머스
- k8s
- Vue
- observability
- kubernetes
- Jenkins
- golang
- 도커
- 13549
- Docker-compose
- ChangeCipherSpec
- 숨바꼭질3
- sia
- FAAS
- Today
- Total
작업공간
[Cryptography] 타원곡선알고리즘 본문
타원곡선암호화 ?
비트코인에 키 값 암호화에 사용되는 알고리즘이다. 비트코인은 곡선 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는 어렵다고 할 수 있다. 이것은 우리가 찾고 있던 트랩도어 함수로서의 자격을 충분히 갖춘것처럼 보인다. --> 트랩도어
'하루살이' 카테고리의 다른 글
[MAC] Symmetric Key 서명 검증이 가능 ? (0) | 2021.08.09 |
---|---|
[docker] compose same directory multiple instances 이슈 (0) | 2021.07.27 |
[Vue] Vue router ( + props 전달 ) (0) | 2021.07.13 |