Repository navigation
Release/1.0.0 - #1
Merged
Merged
Conversation
- 한국어 (README_KR.md) - English (README.md)
- DHKEM(P-256, HKDF-SHA256)을 RFC 9180 방식으로 추가하고 RFC 부록 벡터로 검증 - P-256 + ML-KEM-768 하이브리드 KEM 추가 (pqc 피처) - KEM 캡슐화와 복호화를 pqc 피처와 무관하게 노출, usage EXPORT 비트 추가 - Go 와이어 상수 동기화
- 수신자 KEM 공개키로 캡슐화한 공유 비밀에서 파생한 AES-256-GCM으로 키 재료 봉인 - 패키지 헤더(kem alg, alg, usage, key id, label, context, salt, enc) 전체 인증 - 내보내기는 EXPORT usage와 부분집합 usage만 허용, 가져오기는 context 일치를 강제 - 대칭 키만 교환 대상으로 제한
- KeyInspect 0x0011, KeyExport 0x0030, KeyImport 0x0031 메시지와 한도 (kms-wire, Go wire) - 적합성 벡터 생성기를 conformance/wire에 두고 벡터 재생성 (frame 31, reject 36) - kms-core 서버 디스패치와 두 코어 간 교환 테스트
- Inspect, ExportKey, ImportKey와 한도 사전 검사 - 가짜 코어 단위 테스트, 두 코어 프로세스 간 실제 교환 통합 테스트 - 호스트 테스트에 race detector 적용
- 코어가 인증하는 교환 컨텍스트 (송신자, 수신자, 시각, nonce) - 송신자 신원 키로 서명되는 KXP1 봉투, 자기 서명 KID1 신원 카드와 지문 - 구성원 id 규칙과 알고리즘 종류 검사, 실제 코어 기반 서명 검증 테스트
- 키, 구성원 카드, 노드 신원, inbox 레코드를 0700 디렉터리와 0600 파일로 보관 - 임시 파일과 fsync, link 기반 원자적 생성, 덮어쓰기 금지 - 소유자, 권한, 심볼릭 링크, 미지 필드, 후행 데이터 검사
- init, card, member add/list, key gen/list/info/send/receive, encrypt, decrypt, version - 봉투와 카드는 파일로 주고받아 네트워크 없이 교환 완결 - 실제 코어로 두 노드 간 끝대끝 테스트, 빌드 시 버전 임베드
- 초기화, 열기, 키 생성, 암복호화, 구성원 추가, 보내기, 받기의 성공과 실패 기록 - 감사 기록 실패 시 동작 자체를 실패로 처리
- flock으로 직렬화하고 추가 전 꼬리를 증분 재검증해 체인 연속성 유지 - 로그 축소 탐지
- 노드 초기화 시 P-256 TLS 키와 자기 서명 인증서 생성, 개인키는 코어 봉인 키로 암호화해 저장 - 신원 카드에 TLS 공개키(SPKI)를 포함해 지문과 자기 서명으로 바인딩 - TLS 공개키로 구성원을 찾는 조회 추가
- 카드의 TLS 공개키를 고정해 서버와 클라이언트를 상호 인증, CA 없이 명부만으로 신뢰 결정 - POST /v1/inbox는 서명과 수신자, 인증된 피어와 송신자 일치를 검증한 뒤 보관 - 노드에 inbox 보관, 목록, 수락, 거절 추가와 push 클라이언트
- kmsd는 노드를 열고 mTLS inbox API를 제공, SIGTERM 시 정상 종료, --version - JSON 설정 파일 (미지 필드 거부, 권한 검사)과 플래그 우선순위 - kmsctl key push, inbox list/accept/reject, peer health
- kms-core --version은 엔진 버전, fips, pqc 빌드 여부를 출력하고 서빙 로그에 버전 포함 - 헤더와 본문 디코더에 대한 go fuzz 타겟 (디코드 후 재인코딩 일치 검사)
- make dist 재현 가능 tarball (SOURCE_DATE_EPOCH, GNU tar 정규화, 경로 remap)과 SHA256SUMS - cargo-deny 정책 (라이선스, 소스, 와일드카드)과 make audit - CI 워크플로 (Linux x86_64/arm64, macOS 테스트, FIPS 정적 빌드 검증, 공급망 점검), actions는 커밋 SHA로 고정 - race 테스트에만 cgo 사용
- 기본 빌드를 GOFIPS140=certified (v1.0.0-c2097c7c)로 하고 GOFIPS140=off로 해제 가능 - kmsd, kmsctl 버전 출력과 기동 로그에 go_fips 상태 표시
- 서명 키와 KEM 키의 공개키를 코어가 봉인된 비밀에서 직접 계산 (ML-KEM은 FIPS 203 dk 구조에서 추출) - 노드는 저장된 공개키를 코어 결과와 대조해 KEM 공개키 바꿔치기 차단 - 적합성 벡터 재생성 (frame 32, reject 38)
- 노드마다 코어 봉인 감사 서명 키를 두고 항목마다 도메인 분리된 (seq, hash) 체크포인트 서명 - 열 때 체인과 최신 체크포인트 서명을 검증해 코어 없이 재계산한 로그 거부 - 노드 레코드에 감사 키 추가, 키 label과 용도 대조 강화, kmsctl audit verify 전체 검증
- 인증된 피어와 봉투의 송신자를 서명 검증 전에 대조하고 미등록 송신자는 400으로 응답 - 저장소 임시 파일 이름을 무작위로 만들어 중단 후 남은 파일이 쓰기를 막지 않도록 수정 - kmsctl 파일 입력에도 1 MiB 상한 적용
- advisories까지 cargo-deny 한 도구로 점검해 advisory DB 경로 충돌 제거 - make audit은 기존 DB로 오프라인 점검, CI는 최신 DB로 점검
- cargo metadata와 Cargo lock 파일 체크섬, Go 빌드 정보로 결정적 SBOM 생성 (표준 라이브러리만 사용) - 런타임 의존성과 빌드 전용 의존성 구분, Go FIPS 모듈과 빌드 설정 기록 - tarball 내부와 별도 파일로 배포하고 SHA256SUMS에 포함
- 작업 디렉터리 기준 설정 탐색 때문에 루트에서는 vendor 대체가 적용되지 않아 오프라인에서 실패하던 문제 수정
- 적합성 프레임을 4만 회 변이해 디코더가 패닉 없이 거부하거나 정규 인코딩만 수용하는지 검사 - 외부 의존성 없이 결정적 시드로 동작
- all-features 테스트가 aws-lc-fips-sys를 빌드하므로 고정된 setup-go 사용
- 빌드와 설치, 노드 초기화부터 오프라인과 온라인 키 교환까지 빠른 시작 - kmsctl, kmsd, kms-core 옵션 참조와 키 용도, 디렉터리 구조, 보안 운영 주의 사항, 문제 해결
- 신원 카드의 잘못된 배포를 방지하기 위한 *.card 추적 해제
- 코어를 루트 디렉토리에서 실행하므로 상대 경로가 플래그와 환경 변수 모두에서 실패하던 문제 수정 - 노드 디렉토리 생성 전에 코어 실행 파일을 검사해 실패한 init이 빈 노드를 남기지 않도록 함
- --dir, --core, --allow-unlocked-memory, --timeout을 init 등 하위 명령 뒤에 써도 적용 - 인자가 없던 명령도 같은 플래그 파싱을 사용
Member
Author
|
|
- 사용법 정리한 USAGE 한/영 문서 추가 - USAGE 문서 링크되도록 README 수정
- Linux 러너의 8MiB 한도 때문에 mlockall 테스트가 실패하던 문제 수정
Quant-TheodoreFelix
force-pushed
the
release/1.0.0
branch
from
October 14, 2026 14:39
c5cb07c to
edd745b
Compare
- 루트 키는 0으로 덮어쓴 뒤 삭제하고 새로 만든 디렉토리는 함께 제거 - 실패 직후 같은 경로로 다시 init 가능
- 우선순위는 플래그, 설정 파일, 환경 변수, 기본값 순
- LICENSE, NOTICE 추가와 crate license 필드 설정 - SBOM과 배포 tarball에 라이선스 정보 포함
- SHA256SUMS 서명과 검증, make sign과 verify-dist 타겟
- SECURITY 한/영 작성, README와 USAGE에 보안과 라이선스, 서명 검증 반영
- minisign 공개키를 저장소 루트에 두고 SECURITY 문서에 키 id와 키 문자열 기재 minisign.pub, SECURITY.md, SECURITY_KR.md
Member
Author
|
보안 검토 진행 예정 |
- 피어 조회를 인증서 CN과 SPKI로 한 번에 찾고 일치할 때만 코어 검증 - kmsd 동시 연결 수 제한 추가
- 발신자당 대기 봉투 64개 초과 시 거부하고 API는 429 응답
- audit verify가 head를 출력하고 --anchor로 기록해 둔 head 포함 여부 검사 - 끝부분 잘라내기와 되돌린 뒤 이어 쓴 로그를 탐지
- 코어가 키 생성, 봉인, export와 import에서 라벨 검사 - 호스트 키 생성에서도 미리 검사해 터미널 출력 위조 차단
- SHA256SUMS 형식 검사와 목록에 없는 tarball, SBOM 거부 - 버전 지정 시 해당 tarball 포함 여부 확인, 해시 검사 strict 적용
- 피어 uid가 다르면 소켓을 0666으로 열고 디렉토리 권한으로 접근 제한 - 다른 uid 연결은 기록 후 끊고 계속 대기, 공용 쓰기 디렉토리 거부 - 소켓 삭제 전 같은 파일인지 확인
- 감사 로그 head 기록과 --anchor 검증 절차, 소켓 디렉토리 권한 요건 - 받은 편지함과 동시 연결 상한, 라벨 문자 제한, 문제 해결 항목 추가 - README의 소켓 모드 설명을 실제 지원 범위에 맞게 수정
- 미릴리즈 경고 문구를 외부 보안 검토 전 경고로 바꾸고 지원 버전 표 갱신 - 설치 요건에 지원 아키텍처와 glibc 최소 버전 명시, 체크섬 검사에 --ignore-missing 적용 - 재현 빌드에 필요한 빌드 환경과 git 체크아웃 조건 명시
Quant-TheodoreFelix
force-pushed
the
release/1.0.0
branch
from
October 15, 2026 01:39
9a48f9e to
8bea993
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
수정필