# QuarkDash: TypeScript 기반 하이브리드 후양자 프로토콜 - 고부하 시스템용
QuarkDash는 후양자 키 교환을 위한 Ring-LWE, 스트림 암호 ChaCha20 또는 Gimli, 키 유도 및 MAC를 위한 SHAKE-256을 결합하며, 재전송 및 타이밍 공격 방지를 제공합니다. 공개키 크기 ~2 KB, 개인키 ~1 KB. 세션 설정은 평균 CPU에서 ~8-9 ms 소요. 아키텍처 종속성 없이 클라이언트-서버 시스템에 이상적입니다.
QuarkDash의 기본 원시 선택
키 교환을 위한 Ring-LWE
Ring-LWE는 N=256, Q=7681, ω=7 파라미터의 다항환을 사용합니다. 128비트 후양자 보안을 제공합니다. NTT를 통한 다항 곱셈으로 O(N log N) 효율. 키 생성: ~12 ms, 캡슐화/디캡슐화 ~8-9 ms.
대칭 암호화
- ChaCha20: 20라운드, 256비트 키, 12바이트 논스. 소프트웨어에서 초고속, 타이밍 공격에 강함.
- Gimli: 24라운드, 384비트 상태, 256비트 보안. 32비트 아키텍처에서 ChaCha20 초과, IoT용 가벼운 코드.
SHAKE-256을 활용한 KDF 및 MAC
SHAKE-256(Keccak 기반)은 양자 내성 키 유도 및 인증에 사용. KDF: SHAKE256(솔트 || 공유비밀 || "session-key", 64) → 세션키(32바이트) + MAC키(32바이트). MAC: SHAKE256(MAC키 || 헤더 || 암호문, 32)로 상수시간 검증.
프로토콜 단계별 흐름
키 생성
- a ∈ Z_Q^N 선택.
- 계수 {-1,0,1}인 작은 s, e.
- b = a ⊗ s + e (NTT).
- 공개: (a, b), 개인: s.
세션용 KEM
시작자:
- u = a ⊗ s' + e'.
- 공유비밀 = b ⊗ s'.
수신자: 공유비밀 = u ⊗ s.
메시지 암호화
- 헤더 = 타임스탬프(8바이트) || 시퀀스(4바이트).
- 암호문 = streamCipher.encrypt(평문, 세션키, 논스).
- MAC = SHAKE256(MAC키 || 헤더 || 암호문, 32).
- 패킷: 헤더 || 암호문 || MAC.
메시지 복호화
- 패킷 파싱.
- MAC 검증(상수시간).
- 타임스탬프 5분 이내 확인.
- 시퀀스 유일성 확인(1000 윈도우).
- 평문 = streamCipher.decrypt(암호문).
보안 조치
- 후양자 내성: 알려진 양자 공격 없는 Ring-LWE, Grover 알고리즘에 강한 SHAKE-256.
- 사이드채널 보호: 상수시간 비교, 안전 키 지움, 비밀 의존 분기 없음.
- 완전 순방향 비밀성: 일회용 세션 키.
- 재전송 방지: 타임스탬프 + 시퀀스.
전체 보안: 고전/양자 위협에 128-256비트.
성능 벤치마크
세션 설정 (ms, 1000회 평균)
| 작업 | QuarkDash (ChaCha20) | QuarkDash (Gimli) | ECDH P-256 | RSA-2048 |
|------|----------------------|-------------------|------------|----------|
| 키 생성 | 12.3 | 12.1 | 1.2 | 48 |
| KEM 캡슐화 | 8.7 | 8.5 | 3.4 | 42 |
| KEM 디캡슐화 | 9.2 | 9.0 | 3.4 | 0.1 |
처리량 (MB/s)
| 크기 | ChaCha20 | Gimli | AES-256-GCM | ECIES |
|------|----------|-------|-------------|-------|
| 1 KB | 125 | 132 | 117 | 10 |
| 1 MB | 2380 | 2630 | 1176 | 48 |
| 10 MB | 2450 | 2710 | 1200 | 50 |
오버헤드: 공개키 2 KB, 개인키 1 KB, 패킷 오버헤드 44바이트.
대안 비교
- AES 대비: 내장 KEM, 완전 순방향 비밀성, 재전송 방지 추가. 하드웨어 가속 없이 소프트웨어에서 ChaCha20 우위.
- ECC 대비: Shor 내성, 패킷 오버헤드 적음(44 vs 61바이트), 대용량 페이로드에서 빠름.
웹 앱용 TypeScript 최적화, Keccak으로 SHAKE-256 에뮬레이션.
주요 요약
- NTT 곱셈으로 128비트 PQC 제공하는 Ring-LWE (N=256, Q=7681).
- 듀얼 암호: 소프트웨어용 ChaCha20, IoT용 Gimli.
- 상수시간 SHAKE-256 KDF/MAC.
- 타임스탬프 + 시퀀스(1000 윈도우)로 재전송 방지.
- 벤치마크: 암호화 최대 2710 MB/s, 세션 ~9 ms.
— Editorial Team
아직 댓글이 없습니다.