Skip to content

Quant-TheodoreFelix/ml-dsa

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ML-DSA

Qu4nt-Space-Discord

Rust로 작성한 모듈 격자 기반 전자 서명 알고리즘(Module Lattice-based Digital Signature Algorithm, ML-DSA)입니다. NIST FIPS 204 명세를 따르며, 공식 NIST ACVP 테스트 벡터로 바이트 단위 준수를 검증했습니다.

전반적 구현은 ELIB-K0-NT의 ml-dsa 크레이트와 동일하나, 이 크레이트는 검증된 몇 가지의 외부 의존성을 사용했으며 아직 HashML-DSA를 구현하지 않았습니다. 폐쇄 친화적 원칙에 따라, 외부 의존성은 vendor/ 하위에 로드되었으며 버전을 이 크레이트에 안정적이도록 맞춰두었습니다.

기능

  • ML-DSA-44/65/87 파라미터 셋 지원
  • 핵심 알고리즘 구현: KeyGen, Sign, Verify
  • 시드 기반 결정론적 키 생성(DRBG)
  • 헤지드/결정론 서명 선택(서명 시 rnd 주입 방식)
  • 강타입 키/서명, 비밀 키 자동 소거(zeroize)
  • no_std 동작(bare-metal/WASM 노드 내장 가능)
  • 폐쇄 친화적 빌드: 모든 의존성을 vendor/ 에 귀속, 네트워크 차단

사용

use ml_dsa::MLDSA44;

let seed = [0x42u8; 32]; // 실제로는 CSPRNG 출력
let (pk, sk) = MLDSA44::key_gen(&seed);

let msg = b"Hello, Quantum World!";
let ctx = b"";
let rnd = [0u8; 32]; // 헤지드는 CSPRNG, 결정론은 0
let sig = MLDSA44::sign(&sk, msg, ctx, &rnd).unwrap();

assert!(MLDSA44::verify(&pk, msg, &sig, ctx));

검증

tests/kat.rstests/vectors/ 의 공식 NIST ACVP 벡터로, 다음을 확인합니다.

  • keyGen 75건 (셋별 25): seed -> (pk, sk) 바이트 일치
  • sigGen 45건 (external·pure·deterministic): 서명 바이트 일치
  • sigVer 45건 (external·pure): 검증 판정 일치 (부정 케이스 포함)
$ cargo test --offline

Important

다른 추가적인 검증 방식에 대한 기여를 진심으로 환영합니다.

빌드

# 호스트
$ cargo build --offline
$ cargo build --offline --release

# no_std bare-metal
$ cargo build --offline --target thumbv7em-none-eabi --lib

.cargo/config.tomlvendor/하위 크레이트를 의존성 소스로 지정하고, net.offline = true로 네트워크를 차단합니다.

TODO

  • HashML-DSA 해시 변형
  • internal/externalMu 서명 인터페이스

About

NIST FIPS 204 Module Lattice-based Digital Signature Algorithm (ML-DSA) written for Rust

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages