구글 안티그래비티 완전 분석 — 모델·요금제·CLI 총정리

🚀 구글 안티그래비티(Antigravity) 완전 분석 구글이 2025년 11월 Gemini 3와 함께 공개한 에이전트 퍼스트(agent-first) IDE 안티그래비티는 Claude·GPT·Gemini를 한 도구에서 골라 쓰는 멀티모델 코딩 환경이다. 이 글에서는 ① 지원 모델과 요금제별 사용량의 실체, ② 실사용자 평가, ③ 구글의 방향성, ④ Claude Code와의 비교·연계, ⑤ CLI( agy )로 직접 쓰는 법까지 다섯 갈래를 차례로 정리한다. 자료 간 충돌이 있는 지점은 한쪽으로 단정하지 않고 양쪽을 모두 살려 표기했다. 📅 기준 시점: 2026년 6월 · 프리뷰 단계 정보로 수치는 변동 가능 1. 안티그래비티란 무엇인가 — 기초 정리 안티그래비티는 2025년 7월 구글이 24억 달러 규모 라이선스 계약 으로 영입한 전 Windsurf 팀이 설계를 주도했다. VSCode를 포크한 위에 자율 에이전트 오케스트레이션 계층을 얹은 구조다. 2026년 5월 Google I/O에서 발표된 안티그래비티 2.0 은 데스크탑 앱과 함께 공식 CLI agy 를 처음 공개하며 기존 Gemini CLI의 공식 후계자 자리를 확정했다. 핵심 정체성은 단순 코드 자동완성이 아니라 병렬 에이전트 오케스트레이션 이다. 여러 에이전트가 동시에 — 하나는 API, 하나는 테스트, 또 하나는 프론트엔드 — 작업을 나눠 진행하고, 각 에이전트는 계획·테스트 결과·스크린샷·영상을 담은 Artifact 를 남긴다. "사람이 한 줄씩 승인"하는 방식이 아니라 "에이전트들이 일을 마치고 사람이 사후 검수"하는 모델이다. flowchart TD A([사용자 작업 지시]) --> B[에이전트 A API 구현] A --> C[에이전트 B 테스트 작성] A --> D[에이전트 C UI 생성] B --> E[Artifact 계획·결과·영상] C --> E D --> E...

SoC 암호화 엔진 설계, SHA-2 vs SHA-3 완벽 해부

🔐 SoC 암호화 엔진 설계를 위한 해시 알고리즘 심층 분석

SHA-2 · SHA-3 · SHAKE · HMAC — 하드웨어 엔지니어를 위한 PPA 최적화 가이드

💡 핵심 요약 — 현대 SoC(System-on-Chip)의 Crypto Engine은 단순한 '옵션'이 아닌 필수 IP 블록입니다. SHA-2는 가산기 기반의 Merkle-Damgård 구조로 레거시 호환성을 제공하고, SHA-3는 가산기가 없는 Sponge 구조로 면적·전력 효율을 극대화합니다. HMAC은 이 위에 비밀키를 결합해 인증 기능을 더하는 핵심 프리미티브입니다. 본 보고서는 RTL 설계자가 알고리즘별 데이터패스를 공유·최적화할 때 반드시 고려해야 할 구조적 차이를 풀어냅니다.

1️⃣ 왜 SoC에 해시 엔진이 필요한가

디지털 서명, 보안 부팅(Secure Boot), OTA 펌웨어 검증, DRM, 블록체인 가속기 등 현대 반도체가 수행하는 거의 모든 보안 기능은 해시 함수를 밑바탕으로 동작합니다. 해시는 임의 길이의 입력 데이터를 고정 길이의 '디지털 지문'으로 변환하는 단방향 함수로, 동일한 입력에는 반드시 동일한 출력을, 다른 입력에는 사실상 항상 다른 출력을 보장합니다.

소프트웨어만으로도 해시 연산이 가능하지만, IoT 센서 노드의 밀리와트급 전력 예산이나 5G/데이터센터의 100 Gbps 처리량 요구사항을 만족시키려면 전용 하드웨어 가속기가 필수입니다. 본 보고서는 SoC 설계 엔지니어 관점에서 PPA(Power, Performance, Area) 최적화를 위한 의사결정에 필요한 구조적 통찰을 제공하는 것을 목표로 합니다.

해시 함수의 3대 요구 속성
프리이미지 저항성(Pre-image resistance) — 해시값으로부터 원본 추론 불가
제2프리이미지 저항성(Second pre-image resistance) — 같은 해시를 만드는 다른 입력 발견 불가
충돌 저항성(Collision resistance) — 같은 해시를 내는 임의의 입력 쌍 발견 불가

2️⃣ SHA-2 — 산업 표준의 근간

📜 역사적 배경

SHA-2 제품군은 2001년 미국 국가안보국(NSA)이 설계하고 NIST가 FIPS PUB 180-2로 표준화했습니다. 선배 격인 SHA-1은 2005년 이론적 충돌 공격이 발표되고 2017년 Google의 SHAttered 프로젝트로 실제 충돌이 실증되면서 폐기 수순을 밟았으나, SHA-2는 20년이 지난 지금까지도 어떠한 실용적 공격에도 노출되지 않은 산업계 최대의 표준 해시입니다. TLS 1.3, IPsec, Bitcoin, Secure Boot 체인 등이 모두 SHA-256을 기반으로 동작합니다.

⚙️ Merkle-Damgård 구조

SHA-2는 Merkle-Damgård(MD) 구성을 채택합니다. 입력 메시지를 고정 크기의 블록으로 나누고, 각 블록을 압축 함수(Compression Function)에 입력하면서 이전 블록의 출력(체이닝 변수, Chaining Variable)을 다음 블록의 초기값으로 연쇄 사용하는 방식입니다. 전체 연산은 아래 두 단계로 구성됩니다.

① 메시지 스케줄링 — 512비트(SHA-256) 또는 1024비트(SHA-512) 블록을 32/64비트 워드로 쪼개고, 비트 회전과 XOR로 64/80개의 확장 워드($W_0 \cdots W_{79}$)를 생성합니다.

② 압축 함수 — 8개의 작업 레지스터($a, b, c, d, e, f, g, h$)에 대해 64/80 라운드 동안 논리 연산·비트 회전·32/64비트 가산을 반복 적용합니다.

📊 SHA-2 제품군 스펙 비교

변종 워드 크기 블록 크기 라운드 출력 길이
SHA-224 32-bit 512-bit 64 224-bit
SHA-256 32-bit 512-bit 64 256-bit
SHA-384 64-bit 1024-bit 80 384-bit
SHA-512 64-bit 1024-bit 80 512-bit

🔧 하드웨어 설계 시 핵심 이슈

SHA-2의 병목은 단연 가산기의 Carry 전파 지연입니다. 32비트 혹은 64비트 가산이 한 라운드에 여러 번 등장하며, 이 가산기의 크리티컬 패스가 SoC 전체 타이밍 클로저에 영향을 줄 수 있습니다. 이를 완화하기 위한 대표 기법은 아래와 같습니다.

Carry-Save Adder(CSA) 트리 — 여러 개의 가산을 병렬화하여 크리티컬 패스를 1개의 최종 CPA(Carry-Propagate Adder)로 축소
서브 파이프라이닝(Sub-pipelining) — 한 라운드를 2~4 스테이지로 나눠 주파수 증가
언롤링(Unrolling) — 여러 라운드를 한 사이클에 처리해 레이턴시 감소 (면적 증가 트레이드오프)
메시지 스케줄 프리컴퓨테이션 — $W_t$ 값을 미리 생성해 압축 함수와 병렬 실행

3️⃣ SHA-3 — 패러다임 전환과 Sponge 구조

🏆 Keccak, NIST 경진대회의 승자

NIST는 SHA-2와 완전히 다른 구조의 백업 표준이 필요하다고 판단해 2007년 공개 경쟁을 공고했습니다. 64개 후보 알고리즘 중 5년간의 심사 끝에 2012년 Bertoni, Daemen, Peeters, Van Assche(STMicroelectronics/NXP)가 제안한 Keccak이 최종 선정되었고, 2015년 FIPS PUB 202로 공식 표준화되었습니다. Daemen은 AES의 공동 설계자이기도 한 거장입니다.

🧽 Sponge Construction의 혁신

Sponge(스폰지) 구조는 이름 그대로 '흡수 후 짜내는' 방식입니다. 1600비트(5×5×64 비트 행렬) 상태값을 유지하며 두 단계로 동작합니다.

🔹 흡수 단계(Absorbing) — 메시지를 $r$비트(Rate) 단위로 잘라 상태의 상위 $r$비트와 XOR한 뒤, Keccak-$f$[1600] 치환을 24라운드 수행

🔹 짜내기 단계(Squeezing) — 상태에서 $r$비트씩 출력을 뽑아내며, 필요하면 Keccak-$f$를 다시 호출해 원하는 길이만큼 생성

상태 1600비트는 Rate($r$)Capacity($c$)로 나뉘며($r + c = 1600$), Capacity가 곧 보안 강도의 2배를 결정합니다. SHA3-256의 경우 $c = 512$, $r = 1088$로 설정되어 256비트 보안 강도를 확보합니다.

🎨 Keccak-f[1600]의 5개 스텝

스텝 기능 주요 연산
θ (Theta) 열(Column) 단위 확산 XOR + 비트 회전
ρ (Rho) 레인(Lane) 단위 비트 회전 위치별 고정 Rotate
π (Pi) 비트 위치 치환 순수 배선(Wire)
χ (Chi) 비선형성 주입(유일한 비선형 스텝) AND, NOT, XOR
ι (Iota) 라운드 대칭 파괴 상수 XOR with RC

💎 하드웨어 관점 핵심 — 5개 스텝 전체에서 가산(Addition)이 단 한 번도 등장하지 않습니다. 전부 XOR, AND, NOT, 고정 비트 회전, 배선 재연결뿐입니다. 이것이 SHA-3가 FPGA·ASIC에서 SHA-2보다 면적 효율과 전력 효율이 우월한 근본 이유입니다.

🌊 SHAKE — 확장 가능 출력 함수(XOF)

SHAKE128 / SHAKE256은 SHA-3 표준에 함께 포함된 XOF(eXtendable Output Function)입니다. 고정 길이 출력만 가능한 SHA-2·SHA-3와 달리, 사용자가 원하는 임의 길이의 해시값을 추출할 수 있어 활용도가 매우 높습니다.

활용 사례
• 마스크 생성 함수(MGF) — RSA-OAEP, RSA-PSS 등 패딩 스킴
• 결정론적 난수 생성기(DRBG) — 시드로부터 임의 길이 PRNG 출력
• 양자 내성 암호(PQC) — Dilithium, Kyber 등 NIST PQC 표준에서 다용도 해시로 채택
• 키 유도 함수(KDF) — 짧은 비밀값에서 임의 길이 세션 키 파생

4️⃣ HMAC — 키 결합 메시지 인증

🔑 왜 HMAC이 필요한가

순수 해시 함수는 '메시지가 변조되었는가?'는 알려주지만 '누가 보낸 메시지인가?'는 알려주지 못합니다. 공격자가 메시지를 바꾸고 해시를 재계산하면 무결성 검증을 통과할 수 있기 때문입니다. HMAC(Keyed-Hash Message Authentication Code)은 비밀키 $K$를 해시 계산에 결합하여, 키를 모르는 공격자는 유효한 태그를 만들 수 없도록 합니다. 이로써 무결성인증을 동시에 제공합니다. TLS의 레코드 무결성, JWT의 서명, API 요청 서명 등 보안 통신의 거의 모든 곳에서 쓰입니다.

📐 HMAC 연산 정의 (RFC 2104)

HMAC(K, m) = H( (K ⊕ opad) || H( (K ⊕ ipad) || m ) )

• ipad = 0x36을 블록 크기만큼 반복한 상수
• opad = 0x5C을 블록 크기만큼 반복한 상수
• K가 블록보다 짧으면 0 패딩, 길면 $H(K)$로 축약
• 최종적으로 해시 함수를 두 번 중첩하여 호출

🏗️ SoC 구현 시 설계 포인트

해시 코어 재사용 — 별도 연산기 없이 SHA-2/3 엔진을 2회 호출하는 FSM 추가만으로 구현
inner/outer 초기값 캐싱 — 같은 키로 여러 메시지 인증 시 $H(K ⊕ ipad)$, $H(K ⊕ opad)$ 중간값 저장으로 성능 2배 향상
키 저장소 격리 — ARM TrustZone Secure World 또는 전용 Key Vault(예: 삼성 Knox Vault, Apple Secure Enclave)에 배치
사이드채널 방어 — DPA(Differential Power Analysis) 차단을 위해 마스킹·셔플링 로직 포함
특이 케이스 — SHA-3 기반 MAC은 구조상 HMAC 없이도 $\text{MAC} = H(K || m)$으로 안전 (KMAC 표준, NIST SP 800-185)

5️⃣ SHA-2 vs SHA-3 정면 비교

📋 구조 및 특성 비교표

항목 SHA-2 SHA-3
구조 Merkle-Damgård Sponge Construction
핵심 연산 가산(+), XOR, AND, OR, NOT, Rotate XOR, AND, NOT, Rotate, Permutation
내부 상태 256~512비트 1600비트
길이 연장 공격 취약 (HMAC으로 보완 필요) 구조적으로 안전
H/W 면적 효율 중간 (가산기 부담) 우수
S/W 성능 (CPU) 빠름 (SHA-NI 등 ISA 지원) 상대적 느림 (AVX-512로 개선 중)
가변 출력 지원 안 함 SHAKE로 지원
산업 채택도 매우 높음 (TLS, Bitcoin) 확산 중 (PQC, Ethereum)

📊 하드웨어 자원 효율 비교 (동일 공정, ~1 Gbps 목표)

🔵 SHA-256 면적
~22k GE
🟢 SHA3-256 면적
~14k GE
🔵 SHA-256 전력
1.0x
🟢 SHA3-256 전력
~0.67x

※ 수치는 ASIC 구현 논문(IEEE/IACR) 범위의 대표값으로, 공정·토폴로지·주파수 목표에 따라 편차 있음. GE = Gate Equivalent.

6️⃣ 최신 기술 트렌드

🧬 양자 내성 시대의 해시

Grover 알고리즘은 양자 컴퓨터로 해시 역상(pre-image)을 찾는 시간을 $O(2^n)$에서 $O(2^{n/2})$로 감소시킵니다. 즉 SHA-256의 양자 컴퓨터 실효 보안 강도는 128비트로 떨어집니다. 따라서 PQC 시대에는 최소 256비트 이상의 보안 강도, 즉 SHA-384/SHA-512/SHA3-384/SHA3-512 사용이 권장됩니다. NIST PQC 표준 알고리즘인 CRYSTALS-Dilithium, CRYSTALS-Kyber는 내부적으로 SHAKE128/256을 중추 해시로 채택했습니다.

⚡ 병렬 고속 해시: KangarooTwelve, ParallelHash

데이터센터·스토리지·블록체인처럼 수십 GB/s 해시 처리량이 필요한 영역에서는 Keccak 기반의 병렬 변종이 주목받습니다. KangarooTwelve(K12)는 Keccak 라운드를 24→12로 축소하고 메시지를 트리 구조로 병렬 처리해 SHA-3보다 4~6배 빠른 처리량을 제공하며, NIST SP 800-185의 ParallelHash128/256도 공식 표준입니다.

🎛️ Agile Crypto Engine 설계

실제 최신 SoC(Apple A-series, Qualcomm Snapdragon 8 Gen 4, Samsung Exynos 2500, NXP i.MX 9 등)는 SHA-2와 SHA-3를 모두 지원하는 Agile Crypto Engine을 탑재합니다. 두 알고리즘의 데이터패스가 근본적으로 다르므로 모든 로직을 공유할 수는 없지만, 다음 요소들은 공유 가능합니다.

✓ 공통 AXI/AHB 버스 인터페이스와 DMA 엔진
✓ 메시지 패딩 로직 (알고리즘별 상수만 다름)
✓ FIFO 및 메시지 스케줄 버퍼
✓ 인터럽트 컨트롤러, 레지스터 뱅크, 제어 FSM
✓ HMAC 래퍼 로직 (SHA-2 측에 한해)
✓ 사이드채널 대책(클럭 랜덤화, 파워 게이팅)

🛡️ 사이드채널·결함 주입 방어

보안 IP는 알고리즘이 수학적으로 안전해도 물리적 채널을 통해 키가 유출될 수 있습니다. 대표적 위협과 대응은 다음과 같습니다.

⚠️ DPA(Differential Power Analysis) — 마스킹(Boolean/Arithmetic Masking), 랜덤 지연 삽입으로 방어
⚠️ EM 공격 — 전원 노이즈 주입, 금속 shielding 레이어 추가
⚠️ 결함 주입(Fault Injection) — 중복 연산 후 결과 비교, 라운드 카운터 보호
⚠️ 타이밍 공격 — 상수시간(constant-time) 구현으로 키 비트 유출 차단

7️⃣ 설계 의사결정 가이드

🎯 시나리오별 권장사항

IoT 센서 노드 (저전력·소면적 최우선) — SHA3-256 단독 탑재. 가산기 제거로 면적 30~40% 절감

모바일 AP (TLS·Secure Boot 호환성 필수) — SHA-256/384 + SHA3-256 Agile 엔진. 기존 소프트웨어 스택 호환성 유지

자동차·항공 (ISO 21434, DO-326A) — SHA-384/512 + HMAC, 사이드채널·결함주입 대응 필수, 이중화 구현

데이터센터 AI 가속기 — SHA-512 + KangarooTwelve, 수십 Gbps 처리량 목표, 다중 인스턴스 병렬 배치

PQC 대응 신규 SoC (2026~) — SHAKE128/256 필수, Dilithium·Kyber 통합 지원, 기존 SHA-2는 유지

8️⃣ 결론 및 전망

SoC Crypto Engine에서 해시 알고리즘은 단일 선택이 아닌 조합 전략의 문제입니다. 산업계 범용성과 레거시 호환성을 위해 SHA-2는 필수이며, 전력 효율·구조적 안전성·가변 출력 지원 측면에서는 SHA-3/SHAKE 도입이 강력히 권장됩니다. 최신 트렌드를 종합하면 다음과 같은 방향성이 명확합니다.

🧠 엔지니어링 원칙

하이브리드 설계가 뉴노멀 — SHA-2와 SHA-3를 모두 탑재하되 공유 가능한 인프라는 최대한 재사용

256비트는 최저 기준선 — 양자 내성을 고려할 때 SHA-224/SHA3-224는 신규 설계에서 제외

HMAC 스케줄러가 성능을 결정 — 키 확장 중간값 캐싱, 내부/외부 해시 파이프라이닝이 핵심

사이드채널 대응은 선택이 아닌 필수 — 특히 자동차·금융·의료 분야 SoC는 CC EAL4+/5+ 인증 요구

PQC 준비가 이미 현재형 — 2030년대 상용화 대비 SHAKE 도입과 Dilithium·Kyber 가속기 통합 고려

HMAC 구현에서는 내부 해시 엔진의 반복 사용으로 인한 레이턴시 오버헤드가 전체 성능을 좌우합니다. 따라서 초기값 캐싱, 이중 패딩 병렬 처리, 파이프라인 깊이 조정 등을 포함한 정교한 스케줄러 설계가 엔진의 경쟁력을 결정합니다. 미래의 SoC는 단일 알고리즘을 빠르게 돌리는 것이 아니라, 다양한 해시·서명·암호화 프리미티브를 유연하게 조합할 수 있는 '암호화 플랫폼'으로 진화하고 있습니다. 설계 엔지니어는 PPA 최적화와 함께 '암호 민첩성(Crypto Agility)'이라는 새로운 설계 차원을 필수로 고려해야 합니다.

📚 References

NIST FIPS 180-4 — Secure Hash Standard (SHA-2 Family)
NIST FIPS 202 — SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions
NIST SP 800-185 — SHA-3 Derived Functions (cSHAKE, KMAC, TupleHash, ParallelHash)
RFC 2104 — HMAC: Keyed-Hashing for Message Authentication
Keccak Team — keccak.team (Bertoni, Daemen, Peeters, Van Assche 공식 사이트)
NIST PQC Standardization — CRYSTALS-Dilithium, CRYSTALS-Kyber 최종 표준 문서

본 보고서는 반도체·보안 엔지니어를 위한 기술 분석 자료로, 실제 설계 시에는 해당 공정·EDA 툴·보안 인증 요구사항에 따른 추가 검증이 필요합니다. 상업적 구현 시 관련 특허 및 수출 규제를 반드시 확인하시기 바랍니다.

📄 Raw Data
# SoC 암호화 엔진 설계를 위한 해시 알고리즘(SHA-2, SHA-3, HMAC) 심층 분석 보고서

## 1. 개요 및 연구 목적

현대 SoC(System-on-Chip) 설계에서 보안 엔진(Crypto Engine)은 데이터의 무결성 보장과 인증을 위한 필수 컴포넌트입니다. 특히 해시(Hash) 알고리즘은 임의의 길이를 가진 데이터를 고정된 길이의 '디지털 지문'으로 변환하는 핵심 기술입니다. 본 보고서는 SoC 설계를 담당하는 엔지니어가 하드웨어 레벨에서 각 알고리즘의 구조적 특성을 이해하고, 설계 최적화(PPA: Power, Performance, Area)를 위한 의사결정을 내릴 수 있도록 SHA-2, SHA-3, SHAKE, HMAC의 이론적 배경과 기술적 차이점을 심층 분석합니다.

---

## 2. SHA-2 (Secure Hash Algorithm 2)

### 2.1 역사 및 배경
SHA-2는 2001년 미국 국가안보국(NSA)에 의해 설계되었으며, NIST(미국 표준기술연구소)에 의해 FIPS PUB 180-2로 표준화되었습니다. 이전 버전인 SHA-1의 취약성이 드러남에 따라 이를 대체하기 위해 등장했으며, 현재 산업계에서 가장 널리 사용되는 표준 해시 알고리즘입니다.

### 2.2 기술적 원리: Merkle-Damgård 구조
SHA-2는 **Merkle-Damgård** 구성을 따릅니다. 입력 메시지를 일정한 블록 단위로 나누고, 이전 블록의 출력값을 다음 블록의 입력(연쇄 변수)으로 사용하는 방식입니다.

- **구조적 특징**: 메시지 스케줄링(Message Schedule)과 압축 함수(Compression Function)로 구성됩니다.
- **주요 연산**: 논리 연산(AND, OR, XOR, NOT), 비트 회전(Rotate), 그리고 **32비트(SHA-256) 또는 64비트(SHA-512) 가산(Addition)**이 주를 이룹니다.
- **버전별 차이**:
    - **SHA-224/256**: 32비트 워드 단위를 사용하며, 64라운드 연산을 수행합니다.
    - **SHA-384/512**: 64비트 워드 단위를 사용하며, 80라운드 연산을 수행합니다. 출력 길이는 초기값(IV)과 최종 절단(Truncation) 여부에 따라 결정됩니다.

### 2.3 하드웨어 설계 시 고려사항
SHA-2는 가산기(Adder)를 사용하므로 Carry 전파 지연(Carry Propagation Delay)이 성능의 병목이 될 수 있습니다. 이를 해결하기 위해 Carry-Save Adder(CSA) 등을 활용한 최적화가 필요합니다. 또한, 연산이 순차적(Sequential)인 특성이 강해 파이프라이닝을 통한 성능 향상에 한계가 존재합니다.

---

## 3. SHA-3 (Secure Hash Algorithm 3) 및 SHAKE

### 3.1 역사 및 배경
NIST는 SHA-2와 완전히 다른 구조를 가진 백업 알고리즘을 확보하기 위해 2007년부터 5년간 공개 경쟁을 진행했습니다. 그 결과 **Keccak** 알고리즘이 최종 선정되어 2015년 FIPS PUB 202로 표준화되었습니다. 이는 SHA-2의 구조적 결함(예: 길이 연장 공격)으로부터 자유로운 새로운 패러다임을 제시했습니다.

### 3.2 기술적 원리: Sponge Construction
SHA-3는 **스폰지(Sponge) 구조**를 채택하고 있습니다. 이는 데이터를 '흡수(Absorbing)'한 뒤 '짜내는(Squeezing)' 방식입니다.

- **상태(State)**: 1600비트(5x5x64 행렬)의 거대한 상태값을 유지합니다.
- **용량(Capacity)과 비율(Rate)**: 1600비트는 Rate($r$)와 Capacity($c$)로 나뉩니다. $r$은 한 번에 처리하는 데이터 양이며, $c$는 보안 강도를 결정하는 변수입니다.
- **주요 연산**: SHA-2와 달리 **가산(Addition)을 전혀 사용하지 않습니다.** 오직 XOR, AND, NOT 및 비트 치환(Permutation)만 사용합니다. 이는 하드웨어 구현 시 전력 소모와 면적 효율성 면에서 큰 장점을 가집니다.

### 3.3 SHAKE (Extendable Output Functions)
SHAKE128과 SHAKE256은 SHA-3의 파생형으로, **가변 길이 출력(XOF)**이 가능합니다. 사용자가 원하는 만큼의 해시값을 생성할 수 있어 마스킹 함수나 난수 생성기 등으로 활용도가 높습니다.

---

## 4. HMAC (Keyed-Hash Message Authentication Code)

### 4.1 개념 및 목적
해시 함수 자체에는 '키'가 없습니다. 따라서 메시지가 전송 중 변경되었는지는 알 수 있지만, 누가 보냈는지는 인증할 수 없습니다. HMAC은 비밀키(Secret Key)를 해시 연산에 결합하여 **메시지 인증(Authentication)**과 **무결성(Integrity)**을 동시에 제공합니다.

### 4.2 연산 방법
HMAC은 선택한 해시 함수($H$)를 두 번 중첩하여 사용합니다.
- $HMAC(K, m) = H((K \oplus opad) \ || \ H((K \oplus ipad) \ || \ m))$
- **ipad(Inner Pad)**: 0x36이 반복되는 상수
- **opad(Outer Pad)**: 0x5C가 반복되는 상수

### 4.3 SoC 설계 시 시사점
HMAC 엔진은 기본 해시 엔진을 재사용하도록 설계됩니다. 하드웨어적으로는 외부 패딩 연산과 내부 해시 연산을 제어하는 유한 상태 머신(FSM)이 추가되어야 하며, 키 관리 로직이 보안 영역(Secure World) 내에 존재해야 합니다.

---

## 5. 알고리즘 비교 및 트렌드 분석

| 구분 | SHA-2 | SHA-3 |
| :--- | :--- | :--- |
| **구조** | Merkle-Damgård | Sponge Construction |
| **주요 연산** | 가산(+), 논리연산, 시프트 | 논리연산(XOR, AND, NOT), 치환 |
| **보안성** | 길이 연장 공격에 취약(HMAC으로 보완) | 구조적으로 길이 연장 공격에 강함 |
| **H/W 효율** | 고주파수 설계 시 가산기 지연 고려 필요 | 가산기 없어 면적 및 전력 효율 우수 |
| **확장성** | 고정 출력 길이 | SHAKE를 통한 가변 출력 지원 |

### 최신 기술 트렌드
1. **양자 내성(Post-Quantum Cryptography)**: 양자 컴퓨터의 Grover 알고리즘에 대응하기 위해 해시 출력 길이를 늘리는 추세입니다(최소 256비트, 권장 512비트).
2. **병렬 처리(Parallelism)**: 데이터 센터급 SoC에서는 대용량 데이터 처리를 위해 KangarooTwelve와 같이 Keccak 기반이면서 병렬 처리가 가능한 알고리즘이 주목받고 있습니다.
3. **Agile Crypto Engine**: 하나의 하드웨어 IP에서 SHA-2와 SHA-3를 모두 지원하는 유연한(Agile) 설계가 요구됩니다. 특히 두 알고리즘의 데이터 경로(Datapath)가 다르므로 이를 효율적으로 공유하는 로직 최적화가 핵심입니다.

---

## 6. 결론

SoC에서 Crypto Engine을 설계할 때, 레거시 호환성과 산업계의 광범위한 채택을 고려한다면 **SHA-2**는 필수적입니다. 그러나 미래 지향적인 보안 규격 대응과 하드웨어의 전력 효율성을 극대화하기 위해서는 **SHA-3 및 SHAKE**의 도입이 강력히 권장됩니다. 특히 HMAC 구현 시에는 내부 해시 엔진의 반복 사용으로 인한 지연 시간을 최소화하기 위한 스케줄러 설계가 엔진의 성능을 좌우할 것입니다.
---

## References

- [NIST FIPS 180-4 (SHA-2 Standard)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf)
- [NIST FIPS 202 (SHA-3 Standard)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf)
- [RFC 2104 (HMAC)](https://datatracker.ietf.org/doc/html/rfc2104)

댓글

이 블로그의 인기 게시물

Vim 9.2 릴리즈 총정리: 더 빠르고 강력해진 텍스트 편집의 제왕

폐쇄망 SoC 설계자를 위한 가볍고 빠른 Vim 최적화 가이드

에이전트 시대를 위한 터미널 cmux 가이드: 설치부터 AI 활용까지