기본 콘텐츠로 건너뛰기

라벨이 ecdlp인 게시물 표시

ECC-8. 타원 곡선 디피-헬만(ECDH) 키 교환

타원 곡선 디피-헬만(ECDH) 키 교환은 타원 곡선 암호(ECC)를 이용하여 안전하게 비밀 키를 공유하는 방법입니다. 이 과정의 보안은 '타원 곡선 이산 대수 문제(Elliptic Curve Discrete Logarithm Problem, ECDLP)'라는 수학적 난제에 기반을 둡니다. 쉽게 말해, 타원 곡선 위의 한 점에서 특정 연산을 반복하여 다른 점을 찾는 것은 쉽지만, 결과 점만 가지고 몇 번의 연산을 했는지 알아내는 것은 계산적으로 매우 어렵다는 원리입니다. ECDH 키 교환 과정 앨리스와 밥이 안전하지 않은 통신 채널을 통해 비밀 키를 공유하려는 상황을 가정해 보겠습니다. 초기 설정 공유: 먼저, 앨리스와 밥은 모두가 알아도 되는 공개된 정보 두 가지를 사전에 합의합니다. 타원 곡선 ($E$): 사용할 특정 타원 곡선 방정식입니다. 기준점 ($G$): 해당 타원 곡선 위의 한 점으로, 모든 계산의 시작점이 됩니다. 각자의 비밀 키와 공개 키 생성: 앨리스: 임의의 정수 $a$를 자신의 비밀 키로 선택합니다. 그리고 기준점 $G$에 $a$번의 덧셈 연산을 수행하여 새로운 점 $P_A = a · G$를 계산하고, 이 점을 자신의 공개 키로 만들어 밥에게 보냅니다. 밥: 마찬가지로 임의의 정수 $b$를 자신의 비밀 키로 선택합니다. 그리고 기준점 $G$에 $b$번의 덧셈 연산을 수행하여 새로운 점 $P_B = b · G$를 계산하고, 이 점을 자신의 공개 키로 만들어 앨리스에게 보냅니다. 공유 비밀 키 계산: 앨리스: 밥에게서 받은 공개 키 $P_B$에 자신의 비밀 키 $a$를 곱합니다. $S = a · P_B = a · (b · G) = (ab) · G$ 밥: 앨리스에게서 받은 공개 키 $P_A$에 자신의 비밀 키 $b$를 곱합니다. $S = b · P_A = b · (a · G) = (ab) · G$ 키 교환 완료: 앨리스와 밥은 중간에서 통신을 도청한 사람이 있더라도, 각자 동일한 점 $S$를 계산해 낼 수 있습니다....

ECC-6. ECDLP가 DLP보다 풀기 어려운 이유

핵심을 한 문장으로 요약하면, 전통적인 DLP를 푸는 데에는 '지름길' 같은 효율적인 공격 알고리즘이 존재하지만, ECDLP에는 아직 그런 '지름길'이 발견되지 않았기 때문입니다. 문제의 구조적 차이: 왜 '지름길'이 없을까? 두 문제의 난이도 차이는 이들이 정의된 수학적 공간의 근본적인 구조 차이에서 비롯됩니다. 사람 찾기 비유 전통적인 DLP: 잘 정돈된 격자 도시에서 특정 번지수(h)를 가진 집을 찾는 것과 같습니다. 이 도시에는 g라는 '이동 규칙'(예: 동쪽으로 1칸, 북쪽으로 2칸)이 있고, 이 규칙을 몇 번(x) 반복하면 목표(h)에 도착하는지 알아내는 것이 문제입니다. 도시가 매우 규칙적이기 때문에, 우리는 지도를 활용하고, 구역을 나누어 탐색하는 등 효율적인 탐색 전략(지름길)을 사용할 수 있습니다. 타원 곡선 DLP (ECDLP): 아무런 규칙 없이 점들이 흩어져 있는 광활한 우주에서 특정 좌표(점 Q)를 찾는 것과 같습니다. '이동 규칙'(점 덧셈)은 있지만, 한 점에서 다음 점으로의 이동이 예측 불가능하고 무작위처럼 보입니다. 이 우주에는 지름길이나 효율적인 탐색 전략이 없어서, 목표를 찾으려면 시작점(점 P)에서부터 규칙을 무작정 반복 적용해보는(brute-force) 수밖에 없습니다. 기술적 설명: 공격 알고리즘의 차이 이 '지름길'의 유무는 실제 공격 알고리즘의 효율성 차이로 나타납니다. 전통적 DLP (유한체): 주요 공격법: 인덱스 칼큘러스 (Index Calculus Method) 원리: 이 방법은 유한체의 매끄러운(smooth) 구조를 이용합니다. 문제를 더 작은 소인수들의 조합으로 쪼개서(factor base), 미리 계산된 로그 값을 이용해 선형대수 문제로 변환하여 풀어냅니다. 즉, 큰 문제를 잘게 쪼개서 효율적으로 푸는 '분할 정복' 전략이 가능합니다. 계산 복잡도: 이 알고리즘의 시간 복잡도는 준지수 시간(Sub...

ECC-4. 타원 곡선 암호 (ECC)

타원 곡선(Elliptic Curve)은 이름과 달리 타원 모양이 아니며, 특정 수학 방정식을 만족하는 점들의 집합으로 정의됩니다. 이 곡선은 독특한 성질을 가지고 있어 현대 암호학에서 매우 중요한 역할을 합니다. 타원 곡선이란? 타원 곡선은 일반적으로 다음과 같은 형태의 방정식으로 정의됩니다. $$y^2=x^3+ax+b$$ 여기서 a와 b는 상수이며, 곡선이 특이점(뾰족한 점이나 교차점)을 갖지 않도록 $$4a^3+27b^2\ne 0$$ 이라는 조건을 만족해야 합니다. 이 방정식의 해가 되는 모든 점 (x, y)와 무한 원점(point at infinity, O)이라고 불리는 특별한 점을 포함하여 타원 곡선을 구성합니다. 타원 곡선 예시(출처: 위키피디아 ) 특별한 성질: 점의 덧셈 법칙 타원 곡선이 암호학에 사용될 수 있는 가장 핵심적인 이유는 곡선 위의 점들 사이에 덧셈이라는 특별한 연산을 정의할 수 있다는 점 입니다. 이 연산은 기하학적으로 다음과 같이 정의됩니다. 두 점의 덧셈 (P + Q): 타원 곡선 위의 서로 다른 두 점 P와 Q를 더하려면, 두 점을 지나는 직선을 긋습니다. 이 직선은 타원 곡선과 또 다른 한 점(-R)에서 만나게 됩니다. 이 점을 x축에 대해 대칭시킨 점이 바로 R이며, P와 Q의 합, 즉 P + Q = R이 됩니다. $$ \begin{align} & m = \frac{{y}_Q-{y}_P}{{x}_Q-{x}_P} \\ & {x}_R = {m}^2 - {x}_P - {x}_Q \\​​ & {y}_R=m\left({x}_R-{x}_P\right)+{y}_P \end{align} $$ 여기서, $m$: 직선의 기울기 $x_R, y_R$: 점 R의 x, y 좌표 한 점의 두 배 (P + P 또는 2P): 한 점 P를 두 배 하려면, 점 P에서의 접선을 긋습니다. 이 접선은 타원 곡선과 다른 한 점(-R)에서 만나게 됩니다. 이 점을 x축에 대칭시킨 점 R이 2P가 됩니다. $$ \begin{align} ...