RSA
key encaptualation
한쪽에서 키 생성해서 전달해주는 방법(자신의 public key 생성해서 공유)
Diffie-Hellman(DH)
양쪽에서 key를 생성 및 공유
양쪽에서 자신의 private key와 상대의 public key로 동일한 키를 각각 생성해내 사용
목적: 대칭 암호를 사용해 메시지를 보낼 때, 두 사용자가 안전하게 key를 교환하는 것.
이것의 효율성은 discrete logarithms 계산의 어려움과 상관있다.
DH problem은 discrete log 문제보다 조금 더 엄격하다.
DH problem: {α, q, Ya, Yb}가 주어졌을 때, k(k = α^Xa,Xb mod q)를 알아내는 문제
꼭 Xa, Xb를 알아낼 필요가 없고, x와 key만 알아내면 된다.
공격자는 {α, q, Ya, Yb}는 이미 알고있다. 하지만, Ya로부터 Xa를 알아내는 건 discrete log 문제로 쉽지 않다.
즉, DH 문제는 discrete log가 어렵다는 가정에 기반한다.
RSA | Diffie-Hellman |
---|---|
한 번 해킹 당해서 {C1, d, K1}이 유출되면 지금껏 나눈 모든 대화 내용이 유출됨 => forward securecy * 매 대화마다 {e, d} 쌍을 생성하는 방법이 있지만, 오래 걸린다. | 한 번 K1를 만들 때 사용된 Xa는 유지할 필요가 없다. 매 session마다 private key를 새로 만들어서 사용하면 중간에 해킹을 당해도, 그 전의 session에서의 내용이 유출되지 않는다. |
ex) Alice가 Bob에게 Alice's public key(Ya)를 보내려고한다.
문제점: Authentication을 하지 않아서 생기는 문제
DH과 작동 방식은 유사하다.
하지만, DH과 달리 공개키를 계속 유지하고, Ciphertext로 {C1, C2} 쌍을 생성한다.
ex) Bob이 Alice에게 메시지(M)를 보낸다.
ex) ciphertext를 받은 Alice가 메시지를 복호화한다.
K = C1^Xa mod q
M = C2K^−1 mod q
RSA
암호화(Encryption)와 디지털 서명(Digital signatures)을 위해 공개키 암호를 사용하는 대부분의 제품과 표준에서 RSA를 사용한다.
시간이 지날수록 RSA의 key 길이는 길어지고 있다.
Elliptic curve cryptography(ECC): 타원 곡선 암호
ECC는 같은 안전성을 위해 필요한 key 길이가 상대적으로 짧다.
보안의 강도를 높일수록, 다른 암호들과 필요한 key의 길이 차이가 커진다.
a^x = y
보다 xp = Q
에서 x 구하는 게 훨씬 어렵다. (x가 private key 역학)xp = Q
에서 x, p를 주고 Q를 구하긴 쉽지만, p, q를 주고 x를 구하기는 어렵다
이는 Elliptic curve discrete logarithm problem(ECDLP)라고 알려져 있다.
즉, Elliptic Curve 암호의 안전성은 ECDLP의 어려움과 관련 있다.
출처
https://hororolol.tistory.com/474?category=897521
[Cryptography and Network Security: Principles and Practices]