Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
9c80ff3
ML-DSA 탄생!!
Quant-TheodoreFelix Mar 19, 2026
f78dfb1
CSP 주입 테스트
Quant-TheodoreFelix Mar 19, 2026
f70296b
NTT 테스트 추가
Quant-TheodoreFelix Mar 19, 2026
ce0db98
외부 시그니처 테스트 추가
Quant-TheodoreFelix Mar 19, 2026
58d65e7
경로 변경 `crypto/rng` -> `core/rng`, hash_drbg 기능 구현
Quant-TheodoreFelix Mar 21, 2026
171d5f2
보안 버퍼 TODO 추가, 페이지 크기 로직 수정
Quant-TheodoreFelix Mar 21, 2026
15150d2
메이저 기여사항 추가
Quant-TheodoreFelix Mar 21, 2026
c90c1e5
링크 수정
Quant-TheodoreFelix Mar 21, 2026
d974d32
ARM64 대응 함수 추가
Quant-TheodoreFelix Mar 21, 2026
339b889
그냥 줄바꿈
Quant-TheodoreFelix Mar 21, 2026
32bf7fa
PR https://github.com/Quant-Off/entlib-native/pull/16#issue-411203993…
Quant-TheodoreFelix Mar 21, 2026
fa2e944
향후 계획 수정
Quant-TheodoreFelix Mar 21, 2026
20019fb
Base64, Hex, SHA-2, 3 CLI 바이너리 추가
Quant-TheodoreFelix Mar 21, 2026
b904028
잘못된 호출 수정
Quant-TheodoreFelix Mar 21, 2026
6e43df1
잘못된 상수-시간 select 수정
Quant-TheodoreFelix Mar 21, 2026
92053ed
루트 매니페스트 수정
Quant-TheodoreFelix Mar 21, 2026
9d3bf28
문서 수정
Quant-TheodoreFelix Mar 22, 2026
07a4723
PBKDF2 구현
Quant-TheodoreFelix Mar 22, 2026
ef1c5ac
PBKDF2 테스트 추가
Quant-TheodoreFelix Mar 22, 2026
4d9bebf
루트 PBKDF2 연결
Quant-TheodoreFelix Mar 22, 2026
48ad1a1
AES-256 CBC, GCM(HMAC-SHA-256) 구현 및 테스트 추가
Quant-TheodoreFelix Mar 22, 2026
d2ac9c7
명세 추가
Quant-TheodoreFelix Mar 22, 2026
869ce28
docstring 수정
Quant-TheodoreFelix Mar 22, 2026
5c90e6d
PR #18 병합 -> `feature/aes`
Quant-TheodoreFelix Mar 22, 2026
6ed0981
잘못된 참조로 인한 빌드 실패 문제 해결
Quant-TheodoreFelix Mar 22, 2026
d6a4028
fmt 린터 수정
Quant-TheodoreFelix Mar 22, 2026
a09fb0f
fmt 린터 수정
Quant-TheodoreFelix Mar 22, 2026
2ca035a
ASN.1 및 DER 인/디코딩 최소주의 구현
Quant-TheodoreFelix Mar 22, 2026
deac679
DER 테스트 추가
Quant-TheodoreFelix Mar 22, 2026
cb375fa
PEM, I/O 기능 구현
Quant-TheodoreFelix Mar 22, 2026
827a5e7
PR #19 병합 -> `feature/armor`
Quant-TheodoreFelix Mar 22, 2026
3a69518
BLAKE 해시 및 Argon2id 알고리즘 구현
Quant-TheodoreFelix Mar 23, 2026
05bcfcf
Cargo 수정
Quant-TheodoreFelix Mar 23, 2026
c42bdc1
Argon2id, BLAKE 명세 작성
Quant-TheodoreFelix Mar 23, 2026
a9bf49a
PR #21 병합 -> `feature/argon2id-n-blake`
Quant-TheodoreFelix Mar 23, 2026
bf92845
Argon2id, BLAKE 테스트 추가
Quant-TheodoreFelix Mar 23, 2026
530d2ae
보안성 논의 파일 추가
Quant-TheodoreFelix Mar 24, 2026
37d4137
향후 계획 수정 (완료 체킹)
Quant-TheodoreFelix Mar 24, 2026
d995919
PKCS8 파이프라인 크레이트 추가
Quant-TheodoreFelix Mar 24, 2026
37f625a
PKCS8 파이프라인 크레이트 추가
Quant-TheodoreFelix Mar 24, 2026
0d31333
린트 수정
Quant-TheodoreFelix Mar 24, 2026
17b5503
린트 수정 및 PKCS8, ML-DSA 명령 추가
Quant-TheodoreFelix Mar 24, 2026
7bde479
함수 추가
Quant-TheodoreFelix Mar 25, 2026
b2a0073
ML-KEM 구현
Quant-TheodoreFelix Mar 25, 2026
499cb5e
ML-KEM CLI 추가
Quant-TheodoreFelix Mar 26, 2026
c82fce9
보안 논의 및 기여 문서 수정
Quant-TheodoreFelix Mar 26, 2026
e843915
Argon2id CLI 추가
Quant-TheodoreFelix Mar 26, 2026
28141ef
Argon2id CLI 추가
Quant-TheodoreFelix Mar 26, 2026
2676704
ML-KEM cargo 마저 커밋
Quant-TheodoreFelix Mar 26, 2026
bf9a9c7
린트 수정
Quant-TheodoreFelix Mar 26, 2026
da52d79
ML-DSA 명세 추가
Quant-TheodoreFelix Mar 26, 2026
4fa670a
ML-KEM 명세 추가
Quant-TheodoreFelix Mar 26, 2026
012ff1f
BLAKE 해시 CLI 추가
Quant-TheodoreFelix Mar 27, 2026
6b4b5ae
빌드 설정 및 문서 오타 수정
Quant-TheodoreFelix Mar 27, 2026
7f83dcc
코어 베이스 모듈 추가
Quant-TheodoreFelix Mar 27, 2026
aa6b553
린터 수정
Quant-TheodoreFelix Mar 27, 2026
511d4f6
린터 수정
Quant-TheodoreFelix Mar 27, 2026
0a23534
https://github.com/Quant-Off/entlib-native/issues/22 반영 및 전체 린터 수정
Quant-TheodoreFelix Mar 27, 2026
0d59d80
잘못 올라간 표준 문서 제거
Quant-TheodoreFelix Mar 27, 2026
b030853
Canary 테스트, 수학적 정형 문서 작성
Quant-TheodoreFelix Mar 28, 2026
e2ab618
에셋 추가
Quant-TheodoreFelix Mar 28, 2026
a363a01
Canary 테스트 멤버 추가
Quant-TheodoreFelix Mar 28, 2026
464e23d
capacity 반환 함수 추가
Quant-TheodoreFelix Mar 28, 2026
8afad5e
공개 키 업로드
Quant-TheodoreFelix Mar 28, 2026
440ccde
sha3, blake 파일 해시 기능 추가
Quant-TheodoreFelix Mar 28, 2026
fd01370
보안 정책 문서 수정
Quant-TheodoreFelix Mar 28, 2026
407f297
파일 해시에 따른 CLI 커맨드 추가
Quant-TheodoreFelix Mar 28, 2026
99faaa8
무결성 검사 워크플로 추가 (테스트 진행)
Quant-TheodoreFelix Mar 28, 2026
029ca7b
PR 목적지 변경
Quant-TheodoreFelix Mar 28, 2026
bf0df50
워크플로 수정
Quant-TheodoreFelix Mar 28, 2026
a113674
PR #23 병합 -> `fix/build-wf`
Quant-TheodoreFelix Mar 28, 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
191 changes: 191 additions & 0 deletions .github/workflows/secure_release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
name: Secure Release & Publish Pipeline

on:
pull_request:
branches: [ master ]
push:
tags:
- 'v*.*.*'

permissions:
contents: write
pages: write
id-token: write

jobs:
verify-integrity:
name: Source Integrity Verification
runs-on: ubuntu-latest

steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Build entlib-native
run: cargo build --release

- name: Generate Source Archives
run: |
VERSION=$(git describe --tags --exact-match 2>/dev/null || echo "dev")
ARCHIVE_NAME="entlib-native-${VERSION}-source"
mkdir -p target/dist
git archive \
--format=tar.gz \
--prefix="${ARCHIVE_NAME}/" \
-o "target/dist/${ARCHIVE_NAME}.tar.gz" \
HEAD
git archive \
--format=zip \
--prefix="${ARCHIVE_NAME}/" \
-o "target/dist/${ARCHIVE_NAME}.zip" \
HEAD
cp ./public/public-key.asc target/dist/public-key.asc
echo "[+] Source archives generated"
ls -lh target/dist/

- name: Import Public Key (Trust Anchor)
run: gpg --import ./public/public-key.asc

- name: Verify PGP Signature
run: |
echo "[*] Verifying PGP signature of RELEASE_HASHES.txt..."
gpg --verify ./public/RELEASE_HASHES.txt.asc ./public/RELEASE_HASHES.txt
echo "[+] PGP signature verification passed"

create-release:
name: Create GitHub Release
if: startsWith(github.ref, 'refs/tags/v')
needs: verify-integrity
runs-on: ubuntu-latest

steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Build entlib-native
run: cargo build --release

- name: Prepare Release Artifacts
env:
GITHUB_REF_NAME: ${{ github.ref_name }}
run: |
VERSION=$(git describe --tags --exact-match)
ARCHIVE_NAME="entlib-native-${VERSION}-source"
mkdir -p target/dist
git archive \
--format=tar.gz \
--prefix="${ARCHIVE_NAME}/" \
-o "target/dist/${ARCHIVE_NAME}.tar.gz" \
HEAD
git archive \
--format=zip \
--prefix="${ARCHIVE_NAME}/" \
-o "target/dist/${ARCHIVE_NAME}.zip" \
HEAD
cp ./public/public-key.asc target/dist/public-key.asc
cp ./public/RELEASE_HASHES.txt target/dist/RELEASE_HASHES.txt
cp ./public/RELEASE_HASHES.txt.asc target/dist/RELEASE_HASHES.txt.asc

- name: Extract Tag Version
id: version
run: echo "tag=${GITHUB_REF#refs/tags/}" >> "$GITHUB_OUTPUT"

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
name: "entlib-native ${{ steps.version.outputs.tag }}"
body: |
## Source Distribution

| File | Description |
|------|-------------|
| `entlib-native-${{ steps.version.outputs.tag }}-source.tar.gz` | Source archive (tar.gz) |
| `entlib-native-${{ steps.version.outputs.tag }}-source.zip` | Source archive (zip) |
| `RELEASE_HASHES.txt` | SHA3-512 + BLAKE3 checksums |
| `RELEASE_HASHES.txt.asc` | PGP detached signature |
| `public-key.asc` | PGP public key (Trust Anchor) |

## Verify Integrity

```bash
gpg --import public-key.asc
gpg --verify RELEASE_HASHES.txt.asc RELEASE_HASHES.txt
```
files: |
./target/dist/entlib-native-*-source.tar.gz
./target/dist/entlib-native-*-source.zip
./target/dist/RELEASE_HASHES.txt
./target/dist/RELEASE_HASHES.txt.asc
./target/dist/public-key.asc

publish-trust-anchor:
name: Publish Trust Anchor to GitHub Pages
if: startsWith(github.ref, 'refs/tags/v')
needs: create-release
runs-on: ubuntu-latest

environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}

steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Extract Tag Version
id: version
run: echo "tag=${GITHUB_REF#refs/tags/}" >> "$GITHUB_OUTPUT"

- name: Build Pages Site
env:
RELEASE_TAG: ${{ steps.version.outputs.tag }}
run: |
mkdir -p _site/keys "_site/releases/${RELEASE_TAG}"

cp ./public/public-key.asc _site/keys/public-key.asc

cp ./public/RELEASE_HASHES.txt \
"_site/releases/${RELEASE_TAG}/RELEASE_HASHES.txt"
cp ./public/RELEASE_HASHES.txt.asc \
"_site/releases/${RELEASE_TAG}/RELEASE_HASHES.txt.asc"

cat > _site/index.html << 'PAGE'
<!DOCTYPE html>
<html lang="en">
<head><meta charset="utf-8"><title>entlib-native Trust Anchor</title></head>
<body>
<h1>entlib-native Trust Anchor</h1>
<h2>PGP Public Key</h2>
<p><a href="keys/public-key.asc">public-key.asc</a></p>
<h2>Verification</h2>
<pre>
# 1. Import the public key
curl -sO https://quant-off.github.io/entlib-native/keys/public-key.asc
gpg --import public-key.asc

# 2. Download the release hashes and signature
VERSION="vX.Y.Z"
curl -sO "https://quant-off.github.io/entlib-native/releases/${VERSION}/RELEASE_HASHES.txt"
curl -sO "https://quant-off.github.io/entlib-native/releases/${VERSION}/RELEASE_HASHES.txt.asc"

# 3. Verify the signature
gpg --verify RELEASE_HASHES.txt.asc RELEASE_HASHES.txt
</pre>
</body>
</html>
PAGE

- name: Upload Pages Artifact
uses: actions/upload-pages-artifact@v3
with:
path: _site

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
3 changes: 3 additions & 0 deletions CONTRIBUTION.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,12 @@ _안녕하세요. 저희는 팀 퀀트(Quant)이며, 저는 Quant Theodore Felix
- 공통
- **올바른 오류 전파 방법**: 많은 크레이트의 핵심 기능은 `Result` 열거형을 통해 `SecureBuffer` 구조체와 문자열 참조를 반환합니다. 이는 오류 전파에 부적절합니다.
- **컴플라이언스 문제**: 암호 모듈 구현에 있어 국제적 인증 및 규정을 준수하지 않은 부분을 발견했다면, 즉시 연락주세요.
- **오류 메시지**: 오류 메시지는 기본적으로 모호해야 하지만 알아차리기 애-매한 정도로 진실성이 있어야 합니다. 현재 오류 메시지는 어때 보이시나요?
- **보안 논의**: [`entlib-native`의 보안성에 대해 논의하는 문서](SECURITY_DISCUSSION.md)에 대해 의견이 있으신가요?
- 보안 버퍼 크레이트 `entlib-native-secure-buffer`
- **베어메탈 캐시 플러시 문제**: `zeroizer.rs` 내 no_std 폐쇄 환경을 위한 Fall-back 시, 해당 환경의 하드웨어(CPU) 특성에 따라 캐시 라인 플러시가 보장되지 않을 수 있다고 합니다. 이 부분에 대해 섬세한 평가검증이 필요합니다.
- **이중 잠금**: JO(Java-Owned) 패턴을 통해 상호 작용 시 메모리 lock 수행 후 전달됩니다. Rust 측 `SecureMemoryBlock` 구조체는 이 데이터에 대해 한 번 더 lock을 수행합니다. 이 작업에 대해 어떻게 생각하시나요?
- **베어메탈 대응**: 최신 IoT, HSM, 자동차 천장 시스템(Automotive) 등은 대부분 ARM 기반의 베어메 또는 RTOS 환경에서 구동됩니다. 현재 보안 버퍼는 `mlock` 등의 시스템 콜을 이용해 메모리를 잠그고 있는데, 베어메탈에선 이러한 대응이 불가능합니다. 소프트웨어 레벨에서 '가능한 대응'에 대한 아이디어가 필요합니다.
- CI 워크플로
- **엄격한 상수-시간 검사**: 현재 구현된 상수-시간 연산이 부족해 보이시거나, 엄격한 검증을 위해서는 어떻게 해야 한다고 생각하시나요?
- **메모리 오염 추적 방법**: CC 상수-시간 감사 워크플로의 Level 3(바이너리 메모리 오염 추적)은 Unix 환경에서 Valgrind를 사용하여 테스트를 수행합니다. 하지만 저는 아직 이 부분에 대해 큰 아이디어가 없어 임시 비활성화해둔 상태입니다. 이 부분에 대해 좋은 아이디어를 가지고 있다면 알려주세요.
Expand Down
3 changes: 3 additions & 0 deletions CONTRIBUTION_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,12 @@ Contributions corresponding to the following items for this project are classifi
- Common
- **Correct error propagation method**: The core function of many crates returns a `SecureBuffer` struct and a string reference through a `Result` enum. This is inappropriate for error propagation.
- **Compliance issues**: If you find any parts that do not comply with international certifications and regulations in the implementation of the cryptographic module, please contact us immediately.
- **Error messages**: Error messages should be ambiguous by default, but they must be truthful enough to be subtly recognizable. What do you think of the current error messages?
- **Security Discussion**: Do you have any opinions on the [document discussing the security of `entlib-native`](SECURITY_DISCUSSION.md)?
- Secure buffer crate `entlib-native-secure-buffer`
- **Bare-metal cache flush issue**: When falling back for a no_std closed environment in `zeroizer.rs`, it is said that cache line flushing may not be guaranteed depending on the hardware (CPU) characteristics of the environment. Delicate evaluation and verification are needed for this part.
- **Double lock**: When interacting through the JO (Java-Owned) pattern, the memory is locked and then transmitted. The `SecureMemoryBlock` struct on the Rust side performs another lock on this data. What do you think about this operation?
- **Bare-metal support**: Most modern IoT, HSM, and automotive systems run on ARM-based bare-metal or RTOS environments. Currently, the secure buffer uses system calls like `mlock` to lock memory, but such responses are impossible in bare-metal environments. We need ideas for "possible responses" at the software level.
- CI workflow
- **Strict constant-time check**: Do you think the currently implemented constant-time operation is insufficient, or what do you think should be done for strict verification?
- **How to track memory corruption**: Level 3 (binary memory corruption tracking) of the CC constant-time audit workflow uses Valgrind to perform tests in a Unix environment. However, I have temporarily disabled it because I don't have a big idea about this part yet. Please let me know if you have a good idea about this.
Expand Down
10 changes: 9 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[workspace]
members = ["internal/*", "crypto/*", "core/*"]
members = ["internal/*", "crypto/*", "core/*", "cli", "canary"]
resolver = "2"

[workspace.package]
Expand Down Expand Up @@ -27,17 +27,25 @@ entlib-native-quantum-util = { path = "internal/quantum-util", version = "2.0.0"
### CORE DEPENDENCIES ###
entlib-native-rng = { path = "core/rng", version = "2.0.0" }
entlib-native-hex = { path = "core/hex", version = "2.0.0" }
entlib-native-base = { path = "core/base", version = "2.0.0" }
entlib-native-result = { path = "core/result", version = "2.0.0" }
entlib-native-base64 = { path = "core/base64", version = "2.0.0" }
entlib-native-secure-buffer = { path = "core/secure-buffer", version = "2.0.0" }
entlib-native-constant-time = { path = "core/constant-time", version = "2.0.0" }
### INTERNAL CRYPTO DEPENDENCIES ###
entlib-native-tls = { path = "crypto/tls", version = "2.0.0" }
entlib-native-aes = { path = "crypto/aes", version = "2.0.0" }
entlib-native-hkdf = { path = "crypto/hkdf", version = "2.0.0" }
entlib-native-hmac = { path = "crypto/hmac", version = "2.0.0" }
entlib-native-sha2 = { path = "crypto/sha2", version = "2.0.0" }
entlib-native-sha3 = { path = "crypto/sha3", version = "2.0.0" }
entlib-native-blake = { path = "crypto/blake", version = "2.0.0" }
entlib-native-pkcs8 = { path = "crypto/pkcs8", version = "2.0.0" }
entlib-native-armor = { path = "crypto/armor", version = "2.0.0" }
entlib-native-mlkem = { path = "crypto/mlkem", version = "2.0.0" }
entlib-native-mldsa = { path = "crypto/mldsa", version = "2.0.0" }
entlib-native-pbkdf2 = { path = "crypto/pbkdf2", version = "2.0.0" }
entlib-native-argon2id = { path = "crypto/argon2id", version = "2.0.0" }
entlib-native-chacha20 = { path = "crypto/chacha20", version = "2.0.0" }
entlib-native-key-establishment = { path = "crypto/key-establishment", version = "2.0.0" }
entlib-native-digital-signature = { path = "crypto/digital-signature", version = "2.0.0" }
30 changes: 20 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

[![Version](https://img.shields.io/badge/version-2.0.0-blue?style=for-the-badge)](https://github.com/Quant-Off/entlib-native)
[![License](https://img.shields.io/badge/license-MIT-green?style=for-the-badge)](LICENSE)
[![Language](https://img.shields.io/badge/language-Java-orange?style=for-the-badge)](https://github.com/Quant-Off/entlib-native)
[![Language](https://img.shields.io/badge/language-Rust-000000?style=for-the-badge)](https://github.com/Quant-Off/entlib-native)

![lol](entanglementlib-logo.png)

[얽힘 라이브러리(EntanglementLib)](https://github.com/Quant-Off/entanglementlib)의 모든 보안 기능을 책임지는 Rust 기반의 네이티브 라이브러리입니다.

> [English README](README_EN.md)

EntanglementLib의 보안 기능을 완벽히 수행하기 위한 네이티브 베이스 언어는 Rust가 가장 잘 어울립니다. 이 언어의 가장 큰 장점은 성능 저하 없이 메모리 안정성을 보장하는 거예요. 세부적으로 [소유권 개념(Ownership)](https://doc.rust-kr.org/ch04-00-understanding-ownership.html)은 자원 관리를 용이하게 하고, **데이터 경쟁 없는 동시성 기능**은 통해 멀티 스레드 환경에서도 보안성을 강화해줍니다.
EntanglementLib의 보안 기능을 완벽히 수행하기 위한 네이티브 베이스 언어는 Rust가 가장 잘 어울립니다. 이 언어의 가장 큰 장점은 성능 저하 없이 메모리 안정성을 보장하는 것입니다. 세부적으로 [소유권 개념(Ownership)](https://doc.rust-kr.org/ch04-00-understanding-ownership.html)은 자원 관리를 용이하게 하고, **데이터 경쟁 없는 동시성 기능**은 멀티 스레드 환경에서도 보안성을 강화해줍니다.

Python이나 JPMS(Java Platform Module System)와 일관된 모듈 관리, 캡슐화가 간편한 등, 언어 자체가 유연한 특성을 가지고 있으며 FFI(Foreign Function Interface)로 Java와 간편히 연결되는 것은 충분히 매력으로 다가옵니다.

Expand Down Expand Up @@ -38,34 +38,44 @@ Python이나 JPMS(Java Platform Module System)와 일관된 모듈 관리, 캡

얽힘 라이브러리의 최종 보안 목표는 CC EAL5+ 이상(EAL7)의 등급을 취득하는 것입니다. 이를 위해서는 하드웨어 레벨에서의 엄격한 설계, 정형적 명세 등의 까다롭고 복잡한 준비가 필요하지만 향후 군사급 보안에 다다를 예정입니다. 저는 이를 위한 아키텍처 설계 중에 있습니다.

> [!NOTE]
> 저희는 보안에 관해 더 깊게 논의해보고자 합니다. 이를 위해 [보안 논의 문서](SECURITY_DISCUSSION.md)를 참고해주세요.

## 향후 계획

지원되는 고전적 암호화 알고리즘 모듈을 다양하게 구현해야 합니다.

- AEAD
- [ ] ChaCha20
- BlockCipher
- [ ] AES(128, 192, 256)
- [ ] ARIA(128, 192, 256)
- [X] AES-256 (GCM, CBC-HMAC)
- KDF
- [X] PBKDF2
- [X] Argon2id
- Digital Signature
- [ ] RSA(2048, 4096, 8192)
- [ ] ED25519, ED448 서명
- [ ] X25519, X448 키 합의

이 뿐만 아니라 HMAC, HKDF 등의 암호학적 필수 기능도 제공되어야 합니다.
- Serializer / Encode Pipeline
- [X] DER
- [X] PEM
- PKC Standard Pipeline
- [X] PKCS #8
- [PKCS #11](https://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/os/pkcs11-base-v2.40-os.html)
- [ ] C-API FFI 매핑
- [ ] Dyn Loader (시스템 콜 방식)

양자-내성 암호화(Post-Quantum Cryptography, PQC) 알고리즘은 다음의 목표를 가집니다.

- [ ] [FIPS 203(Module Lattice-based Key Encapsulate Mechanism, ML-KEM)](https://csrc.nist.gov/pubs/fips/203/final)
- [X] [FIPS 203(Module Lattice-based Key Encapsulate Mechanism, ML-KEM)](https://csrc.nist.gov/pubs/fips/203/final)
- [X] [FIPS 204(Module Lattice-based Digital Signature Algorithm, ML-DSA)](https://csrc.nist.gov/pubs/fips/204/final)
- [ ] [FIPS 205(Stateless Hash-based Digital Signature Algorithm, SLH-DSA)](https://csrc.nist.gov/pubs/fips/205/final)

위 PQC 알고리즘이 구현되면 다음의 TLS 기능도 제공되어야 합니다.
그리고 다음의 TLS 기능도 제공되어야 합니다.

- [ ] TLS 1.3
- [ ] [`draft-ietf-tls-ecdhe-mlkem`](https://datatracker.ietf.org/doc/draft-ietf-tls-ecdhe-mlkem/)에 따른 X25519MLKEM768

PKIX나 JWT 및 CWT, OTP 등, 아직 갈 길이 멀다는 것이 실감됩니다.
- [ ] X9.146 QTLS 확장 표준

## 인증 및 규정 준수 필요

Expand Down
Loading
Loading