Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
86f9a93
rng 모듈 문서 생성 (영문 포함)
Quant-TheodoreFelix Jun 10, 2026
d321278
1.1.0 릴리즈 준비 - 교차 검증 현황 문서 추가 및 README 업데이트
Quant-TheodoreFelix Jun 10, 2026
20c1297
aes 크레이트 보안 강화 및 1.1.0 버전 업
Quant-TheodoreFelix Jun 10, 2026
e645766
aes/README_EN.md 추가 (README.md 영문 번역)
Quant-TheodoreFelix Jun 10, 2026
1e5de2a
aes/README.md 추가
Quant-TheodoreFelix Jun 10, 2026
e073d17
SHA3 검증 완료 및 keccak 보안 강화
Quant-TheodoreFelix Jun 10, 2026
61f850d
mldsa FIPS 204 정확성 수정
Quant-TheodoreFelix Jun 10, 2026
d2ff363
mldsa 비밀 중간값 zeroize 보강
Quant-TheodoreFelix Jun 10, 2026
de5e1f8
mldsa FIPS 204 ACVP keyGen KAT 회귀 테스트 추가
Quant-TheodoreFelix Jun 10, 2026
a50c5ea
ML-DSA 검증 완료
Quant-TheodoreFelix Jun 10, 2026
3fe881b
검증 완료된 크레이트 버전 수정
Quant-TheodoreFelix Jun 10, 2026
6f2a03c
mldsa/README.md 재작성
Quant-TheodoreFelix Jun 10, 2026
fb69276
mldsa/README_EN.md 재작성
Quant-TheodoreFelix Jun 10, 2026
085a836
cross-confirm.md 변경사항 수정
Quant-TheodoreFelix Jun 11, 2026
fc319fd
sha2 문서 작업
Quant-TheodoreFelix Jun 14, 2026
23ff763
sha2 명세 추가에 따른 문서 수정
Quant-TheodoreFelix Jun 14, 2026
08fadd4
sha3 명세 문서 추가
Quant-TheodoreFelix Jun 14, 2026
1e1cd2d
zeroize 명세 보강
Quant-TheodoreFelix Jun 14, 2026
ac301b7
ed25519 보안 결함 수정 및 명세 문서 작성
Quant-TheodoreFelix Jun 15, 2026
2e7c411
x25519 보안 검토 후속 수정
Quant-TheodoreFelix Jun 15, 2026
d229da1
cross-confirm.md 에 검증 알고리즘 반영
Quant-TheodoreFelix Jun 15, 2026
1011687
x25519 README_EN 신규 작성
Quant-TheodoreFelix Jun 15, 2026
9f02ae4
x25519 README 한국어판 작성
Quant-TheodoreFelix Jun 18, 2026
17c525f
blake 보안 검토 후속 수정
Quant-TheodoreFelix Jun 21, 2026
54a02e2
blake README 한영판 작성
Quant-TheodoreFelix Jun 21, 2026
8255ea4
cross-confirm.md 에 검증 알고리즘 반영
Quant-TheodoreFelix Jun 21, 2026
6a82d46
ed448 RFC 8032 검증 후속 보안 수정
Quant-TheodoreFelix Jul 1, 2026
84827b2
x448 RFC 7748 검증 후속 보안 수정
Quant-TheodoreFelix Jul 2, 2026
12e96a0
mlkem FIPS 203 컴플라이언스 수정 및 KAT 검증 추가
Quant-TheodoreFelix Jul 2, 2026
0325c44
cross-confirm ML-KEM 검증 완료 체크
Quant-TheodoreFelix Jul 3, 2026
98f74f0
chacha20 RFC 8439 검증 후속 보안 수정
Quant-TheodoreFelix Jul 3, 2026
e83123b
mlkem x25519 cargo fmt 적용
Quant-TheodoreFelix Jul 3, 2026
ec0d948
chacha20 검증 잔여 보강
Quant-TheodoreFelix Jul 3, 2026
d26a7b6
constant-time 테스트 하네스 안정화
Quant-TheodoreFelix Jul 3, 2026
a1738bd
aes 크레이트 보안 감사 후속 수정
Quant-TheodoreFelix Jul 29, 2026
3ff443d
라이선스를 MIT 단독에서 MIT OR Apache-2.0 듀얼로 변경
Quant-TheodoreFelix Jul 29, 2026
737276f
aes 크레이트 주석 정리
Quant-TheodoreFelix Jul 29, 2026
bb85aae
라이선스 듀얼화와 문서 갱신
Quant-TheodoreFelix Jul 29, 2026
bcd7763
worktree-generic-sprouting-stearns 병합
Quant-TheodoreFelix Jul 29, 2026
9c0893f
README_EN 을 한글 README 에 맞춰 번역 갱신
Quant-TheodoreFelix Jul 29, 2026
a406128
sha3 KCMVP MCT 윈도 규약 수정
Quant-TheodoreFelix Jul 29, 2026
08d53c9
aes KCMVP GCM 대응 확장
Quant-TheodoreFelix Jul 29, 2026
c73b431
sha2 KCMVP 하네스 추가
Quant-TheodoreFelix Jul 29, 2026
7d3a0b8
문서 정리
Quant-TheodoreFelix Jul 29, 2026
42bf87b
Docstring 에서 Authors 항목 제거
Quant-TheodoreFelix Jul 30, 2026
8db7680
zeroize 에 Zeroable 마커 트레이트 도입
Quant-TheodoreFelix Jul 30, 2026
e21ee13
constant-time 모듈 분할과 트레이트 개명
Quant-TheodoreFelix Jul 30, 2026
cecb428
rng 에 SHA-3 기반 Hash_DRBG 추가
Quant-TheodoreFelix Jul 30, 2026
bf88e25
문서 갱신
Quant-TheodoreFelix Jul 30, 2026
7da9873
aes 아키텍처별 테스트용 공유 KAT 배터리 추가
Quant-TheodoreFelix Jul 30, 2026
492ea98
aes 아키텍처별 std 하네스 테스트 2종 추가
Quant-TheodoreFelix Jul 30, 2026
889348a
aes 베어메탈 KAT 테스트 추가
Quant-TheodoreFelix Jul 30, 2026
f8a57a9
aes 아키텍처 테스트 워크트리 병합
Quant-TheodoreFelix Jul 30, 2026
9b928d2
constant-time 에 aarch64 DIT 가드 추가
Quant-TheodoreFelix Jul 30, 2026
db05693
일반 주석을 모듈 Docstring 주석으로 변경
Quant-TheodoreFelix Jul 30, 2026
4d47381
Secret 에 제자리 초기화 API 추가
Quant-TheodoreFelix Aug 5, 2026
56d5357
Blake3 정렬 패딩 미소거 수정
Quant-TheodoreFelix Aug 5, 2026
9b8ee0e
aes 를 Default 와 init 2단계 생성으로 전환
Quant-TheodoreFelix Aug 5, 2026
1c8dbca
chacha20 을 Default 와 init 2단계 생성으로 전환
Quant-TheodoreFelix Aug 5, 2026
0b7ff9d
x25519 x448 공유비밀을 제자리 계산으로 전환
Quant-TheodoreFelix Aug 5, 2026
60be8c1
ed25519 ed448 키쌍을 제자리 초기화로 전환
Quant-TheodoreFelix Aug 5, 2026
77b655c
rng DRBG 를 제자리 초기화로 전환
Quant-TheodoreFelix Aug 5, 2026
e5b8272
mlkem 나눗셈 제거와 제자리 출력 전환
Quant-TheodoreFelix Aug 5, 2026
50397a0
mldsa 키 구조를 제자리 초기화로 전환
Quant-TheodoreFelix Aug 5, 2026
9a04b1a
문서와 설정 갱신
Quant-TheodoreFelix Aug 5, 2026
9421f52
Merge pull request #12 from Quant-Off/fix/opt-level-z-create-div
Quant-TheodoreFelix Aug 5, 2026
8cb48b9
aes 표준 벡터 테스트 3종 추가
Quant-TheodoreFelix Aug 8, 2026
44477a5
sha2 sha3 표준 벡터 테스트 추가
Quant-TheodoreFelix Aug 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
target/
.idea/
dist/
.DS_Store
*.iso
Cargo.lock
CLAUDE.md
.planning/
.planning/
cavp/
.claude/
INTERNAL_*
104 changes: 95 additions & 9 deletions AI_SCOPE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,108 @@

[![Language](https://img.shields.io/badge/README-English_Ver-blue?style=for-the-badge)](AI_SCOPE_EN.md)

저는 이 암호 모듈의 다양한 암호 기능과 기술적인 작동 방식을 상세화한 명세나 모듈과 함수 등의 기능 작동 사항에 대한 다이렉트 주석을 제가 직접 작성하려고 최대한 노력합니다만, 작성된 결과물을 '이해하기 쉽게' 만드는 데(Mermaid 다이어그램을 생성하거나, 명세의 가독성 향상을 위한 맥락, 설명체 등의 간결화 작업과 영문 번역 등) [Claude Code](http://claude.ai/)의 Sonnet 4.6 모델을 적극적으로 사용합니다.
`1.1.0` 릴리즈를 작업하면서 느낀 바로는, AI 에이전트가 사용된 범위와 사람이 직접 검증할 예정이거나 이미 진행된 부분에 대한 체크리스트 노트가 존재하면 좋다고 생각했습니다. 보안 기능 개발에서 이 문서는 아주 중요하게 여겨질거라 생각됩니다. 여러분의 냉정하고 현실적인 피드백에 대해 전적으로 동의하겠습니다. 저희는 이러한 개발 방식을 채택했지만, 여러분의 소중한 피드백은 사람이 직접 보고 판단하겠다고 명심하겠습니다.

추가적으로, [ISO-LIGHT-K0](https://github.com/Quant-Off/iso-light-k0) 마이크로커널과의 통합을 위해 기능적으로 어떤 부분이 필요한지 점검하고, 누락됐거나 개선이 필요한 부분에 대해 피드백(리뷰) 받고, 암호 알고리즘이 국제적 표준을 준수하는지 확인하기 위해 [NIST FIPS 140-2 또는 3](https://csrc.nist.gov/projects/cryptographic-module-validation-program/fips-140-3-standards)의 명세를 파악하기 위해 Claude Code의 Opus 4.6, 4.8, [Gemini 3.1 Pro](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/gemini/3-1-pro?hl=ko), [Qwen 3.7 Max](https://qwen.ai/blog?id=qwen3.7) 모델을 사용합니다. 모든 작업을 이 분야의 전문가를 통해 교차 검증하는 것을 절대 잊지 않습니다.
> [!IMPORTANT]
> 이 문서의 내용은 AI를 활용하여 다양한 자동화 작업이나, 개발, 보안 감사를 진행하는 사람들을 비판하기 위해 작성된 것이 아닙니다. 발전하는 AI 시대에 맞게 AI 사용 범위를 사람을 위해 명시했을 뿐입니다. 우선, 이 문서는 사람이 직접 작성했습니다.

이 프로젝트는 1인 개발임에 따라 '문서 작업', '주석 작업'에 에이전트를 적극 활용하고 있습니다. 에이전트가 이 프로젝트의 파일을 수정하는 부분은 `.md` 파일과 작성된 모듈, 함수의 주석 추가를 위한 `.rs` 파일입니다. **민감한 기능**(암호 알고리즘의 구현 등)에 대해서는 절대적으로 접근할 수 없도록 제한하고 있습니다. 저는 바이브 코더가 아니며, 다소 구시대적인 개발자일 뿐입니다. 이 명시는 AI를 활용하여 다양한 자동화 작업이나, 개발, 보안 감사를 진행하는 사람들에 대해 비아냥거리기 위해 작성된 것이 아닙니다. 발전하는 AI 시대에 맞게 AI 사용 범위를 인간을 위해 명시했을 뿐입니다.
슬래쉬를 통해 나뉘어진 여러 분류는 'OR'을 의미합니다.

## 지침과 사용 프롬프트에 관해
## Table of Content

- [공통적](#공통적)
- [Crates](#crates)
- [AES](#aes)
- [BLAKE](#blake)
- [ChaCha20](#chacha20)
- [Constant-Time](#constant-time)
- [Ed448](#ed448)
- [Ed25519](#ed25519)
- [ML-DSA](#ml-dsa)
- [ML-KEM](#ml-kem)
- [SHA2](#sha2)
- [SHA3](#sha3)
- [X448](#x448)
- [X25519](#x25519)
- [Zeroize](#zeroize)
- [지침과 사용 프롬프트에 관해](#지침과-사용-프롬프트에-관해)
- [추가적으로](#추가적으로)

## 공통적

- 암호 알고리즘에 대한 기술 명세를 크레이트 루트 `README.md`에 작성 (Opus 5 / Fable 5)
- 일부 `//`, `//!`, `///` 등 주석을 통한 흐름 및 함/변수, 모듈 설명 (Opus 4.8 / Sonnet 5)
- AI가 생성한 주석의 경우를 아래 크레이트별 AI 사용 범위 설명에서 포함하겠습니다.
- 특정 문서의 영문 번역 (Sonnet 5)
- 모든 문서는 기본적으로 **한국어**로 작성하고 있습니다.
- 개별 암호 알고리즘 표준안에 따른 보고서 작성 (Sonnet 5 / Opus 5 / Fable 5)
- 해당 보고서는 저장소에 배포되지 않습니다.
- 보고서 작성에 100% 비율만큼 AI를 사용하진 않고 있습니다.
- (1차) 개발자를 통해 분석, (2차) AI가 교차 검증, (3차) 대학 교수, 대학원생, 중소기업 보안 개발 종사자(포괄; 전문가)의 교차 검증을 거치며, 참여자들의 의견에 따라 추 후 프로필을 게시할 예정입니다.
- 로컬 테스트 환경으로 스니펫을 제공하는, 또는 그런 일관된 행위 (Qwen 3.5)
- 엣지 케이스 분석, 전체적 코드 감사, 일부 테스트 코드 작성 (Fable 5)
- 코드 감사 작업의 경우 아키텍처별 다른 작동 가능성, K0 커널 통합에 따른 IPC/Ring 3 격리 모델에 위반되는 사항, 암호 알고리즘 표준안에 명시된 (복잡성을 가진) 특정 알고리즘의 구현 방법에 관한 논의 등이 이루어집니다.

## Crates

### AES

- [lib.rs](aes/src/lib.rs), [ghash.rs](aes/src/ghash.rs), [sbox.rs](aes/src/sbox.rs), [cbc.rs](aes/src/cbc.rs), [ctr.rs](aes/src/ctr.rs), [gcm.rs](aes/src/gcm.rs) 내에 테스트 모듈 작성 (Opus 4.8)
- `ghash.rs` 내 `bitsliced_sbox` 함수 (Opus 4.8)
- KCMVP 간편 테스트기 [kcmvp_cbc_ctr.rs](aes/tests/kcmvp_cbc_ctr.rs), [kcmvp_gcm.rs](aes/tests/kcmvp_gcm.rs) 모듈 작성 (Fable 5)
- [baremetal.rs](aes/tests/baremetal.rs) 테스트 모듈 작성 (Fable 5)

### BLAKE

### ChaCha20

### Constant-Time

- [lib.rs](constant-time/src/lib.rs) 파일 내 스플릿 형식 `//` 주석 (Sonnet 4.5)
- [src/lib.rs의 ct_sel_swap_value_roundtrip 테스트 함수](https://github.com/Quant-Off/elib-k0-nt/blob/7d3a0b8389fcc0a5bcbef22ae70fa380ce420614/constant-time/src/lib.rs#L732) (Opus 4.8)
- [dit.rs](constant-time/src/dit.rs) 내 imp 모듈 아이디어 및 `//` 주석 (Fable 5)
- [README.md](constant-time/README.md) 내 "aarch64 DIT 가드" 섹션 내용 (Opus 5)

### Ed448

### Ed25519

CLAUDE.md 지침 문서엔 주로 주석 작성 방법, 결과물 동작 및 구현 검증을 위한 로컬 샌드박스 작동 환경, 생태계 이해를 위한 설명이 작성되어 있습니다.
### ML-DSA

알고리즘 구현 1차적 검증 작업은 [GSD(Git-Ship-Done) Core](https://github.com/open-gsd/gsd-core)를, 폐쇄형 샌드박스에서 작동하는 에이전트가 프로젝트를 원활히 학습할 수 있도록 정형 문서화 작업 및 제2의 뇌 구축 작업엔 [Graphify](https://github.com/safishamsi/graphify)를 사용하고 있습니다. `CLAUDE.md` 파일, `.planning` 디렉토리에는 환경에 대한 설명과 실제 경로 등이 포함되어 있어 보안을 위해 이그노어링됩니다.
- 비밀키 언패킹 관련 문제 발견 (Fable 5)

Claude Code의 경우, 문서화와 주석 작성을 위해 "@path/to/module 에 Docstring을 추가해.", "해당 모듈은 ~역할을 맡는 모듈로서, ... 주석을 작성 및 수정해."와 같은 톤과 맥락을 사용합니다. 모듈이 기술적으로 동작하는 데에는 "해당 모듈에 작성된 주석을 바탕으로 현재 모듈의 기술적 작동 방식을 검증하고 결과를 @path/to/target.md 에 작성해."나 "@path/to/pdf FIPS 202 명세에 따른 SHA3 구현 중, 이 모듈의 ~기능이 상태 배열에 대한 레이블링 규칙을 준수하는지 확인해."와 같은 톤을 유지합니다. **이 과정에서 Claude Code가 문서를 "신규 작성"할 뿐, 구현을 직접 수정하지 않습니다.**
### ML-KEM

커밋은 단순히 "현재 변경 사항을 n개로 나눠 커밋해." 를 사용합니다.
- 복호화 과정에서, 내부적인 타이밍 오라클은 평문 검사 오라클이므로 CCA 안전성이 무너지는 문제 발견 (Fable 5)

### SHA2

### SHA3

### X448

### X25519

- 공유비밀 반환값이 호출자로 전혀 나가지 않도록 1바이트만 반환하게 좁혀도 스택에 전체 공유비밀 2벌이 남는 문제 발견 (Fable 5)

### Zeroize

- 테스트 코드 `zeroize_readback.rs` 작성 (Opus 5)
- 사람에 의해 발견된 문제에 관한 해결책을 찾음 (Fable 5)
- `Secret<T>` 구조체의 Drop이 임의 T를 비트 제로화하는 문제, `zeroize_flat<T>`이 safe 함수처리되어 있지만 invalid value를 생성하는 문제를 해결하기 위한 해결책으로, `Zeroable` 마커 트레이트에 관한 아이디어를 얻었으며 뼈대 코드, 주석을 작성
- 단, 다른 모듈 및 크레이트에 적용하고 응용하는 방식은 **사람이 직접 작성**
- `Secret<T>` 구조체에 상수-시간 프리미티브 적용 아이디어 (Fable 5)
- `Secret<T>` 가 이동을 건너뛰면서 Drop 보장을 잃는 문제 발견 (Fable 5)

## 지침과 사용 프롬프트에 관해

CLAUDE.md 지침 문서엔 주로 주석 작성 방법, 결과물 동작 및 구현 검증을 위한 로컬 샌드박스 작동 환경, 생태계 이해를 위한 설명이 작성되어 있습니다. `CLAUDE.md` 파일, [GSD(Git-Ship-Done) Core](https://github.com/open-gsd/gsd-core)으로 인해 생성된 `.planning` 디렉토리에는 개발 환경에 대한 구체적 설명(실제 경로 등)이 포함되어 있어 보안을 위해 이그노어링했습니다.

문서화와 주석 작성을 위해 "@path/to/module 에 Docstring을 추가해.", "해당 모듈은 ~역할을 맡는 모듈로서, ... 주석을 작성 및 수정해."와 같은 톤과 맥락을 사용합니다. 모듈이 기술적으로 동작하는 데에는 "해당 모듈에 작성된 주석을 바탕으로 현재 모듈의 기술적 작동 방식을 검증하고 결과를 @path/to/target.md 에 작성해."나 "@path/to/pdf FIPS 202 명세에 따른 SHA3 구현 중, 이 모듈의 ~기능이 상태 배열에 대한 레이블링 규칙을 준수하는지 확인해."와 같은 톤을 유지합니다.

## 추가적으로

이 프로젝트에 적용되는 AI에 대해 여러분은 언제든 자신의 의견을 내어 주실 수 있습니다. <qtfelix@qu4nt.space> 이메일 또는 [저장소 논의](https://github.com/Quant-Off/elib-k0-nt/discussions)에서 "AI Scope" 카테고리를 적극적으로 사용해주세요.
이 문서에 대해 의견이 있다면, 다음 방식 중 편한 하나로 언제든 알려주세요.

- 이메일: <qtfelix@qu4nt.space> 또는
- "AI Scope" 카테고리를 사용한 [저장소 논의](https://github.com/Quant-Off/elib-k0-nt/discussions)
Loading