
양자 컴퓨팅의 발전으로, 암호화 커뮤니티는 양자 공격을 방어할 수 있을 것으로 믿어지는 알고리즘들을 개발하고 있으며, 이를 양자 이후 암호화 (PQC)라고 합니다. 이 중에서도, 격자 기반 암호 시스템은 강력한 보안 기반과 효율적인 성능으로 두드러집니다.
그러나, 가장 정교한 수학적 난제라 할지라도, 구현에서 부채널 정보를 누출하면 취약해집니다. 부채널 분석과 공격(SCA)은 수학적 이론을 우회하여 전력 소비, 전자기 누출, 타이밍 변화와 같은 물리적 현상을 이용하여 비밀 키를 추출하는 구현 공격의 일종입니다.
이 블로그 글은 격자 기반 양자 이후 체계를 위협하는 부채널 공격에 대한 심층 분석을 제공합니다. 우리는 기초적인 SCA 개념, PQC의 노출 방법, 최근 연구 하이라이트, 그리고 실용적인 예제를 다루며 초급 개념과 고급 실무자의 전문 지식을 이어줍니다.
부채널 공격은 장치의 계산 중 물리적 매개변수를 측정하여 암호화 작업에 대한 정보를 얻는 보안 공격의 한 범주입니다.
예제: 암호화 장치가 특정 비밀 비트가 '0'일 때보다 '1'일 때 더 적은 시간을 소비한다면, 공격자가 알려진 입력에서 계산 시간을 반복적으로 측정하여 비밀을 재구성할 수 있습니다.
양자 컴퓨터가 실제화되면, 쇼어 알고리즘과 같은 알고리즘을 통해 전통적인 공개 키 체계(예: RSA, ECC)를 깨뜨릴 수 있습니다. 양자 이후 암호화는 양자 공격으로부터 면역될 수 있는 암호화/서명 체계를 설계하려는 노력입니다.
격자는 n차원 공간 내에서 규칙적인 패턴을 가진 격자점들의 집합입니다. 암호 시스템은 어려운 격자 문제들을 사용합니다:
NIST PQC 프로젝트는 격자 기반 체계를 그 효율성과 확장성 때문에 선택합니다.
격자 기반 체계의 수학적 강점에도 불구하고, 이는 물리적 하드웨어에 구현되며, 부채널 공격에 노출됩니다. 전통적인 체계와 달리, 격자 암호화는 다항식 곱셈, 이산 가우시안 샘플링, 모듈러 산술 등의 연산을 사용하며, 올바르게 구현되지 않으면 정보가 유출될 수 있습니다.
Kyber-키 캡슐화 메커니즘은 다항식 산술과 모듈러 축소를 사용합니다. 연구 (ACM, 2022)는 다음을 보여주었습니다:
Dilithium 서명에서, 리젝션 샘플링 누출은 샘플러의 결정 논리가 비밀 데이터에 의존하고 비상수 시간이 아닐 경우 관찰될 수 있습니다.
전통적인 부채널 분석에는 상당한 전문 지식이 필요합니다. 머신 러닝(ML)을 사용하면 공격자가 특징 추출 및 분류 과정을 자동화하여 더 복잡하거나 잡음이 많은 구현을 잠재적으로 파악할 수 있습니다.
다음과 같은 PQC KEM의 샘플링 단계 동안의 전력 트레이스 데이터셋이 있다고 가정합니다:
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
# 가정: `traces`는 NxT 배열 (N=샘플, T=시간 포인트)
# 가정: `labels`는 비밀 비트(0 또는 1)의 N-배열
traces, labels = np.load('power_traces.npy'), np.load('labels.npy')
X_train, X_test, y_train, y_test = train_test_split(traces, labels, test_size=0.2)
clf = RandomForestClassifier(n_estimators=100)
clf.fit(X_train, y_train)
print("Test accuracy:", clf.score(X_test, y_test))
이 접근법은 다항식 또는 LWE 비밀 값의 비밀 계수 비트(예: 이진 비밀 벡터 세그먼트)를 드러낼 수 있습니다.
부채널 분석을 직접 다루어 보면 실제 위험을 보여줍니다. 여기서는 일반적인 SCA 도구체인과 코드를 살펴보겠습니다.
# ChipWhisperer 소프트웨어 도구킷 설치
pip install chipwhisperer
JavaScript script를 사용하여 Kyber 복호화를 실행하는 마이크로컨트롤러로부터 트레이스를 수집:
import chipwhisperer as cw
scope = cw.scope()
target = cw.target(scope, cw.targets.SimpleSerial)
traces = []
for i in range(100):
scope.arm()
target.simpleserial_write('d', b'\x00' * 32) # 더미 암호문 전송
ret = scope.capture()
if ret:
traces.append(scope.get_last_trace())
나중에 ML 분석을 위해 디스크에 저장하십시오.
원시 추적 데이터를 내보낸다고 가정합니다.
Bash: 트레이스에서 평균 전류 소모 추출
grep -oP 'Trace: \K[0-9 .]+' traces.log | awk '{total += $1; count += 1} END {print total/count}'
Python: CSV 추적을 파싱하여 플로팅/분석
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('traces.csv')
plt.plot(df['time'], df['power'])
plt.title('Power Trace - Lattice-Based PQC Decrypt')
plt.xlabel('Time (ns)')
plt.ylabel('Power (mA)')
plt.show()
실제에서는 공격자가 수천 개의 트레이스를 수집하고 통계적 도구나 ML을 사용하여 키 비트를 추출할 수 있습니다.
CPA 예제(Python):
import numpy as np
from scipy.stats import pearsonr
# traces: NxT 배열; hypotheses: 가능한 키 추측, input_data: 평문/암호문
def cpa(traces, input_data, key_guesses):
max_corr = -1
best_guess = None
for k in key_guesses:
hyp = hamming_weight(pqc_operation(input_data, k)) # 추측을 위한 모델 전력
corrs = [pearsonr(traces[:, t], hyp)[0] for t in range(traces.shape[1])]
if max(abs(corrs)) > max_corr:
max_corr = max(abs(corrs))
best_guess = k
return best_guess, max_corr
위험이 입증된 만큼, 구현자들은 격자 기반 PQC를 부채널 공격으로부터 어떻게 보호할 수 있을까요?
Kyber의 경우 AVX2 기반 상수 시간 다항식 산술 루틴을 선호하십시오 (공식 [P
QClean 저장소](https://github.com/PQClean/PQClean) 참조). 무작위 샘플링의 경우, 순진한 테이블 기반 샘플러가 아닌 강화 상수 시간 샘플러를 사용하십시오.
PQC가 널리 채택됨에 따라:
격자 기반 양자 이후 암호화는 양자 적대자로부터 이론적 안전을 약속하지만, 부채널 분석은 심각한 실질적 위험을 노출시킵니다. 구현 특정 물리적 누출—전력, EM, 타이밍—은 공격자가 신중한 분석을 통해 비밀을 복구할 수 있게 합니다. 새로운 머신 러닝 방법은 이러한 공격을 자동화하고 개선합니다. 강력하고 부채널 안전한 구현은 주의, 상수 시간 코드, 하드웨어/펌웨어 설계 및 철저한 테스트를 요구합니다.
양자 이후 체계가 스마트카드, 모바일 칩, 클라우드에서 배포되면서, 부채널 탄력성은 핵심 알고리즘의 암호학적 강력함만큼이나 중요해야 합니다.
Side-channel Analysis of Lattice-based Post-quantum Primitives
https://dl.acm.org/doi/10.1145/3569420
The Risk of Side-Channel Attacks on Post-Quantum Cryptography
https://www.ledger.com/blog-risk-side-channel-attacks-post-quantum-cryptography
Machine Learning and Side-Channel Attacks on Post-Quantum Cryptography
https://eprint.iacr.org/2025/1754
NIST PQC Project
https://csrc.nist.gov/Projects/post-quantum-cryptography
PQClean: Clean and side-channel secure reference implementations
https://github.com/PQClean/PQClean
ChipWhisperer: Open-source SCA/FI tools
https://chipwhisperer.io/
이 콘텐츠가 유용하다고 생각하셨다면, 저희의 포괄적인 47주 엘리트 교육 프로그램으로 무엇을 달성할 수 있을지 상상해 보세요. Unit 8200 기술로 경력을 변화시킨 1,200명 이상의 학생들과 함께하세요.