Ⅰ. 서론
전자서명은 안전하지 않은 통신채널을 통해 본인을 인증할 수 있는 수단이다. 전자서명 알고리즘으로는 미연방표준인 DSA, ECDSA 등이 널리 사용되고 있다[1]. 하지만 기존에 사용하던 전자서명 알고리즘들은 쇼어 알고리즘에 의해 다항시간 내에 공격당하므로[2], 양자컴퓨터가 개발되는 가까운 미래에는 더이상 사용할 수 없다. 이에 NIST에서는 양자컴퓨팅 환경에서도 안전한 전자서명 알고리즘을 표준화하기 위해 양자 내성 암호 공모전을 실시하고 있다. 양자 내성 암호 공모전은 현재 Round 3까지 진행됐으며 그 후보는 공개키 암호 알고리즘 4종, 전자서명 알고리즘 3종이다.
양자 내성 암호는 기반 문제에 따라 크게 격자 (lattice), 부호(code), 다변수(multivariate), 해시(hash), 아이소제니(isogeny) 기반 암호로 분류된다. 이 중에서 격자 기반 암호는 공모전 최종후보에 올라온 알고리즘 7종 가운데 5종에 달할 정도로 관심과 기대가 높으며 연구 가치가 크다. 특히 FALCON은 격자 기반 전자서명 알고리즘으로서 서명 및 검증 속도가 빠르고 공개키 및 서명길이가 짧다는 장점이 있다[3].
한편, 부채널 공격은 암호 알고리즘을 처리하는 동안 기기에서 발생하는 물리적 신호를 통해 비밀정보를 알아내는 기법이다. 부채널 공격은 암호 알고리즘의 수학적 안전성과는 별개로 현실적인 위협이므로 양자 내성 암호 또한 부채널 공격에 대한 안전성이 확보되어야 한다. 특히 FALCON의 경우에는 Fast Fourier Transform(FFT), discrete Gaussian 샘플링 뿐만 아니라 다른 알고리즘에서 볼 수 없던 부동소수점 연산을 사용하는 등 특별한 구조로 설계되어 새로운 형태의 부 채널 공격이 존재하는지 연구할 필요가 있다[4].
본 논문에서는 격자 기반 전자서명 알고리즘인 FALCON에 대한 세 가지 전력분석 공격의 가능성과 비밀정보 복원 방안을 논하고자 한다. 첫 번째는 다수의 서명과정에서 발생하는 FFT 곱셈에서 부동소수점 곱 연산을 대상으로 하는 공격이다. 다른 두 가지는 한 번의 서명과정에서 발생하는 샘플링을 대상으로 하는 공격이다. 구체적으로는 discrete Gaussian 샘플링을 담당하는 SamplerZ 내부에서 half Gaussian 분포로 정수를 추출하는 BaseSampler를 대상으로 하는 공격과, SamplerZ 내부에서 BaseSampler의 결과를 discrete Gaussian 분포로 변환하는 과정을 대상으로 하는 공격이다.
본 논문의 구성은 다음과 같다. 먼저 2장과 3장에서는 각각 배경지식과 FALCON 전자서명 알고리즘을 소개한다. 4장과 5장에서는 각각 FALCON 전자서명 알고리즘에 대한 세 가지 전력 분석 공격 가능성과 비밀정보 복원 방안을 제시한다. 마지막으로 6장에서는 결론을 맺는다.
Ⅱ. 배경지식
본 장에서는 논문 내용의 이해를 돕기 위한 배경지식에 대해 살펴본다.
2.1. Fast Fourier Transform(FFT)
이산 푸리에 변환은 \(x=\left(x_{0}, x_{1}, \ldots, x_{n-1}\right)\)에 대해서 다음과 같이 정의된다. (n = 2m일 때, nth root of unity인 \(\zeta_{n}=e^{2 \pi i / n}\)은 \(\zeta_{n}^{n}=1\)을 만족한다.)
\(X_{k}=\sum_{m=0}^{n-1} x_{k} e^{-\frac{2 \pi i}{n} k m} \quad(k=0,1, \ldots, n-1)\)
역변환은 다음과 같이 정의된다.
\(x_{k}=\sum_{m=0}^{n-1} X_{k} e^{\frac{2 \pi i}{n} k m} \quad(k=0,1, \ldots, n-1)\)
두 과정의 시간복잡도는 O(n2)이다. 이산 푸리에변환을 거치면 다항식의 곱셈, 나눗셈을 계수별로 처리하여 O(n)만에 연산할 수 있다는 장점이 있다.
FFT는 이산 푸리에 변환과 그 역변환을 빠르게 수행하는 알고리즘으로 수치해석, 신호처리 등 다양한 분야에서 사용되고 있다[5]. FFT는 butterfly operation 이라 불리는 연산을 사용하는데, 이 연산은 짝수 지수와 홀수 지수를 분리하여 계산하며 이를 재귀적으로 진행한다. 결과적으로 FFT는 위의 두 변환을 O(nlogn)만에 수행한다.
한편, NTT는 유한체 ℤp에서 이산 푸리에 변환을 진행한다. p=1 mod 2n을 만족하는 소수 p에 대하여, \(x^{n}+1\)은 ℤp에서 n 개의 근을 갖게 되며 이 n개의 근으로 \(\mathrm{Z}_{p}[x] /\left(x^{n}+1\right)\)의 모든 원소를 표현할 수 있다. NTT도 FFT와 마찬가지로 시간복잡도를 \(O(n \log n)\)까지 낮출 수 있으며, 곱셈과 나눗셈을 O(n)만에 연산할 수 있다는 장점을 갖고 있다.
2.2. 부동소수점 연산
컴퓨터는 모든 데이터를 이진수로 저장하기 때문에 정수 및 유리수를 표기하는 규칙이 필요하다. IEEE-754는 유리수를 32bit 또는 64bit로 표기하는 부동소수점에 관한 표준이다[6]. IEEE-754의 64bit 부동소수점 표기법에서는 최상위 1bit가 부호를, 다음 11bit 가 지수를, 나머지 52bit가 가수를 각각 의미한다. 부호, 지수, 가수를 각각 s,e,m 라 하면, 64bit 부동소수점 데이터의 값은 \((-1)^{s} \times 2^{e-1023} \times 1 . m\)로 해석된다.
Ⅲ. FALCON 전자서명 알고리즘
본 장에서는 격자 기반 전자서명 알고리즘인 FALCON의 개요 및 내부 알고리즘에 관하여 서술한다.
3.1. FALCON 전자서명 알고리즘의 개요
FALCON[3]은 fast Fourier lattice-based compact signatures over NTRU의 줄임말로, NTRU 격자에서 Short Integer Solution 문제가 양자알고리즘으로도 효율적으로 풀리지 않는다는 점에 안전성을 두고 있다. FALCON은 GPV framework, NTRU, fast Fourier 샘플링을 융합하여 설계되었다. 구체적으로 FALCON은 안전한 격자 기반 전자서명을 만들기 위한 방법론인 GPV framework[7]에 따라 설계되었으며, fast Fourier 샘플링이라는 트랩도어 샘플러를 사용한 NTRU를 기반으로 한다.
FALCON은 \(\mathbb{Q}[x] /(\phi)\)인 체에서의 연산을 사용하며 이때, n = 2k(주로 512, 1024)이고 \(\phi=x^{n}+1\)이다. FALCON의 공개키 A와 개인키 B는 같은 격자의 기저를 가진다. 먼저 공개키는 \(A=\left[\begin{array}{ll} -h & I_{n} \\ q I_{n} & O_{n} \end{array}\right]\)의 형태이며 각 원소는 n × n행렬이기 때문에 전체 행렬의 크기는 2n × 2n이다. 이때 q = 12289이고, 다항식 h의 계수는 0과 q-1사이의 수로 구성되어있다. (n-1차 다항식 h는 \(x^{i} h \bmod \phi\)가 각 행이 되어 n × n 행렬로 나타낼 수 있다.)
개인키는 \(B=\left[\begin{array}{ll} g & -f \\ G & -F \end{array}\right]\)의 형태이다. 이때 다항식 f, g, F, G는 작은 정수를 계수로 가지며 NTRU equation인 fG - gF = \(q \bmod \phi\)를 만족해야 한다. 공개키와 개인키가 같은 기저를 가지려면 \(h=g / f \bmod \phi\)를 만족해야 한다. 한편 FALCON 트리 T는 를 통해 만들어지며 샘플링 과정에서 사용되는 비밀정보이다.
3.2. FALCON 전자서명 내부 알고리즘
FALCON 전자서명 알고리즘은 공개키 및 개인 키를 만드는 keygen, 서명 값을 만드는 sign, 검증하는 단계인 verify로 크게 세 가지의 내부 알고리즘으로 구성되어있다.
sign은 메시지 m , 개인키 sk를 입력으로 받은 후, 솔트 값 r과 서명 값 s를 출력한다. sign을 격자에 맞춰 설명하면, 격자 위에 있지 않은 t라는 점을 ffSampling을 통해 근처 격자 위의 점으로 옮긴 후, 그 차이 값을 압축하여 서명 값으로 쓴다. sign에 나오는 HashToPoint는 메시지의 해시값을 정수 계수 다항식으로 바꾸는 역할이며 Compress는 서명 값을 압축하는 역할이다. ffSampling은 FFT 상태에서 수행하기 좋기 때문에 ffSampling이란 이름이 붙었으며 구조 또한 실제 FFT의 butterfly operation과 유사함을 알 수 있다. ffSampling 내부의 splitfft, mergefft는 도메인을 변환하는 과정이며, SamplerZ는 discrete Gaussian 분포와 유사한 분포에서 입력과 유사한 정수를 뽑는 과정이다. 평균과 표준편차를 입력으로 받으며 SamplerZ 내부는 기각 샘플링을 기반으로 작동한다. SamplerZ 내부의 BerExp는 \(\operatorname{ccs} \cdot \exp (-x)\)의 확률로 1을 반환한다. BaseSampler는 half Gaussian 분포를 따르며 SamplerZ는 BaseSampler 결과 값을 이용하여 Gaussian 분포에 맞게 수를 뽑을 수 있다. BaseSampler에서 RCDT는 272에서 CDT배열의 각 요소를 뺀 배열이며 상수 배열이다.
검증단계인 verify는 굉장히 간단하며 연산량이 적어 FALCON은 검증 시간이 짧다는 장점도 가지고 있다. verify는 HashToPoint, Decompress를 통해 sign에서 사용한 C, S2를 복구하고 이를 이용해서 검증과정을 거친다. Decompress는 Compress의 올바른 출력값을 입력으로 넣는다면, 원래의 값으로 복원할 수 있는 성질을 갖고 있다.
알고리즘 1. FALCON sign
알고리즘 2. FALCON ffSampling
알고리즘 3. FALCON SamplerZ
알고리즘 4. FALCON BaseSample
알고리즘 5. FALCON verif
Ⅳ. FALCON의 전력 분석 공격 방식 제시
본 장에서는 FALCON의 전력 분석 공격 방법을 세 가지 제시한다.
부채널 공격은 분석 방법이 다양한데, 시간 분석 공격(Timing Attack)[8], 전력 분석 공격(Power Analysis Attack)[9], 전자기파 분석 공격 (Electromagnetic Analysis Attack)[10], 오류 주입 공격(Fault Injection Attack)[11] 등이 있다. 이들 중 전력 분석 공격은 기기의 전력소비량을 이용하여 중간값을 추측하고 비밀정보를 획득하는 공격이다. 상관 전력 분석(Correlation Power Analysis)[12]은 전력 분석 공격의 일종으로 알고리즘 내부의 중간값의 해밍 웨이트와 그때의 전력소비량이 상관관계가 있음을 이용한 공격이다. 추측한 중간값과 측정된 전력소비량 간의 상관관계가 가장 높게 나온 경우, 이때의 추측 값을 실제 중간값으로 간주한다.
4.1. 부동소수점 곱 연산을 이용한 상관 전력 분석
FALCON에서는 부동소수점 연산을 자주 사용하는데, 이때 나타나는 곱셈을 이용한 상관 전력 분석 공격을 알아본다. sign의 3번째 줄 연산에서는 FFT(c)⊙FFT(F)와 FFT(c)⊙FFT(f) 연산이 중간과정으로 실행된다. 두 연산은 FFT 곱셈 연산으로 실제로는 요소별 부동소수점 곱셈 연산을 수행한다. 만약 FFT(c)값을 안다고 가정하면, 고정값이지만 모르는 값인 FFT(F) , FFT(f)와 매 연산 우리가 알 수 있는 값인 FFT(c)의 부동소수점 곱연산만이 남는다.
알고리즘 6. Mantissa multiplication part attack
IEEE-754 표기식 부동소수점 32bit 수 두 개의 곱은 상관 전력 분석을 이용해서 구할 수 있음이 알려졌지만[13], FALCON reference code에서는 부동소수점을 새로운 64bit 부호 없는 정수에 저장하여 연산을 재정의한다. 이 중 곱셈연산은 가수의 곱셈, 지수의 덧셈, 부호의 배타적 논리합 순서로 진행한다. 그림 1 은 이 곱셈 연산 전체 파형을 나타낸 것이다.
[그림 1] FALCON 부동소수점 곱셈 파형
알고리즘 7. FALCON BaseSampler attack
가수 a, b의 곱셈을 하기 위해 a의 하위 25bit, 상위 27bit 각각을 a0, a1, b의 하위 25bit, 상위 27bit 각각을 로 분리한다. 먼저 실제로는 1.a, 1.b 간의 곱셈이므로, a1, b1값 앞에 1을 붙여 28bit의 부호 없는 정수로 만든다. 그 후 정수의 곱셈을 이용하여 \(a_{0} b_{0}, a_{0} b_{1}, a_{1} b_{0}, a_{1} b_{1}\)값들을 계산한다. 마지막으로, \(a_{1} b_{1} 2^{50}+\left(a_{0} b_{1}+a_{1} b_{0}\right) 2^{25}+a_{0} b_{0}\)값을 구해서 2105이상은 지수의 덧셈 부분으로 넘기며 나머지 값 중 상위 52bit를 새로운 가수로 만든다. 그러므로 32bit 부호 없는 정수 곱셈을 상관 전력 분석을 통해 복원할 수 있다면 가수의 곱셈 부분은 복원할 수 있다.
지수와 부호는 곱셈 연산이 아니기 때문에 위의 방법으로는 공격할 수 없다.
4.2. BaseSampler의 상관 전력 분석 공격
FALCON에서 직접적인 샘플링을 담당하는 BaseSampler를 살펴보자. 입력이 없고 출력은 SamplerZ에서 입력의 정수 부분과 출력 간에 거리를 얼마나 두는가를 의미한다. BaseSampler는 RCDT값을 이용한 알고리즘이기 때문에 RCDT 상수 값을 이용한다면 파형에서 해당 연산의 위치를 알 수 있으며 RCDT는 감소수열이기 때문에 반복문을 통해 z0값에 더해지는 값은 \(1, \cdots, 1,0, \cdots, 0\)이 되며 이때의 1의 개수가 z0값을 결정한다. 해당 값은 RCDT의 값을 포함하므로 해당 연산을 파형에서 쉽게 찾을 수 있으며 파형이 나뉘는 부분이 반복문이 진행됨에 따라 연속적으로 일어나므로 z0값은 쉽게 구할 수 있다. BaseSampler는 sign 1번 동안 최소 2n번 나타나므로 단일 서명 과정으로 충분하다. 그림 2는 BaseSampler 하나의 파형을 나타낸 파형이며 동그라미로 표시한 부분을 통해 반복문이 18번 반복됨을 확인할 수 있다
[그림 2] BaseSampler 파형
4.3. SamplerZ의 전력분석 공격
4.2절에서의 결과 z0를 이용하여 실제 z를 전력 분석 공격을 통해서 어떻게 추출할지 살펴보자. 실제 z를 구한다면 입력의 정수 부분과 SamplerZ의 출력값의 차이를 구할 수 있다. 4.2절에서 구한 z0와 임의의 수 b(b=0 or 1)를 이용하여 z = b +(2b-1)z0식을 통하여 z를 구한다. 위 식을 통해 구한 z는 z0 +1 또는 -z0값을 갖게 되는데 BaseSampler의 결괏값은 0 ≤ z0 ≤ 18 이므로 -18 ≤ z ≤ 19의 범위를 가짐을 알 수 있다. 다음 표 1은 z0값에 따라 z값과 z의 해밍 웨이트(32bit 기준)를 적은 표이다. 표1에서 z0 값이 0이 아니라면 b값에 따른 해밍 웨이트 값의 차이가 큼을 알 수 있다. SamplerZ는 ffSampling이 한 번 실행될 때 2n번 만큼 실행되므로 n=512를 기준으로 각 z0 당 평균 1024/19 = 53.89번 정도의 파형이 나옴을 알 수 있으므로 4.2절의 공격을 통해 얻은 z0 값을 이용하여 같은 z0 끼리 그룹으로 묶으면 b값에 따라 파형이 두 개의 소그룹으로 나뉘게 되고 이후에는 해밍웨이트를 이용하여 b값을 쉽게 구할 수 있게 된다.
[표 1] z0와 b에 따른 z값과 해밍 웨이트
그림 3은 알고리즘 8을 z0 =5인 파형을 모아 나타낸 파형이며 굵은 선을 기점으로 위쪽을 0, 아래쪽을 1로 잡으면 실제 값과 동일한 b배열을 얻을 수 있다.
[그림 3] SamplerZ 3.2, 3.3줄 부분 파형 (z0 = 5)
Ⅴ. FALCON의 전력 분석 공격의 활용 방안
본 장에서는 4장에서의 공격 결과를 통해 사용자의 비밀정보를 복원하는 방법을 서술한다.
5.1. 부동소수점 곱 연산을 통한 개인키 복원
4.1절에서의 공격 가정에 따르면 공격자는 sign의 입출력을 얻을 수 있으며 같은 키로 여러 번 서명할 수 있다. 공격자는 r,m 값을 이용하여 c값을 구할 수 있으므로 FFT(c)값을 알 수 있다. 이후, 부동소수점 곱 연산 공격이 성공한다면 FFT(F), FFT(f)값을 구할 수 있으므로 IEET를 통해 각각 F, f로 얻을 수 있다. 마지막으로 g = fh mod q와 \(G=f^{-1}(q+g F) \bmod \phi\)의 관계식으로부터 개인 키의 나머지 부분을 구해 개인키 sk를 복원할 수 있다. 실제로는 F와 f 중 하나의 값만 얻을 수 있어도 keygen 내부의 알고리즘을 사용하면 개인키 전부를 복원할 수 있다.
5.2. sign 역추적
sign의 출력은 솔트 값인 r과 서명 값인 s이다. verify에서는 r과 m으로 HashToPoint를 계산하여 c를 얻은 후, 서명 값을 Decompress해서 s2를 복원할 수 있다. 이후, \(s_{1}=c-s_{2} h \bmod q\)를 이용해서 s1을 복원하며 \(s^{\prime}=F F T\left(s_{1}, s_{2}\right)\)를 이용해서 s′을 복원한다. 하지만 \(t, z, \hat{B}\)값은 이 과정만으론 복원할 수 없다.
4.2, 4.3절에서 수행한 공격을 이용하면 SamplerZ 의 결괏값과 입력값 \(\mu\)의 차이의 정수 부분을 알 수 있다. 이를 sign의 4.2줄까지 확장 가능하며 솔트 값을 일정 값으로 유지하고 sign을 여러 번 수행한다 가정하자. sign의 4.2줄의 s′, t-z 값을 두 번 수행하여 얻은 후 그 차이인 \(\Delta_{s}, \Delta_{z}\)를 이용하여 \(\Delta_{s}--\Delta_{z} \hat{B}\)를 나타낸다. 이를 이용하여 \(\left(\begin{array}{c} \Delta_{s}^{1} \\ \Delta_{s}^{2} \\ \vdots \end{array} \mid=-\left(\begin{array}{c} \Delta_{z}^{1} \\ \Delta_{z}^{2} \\ \vdots \end{array} \mid \hat{B}\right.\right.\)를 만든 후,\(-\left(\begin{array}{c} \Delta_{z}^{1} \\ \Delta_{z}^{2} \\ \vdots \\ \left.\Delta_{z}^{n}\right) \end{array}\right.\) 의 역행렬을 구한다면 \(\hat{B}\)를 복원할 수 있다.
5.3. FALCON 트리 T 복원
2020년 Fouque 등은 FALCON 알고리즘에서 시간 분석 공격을 이용하여 FALCON 트리 T의 각 리프의 값을 알아낸 후, 이를 이용하여 FALCON 트리 T 전체를 복원하여 공격하는 방법을 제시하였다[14]. 비록, 시간 분석 공격을 이용하여 SamplerZ를 공격하는 과정에서 σ′의 근삿값만을 복원 가능하므로 키 복원을 할 수 없었지만, 4.2, 4.3절에서 수행한 공격을 이용하여 SamplerZ의 결괏값과 입력 μ의 차이의 정수 부분과 연계하여 사용하는 방법이나 SamplerZ의 두 번째 줄인 \(c c s \leftarrow \sigma_{\min } / \sigma^{\prime}\)과정에서 σ′를 전력 분석을 통해 복원한다면, FALCON 트리 T를 복원 후 개인키 전체를 복원할 수 있을 것이다.
Ⅵ. 결론
본 논문에서는 NIST 양자 내성 암호 공모전 Round 3에 진출한 전자서명 알고리즘 FALCON의 전력 분석 공격 세 가지를 제시하였으며 후에 공격을 통해 사용자의 비밀정보를 복원하는 방안에 관하여 논하였다. NIST 공모전의 최종 공개키 암호 및 전자서명 알고리즘은 미연방에서 표준으로 사용할 뿐만 아니라 국제적으로도 많이 사용할 것이 예상되므로 부채널 안전성 검증이 동행하여야 할 것이다.
참고문헌
- Kerry, Cameron F., and Patrick D. Gallagher. "Digital signature standard (DSS)." FIPS PUB (2013): 186-4.
- Shor, Peter W. "Algorithms for quantum computation: discrete logarithms and factoring." Proceedings 35th annual symposium on foundations of computer science. Ieee, 1994.
- Fouque, Pierre-Alain, et al. "Falcon: Fast-Fourier Lattice-based Compact Signatures over NTRU." 2020
- Alagic, Gorjan, et al. "Status report on the second round of the NIST post-quantum cryptography standardization process." US Department of Commerce, NIST (2020).
- Cooley, James W., and John W. Tukey. "An algorithm for the machine calculation of complex Fourier series." Mathematics of computation 19.90 (1965): 297-301. https://doi.org/10.1090/S0025-5718-1965-0178586-1
- Markstein, Peter. "The new IEEE-754 standard for floating point arithmetic." Dagstuhl Seminar Proceedings. Schloss Dagstuhl-Leibniz-Zentrum für Informatik, 2008.
- Gentry, Craig, Chris Peikert, and Vinod Vaikuntanathan. "Trapdoors for hard lattices and new cryptographic constructions." Proceedings of the fortieth annual ACM symposium on Theory of computing. 2008.
- Kocher, Paul C. "Timing attacks on implementations of Diffie-Hellman, RSA, DSS, and other systems." Annual International Cryptology Conference. Springer, Berlin, Heidelberg, 1996.
- Kocher, Paul, Joshua Jaffe, and Benjamin Jun. "Differential power analysis." Annual international cryptology conference. Springer, Berlin, Heidelberg, 1999.
- Quisquater, Jean-Jacques, and David Samyde. "Electromagnetic analysis (ema): Measures and counter-measures for smart cards." International Conference on Research in Smart Cards. Springer, Berlin, Heidelberg, 2001.
- Biham, Eli, and Adi Shamir. "Differential fault analysis of secret key cryptosystems." Advances in Cryptology-CRYPTO'97, pp. 513-525, 1997.
- Brier, Eric, Christophe Clavier, and Francis Olivier. "Correlation power analysis with a leakage model." International workshop on cryptographic hardware and embedded systems. Springer, Berlin, Heidelberg, 2004.
- Batina, Lejla, et al. "CSI neural network: Using side-channels to recover your artificial neural net- work information." arXiv preprint arXiv:1810.09076 (2018).
- Fouque, Pierre-Alain, et al. "Key Recovery from Gram-Schmidt Norm Leakage in Hash-and-Sign Signatures over NTRU Lattices." Annual International Conference on the Theory and Applications of Cryptographic Techniques. Springer, Cham, 2020.