0Pricing
Cryptology Academy · 강의

대응책: 마스킹, 블라인딩 및 상수 시간 코드

마스킹, 점 블라인딩, 상수 시간 비교를 구현합니다.

대응책: 마스킹, 블라인딩 및 상수 시간 코드은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

대응책의 세 가지 계열

부채널 대응책은 세 가지 계열로 나뉩니다. 마스킹(중간 값을 무작위화), 블라인딩(입력과 출력을 무작위화), 상수 시간 코드(데이터에 의존하는 타이밍을 제거)입니다.

불리언 마스킹

각 중간 값을 새로운 무작위 마스크 r과 XOR합니다. 마스킹된 값 x⊕r을 처리하고 마지막에 마스크를 제거합니다. 이제 전력 추적은 x가 아니라 x⊕r에 의존합니다.

곱셈을 위한 산술 마스킹

곱셈 연산에는 곱셈 마스크를 사용합니다. 즉, x를 x·r mod p로 대체합니다. 마스킹 방식은 암호의 각 대수 연산과 호환되어야 합니다.

RSA 블라인딩

암호문 c를 복호화하기 전에 무작위 r을 선택하고 c' = c·r^e mod n을 계산합니다. c'를 복호화하여 m·r mod n을 얻은 다음 r을 나누어 제거합니다. 실제 거듭제곱 연산에는 진짜 c가 입력되지 않습니다.

ECC 점 블라인딩

사영 좌표를 무작위화합니다. 아핀 점 (x,y) 대신 무작위 λ에 대해 (λx : λy : λ)를 사용합니다. 스칼라 곱셈은 무작위화된 좌표에서 수행되므로 매번 전력 추적이 달라집니다.

상수 시간 프로그래밍 규칙

1. 비밀에 의존하는 분기를 사용하지 않습니다. 2. 비밀에 의존하는 메모리 인덱스를 사용하지 않습니다. 3. 조기 종료를 사용하지 않습니다. 4. 사용 가능한 경우 플랫폼 고유의 상수 시간 연산을 사용합니다(예: crypto_verify_32).

Python에서 상수 시간 비교

타이밍에 민감한 경로에서 원시 바이트에 ==나 hmac.compare_digest를 절대 사용하지 마십시오. 다음을 사용하십시오.

import hmac

def constant_time_compare(a: bytes, b: bytes) -> bool:
    """Uses HMAC double-HMAC trick for constant-time equality."""
    # hmac.compare_digest is constant-time in CPython
    return hmac.compare_digest(a, b)

# Example
secret = b"expected_mac_value"
received = b"attacker_provided__"
print(constant_time_compare(secret, received))  # False, but no timing leak

컴파일러와 아키텍처의 함정

컴파일러가 상수 시간 코드를 최적화하여 제거할 수 있습니다. 휘발성 저장, 메모리 장벽 또는 어셈블리 내장 함수를 사용하십시오. C 컴파일러에는 -fno-delete-null-pointer-checks가 있지만, 모든 환경에 적용되는 상수 시간 보장은 없습니다.

셔플링과 더미 연산

S-box 조회 순서를 무작위로 섞거나, 결과에는 영향을 주지 않으면서 전력을 소비하는 더미 연산을 삽입합니다. 이렇게 하면 DPA에 필요한 난이도가 높아지지만 누설이 제거되지는 않습니다.

하드웨어 대응책

전용 암호 가속기(ARM TrustZone, STM32 하드웨어 AES)는 실리콘에 마스킹을 적용합니다. ASIC 구현은 물리적 탐침을 감지하기 위해 금속 차폐와 능동 메시를 추가합니다.

지식 확인

거듭제곱 연산 전에 암호문을 무작위화하여 RSA 타이밍 공격을 막는 대응책은 무엇입니까?

수업 요약

마스킹은 중간 값을 무작위화하고, 블라인딩은 RSA/ECC 입력을 무작위화하며, 상수 시간 코드는 타이밍 분기를 제거합니다. 심층 방어를 위해 세 가지를 모두 결합합니다. 하드웨어 가속기는 가장 강력한 보장을 위해 이러한 기법을 실리콘에 적용합니다.

자주 묻는 질문

“대응책: 마스킹, 블라인딩 및 상수 시간 코드” 강의는 무료인가요?

네 — “대응책: 마스킹, 블라인딩 및 상수 시간 코드” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“대응책: 마스킹, 블라인딩 및 상수 시간 코드”에서 뭘 배우나요?

마스킹, 점 블라인딩, 상수 시간 비교를 구현합니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“대응책: 마스킹, 블라인딩 및 상수 시간 코드” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 타이밍 공격: 실행 시간에서 키 추출하기
  2. 전력 분석: SPA 및 DPA
  3. 전자기 및 음향 부채널
  4. 대응책: 마스킹, 블라인딩 및 상수 시간 코드
← Cryptology Academy(으)로 돌아가기