I. 서론
아이소제니 기반 암호(isogeny-based cryptography)는 주어진 두 타원곡선 사이의 아이소제니를 찾는 문제의 어려움에 기반하는 양자내성암호(post-quantum cryptography)다. 이 암호 기법은 다른 기반의 양자내성암호에 비해 짧은 키 길이를 가진다는 장점이 있으나, 실행 속도가 너무 느려 최적화 연구가 필수적으로 요구된다.
2014년, De Feo와 Jao는 초특이 타원곡선(supersingular elliptic curve)을 이용한 키 교환 알고리즘 SIDH(Supersingular Isogeny Diffie-Hellman)[1]를 제안하였다. SIDH는 앞선 아이소제니 기반 암호의 장점을 가지면서도 합리적인 실행 속도를 보여주어 다른 양자내성암호와 비교하여도 경쟁력을 가졌다. 이를 바탕으로, SIDH 기반 KEM(Key Encapsulation Mechanism)으로 개발된 SIKE(Supersingular Isogeny Key Encapsulation)[2]는 NIST(National Institute of Standards and Technology) 표준화 공모전 Round 3의 후보로 선정되었다.
그러나 2022년, Castryck, Decru, Maino, Martindale 그리고 Robert에 의해 SIDH가 다항시간 내에 해결이 가능함이 밝혀졌다[3],[6],[7]. 이에 따라, SIKE는 NIST PQC 표준화 공모전 Round 4에서 탈락하게 되었다. 이에 대응하기 위해, Basso와 Fouotsa는 SIDH와 유사하면서도 새로운 비밀키 형태를 가지는 알고리즘인 binSIDH(binary SIDH)와 terSIDH(ternary SIDH)[4]를 제안하였다. 두 알고리즘은 인위적 방향성(artificial orientation)이라는 개념을 도입하여 개인키에 따라 연산하는 아이소제니가 바뀐다는 특징이 있다.
구체적으로 binSIDH는 개인키를 (1, 2)t에서, terSIDH는 (0, 1, 2)t에서 생성하고 이를 이용해 아이소제니 연산을 수행한다. 이때, 동일한 보안 파라미터를 사용하면 terSIDH는 binSIDH보다 log23배 높은 안전성을 가진다. 즉, terSIDH는 더 작은 파라미터로 동일한 보안 수준을 가질 수 있어, 결과적으로 더 빠른 실행 속도를 가진다. 이러한 특성 덕분에 terSIDH는 다른 아이소제니 기반 알고리즘보다 경쟁력이 있다.
그러나 terSIDH는 개인키에 따라 연산하는 아이소제니의 총 차수가 달라져 연산량에 차이가 발생하며, 그 결과 실행 시간이 달라져 소요 시간 공격(timing attack)에 취약하다는 단점을 가진다.
본 논문에서는 terSIDH의 실행 시간에 차이가 발생하는 원인을 파악하고, 그 부분에 더미 연산을 넣는 등 알고리즘을 개선하여 상수 시간으로 구현하는 방법을 제안한다. 개선된 알고리즘에 대하여 시간 측정을 한 결과, 기존 terSIDH에서는 소요 시간이 최소 120.1ms, 최대 4064.4ms일만큼 차이가 심했으나, 이를 개선하여 소요 시간 차이 범위 크기를 6.6ms로 줄이는 데 성공하였다.
본 논문의 내용은 다음과 같이 구성된다. 2장에서는 terSIDH 알고리즘과 배경지식에 관해 설명한다. 3장에서 기존 알고리즘을 분석한 후 4장에서 개선한 알고리즘을 소개하고, 5장에서 기존 알고리즘과 개선된 알고리즘의 실행 시간을 비교한다. 또 6장에서 본 논문에서 개선한 알고리즘의 한계와 결론으로 마무리한다.
II. 배경지식
본 장에서는 논문을 이해하는 데 필요한 배경지식을 설명한 뒤, terSIDH 알고리즘을 소개한다. 사용할 용어들은 [Table 1]에 나타나 있다.
Table 1. Notations

2.1 몽고메리 곡선
몽고메리 곡선은 타원곡선의 한 종류로, 어떤 체K 위에서 B(A2 - 4) ≠0인 A, B∈K에 대하여 다음과 같이 정의된다.
MA, B : By2 = x3 + Ax2 + x (1)
몽고메리 곡선 위에 점 P, Q가 있다고 하자. 이점들은 덧셈 연산(P + Q)과 n-스칼라 곱 연산([n]P)이 가능한데, 몽고메리 곡선에서는 이 연산들을 x좌표만을 이용하여 효율적으로 수행할 수 있다. 이러한 특성을 활용하고 유한체 역원 연산을 최대한 줄이기 위해 투영 좌표계를 사용할 수 있다. 이때, 점 P = (x, y)는 투영 좌표 P = (X : Z)로 나타낼 수 있다(단, x = X/Z, Z≠0). 한편, 몽고메리 곡선 위에서 P + Q를 효율적으로 수행하기 위해서는 P - Q의 값을 알고 있어야 한다.
2.2 비틀림 점
군 (E(K), +)의 항등원 ∞에 대해 [l]P = ∞를 만족하는 점 P∈E(K)를 l-비틀림 점이라고 하고, 이 l-비틀림 점들의 집합을 E[l]이라고 나타낸다. terSIDH는 초특이 타원곡선만을 다루고, 유한체 K = 𝔽p2를 정의하는 소수 p가 p = ABf - 1의 형태를 가지도록 한다. 이때 E(K)는 부분군으로 E[A], E[B]를 가진다. 향후 본 논문에서 다루는 타원곡선은 특별한 언급이 없는 경우, 모두 유한체 K = 𝔽p2 위에서 정의된다.
2.3 아이소제니
아이소제니는 두 군 (E(K), +), (E′(K), +) 사이의 유한 커널을 가진 준동형사상을 의미한다. 이 때, 두 타원곡선이 몽고메리 곡선이면 아이소제니 ϕ를 상수 c에 대해 다음과 같이 나타낼 수 있다[5].
ϕ: E→E′, (x, y)↦(f(x), cyf'(x)) (2)
식 (2)에서 f(x)의 차수를 아이소제니 ϕ의 차수라고 하는데, 이것이 커널의 원소 개수와 같을 때 ϕ를 분리할 수 있는 아이소제니라고 한다. 차수가 l = l1l2인 분리할 수 있는 아이소제니 ϕ는 각각 차수가 l1, l2인 어떤 아이소제니 ϕ1, ϕ2에 대해 ϕ = ϕ1 ∘ ϕ2로 나타낼 수 있는 특징을 가진다. 본 논문에서 다루는 아이소제니들은 모두 분리할 수 있다.
임의의 E(K)의 부분군 H와 P∈E(K)가 주어지면 벨루의 공식(Vélu’s formula)[8]을 이용하여 kerϕ = H인 분리 가능한 아이소제니 ϕ : E→E′와 ϕ(P)를 계산할 수 있다. 이를 통해 계산하고자 하는 아이소제니의 차수가 클수록 필요한 연산량도 커진다.
2.4 SIDH와 CD-MM-R 공격
SIDH는 초특이 타원곡선의 아이소제니 연산을 기반으로 하는 키 교환 알고리즘이다. 자연수 a, b에 대해 A = 2a, B = 3b (A≈B)라 하자. NIST level 1의 안전성 기준에서 a = 216, b = 137을 사용한다. 이때 SIDH는 소수 p = AB - 1, 𝔽p2 위에서 정의된 초특이 타원곡선 E0 그리고 E0의 비틀림 부분군 E0[A], E0[B]의 생성자 (PA, QA), (PB, QB)를 파라미터로 갖는다.
Alice는 임의의 비밀키 skA = nA ∈ ℤA를 고른 후 kerϕA = <PA + [nA]QA >로 ϕA : E0→EA를 연산해 pkA = (EA,RA = ϕA(PB), SA = ϕA(QB))를 공개키로 갖는다. Bob도 유사한 방법을 사용하여, 공개키 pkB = (EB, RB, SB)를 계산한다.
서로의 공개키를 받으면 같은 과정을 반복한다. Alice는 kerϕ′A = <RB + [nA]SB>, ϕ'A : EB→EBA을, kerϕ'B = <RA + [nB]SA>, ϕ'B : EA→EAB는 Bob이 계산하여 공유키로 각 타원곡선의 j-불변량 j(EBA) = j(EAB)를 가진다.
일반적인 아이소제니 기반 암호의 안전성은 두 타원곡선 사이의 아이소제니를 구하기가 어렵다는 사실에 있다. 그런데 SIDH는 비틀림 기저 상의 작용으로부터 비밀 아이소제니를 복원하기가 어렵다는 일반적으로 사용되는 어려운 문제와 다른 문제에 기반하였다. 이에 여러 안전성 검증 연구가 진행되었고, CD-MM-R(Castryck-Decru-Maino-Martindale-Robert) 공격으로 SIDH의 기반 문제는 다항 시간 내에 해결할 수 있음이 증명되었다. 이의 대응 방안으로 여러 알고리즘들이 제안되었는데, 그중 하나가 terSIDH다.
2.5 terSIDH
𝔽p2위의 초특이 타원곡선 E, 차수가 자연수 A인 부분군 G1, G2 ⊂E[A](G1∩G2 = {∞})에 대해 \(\begin{align}\mathfrak{A}\end{align}\) = (B1, G2)를 E의 인위적 A-방향성이라고 한다. 여기서 쌍 (E, \(\begin{align}\mathfrak{A}'\end{align}\))을 인위적 A-방향성 곡선이라고 한다.
G1, G2의 부분군 H1, H2에 대해 kerϕ = H1⊕H2를 만족하는 아이소제니 ϕ : E→E′을 \(\begin{align}\mathfrak{A}\end{align}\)-아이소제니라고 한다. \(\begin{align}\mathfrak{A}\end{align}\)-아이소제니가 자명하지 않을 경우, E에서 E′로 가는 아이소제니의 차수는 A와 서로소여야 한다. 따라서, 두 인위적 A-방향성 곡선 (E, \(\begin{align}\mathfrak{A}\end{align}\)), (E′, \(\begin{align}\mathfrak{A}'\end{align}\))가 있을 때, A와 서로소인 자연수 B에 대해 차수가 B인 아이소제니를 사용한다. terSIDH는 이 인위적 방향성의 개념을 사용하여 CD-MM-R 공격에 대응한 키 교환 알고리즘이다. terSIDH의 내부 함수는 크게 파라미터 설정, 키 생성 그리고 공유키 생성으로 나뉜다.
◉ 파라미터 설정. terSIDH는 소수 li, qi (1 ≤ i ≤ t)를 선택해 \(\begin{align}A=\prod_{i=1}^{t} l_{i}, \quad B=\prod_{i=1}^{t} q_{i}\end{align}\)를 만족하는 소수 p = ABf - 1를 사용한다. 이때 f는 p가 소수가 되기 위한 보조인자이고 t는 충분한 안전성을 확보하기 위해 설정하는 자연수다. E[A]의 생성자 P, Q, E[B]의 생성자 R, S에 대해 E에서의 인위적 A-방향성을 \(\begin{align}\mathfrak{A}\end{align}\) = ( <P>, <Q>), 인위적 B-방향성을 B = (<R>, <S>)라 하자. terSIDH는 파라미터로 E, p, A, B, \(\begin{align}\mathfrak{A}\end{align}\), \(\begin{align}\mathfrak{B}\end{align}\)를 갖는다.
◉ 키 생성. Alice는 비밀키 skA∈{0, 1, 2}t를 선택하고 skA로 구해지는 ϕA : E→EA와 B’ = < ϕA(R)>, <ϕA(S)>)를 연산하여 공개키 (EA, B’)를 Bob에게 전달한다. Bob도 skB∈{0, 1, 2}t를 골라 유사한 과정을 진행하여 공개키 (EB, \(\begin{align}\mathfrak{A}'\end{align}\))를 Alice에게 전달한다.
◉ 공유키 생성. Alice는 Bob의 공개키 (EB, \(\begin{align}\mathfrak{A}'\end{align}\))를 받으면 \(\begin{align}\mathfrak{A}'\end{align}\)가 EB에서의 인위적 A-방향성인지 확인한 후, 맞으면 skA로 ϕ′A : EB→EBA를 연산하여 공유키로 j(EBA)를 갖는다. Bob도 Alice의 공개키(EA, B’)와 자신의 비밀키 skB로 유사한 과정을 진행하고, 공유키 j(EAB)를 갖는다.
III. 기존 구현 분석
본 장에서는 terSIDH의 기존 알고리즘과 소요 시간 차이의 발생 원인을 분석한다. 이때, Alice와 Bob은 유사한 과정을 진행하므로, 본 논문에서는 Alice의 알고리즘만 다룬다.
3.1 기존 알고리즘 분석
파라미터 생성 과정은 파라미터의 크기에만 영향을 받는다. 따라서 소요 시간 차이가 발생하는 함수는 키 생성 함수와 공유키 생성 함수다. [Fig. 1]은 기존 terSIDH의 키 생성 함수의 알고리즘을, [Fig. 2]는 공유키 생성 함수의 알고리즘을 나타낸다. 공유키 생성 함수의 경우 인위적 A-방향성이 맞는지 확인하는 부분을 제외하고는 [Fig. 1]의 과정 9-14와 유사하게 진행한다. 따라서 키 생성 함수의 알고리즘을 상수 시간 구현하면 공유키 생성 함수도 같은 방식으로 개선할 수 있다.

Fig. 1. Key generation algorithm

Fig. 2. Shared key generation algorithm
커널을 구하면 벨루의 공식에 의해 아이소제니를 연산할 수 있다. \(\begin{align}A=\prod_{i=1}^{t} l_{i}=\operatorname{lcm}\left(A_{1}, A_{2}\right)\end{align}\)라 하자.여기서 A1, A2는 A의 t개의 소인수들을 개인키에 따라 분류하여 정한다. E[A]의 생성자 P, Q에 대하여 \(\begin{align}\mathfrak{A}\end{align}\)-아이소제니 ϕA는 kerϕA = <[A1]P +[A2]Q>로 연산된다.
terSIDH에서는 몽고메리 곡선을 사용하여 빠르고 일정한 스칼라 곱셈 연산을 꾀한다. 몽고메리 곡선의 특성상 [A1]P + [A2]Q를 연산하려면 [A1]P + (-[A2]Q)의 값을 알고 있어야 한다. 이를 해결하기 위해, 기존 구현물에서는 커널이 각각 <[A1]P>, <[A2]Q>인 아이소제니 ϕ′A, ϕ″A로 나누어 연산하고 합성하는 방식을 사용한다.
terSIDH에서 사용하는 아이소제니들은 모두 분리할 수 있으므로, ϕA는 ϕA의 차수의 소인수들을 차수로 갖는 작은 아이소제니들을 각각 연산하고 합성함으로써 계산할 수 있다. 이렇게 나누어 연산하는 것이 ϕA를 한 번에 연산하는 것보다 빨라 구현 시에도 이 방법을 이용한다.
\(\begin{align}A=\prod_{i=1}^{t} l_{i}\end{align}\)에 대해, A차 아이소제니를 연산하려면 각각 li를 차수로 갖는 t개의 아이소제니를 연산해야 한다. 위수가 A인 점 P에 대해 <[n]P>의 위수가 li가 되려면 n = A/li여야 하는데. li차 아이소제니를 연산하기 위해 매번 [A/li]P를 연산하는 것은 너무 많은 시간이 소요된다.
이를 해결하기 위해 기존 구현물에서 사용한 방법은 차수로 사용하지 않는 소수들을 미리 곱해두고, 남은 소수들에 대해서만 위 과정을 수행하는 것이다. 그 이후, l차 아이소제니를 연산할 때마다 스칼라에 l을 나누어 스칼라를 줄여나간다. 이때, 이 l은 오름차순으로 배열되어 있다. [Fig. 3]은 이 과정을 나타낸 것이다. 점 P는 A2 -스칼라 곱 연산된 상태로 입력받는다.

Fig. 3. Isogeny computation
3.2 소요 시간 차이 분석
3.2.1 개인키에 의한 차이
A0 = gcd(A1, A2)라 하자. 그러면 kerϕA의 위수는 A/A0가 된다. [Fig. 1]에 따르면, 개인키 skA에 0이 포함될수록 A0의 값이 커지게 되고 kerϕA의 위수는 감소하여 ϕA의 차수가 감소한다. 이때 아이소제니 ϕA는 분리할 수 있는 아이소제니이므로 ϕA = ϕt ° ⋯ ° ϕ2 ° ϕ1라 쓸 수 있고, 차수가 감소한 만큼 합성할 작은 아이소제니의 수가 감소하여 총 연산량이 줄어들게 된다. 따라서, 개인키에 0이 얼마나 존재하는가에 따라 실행 시간에 차이가 발생하게 된다.
또, 아이소제니 ϕ′A를 연산하고 나면 ϕ″A는 <[A2]Q>대신 <[A2]ϕ'A(Q)>를 커널로 사용해야 한다. 즉, 점 대입 연산 ϕ'A(Q)이 추가로 필요하다. ϕ'A(Q)의 차수는 A/A1 = A2/A0이므로, 개인키를 구성하는 2의 개수가 총 연산량에 영향을 끼친다.
3.2.2 스칼라 곱 연산과 연산 순서에 의한 차이
[Fig. 3]에 따르면 스칼라 곱 연산 전에 n←n/le가 진행된다. 이때, 소수를 오름차순으로 배열하면 스칼라가 느리게 감소하다 뒤로 갈수록 가파르게 감소한다. 반대로 소수를 내림차순으로 배열하면 사용하는 스칼라가 가파르게 감소하다 점점 느리게 감소한다. 그러면 아이소제니의 총 연산은 오름차순일 때 내림차순일 때보다 더 오래 걸릴 것임을 알 수 있다.
점 대입 연산과 벨루의 공식의 연산량은 차수에 따라 바뀌긴 하지만, 전체적으로 같은 차수의 아이소제니를 연산하므로 이 두 연산에 대해서 총 시간은 항상 같고 각각의 연산 시간은 소수의 크기가 커질수록 증가한다.
소수 차수의 아이소제니를 연산할 때마다 스칼라곱의 시간은 소수의 순서와 관계없이 연산할 때마다 감소하지만, 점 대입 연산과 벨루의 공식 연산 시간은 오름차순일 때는 증가하고 내림차순일 때 감소한다. 하지만 총 시간을 따져보았을 때 점 대입 연산과 벨루의 공식 연산량은 항상 같고 스칼라 곱의 총 연산 시간은 오름차순일 때 더 크므로, 전체 실행 시간은 오름차순일 때 더 오래 걸린다. [Fig. 4]는 기존 코드에서 연산되는 각 아이소제니의 소요 시간을 그래프에 순서대로 나타낸 것이다. 증가함수인 점 대입 연산과 벨루의 공식 연산이 감소함수 형태인 스칼라곱 연산보다 오래 걸려 전체적으로는 증가함수의 형태로 나타난다.

Fig. 4. Running time of terSIDH (ascending)
내림차순을 사용하면 스칼라 곱 연산, 점 대입 연산, 아이소제니 연산 모두 점점 연산량이 감소하므로 그래프가 감소함수의 형태로 나타난다. [Fig. 5]는 이를 나타낸 것이다. 오름차순과 내림차순의 두 그래프는 모두 뚜렷한 경향성을 띤다는 점에서 부채널 분석 등의 공격에 잠재적인 보안 취약성을 갖고 있다.

Fig. 5. Running time of terSIDH (descending)
IV. 상수 시간 구현 알고리즘
본 장에서는 3장에서 다룬 분석을 토대로 상수 시간 구현을 위해 더미 연산 등을 통해 아이소제니 연산을 개선한 알고리즘을 제안한다.
4.1 개인키에 의한 차이 개선
우선, 개인키에 존재하는 0의 개수에 의한 실행시간 차이를 줄이기 위해 키 생성 알고리즘에 더미 연산을 추가한다. \(\begin{align}A_{0}=\prod_{s k_{A}[i]=0} p_{l}\end{align}\)이라는 더미 값을 추가하고 이를 통해 더미 아이소제니를 연산했다. 이를 나타낸 것이 [Fig. 6]이다.

Fig. 6. Constant key generation algorithm
[Fig. 6]에서 sk[i] = 0인 i에 대해 ϕA의 차수는 li만큼 나눠지고, 더미 아이소제니 ϕC의 차수는 그만큼 곱해진다. 그러면 i의 개수에 관계없이 모든 소수 li에 대해 차수가 li인 아이소제니를 연산하게 된다. 이를 ϕA와 ϕC로 구분하여 계산하는 것뿐이므로, 총 연산 수는 같다. 이때 연산한 ϕC는 ϕA와 같이 저장하여 대입 연산 과정의 상수 시간 구현을 할 때 사용한다.
Alice의 공개키 EA에 대해 아이소제니 ϕA : E→EA는 개인키에 따라 차수가 변한다. 따라서 [Fig. 6]에서 사용할 ϕA(R), ϕA(S)를 연산할 때 더미 연산 ϕC(R), ϕC(S)을 추가하여 연산량을 보존했다.
3.2절에서 언급했던 것처럼 <[A2]ϕ'A(QA)>를 커널로 사용하므로 ϕ'A(QA)도 연산해야 한다. 이를 계산하는 데 걸리는 시간은 [A1]P의 위수에 따라 정해진다. 여기에 kerϕ"A = <[A2]Q>인 아이소제니 ϕ"A에 대해 ϕ"A(P), ϕ"A(Q), 더미 아이소제니 ϕC에 대해 ϕC(P), ϕC(Q)를 연산하면 모든 차수의 아이소제니에 대해 점 대입 연산을 한 것이므로 상수 시간 구현이 된다.
4.2 스칼라 곱 연산과 연산 순서에 의한 차이 개선
4.1절에서의 내용대로 아이소제니를 연산하는 알고리즘이 [Fig. 7]이다. 이는 [Fig. 6]의 내부에 있는 알고리즘이므로 A1, A2, A0는 [Fig. 6]에서의 그것과 같다. [Fig. 7]의 목적은 스칼라 곱 연산량을 개인키에 관계없이 항상 유지하는 것이다.

Fig. 7. Constant isogeny computation
[Fig. 7]을 수행하면 항상 같은 소수를 곱한다는 점에서 모든 개인키에 대해 수학적으로 연산량이 같아진다. 하지만 [Fig. 3]에서 아이소제니를 연산할 때 차수를 오름차순으로 나열하여 연산한다고 했는데, 이로 인한 차이도 발생하고 항상 작은 차수를 먼저 연산하면 그만큼 연산해야 할 스칼라 곱 연산량도 많아지므로 Ai의 인수를 랜덤하게 정렬하여 아이소제니를 연산하였다.
그리고, 아이소제니 연산 시간의 경향성을 숨기기 위해 소수의 연산 순서를 무작위로 하였다. [Fig. 8]은 이를 구현하여 아이소제니의 연산 시간을 나타낸 것이다. [Fig. 4], [Fig. 5]와 비교하면 확실히 경향성을 찾기 어려움을 확인할 수 있다. 또, 이렇게 하면 기존 구현이었던 오름차순의 배열보다 실행 시간이 감소하는 장점도 있다.

Fig. 8. Running time of terSIDH (random)
[Table 2]는 임의의 개인키를 사용한 terSIDH의 키 생성 함수 소요 시간을 소수의 연산 순서에 따라 나타낸 것이다. 구현은 SageMath로 하였으며, Apple M1 Max Mac Studio 환경에서 λ = 128로 고정한 후 1000번씩 실행하여 비교하였다. 분석했던 것과 같이 오름차순이 가장 느리고, 내림차순이 가장 빠르며 무작위 순서가 그 중간 속도를 가진다.
Table 2. Performance results of terSIDH in the order of prime numbers (ms)

V. 최종 구현 시간 비교
본 장에서는 기존 알고리즘과 개선한 알고리즘의 개인키에 따른 구현 성능 차이를 확인한다.
3장과 4장에서 분석한 결과에 따르면, 개인키에 0이 몇 개 포함되는지, 개인키가 한 숫자에 얼마나 치우쳤는지에 따라 실행 시간에 차이가 발생한다. 이 차이를 확인하기 위해, 개인키가 한 숫자로 이루어졌을 때 (0,1,2), 두 숫자로 이루어졌을 때 ((0,1), (0,2),(1,2)) 그리고 일반적일 때 이렇게 7가지 경우에 대하여 binSIDH, 기존 terSIDH, 개선한 terSIDH로 나누었다.
[Table 3]은 앞에서 나눈 개인키의 종류에 따라 기존 binSIDH, terSIDH 그리고 본 논문에서 상수 시간 구현한 terSIDH 알고리즘의 키 생성 함수 소요 시간을 비교한 표다. 구현 환경은 [Table 2]와 같다.
Table 3. Comparison of performance results for various private key types (ms)

binSIDH는 이론적으로 개인키에 따른 소요 시간 차이가 없어야 한다. 하지만 기존 구현 코드의 문제로, 3.2.1에서 언급했듯이 개인키에 포함된 2의 개수에 의해 차이와 연산 순서에 의한 스칼라 곱 연산에서 차이가 발생했다. 따라서 본 논문에서 다룬 대로 상수 시간 구현이 가능하지만, terSIDH와 같은 안전성을 가질 때 소요 시간이 너무 길어 다루지 않는다.
기존 terSIDH의 실행 시간을 보면 분석한 대로 개인키가 한 숫자에 치우칠수록 긴 시간이 걸리고, 0의 개수가 많아질수록 적게 걸렸다. 또, 본 논문에서 구현한 terSIDH는 모두 균등한 결과가 나온 것으로 보아 상수 시간 구현되었다고 볼 수 있다. 기존 terSIDH에서 더미 연산을 넣지 않으면 개인키를 무작위로 뽑은, 1908.5ms이 소요되는데 더미 연산을 넣고 평균 4335.5ms가 소요되는 등 더미 부하는 약 2.3배 정도 발생했다.
VI. 결론
본 논문에서는 CD-MM-R 공격의 대응책 중 하나인 terSIDH의 상수 시간 구현을 제시하였다. terSIDH는 개인키에 따라 차수가 바뀌는 아이소제니를 사용하여 실행 시간이 달라진다는 단점이 있었다. 이를 해결하기 위해 더미 연산을 넣고, 알고리즘을 개선하여 상수 시간으로 구현하였다.
기존 terSIDH의 경우 개인키에 따라 소요 시간이 최소 120.1ms에서 최대 4063.4ms로 차이가 확연히 나타났으나, 본 논문의 알고리즘을 적용한 결과 모든 개인키에 대한 소요 시간 차이 범위의 크기가 6.6ms로 줄었다. 상수 terSIDH의 경우 최대 4338.8ms의 시간이 소요되었는데, 이는 기존 terSIDH의 최장 시간인 4063.4ms보다 오래 걸렸다는 점에서 성능을 더 개선할 부분이 남아 있을 것으로 예상된다. 또, Sagemath로 구현한 결과이므로 C나 Rust 등으로 구현하면 더 좋은 결과가 나타날 것으로 보인다. 이와 관련하여 향후 연구를 진행할 예정이다.
References
- Azarderakhsh, Reza, et al, Azarderakhsh, R., et al., Supersingular Isogeny Key Encapsulation, NIST Post-Quantum Cryptography Standardization Project, Gaithersburg, MD, 2017.
- L, De Feo, D, Jao, and Jérôme Plût, 'Towards quantum-resistant cryptosystems from supersingular elliptic curve isogenies,' Journal of Mathematical Cryptology, vol. 8, no. 3, pp. 209-247, December 2014. https://doi.org/10.1515/jmc-2012-0015
- W, Castryck, & T, Decru, 'An efficient key recovery attack on SIDH,' in Advances in Cryptology – EUROCRYPT 2023, Springer Nature Switzerland, Cham, pp. 423-447, 2023.
- A, Basso, & T, B, Fouotsa, 'New SIDH countermeasures for a more efficient key exchange,' in Advances in Cryptology – ASIACRYPT 2023, Springer Nature Singapore, Singapore, pp. 208-233, 2023.
- C, Costello, & H, Hisil, 'A simple and compact algorithm for SIDH with arbitrary degree isogenies,' in Advances in Cryptology – ASIACRYPT 2017, Springer International Publishing, Hong Kong, pp. 303-329, 2017.
- L. Maino, and C. Martindale, 'An attack on SIDH with arbitrary starting curve,' Cryptology ePrint Archive, Report 2022/1026, 2022.
- D. Robert, "Breaking SIDH in polynomial time," in Advances in Cryptology – EUROCRYPT 2023, Springer Nature Switzerland, Cham, pp. 472-503, 2023.
- J. Vélu, "Isogénies entre courbes elliptiques," C. R. Acad. Sci. Paris Sér. A-B, vol. 273, pp. A238–A241, 1971.