빠른 시작
초안 — 소유자 검토 대기 (draft for owner review). 이 페이지는 영문 Quick Start를 한국어로 옮긴 초안입니다. 아래의 Rust 및 Python 예제는 2026-10-16에 이 소스 트리(
1.0.0-rc.7리비전)에 대해 실제로 실행되었습니다(실행 기록: 소스 저장소의documents/public-release/evidence/229-documentation.md, 2026-10-16 절). 나머지 언어(TypeScript, Swift, Go, Java, Kotlin, C#, C)의 예제는 이 초안에 싣지 않았으며, 2026-10-09에 로컬 후보 패키지로 실행된 영문 페이지의 예제를 참고하십시오.
부채널(side-channel) 주장 한계. 이 페이지는 어떤 대상(target)에 대해서도 상수 시간(constant-time) 동작이나 부채널 저항성을 주장하지 않습니다. 부채널 측정 도구는 아무것도 다루지 않으며(발견 사항 A48) 측정 결과도 없습니다. Rust 및 C 코어는 상수 시간을 목표로 설계되었을 뿐 측정되지 않았고, 관리형 런타임(JIT, GC, 경계 검사)에 대해서는 어떤 타이밍 주장도 하지 않습니다. 이 페이지에서 상수 시간이나 부채널 기법을 언급하는 경우, 그것은 설계 의도 또는 권고이지 측정된 속성이 아닙니다.
언어별로 양자내성 알고리즘 한 번의 왕복(round trip)을 보여 줍니다. 패키지 좌표는 결정된 공개 이름이지만, 출시 전까지는 어떤 저장소에서도 찾을 수 없습니다. 소스에서 빌드하는 방법은 설치 안내(영문)를 보십시오.
프로파일은 명시적입니다. ml-kem-768, ml-dsa-65, falcon-512.r3-padded 등 카탈로그 식별자 하나가 알고리즘 하나, 매개변수 집합 하나, 바이트 인코딩 하나를 가리키며, 계열 이름(ml-dsa)은 다른 것으로 대체되지 않고 거부됩니다. ML-DSA, SLH-DSA, HAETAE, AIMer는 최대 255바이트의 컨텍스트 문자열로 서명하며, 한 컨텍스트로 만든 서명은 다른 컨텍스트에서 검증되지 않습니다.
Rust
[dependencies]
metamui-crypto = "1.0.0-rc.7"
rand = "0.8"
use metamui_crypto::{falcon512, mldsa65, mlkem768, Profile};
fn main() -> Result<(), metamui_crypto::Error> {
let mut rng = rand::rngs::OsRng;
let kp = falcon512::generate_keypair(&mut rng)?;
let sig = falcon512::sign_padded(&kp.secret_key, b"hello", &mut rng)?;
falcon512::verify_padded(&kp.public_key, b"hello", &sig)?;
let kem = mlkem768::generate_keypair(&mut rng)?;
let (ct, ss) = mlkem768::encapsulate(&kem.encapsulation_key, &mut rng)?;
assert_eq!(mlkem768::decapsulate(&kem.decapsulation_key, &ct)?, ss);
let dsa = mldsa65::generate_keypair(&mut rng)?;
let sig = mldsa65::sign(&dsa.secret_key, b"hello", b"my-protocol/v1", &mut rng)?;
mldsa65::verify(&dsa.public_key, b"hello", b"my-protocol/v1", &sig)?;
assert!(mldsa65::verify(&dsa.public_key, b"hello", b"", &sig).is_err()); // 다른 컨텍스트
assert!(Profile::parse("haetae").is_err()); // 계열 이름은 프로파일이 아님
Ok(())
}
실행 방법: metamui-crypto-rust/metamui-crypto를 경로(path) 의존성으로 갖는 소비자 크레이트에서 cargo run --release. 종료 코드 0.
Python
pip install metamui-crypto==1.0.0rc7
from metamui_crypto.facade import profile
sig = profile("ml-dsa-65")
keys = sig.generate_keypair()
signature = sig.sign(keys.secret_key, b"message", context=b"my-app")
sig.verify(keys.public_key, b"message", signature, context=b"my-app") # 실패하면 InvalidSignatureError
kem = profile("ml-kem-768")
ek, dk = kem.generate_keypair()
ct, ss = kem.encapsulate(ek)
assert kem.decapsulate(dk, ct) == ss
실행 방법: 새 Python 3.12 가상 환경에 pip install metamui-crypto-python/로 소스 디렉터리를 설치한 뒤 python -I로 위 블록을 실행. 종료 코드 0.
다른 언어
TypeScript, Swift, Go, Java, Kotlin, C#, C 예제는 영문 Quick Start 페이지에 있습니다.
이 예제가 보여 주지 않는 것
- 무작위성이 필요한 모든 연산은 운영체제에서 난수를 가져옵니다. 공개 패키지에는 시드(seed)를 주거나 결정론적으로 동작하는 진입점이 없습니다.
- 상수 시간 동작과 부채널 저항성은 어떤 대상에 대해서도 주장하지 않습니다. 부채널 축은 측정되지 않았습니다(발견 사항 A48). Rust와 C 코어는 상수 시간을 목표로 설계되었고, 관리형 런타임은 타이밍 주장을 하지 않습니다.
- 어떤 패키지도 외부 암호 라이브러리를 감싸지 않습니다. 각 구현은 MetaMUI 자체 구현이며, 알고리즘의 상위(upstream) 테스트 벡터로 검증됩니다.
다음 단계
도움이 필요하면
- GitHub에 이슈를 올려 주십시오.
- 지원 수준: 최선 노력(best effort)이며 저장소를 통한 상업적 지원은 없습니다(
SUPPORT.md). 보안 신고는 security@metamui.id 로 보내 주십시오.