정보를 담은 전력,
그 흔적을 흐리게.
하이딩(Hiding)을 파형과 계산으로 이해하기
기기가 암호화할 때 쓰는 전력은 계산 중인 값에 따라 조금씩 달라질 수 있습니다. 한 번의 전력 기록을 trace(파형)라고 합니다.
상관 전력 분석(CPA)은 키 후보마다 예상한 전력 변화와 여러 trace를 비교합니다. 두 값이 함께 변하는 정도인 상관계수가 크면, 그 후보가 누설을 잘 설명한다는 뜻입니다. 정답 확률을 뜻하지는 않습니다.
하이딩과 마스킹은 다릅니다
- 하이딩
- 신호를 구별하거나 같은 시점에 맞추기 어렵게 합니다. 여기서는 잡음을 더하고, trace마다 시간을 옮깁니다.
- 마스킹
- 민감한 중간값을 난수와 결합한 여러 값(share)으로 나눕니다. 이 실험에는 적용하지 않습니다.
하이딩은 분석을 어렵게 만드는 접근입니다. 더 많은 측정이나 정렬·전처리로 분석 성능이 회복될 수 있으며, 하이딩만으로 공격이 완전히 차단되지는 않습니다.
하이딩 시뮬레이터
같은 데이터에 대응을 적용하고, CPA를 다시 계산합니다.
실제 장치의 측정값이 아닙니다. 입력·결과는 서버로 전송하거나 저장하지 않습니다.
원본과 대응 적용 파형
첫 번째 trace · 같은 시간축과 전력축
전체 160개 샘플을 관측합니다. 양쪽 32개 샘플의 여유 구간과 0 패딩을 사용하며 끝의 신호를 앞으로 돌리지 않습니다.
256개 키 후보, 어느 값이 드러날까요?
후보 점수 = 전체 관측 구간에서의 최대 |상관계수|
- 최고 후보
- — 계산 대기
- 실제 합성 키
- — 선택한 바이트
- 정답 키 순위
- — 256개 후보 중
- 최고 후보 max |r|
- — 정답 키 |r| —
계산 후 후보별 값을 확인할 수 있습니다.
시간에 따른 상관계수
부호를 포함한 Pearson r · 두 후보가 같으면 선이 겹칩니다.
조건별 CPA 결과
선택 여부와 관계없이 네 조건을 계산합니다. 잡음 크기·이동 범위는 마지막으로 적용한 설정을 사용합니다.
| 조건 | 최고 후보 | 정답 순위 | 최고 max |r| | 정답 max |r| |
|---|---|---|---|---|
| 계산 대기 | ||||
동일한 평문·기본 파형을 공유합니다. 잡음 및 이동 난수도 별도 seed 스트림으로 고정하여 결합 조건에 재사용합니다. 대응의 효과가 항상 크게 나타나거나 순위가 항상 나빠지는 것은 아닙니다.
Trace를 더 모으면 어떻게 달라질까요?
같은 데이터의 앞 N개로 반복 계산합니다. 정답 키 순위는 1위가 가장 좋습니다.
정답 키 순위 1–256 · 위쪽이 1위
정답 키 최대 절대 상관계수 0–1
Trace 수별 수치 전체 보기
| 조건 | Traces | 정답 순위 | 정답 max |r| | 최고 max |r| |
|---|
seed 1개의 단일 실험입니다. 이 결과는 ‘공격 성공률’이 아닙니다. 동점은 같은 순위로 표시하며 유일한 정답 복구와 구분합니다.
상관관계가 약해져도,
정보가 사라진 것은 아닙니다.
잡음은 값의 구분을 어렵게 합니다
민감한 값과 무관한 잡음은 측정값의 분산을 키웁니다. 같은 중간값도 여러 전력값으로 관측되어 예측과 측정의 선형 관계가 약해질 수 있습니다. 독립적인 잡음은 더 많은 trace를 모으면 영향이 줄어들 수 있습니다.
시간 이동은 비교 시점을 흐트러뜨립니다
CPA는 보통 여러 trace의 같은 샘플 위치를 비교합니다. 연산 위치가 매번 달라지면 한 열에 서로 다른 연산 시점이 섞입니다. 정렬·필터링·구간 적분 등의 전처리가 도움이 될 수 있지만, 여기서는 정렬을 보정하지 않은 CPA를 보여줍니다.
이 실험으로 말할 수 없는 것
소프트웨어로 합성 파형을 변형한 교육용 실험입니다. 실제 하드웨어 하이딩 구현, 실제 장치의 공격 난이도 측정, 보안성 증명이 아닙니다. Hamming Weight 하나만으로 실제 전력 누설을 모두 설명할 수도 없습니다.
참고 코드의 무작위 지연·연산 순서 변경과 이 시뮬레이터의 파형 이동은 동일한 구현이 아닙니다. 하이딩 학습 코드 ↗
확장 아이디어 · 셔플링
셔플링은 바이트별 연산 순서를 바꾸는 방식입니다. 다음 확장에서는 실제 연산 일정·더미 연산·바이트별 누설 위치를 명시한 모델을 먼저 만들고 비교할 수 있습니다. 현재 기본 실험에는 포함하지 않았습니다.
설정하고, 비교하고, 기록하기
- 01
조건을 선택합니다
잡음과 시간 이동을 각각 켜거나 함께 켭니다. 무대응은 두 선택을 해제한 상태입니다.
- 02
설정을 적용합니다
변수를 바꾼 뒤 다시 계산을 누릅니다. 완료 전까지 이전 결과는 이전 설정으로 표시됩니다.
- 03
파형과 순위를 봅니다
파형은 첫 trace입니다. CPA는 전체 trace를 사용합니다. 낮은 상관계수도 정답 1위를 만들 수 있습니다.
- 04
결과를 내려받습니다
JSON에는 설정·seed·256개 후보 곡선을, CSV에는 후보 점수·조건 및 trace 수별 수치를 담습니다.
변수와 누설 모델 자세히 보기
- 잡음 크기 σ
- 추가하는 독립 정규 잡음의 표준편차입니다. 기본 측정 잡음 σ=0.65는 무대응에도 포함됩니다. 전력값은 임의 단위이며 HW 1당 중심 진폭이 1 증가합니다.
- 시간 이동 ±범위
- trace마다 [−범위, +범위]의 정수 샘플을 균등하게 뽑습니다. 관측 범위 밖은 0으로 채우며 중심 누설은 여유 구간 안에 유지합니다.
- Trace 수
- 분석에 사용하는 서로 다른 평문과 파형의 쌍 수입니다. 개수를 바꿔도 같은 seed의 앞부분 데이터는 같습니다.
- 대상 바이트
- 16바이트 중 하나의 첫 S-box 중간값을 모델링합니다. 전체 AES 연산이나 16바이트 동시 복구를 시뮬레이션하지 않습니다.
- Seed
- 재현 가능한 의사난수의 시작값입니다. 평문·기본 잡음·추가 잡음·시간 이동은 별도 스트림을 사용합니다. 암호학적으로 안전한 난수 생성기는 아닙니다.
- Hamming Weight
- 중간값의 이진 표현에서 1의 개수입니다. 예를 들어 00101101의 HW는 4입니다. HW(S-box[P ⊕ K])에 비례하는 폭 2.2의 가우스 펄스를 샘플 80에 놓습니다.
- 그래프와 점수
- 막대는 각 후보의 max |r|, 곡선은 시간별 부호 있는 r입니다. 순위는 1이 가장 좋고 동점 허용 오차는 10⁻¹²입니다. 분산이 0인 상관계수는 0으로 처리하며 정보 없음으로 구분합니다.
개인 파일 업로드, 분석 기록 저장, 추적 스크립트는 없습니다. 새로고침하면 결과가 초기화됩니다. 다운로드는 사용자의 기기에만 저장됩니다.