I. 서론
Sparkle은 NIST 경량 암호 표준화 프로세스(Lightweight cryptography standardization process)[1]의 최종 후보 알고리즘 중 하나로서, 비선형 퍼뮤테이션이며, 인증 암호화 알고리즘 Schwaemm 및 해시함수 Esch의 핵심 구성 요소이다. Saprkle에 사용된 비선형 함수인 Alzette는 64비트 입출력을 가지며, 32비트 덧셈, 로테이션, XOR로 구성된 ARX 구조이다. 또한 입출력 크기가 256비트인 Sparkle256, 384비트인 Sparkle384, 512비트인 Sparkle512의 세 가지 버전이 있다.
Sparkle에 대한 안전성 분석 결과는 알려진 것이 많지 않다. Bierle 등의 Sparkle 설계자들은 Sparkle256, Sparkle384, Sparkle512에 대하여 각각 4 라운드, 5 라운드, 6 라운드만으로는 차분 공격에 대해 b/2-비트 안전성을 보장할 수 없음을 보였고, 또한, 선형 공격에 대해서도 각각 5 라운드, 6 라운드, 6 라운드만으로는 b/2-비트 안전성을 보장할 수 없음을 보였다[2]. CRYPTO 2022에서는 Schrottenloher와 Stevens가 Sparkle256의 4 라운드와 Sparkle384의 4 라운드, Sparkle512의 5 라운드에 대한 guess-and- determine 구별자(Distinguisher)를 제시하였다[3].
본 논문에서는 Sparkle384와 Sparkle512의 6 라운드 및 7 라운드에 대하여 특정한 형태의 입력 차분과 출력 차분을 다음과 같이 설정하고,
Sparkle384의 6 라운드:
ΔI = (0,0,0,α,0,0), ΔO = (0,ε,ε,ε,0,ε) (1)
Sparkle512의 7 라운드:
ΔI = (0,0,0,0,α,0,0,0), ΔO = (ξ,0,ξ,η,ξ,0,0,ξ) (2)
(1)과 (2)의 입력 차분 ΔI와 출력 차분 ΔO을 만족하는 쌍을 찾는 복잡도를 제시한다. 여기서, 입력 차분 ΔI와 출력 차분 ΔO에 있는 α, ε, ζ, η는 0이 아닌 어떠한 64비트 값도 될 수 있다. 반면에, ξ는 0을 포함한 어떠한 64비트 값도 될 수 있다. 6 라운드로 구성된 Sparkle384를 Sparkle3846, 7 라운드로 구성된 Sparkle512를 Sparkle5127로 표현하자.
Sparkle3846 및 Sparkle5127에 대해 각각 (1)과 (2)를 만족시키는 쌍을 찾는 각 과정의 복잡도는 266.8과 2193.2으로 계산되며, 이것은 랜덤 퍼뮤테이션에 대하여 동일한 작업을 하는 복잡도 2257보다 훨씬 낮다. 그러므로, 본 논문에서 제시되는 방법들은 각각 Sparkle384의 6 라운드와 Sparkle512의 7 라운드에 대한 유효한 구별 공격이 된다. 인증 암호화 알고리즘 Schwaemm256-128과 Schwaemm192-192에 핵심 구성요소로서 Sparkle38411과 Sparkle3847이 사용되고, 인증 암호화 알고리즘 Schwaemm256-256에 핵심 구성요소로서 Sparkle51212와 Sparkle5128이 사용되며, 안전성 증명에 랜덤 퍼뮤테이션 가정이 사용된다. 이런 점들을 고려할 때, 본 논문의 분석 대상이 실제 제안된 알고리즘에 매우 근접한다고 볼 수 있다.
논문의 나머지 부분은 다음과 같이 구성된다. 2장에서는 Sparkle384 및 Sparkle512의 구조에 대한 설명이 주어진다. 3장에서는 384비트 입출력 크기를 갖는 랜덤 퍼뮤테이션에 대하여 (1)을 만족시키는 쌍을 찾는 복잡도와 512비트 입출력 크기를 갖는 랜덤 퍼뮤테이션에 대하여 (2)를 만족시키는 쌍을 찾는 복잡도가 모두 2257임이 설명된다. 4장에서는 Sparkle3846에 대하여 (1)을 만족시키는 쌍을 찾는 과정과 Sparkle 5127에 대하여 (2)를 만족시키는 쌍을 찾는 과정이 설명되고 복잡도가 제시된다. 5장에서는 이 결과의 의미 및 향후 연구의 필요성에 대해 설명한다.
II. 배경 지식
2.1 정의 및 기호
같은 길이의 비트열 x와 y에 대한 비트 연산 XOR(배타적 논리합)을 x⊕y로 표현한다. {0,1}n을 모든 n비트 비트열들의 집합으로 정의한다. 본 논문에서 {0,1}n은 GF(2) 상의 n차 벡터 공간으로 다루어지기도 한다.
Fig. 1. Round function of Sparkle384 (Round i)
2.2 Sparkle384
Sparkle384는 집합 {0,1}384에 대한 비선형 퍼뮤테이션이며 라운드 반복 구조로 설계되어 있다. Sparkle384의 384-비트 입력값은 여섯 개의 64-비트 입력 워드 z00, z01, ..., z05로 쪼개어진다. i ≥ 0 번째 라운드 함수(Round i)는 입력 워드 zi0, zi1, , ..., zi5로부터 출력 워드 zi+10, zi+11, ..., zi+15를 생성한다. 라운드 함수는 세 가지 계층 π, θ, ρ로 구성된다. Round i에서 π 계층은 32-비트 라운드 상수를 zi0에 XOR하고, 32-비트 라운드 카운터 i를 zi1에 더한다. π에서 수행되는 연산은 본 논문의 연구에서 고려되는 차분 전파에 거의 영향을 미치지 않기 때문에 이후로는 생략한다. 따라서, 다음으로 적용되는 θ 계층의 입력도 zi0, zi1, ..., zi5으로 표시한다. θ 계층은 비선형 Alzette 연산, Aij를 xij ←Aij(zij) for 0 ≤ j ≤ 5 와 같이 적용한다. [2]에서 Sparkle 설계자들은 해당 Alzette A의 내부에서 사용되는 상수값 c0, c1, ...을 아래첨자로 사용하여 AC0, AC1, ...와 같이 표현하였는데, 본 논문에서는 각 Alzette 연산의 내부에 사용된 상수값 보다 해당 연산의 위치가 더 중요하게 다루어지기 때문에 i번째 라운드의 j번째 위치에 적용된 Alzette 연산이라는 의미의 Aij와 같이 표현한다. 본 논문에서는 Alzette가 64-비트 입출력 크기를 가진 비선형 퍼뮤테이션이라는 성질만 이용하기 때문에 Alzette의 구조에 대한 자세한 설명은 생략한다. ρ 계층은 64-비트 입출력을 갖는 간단한 선형 퍼뮤테이션 σ를 사용하여 다음과 같이 (xi0, xi1, ..., xi5)로부터 (zi+10, zi+11, ..., zi+15)을 계산한다:
ti ←xi0⊕xi1⊕xi2;
zi+1j-1 mod 3 ← σ(ti) ⊕ xij ⊕xij+3 for 0 ≤ j ≤ 2;
zi+1j+3 ← xij for 0 ≤ j ≤ 2.
2.3 Sparkle512
Fig. 2. Round function of Sparkle512 (Round i)
Sparkle512는 집합 {0,1}512에 대한 비선형 퍼뮤테이션이며 라운드 반복 구조로 설계되어 있다. 또한, Sparkle384와 동일한 Alzette 및 σ 연산을 사용하며 유사한 구조를 갖는다. Sparkle512의 512-비트 입력값은 여덟 개의 64-비트 입력 워드 z00, z01, ..., z07로 쪼개어진다. i ≥ 0 번째 라운드 함수(Round i)는 입력 워드 zi0, zi1, ..., zi7로 부터 출력 워드 zi+10, zi+11, ..., zi+17를 생성한다. 라운드 함수는 세 가지 계층 π, θ, ρ로 구성되는데, 2.2절에서와 같은 이유로 π 계층은 생략한다. Round i에서 θ 계층의 입력도 zi0, zi1, ..., zi7으로 표시한다. θ 계층은 비선형 Alzette 연산, Aij를 xij ←Aij(zij) for 0 ≤ j ≤ 7과 같이 적용한다. ρ 계층은 선형 퍼뮤테이션 σ를 사용하여 다음과 같이 (xi0, xi1, ..., xi7)로 부터 (zi+10, zi+11, ..., zi+17)을 계산한다:
ti ←xi0⊕xi1⊕xi2⊕xi3;
zi+1j-1 mod 4 ←σ(ti)⊕xij⊕xij+4 for 0 ≤ j ≤ 3;
zi+1j+4 ←xij for 0 ≤ j ≤ 3.
III. 랜덤 퍼뮤테이션에 대하여 입력 차분과 출력 차분을 만족시키는 쌍 찾기
{0, 1}384에 대한 랜덤 퍼뮤테이션에 대해 (1)의 입력 차분과 출력 차분을 만족시키는 쌍을 찾는 과정이 3.1 절에서 설명되고 복잡도가 퍼뮤테이션 오라클 질의 횟수로 계산된다. 유사한 논리와 방법으로, {0, 1}512에 대한 랜덤 퍼뮤테이션에 대해 (2)의 입력 차분과 출력 차분을 만족시키는 쌍을 찾는 과정이 3.2 절에서 설명되고 복잡도가 계산된다.
3.1 {0, 1}384에 대한 랜덤 퍼뮤테이션에 대해 (1)의 입력 차분과 출력 차분을 만족시키는 쌍 찾기
P384를 {0, 1}384에 대한 모든 퍼뮤테이션들의 집합이라고 하자. P384에서 랜덤하게 선택된 P에 대하여, P 오라클과 P-1 오라클에 대한 접근 권한이 주어진다고 가정한다. 이 때, P에 대해 (1)을 만족시키는 쌍을 찾는 방법은 다음과 같이 설명될 수 있다.
서로 다른 두 384-비트 값 X와 X′에 대해, 두 값의 XOR에 무관하게, P(X)⊕P(X′) = ΔO가 성립할 확률은 약 2-320이다. 그러므로, ΔI를 만족시키는 입력쌍 2320개를 모은다면 평균적으로 (1)을 만족시키는 쌍 1개를 기대할 수 있다. ΔI의 α에 대한 제한 조건은 단지 그것들이 0이 아니라는 것뿐임을 이용하면 효율적으로 쌍들을 모을 수 있다.
384비트 값 X에 대해 집합 T(X)를 다음과 같이 정의하자.
W = {(0,0,0,α,0,0) | α∈{0,1}64};
T(X) = X⊕W = {X⊕ω | ω∈W}.
W는 V = {0,1}384의 64차 선형 부분공간이며, T(X)는 W의 잉여류(coset)이다. 따라서, T(X)는 V/W의 원소이고, V/W에는 2320개의 서로 다른 T(X) 집합이 존재한다. 각 T(X)는 264개의 원소를 가지며, T(X)의 임의의 서로 다른 두 원소 X⊕ω와 X⊕ω′은 입력 차분 ΔI를 만족시킨다. 그러나, 서로 다른 두 집합 T(X)와 T(X′)으로부터의 어떠한 두 원소 X⊕ω와 X′⊕ω′도 ΔI를 만족시키지 않는다. 그러므로, 각 T(X)에 대하여 ΔI를 만족시키는 쌍을 약 2127(≈264(264 - 1)/2)개 기대할 수 있으며, 2193개의 서로 다른 T(X) 집합을 이용하면 2320개의 쌍을 모을 수 있다. 그러므로, 복잡도는 P에 대한 2193+64 = 2257번의 질의로 계산된다.
P-1에 대한 질의를 이용하는 방법 또한 동일한 복잡도를 소요한다.
3.2 {0,1}512에 대한 랜덤 퍼뮤테이션에 대해 (2)의 입력 차분과 출력 차분을 만족시키는 쌍 찾기
P512를 {0,1}512에 대한 모든 퍼뮤테이션들의 집합이라고 하자. P512에서 랜덤하게 선택된 P에 대하여, P 오라클과 P-1 오라클에 대한 접근 권한이 주어진다고 가정한다. 이 때, P에 대해 (2)을 만족시키는 쌍을 찾는 방법은 다음과 같이 설명될 수 있다.
서로 다른 두 512-비트 값 X와 X′에 대해, 두 값의 XOR에 무관하게, P(X)⊕P(X') = ΔO가 성립할 확률은 약 2-320이다. 그러므로, ΔI 를 만족시키는 입력쌍 2320개를 모은다면 평균적으로 (2)를 만족시키는 쌍 1개를 기대할 수 있다. 3.1절에서와 비슷한 방법으로, 512비트 값 X에 대해 집합 T(X)를 다음과 같이 정의하자.
W = {(0,0,0,0,α,0,0,0) | α ∈ {0,1}64};
T(X) = X⊕W = {X⊕ω | ω∈W}.
W는 V = {0,1}512의 64차 선형 부분공간이며, T(X)는 W의 잉여류(coset)이다. 따라서, T(X)는 V/W의 원소이고, V/W에는 2448개의 서로 다른 T(X) 집합이 존재한다. 각 T(X)는 264개의 원소를 가지며, T(X)의 임의의 서로 다른 두 원소 X⊕ω와 X⊕ω′은 입력 차분 ΔI를 만족시킨다. 그러나, 서로 다른 두 집합 T(X)와 T(X′)으로부터의 어떠한 두 원소 X⊕ω와 X′⊕ω′도 ΔI를 만족시키지 않는다. 그러므로, 각 T(X)에 대하여 ΔI를 만족시키는 쌍을 약 2127(≈264(264 - 1)/2)개 기대할 수 있으며, 2193개의 서로 다른 T(X) 집합을 이용하면 2320개의 쌍을 모을 수 있다. 그러므로, 복잡도는 P에 대한 2193+64 = 2257번의 질의로 계산된다.
P-1에 대한 질의를 이용하는 방법은 약 두 배의 질의 횟수를 소요하기 때문에, 위의 방법이 조금 더 효율적이다.
IV. Sparkle에 대하여 입력 차분과 출력 차분을 만족시키는 쌍 찾기
4.1 Sparkle3846에 대해 (1)의 입력 차분과 출력 차분을 만족시키는 쌍 찾기
Δzji와 Δxji를 각각 zji와 xji의 차분이라고 하자. Sparkle3846에 대해 (1)의 입력 차분과 출력 차분을 만족시키는 쌍은 다음과 같은 단계들(Step 1 ~ Step 4)을 통해 찾을 수 있다.
Step 1: Round 2의 왼쪽 세 입력 워드들의 차분을 다음과 같이 설정한다.
(Δz20,Δz21,Δz22) = (σ(β),β⊕σ(β),σ(β)) (3)
그리고 다음과 같은 식 (4)을 만족시키는 (z20,z21,z22)에 대한 쌍을 찾는다.
Δx20⊕σ(Δt2) = 0 (4)
(4)가 성립할 확률은 2-64이다. 그러한 쌍이 발견된다면 (z33,z34,z35)의 값과 차분이 모두 결정되며 또한 차분 Δz30 = γ0와 Δz32 = 0도 결정된다. 게다가, Δz32 = 0는 Δx32 = Δz45 = 0을 의미한다. (4)를 만족시키는 쌍으로부터 차분 Δx33, Δx34, Δx35를 계산한 다음, Δz40 = Δz41 = Δz42 = 0을 가정하면 σ(Δt3) = Δx35, Δx30 = Δx33⊕Δx35, Δx31 = Δx32⊕Δx35를 얻게 된다. 마지막으로, 다음 식 (5)가 확률 2-64로 성립하기를 기대한다.
σ(Δx30⊕Δx31) = Δx35 (5)
그러므로, (3)을 만족시키는 쌍 2128개가 필요하다. 여기서 β에 대한 조건은 0이 아닌 것뿐임을 이용하여 쌍을 효율적으로 모을 수 있다. 192비트 값 X에 대해 집합 S(X)를 다음과 같이 정의하자.
W = {(σ(α), α⊕σ(α), σ(α)) | α∈{0,1}64};
S(X) = X⊕W = {X⊕ω | ω∈W}.
S(X)는 (3)을 만족시키는 264(264 - 1)/2 ≈ 2127개의 쌍을 만들어낸다. 그러므로 두 개의 서로 다른 집합 S(X)와 S(X′)이 있으면 2128개의 쌍을 얻게 된다. 이것으로 (4)와 (5)를 모두 만족시키는 1개의 쌍을 기대할 수 있다.
Step 1의 복잡도 C1를 계산해보자. 복잡도는 Alzette 연산 시간을 단위로 계산된다. 그밖의 선형 연산들은 Alzette 연산에 비해 훨씬 가볍기 때문이다. S(X)와 S(X′)의 각 원소에 대해 먼저 A20, A21, A22에 해당하는 세 번의 Alzette 연산이 적용된다. 그 다음 2128개 쌍 중에 몇 쌍이 (4)를 만족시키는지 체크한다. 평균적으로는 264 쌍이 (4)를 만족시킨다. 그 쌍들 중 (5)를 만족시키는 것이 있는지 확인하기 위해 각 쌍마다 A33, A34, A35이 적용되는데, 최대 여섯 번의 Alzette 연산이 요구된다. 그러므로, C1은 다음과 같이 계산된다.
C1 = 265 · 3A + 264 · 6A = 266 · 3A.
Fig.3은 Step 1 이후의 Round 2와 Round 3에서의 상황을 표현하고 있다. 굵은 빨간 점선은 값은 미정(undetermined)이지만 차분은 0임을 의미한다. 굵은 파란 점선은 값은 미정이지만 차분이 결정되었고 0이 아님을 의미한다. 굵은 빨간 실선은 값이 결정되어 있고 차분이 0임을 의미한다. 굵은 파란 실선은 값이 결정되어 있고 차분이 0이 아님을 의미한다. 검은 실선은 값과 차분 모두 미정임을 의미한다.
Fig. 3. Situation in Rounds 3 and 4 after Step1in finding a right pair of (1) for Sparkle3846
Step 2: Fig.3과 같이, Δz30 = γ0이고 Δx30 = δ0라고 하자. A30에 대해, 입력 차분 γ0을 만족시키는 모든 264개의 입력쌍을 시도하여 출력 차분 δ0을 만족시키는 쌍이 있는지 확인한다. 만약 그러한 쌍을 찾지 못한다면 다시 Step 1을 수행한다. 따라서, Step 2의 복잡도 C2는 C2 = 265A으로 계산된다.
Step 3: Fig.3에서와 같이, Δx31 = δ1이라고 하자. Step 1에서 찾은 쌍은 x22⊕σ(t2)의 값들을 결정한다. 그 값들을 k와 k′이라고 하자. x22⊕ x2'5 = β를 만족시키는 264개의 모든 (z25,z2′5)쌍에 대해
A31(A25(z25)⊕k)⊕A31(A25(z2'5)⊕k') = δ1
을 만족시키는 쌍이 있는지 확인한다. 만약 그러한 쌍을 찾지 못한다면 다시 Step 1을 수행한다. 따라서, Step 3의 복잡도 C3는 C3 = 266A으로 계산된다. Fig.4는 Step 2와 Step 3이 성공한 후의 Round 2와 Round 3의 상황을 보여준다.
Fig. 4. Situation in Rounds 3 and 4 after Steps 2 and 3 in finding a right pair of (1) for Sparkle3846
Step 4: 이전의 Step들이 모두 성공했다면, 이 단계에서는 z32를 제외한 Round 3의 모든 입력 워드들의 값들이 결정되어있게 된다. 따라서, 유일한 미정 워드인 x32 = A32(z32)는 다른 모든 미정 워드들과 연관되어 있기 때문에, x32의 64 자유도를 이용하여 x50과 x52의 차분들이 일치하도록(즉, Δx50 =Δx52)할 수 있다. 이것에는 x32의 가능한 모든 264 가지 값들을 통한 시도가 평균적으로 요구된다. 이전 Step들의 성공으로부터, (x3i,x3'i) 값들이 i= 0, 1, 3, 4, 5에 대하여 확보되어 있다면, x32의 각 값에 대해 다음의 계산들을 수행함으로써 Δx50 =Δx52인지 확인할 수 있다:
t3 = x30⊕x31⊕x32;
x4i = A4i(x3i+1 mod 3⊕σ(t3)) for i ∈ {0, 1, 2};
t4 = x40⊕x41⊕x42;
x50 = A50(A44(x31)⊕x41⊕σ(t4));
x5'0 = A50(A44(x3'1)⊕x41⊕σ(t4));
x52 = A52(A43(x30)⊕x40⊕σ(t4));
x5'2 = A52(A43(x3'0)⊕x40⊕σ(t4)).
이와 같은 과정에 따라, Step 4의 복잡도 C4는 C4 = 264 · 11A로 계산된다.
만약 위 식들을 만족시키는 x32를 찾는다면, 나머지 미정 워드들로의 전파(propagation)는 쉽게 계산된다. Fig.5는 (z30, ...,z35)에서 출력 차분 ΔO까지의 정방향 전파, Fig.6은 (z30, ...,z35)에서 입력 차분 ΔI까지의 역방향 전파의 결과를 보여준다.
Fig. 5. Forward propagation of differences from Round 3 to Round 5 after Step 4 in finding a right pair of (1) for Sparkle3846
Fig. 6. Backward propagation of differences from Round 1 to Round 0 after Step 4 in finding a right pair of (1) for Sparkle3846
4.2 Sparkle5127에 대해 (2)의 입력 차분과 출력 차분을 만족시키는 쌍 찾기
Sparkle5127에 대해 (2)의 입력 차분과 출력 차분을 만족시키는 쌍은 다음과 같은 단계들(Step 1 ~ Step 4)을 통해 찾을 수 있다.
Step 1: Round 2의 왼쪽 네 입력 워드들의 차분을 다음과 같이 설정한다.
(Δz20,Δz21,Δz22,Δz22)
= (σ(β),σ(β),β⊕σ(β),σ(β)) (6)
그리고 다음과 같은 식 (7)을 만족시키는 (z20, z21, z22, z23)에 대한 쌍을 찾는다.
(Δx20⊕σ(Δt2), Δx21⊕σ(Δt2)) = (0,0). (7)
(7)이 성립할 확률은 2-128이다. 그러한 쌍이 발견된다면 (z24,z25,z26,z27)의 값과 차분이 모두 결정되며 또한 차분 Δz30 = Δz33 = 0와 Δz31 = γ0도 결정된다. 게다가, Δz30 = Δz33 = 0은 Δx30 = Δz44 = 0와 Δx33 = Δz47 = 0을 의미한다. (7)를 만족시키는 쌍으로부터 차분 Δx34, Δx35, Δx36, Δx37를 계산한 다음에, Δz40 = ⋯ = Δz43 = 0을 가정하면 σ(Δt3) = Δx34, Δx31 = Δx34⊕Δx35, Δx32 = Δx34⊕Δx36를 얻게 된다. 마지막으로, 다음 식 (8)과 (9)가 각각 확률 2-64로 성립하기를 기대한다.
Δx34 = Δx37; (8)
σ(Δx31⊕Δx32) = Δx34. (9)
그러므로, (6)을 만족시키는 쌍 2128개가 필요하다. 여기서 β에 대한 조건은 0이 아닌 것뿐임을 이용하여 쌍을 효율적으로 모을 수 있다. 256비트 값 X에 대해 집합 S(X)를 다음과 같이 정의하자.
W = {(σ(α), σ(α), α⊕σ(α), σ(α)) | α∈{0,1}64};
S(X) = X⊕W = {X⊕ω | ω∈W}.
S(X)는 (6)을 만족시키는 264(264 - 1)/2 ≈ 2127개의 쌍을 만들어낸다. 그러므로 2129개의 서로 다른 S(X) 집합이 있으면 2256개의 쌍을 얻게 된다. 이것으로 (7), (8), (9)를 모두 만족시키는 1개의 쌍을 기대할 수 있다.
Step 1의 복잡도 C1를 계산해보자. 각 S(X)의 각 원소에 대해 먼저 A20, A21, A22, A23에 해당하는 네 번의 Alzette 연산이 적용된다. 그리고 이 2256개 쌍 중에 몇 쌍이 (7)을 만족시키는지 체크한다.
평균적으로는 2128 쌍이 (7)을 만족시킨다. 그 쌍들 중 (8)을 만족시키는 것이 있는지 확인하기 위해 각 쌍마다 A34, A37이 적용된다. 평균적으로는 남은 쌍들 중 264쌍이 (8)을 만족시킨다. 마지막으로, 그 쌍들 중 (9)를 만족시키는 것이 있는지 확인하기 위해 각 쌍마다 A35, A36이 적용된다. 그러므로, C1은 다음과 같이 계산된다.
C1 = 2129+64 · 4A + 2128 · 4A + 264 · 4A ≃ 2195A.
Fig.7은 Step 1 이후의 Round 2와 Round 3에서의 상황을 표현하고 있다.
Fig. 7. Situation in Rounds 3 and 4 after Step1 in finding a right pair of (2) for Sparkle5127
Step 2: Fig.7과 같이, Δz31 = γ0이고 Δx31 = δ0라고 하자. A31에 대해, 입력 차분 γ0을 만족시키는 모든 264개의 입력쌍을 시도하여 출력 차분 δ0을 만족시키는 쌍이 있는지 확인한다. 만약 그러한 쌍을 찾지 못한다면 다시 Step 1을 수행한다. 따라서, Step 2의 복잡도 C2는 C2 = 265A으로 계산된다.
Step 3: Fig.7에서와 같이, Δx32 = δ1이라고 하자. Step 1에서 찾은 쌍은 x23⊕σ(t2)의 값들을 결정한다. 그 값들을 k와 k′이라고 하자. z27⊕z2'7 = β를 만족시키는 264개의 모든 (z27,z2'7)쌍에 대해
A32(A27(z27)⊕k)⊕A32(A27(z2'7)⊕k') = δ1
을 만족시키는 쌍이 있는지 확인한다. 만약 그러한 쌍을 찾지 못한다면 다시 Step 1을 수행한다. 따라서, Step 3의 복잡도 C3는 C3 = 266A으로 계산된다. Fig.8은 Step 2와 Step 3이 성공한 후의 Round 2와 Round 3의 상황을 보여준다.
Fig. 8. Situation in Rounds 3 and 4 after Steps 2 and 3 in finding a right pair of (2) for Sparkle5127
Step 4: 이전의 Step들이 모두 성공했다면, 이 단계에서는 z30과 z33을 제외한 Round 3의 모든 입력 워드들의 값들이 결정되어있게 된다. 따라서, 유이한 미정 워드인 z30 = A30(z30)과 x33 = A33(z33)는 다른 모든 미정 워드들과 연관되어 있기 때문에, (x30,x33)의 128 자유도를 이용하여 Δx50 = Δx51과 Δx60 = Δx63이 성립하게 할 수 있다. 이것에는 (x30,x33)의 가능한 모든 2128 가지 값들을 통한 시도가 평균적으로 요구된다. 이전 Step들의 성공으로부터, (x3i,x3'i) 값들이 i = 1, 2, 4, 5, 6, 7에 대해 확보되어 있다면, (x30, x33)의 각 값에 대해 다음의 계산들을 수행함으로써 Δx50 = Δx51인지 확인할 수 있다:
t3 = x30⊕x31⊕x32⊕x33;
x4i = A4i(x3i+1 mod 4⊕σ(t3)) for i ∈ {0, 1, 2, 3};
t4 = x40⊕x41⊕x42⊕x43;
x50 = A50(A45(x31)⊕x41⊕σ(t4));
x5'0 = A50(A45(x3'1)⊕x41⊕σ(t4));
x51 = A51(A46(x32)⊕x42⊕σ(t4));
x5'1 = A51(A46(x3'2)⊕x42⊕σ(t4)).
평균적으로, 264개의 (x30, x33) 값들이 Δx50 = Δx51을 만족시킨다. Δx52 = Δx53 = 0이므로, Δx50 = Δx51이면 Δt6 = 0이다. 남아있는 (x30, x33)의 각 값에 대하여 다음의 계산들을 수행함으로써, Δx60 = Δx63인지 확인할 수 있다:
x52 = A53(A47(x33)⊕x43⊕σ(t4));
x53 = A52(A44(x30)⊕x40⊕σ(t4));
t5 = x50⊕x51⊕x52⊕x53;
x60 = A60(A55(x41)⊕x51⊕σ(t5));
x6'0 = A60(A55(x4'1)⊕x51⊕σ(t5));
x63 = A63(A54(x40)⊕x50⊕σ(t5));
x6'3 = A63(A54(x40)⊕x5'0⊕σ(t5)).
이와 같은 과정에 따라, Step 4의 복잡도 C4는 C4 = 2128 · 12A + 264 · 12A ≃ 2130 · 3A로 계산된다.
위 식들을 만족시키는 (x30, x33)를 구한다면, 나머지 미정 워드들로의 전파(propagation)는 쉽게 계산된다. Fig.9는 (z30, ..., z37)에서 출력 차분 ΔO까지의 정방향 전파, Fig.10은 (z20, ..., z27)에서 입력 차분 ΔI까지의 역방향 전파의 결과를 보여준다.
Fig. 9. Backward propagation of differences from Round 1 to Round 0 after Step 4 in finding a right pair of (2) for Sparkle5127
Fig. 10. Flow from Step 1 to Step 4 in finding right pairs for Sparkle permutations
4.3 복잡도
Fig.11은 4.1절과 4.2절에서 설명된 방법들에 대하여 Step 1부터 Step 4까지의 간단한 순서도를 보여준다. p와 q를 각각 Step 2와 Step 3의 성공 확률이라고 하자. 그러면 각 방법의 총 복잡도 C는
C = ((C1 + C2)p-1 + C3)q-1 + C4 (10)
와 같이 표현된다.
Fig. 11. Forward propagation of differences from Round 3 to Round 6 after Step4 in finding a right pair of (2) for Sparkle5127
p는 Alzette 연산의 차분 분포 테이블(Difference Distribution Table)에서 0이 아닌 성분의 비율과 같다. Alzette는 64비트 크기의 입력과 출력을 갖는 연산이므로 p에 대한 정확한 값을 구하는 것은 어렵다. 그런데, Alzette는 64비트 4-라운드 ARX 구조를 갖고 있으며[1], 적절한 로테이션 연산들을 사용하고 있기 때문에 32비트 덧셈에서 발생할 수 있는 차분 성질이 출력의 각 비트에 고르게 확산된다. 따라서, p의 값은 1/4과 1/2 사이에 있을 것으로 추측된다. 마찬가지로, q의 값 또한 1/4과 1/2 사이에 있을 것으로 추측된다. 작은 크기(8비트~12비트)의 입출력을 갖도록 축소된 형태의 Alzette에 대하여 테스트한 결과들은 이러한 추측을 뒷받침한다.
먼저, 4.1절에서 설명된 방법의 복잡도를 계산해 보자. 식 (10)에서 p와 q를 모두 1/4로 가정하고, Step 1부터 Step 4까지 계산된 복잡도 C1, C2, C3, C4를 대입하면, C는 다음과 같이 계산된다:
C = ((266· 3A + 265A)22 + 266A)22 + 264· 11A
= 264· 251A.
한 번의 Sparkle3846 연산은 36번의 Alzette 연산을 요구하므로, 위의 값은 다시 C ≃ 266.8로 환산될 수 있다. 이 복잡도는 3.1절에서 제시된, 랜덤 퍼뮤테이션에 대한 복잡도 2257 보다 훨씬 작기 때문에, 4.1절에서 설명되는 방법은 Sparkle3846에 대한 유효한 구별 공격이 된다.
4.2절에서 설명된 방법에서는 Step 1의 복잡도가 다른 단계의 복잡도에 비해 월등히 높다. 그러므로, 식 (10)은 C ≃ C1p-1q-1로 수정될 수 있다. p와 q를 모두 1/4로 가정하고, C1 = 2195A를 대입하면, C≃ 2199A로 계산된다. 한 번의 Sparkle5127 연산이 56번의 Alzette 연산을 소요한다는 것을 고려하면 이것은 C≃ 2193.2로 환산된다. 이 복잡도 또한 3.2절에서 제시된 랜덤 퍼뮤테이션에 대한 복잡도 2257 보다 훨씬 작기 때문에, 4.2절에서 Sparkle5127에 대해 설명되는 방법은 유효한 구별 공격이 된다.
V. 결론
Sparkle은 NIST에서 진행한 경량 암호 표준화 프로세스의 10 가지 최종 후보 알고리즘 중 하나이다. 본 논문에서는 Sparkle384의 6 라운드와 Sparkle512의 7 라운드에 대하여 새로운 구별 공격을 제시하였다. 공격된 라운드 수는 실제 제안된 알고리즘에서 사용된 라운드 수와 불과 1 라운드 차이이다.
Alzette는 64비트 4 라운드 ARX 구조로 되어 있으며, 몇 가지 분석 결과들이 제시되어 있으나[1,4-8], 이러한 ARX 구조의 차분 분포를 정확하게 파악하는 것은 매우 어려운 작업이다. 본 논문에서 제시된 구별 공격들의 복잡도 추정에는 Alzette 차분 분포에 대한 특별한 가정이 고려되었는데, 만약 향후 연구에서 Alzette 차분 분포에 대한 성질들이 좀 더 자세하게 분석된다면, 본 논문에서 제시된 구별 공격의 복잡도가 더욱 명확해질 것으로 기대한다.
참고문헌
- Meltem Sonmez Turan, Kerry McKay, Donghoon Chang, Lawrence E. Bassham, Jinkeon Kang, Noah D. Waller, John M. Kelsey, and Deukjo Hong, "Status Report on the Final Round of the NIST Lightweight Cryptography Standardization Process," NIST Internal Report, NISTIR 8454, June 2023.
- Christof Beierle, Alex Biryukov, Luan Cardoso dos Santos, Johann Grossschadl, Leo Perrin, Aleksei Udovenko, Vesselin Velichkov, and Qingju Wang, "Lightweight AEAD and Hashing using the Sparkle Permutation Family," IACR Transactions on Symmetric Cryptology, Vol. 2020, No. S1, pp.208-261, Jun. 2020.
- Andre Schrottenloher and Marc Stevens, "Simplified MITM Modeling for Permutations: New (Quantum) Attacks," Advances in Cryptology-CRYPTO 2022, LNCS 13509, pp.717-747, Springer, 2022.
- Mingjiang Huang, Zhen Xu, and Liming Wang, "On the Probability and Automatic Search of Rotational-XOR Cryptanalysis on ARX Ciphers," The Computer Journal, Vol. 65, Issue12, December 2022, pp. 3062-3080. https://doi.org/10.1093/comjnl/bxab126
- Yunwen Liu, Siwei Sun, and Chao Li, "Rotational Cryptanalysis from a Differential-Linear Perspective," Advanced in Cryptology-EUROCRYPT 2021, LNCS 12696, pp.741-770, Springer, 2021.
- Zhongfeng Niu, Siwei Sun, Yunwen Liu, and Chao Li, "Rotational Differential-Linear Distinguishers of ARX Ciphers with Arbitrary Output Linear Masks," Advanced in Cryptology - CRYPTO 2022, LNCS 13507, pp. 3-32, Springer, 2022.
- Zheng Xu, Yongqiang Li, Lin Jiao, Mingsheng Wang, and Willi Meier, "Do NOT Misuse the Markov Cipher Assumption - Automatic Search for Differential and Impossible Differential Characteristics in ARX Ciphers," Cryptology ePrint Archive, 2022/135.
- Ties Speel, "Cryptanalysis of Sparkle's ARX-Box Alzette," Bachelor Thesis, Radboud University, June 2022.