textbook rsa - 동일한 키, 동일 메시지면 동일한 cipher text
-> Optimal asymmetric encryption padding(oaep)
시드를 활용해서 encoding된 메시지에 랜덤 요소를 추가해주는 방식
Diffie-Hellman key exchange
DLP에 기반해서 암호 시스템의 안전을 보장받는다.
cipher text를 c1, c2로 두 개 제공
randomization을 기법에서 자체적으로 구현하기 위해서(c1은 랜덤화를 위한 값, 실제 암호는 c2)
받는 쪽에서 랜덤값 r을 몰라도 decryption 과정에서 자동으로 삭제되기 때문에 메시지를 알아낼 수 있다.
r값을 고정 값으로 사용한다면
KPA attack에 취약해진다.
암호학에서 활용하는 타원 곡선 식은 다음과 같다.
y^2 = x^3 + ax + b (4a^3 + 27b^2 ≠0)
타원 곡선 위의 서로 다른 점 P, Q가 있을 때 ⓐP와 Q를 지나는 직선이 ⓑ곡선과 만나는 점 R을 ⓒX축에 대해 대칭한 점 R` = P+Q라고 정의한다.
이 때 R`을 구하는 공식이 있다.
x3 = m^2 - x1 - x2
y3 = m(x1 - x3) - y1
이 때 m은 직선 PQ의 기울기이다. 따라서 R`을 구하려면
타원 곡선 상에서 y축에 평행한 직선 세 개를 그었을 때(그 중 하나는 P를 지남) 세 직선이 한 점에서 만난다고 가정하는데, 이 점을 무한 원점 O라고 한다.
이 때 점 O는 점 P에 대해 항등원이다. (P + O = P) 또한 P + (-P) = O 이므로 P의 역원은 -P이다.
P+O는 다시 말해 타원 곡선이 직선 PO와 만나는 점을 x축 대칭한 점이 되는데, 타원 곡선의 성질에 따라 이 점은 P가 되기 때문에 O는 항등원이다.
타음은 타원 곡선의 성질이다.
RSA보다 적은 키 사이즈로 brute force 해독에 훨씬 많은 시간을 요구한다.
점 P에 대해 dP = P + P + P + ... + P = Q 이다.
이 때 d가 얼마여야 Q가 되는지 알아보려면 brute-force 공격밖에 방법이 없는데 이 문제를 ECDLP라고 부른다.
현존하는 컴퓨터로는 computationally secure하다.