Repository navigation
Windows 지원과 1.1.0 릴리즈 준비 - #4
Open
Quant-TheodoreFelix wants to merge 23 commits into
Open
Quant-TheodoreFelix wants to merge 23 commits into
Quant-TheodoreFelix wants to merge 23 commits into
Conversation
- 코어 버전과 Cargo lock을 이전 값으로 되돌림 - USAGE 버전 출력 예시와 SECURITY 지원 버전 표 원복
- 코어 버전과 Cargo lock, USAGE 버전 출력 예시 갱신 - SECURITY 지원 버전 표를 새 마이너 지원, 이전 버전 미지원으로 갱신 Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
- 브랜치 push에서는 돌리지 않고 PR과 main, 태그에서만 실행 - 같은 ref의 이전 실행은 취소 Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
- libc는 unix 타겟에만, windows-sys는 windows 타겟에만 적용 - vendor 디렉토리 갱신 Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
- unix는 mmap과 mlock, Windows는 VirtualAlloc과 VirtualLock 사용 - harden과 peer 모듈은 unix 타겟에만 컴파일 - kms-engine은 Windows 타겟에서 fips 기능을 컴파일 오류로 거부 Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
- windows-2025와 windows-11-arm에서 실행 - x64에서는 NASM을 설치하고 prebuilt NASM 객체는 쓰지 않음 Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
- kms-sys가 전송, 신원, 파일 보호의 공통 인터페이스를 제공하고 kms-core는 플랫폼 분기 없이 사용 - Windows는 상속한 파이프 핸들과 서버 프로세스의 사용자 SID로 피어를 검증 - Windows는 프로세스 객체 DACL로 같은 사용자의 메모리 읽기를 막고 루트 키 파일은 소유자와 SYSTEM만 허용하는 DACL로 생성 - Windows용 데몬 통합 테스트 추가 Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
- go mod와 USAGE의 Go 버전 갱신 Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
- kms-core는 unsafe 금지라 통합 테스트도 unsafe를 쓸 수 없음 - windows-sys 개발 의존성을 kms-core에서 제거 Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
- fsx가 비공개 디렉토리와 파일 검사, 잠금, 이름 바꾸기를 플랫폼별로 제공하고 Windows는 DACL과 LockFileEx 사용 - winsys가 표준 라이브러리의 LazyDLL로 필요한 Win32 호출만 바인딩 - Windows 코어 스폰은 이름 있는 파이프의 클라이언트 핸들을 상속시키고 handle 인자로 전달 - 감사 로그 잠금을 별도 lock 파일로 옮기고 Unix 전용 테스트는 Windows에서 건너뜀 Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
- 디버그 권한이 켜진 토큰에서는 접근 거부 검증을 건너뜀 Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
- 감사 로그와 위조 로그 테스트 파일을 비공개 디렉토리에 생성 - 설정 테스트의 경로를 JSON으로 이스케이프하고 소켓 모드 테스트는 Windows에서 건너뜀 - 프로세스 DACL 테스트가 건너뛴 이유를 출력 Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
- dist sh가 Windows에서 결정적 zip을 만들고 DIST_ARCH로 아키텍처를 지정 - Makefile의 Windows 차단을 걷어내고 exe 접미사, race 비활성, FIPS 거부 추가 - Windows 러너에서 배포물을 만들어 올리는 CI 잡 추가 Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
- 감사 로그 테스트가 다시 연 로그를 닫지 않아 Windows에서 임시 디렉토리 정리가 실패하던 문제 수정 - 파이프 데몬 테스트가 HELLO를 두 번 보내던 문제 수정 Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
- USAGE에 Windows 빌드 요구 사항, zip 설치와 검증, 운영 방법, 노드 디렉토리 DACL, 문제 해결 항목 추가 - SECURITY에 플랫폼별 차이 표와 Windows 알려진 한계 추가, 호스트와 코어 채널과 키 저장소 설명 갱신 - README 코어 하드닝 항목에 Windows 동작 추가 Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Quant-TheodoreFelix
marked this pull request as ready for review
November 3, 2026 13:02
- 테스트와 lint가 all-features로 fips를 켜지 않도록 패키지별 기능 지정 - 코어 경로와 소스 루트를 cygpath로 변환하고 python과 DIST_ARCH 기본값 지정
- 관리자 권한 세션에서는 새 객체의 기본 소유자가 Administrators가 되어 소유자 검사에 걸리던 문제 수정 - 호스트와 코어의 SDDL에 소유자를 넣고 시작 시 토큰 기본 소유자를 현재 사용자로 설정 - 실패한 테스트가 오류 내용을 출력하게 하고 소유자 회귀 테스트 추가, USAGE와 SECURITY에 설명과 문제 해결 항목 추가
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.
요약
main(0a5f546) 기준입니다. 1.0.1로 준비하던 릴리즈를 1.1.0으로 바꾸고, 그 위에 Windows(x86_64, aarch64) 지원을 올렸습니다. 2.0.0 버전 올림은 되돌렸습니다(dac3e98). 모든 단계가 끝났고 CI는 17개 잡이 모두 통과했습니다(bae9c24, run 41607421768). 실제 Windows PC에서 사람이 한 번 돌려보기 전까지는 초안으로 둡니다.결정 사항
fips=false). kms-engine이 Windows 타겟에서 fips 기능을 컴파일 오류로 거부하고, Makefile은 Windows에서FIPS=1을 거부합니다. 호스트의GOFIPS140=certified는 유지하되, CMVP #5247의 시험 환경에 Windows가 있는지 확인되기 전까지 문서에는 "FIPS 모드 빌드, 검증된 운영 환경 여부 미확인"으로 적습니다.internal/winsys에 LazyDLL 바인딩). Rust는windows-sys를 windows 타겟에만 추가합니다.--handle N)입니다. 노드 디렉토리 기본값은%LOCALAPPDATA%\pairier, 네트워크 드라이브는 거부, DACL은 소유자와 SYSTEM만 허용합니다(설정 파일은 Administrators도 허용).audit.log.lock사이드카 파일로 옮겼습니다.--socket모드, Windows 코어 재현 빌드.단계
Windows CI에서 확인된 것
PROCESS_VM_READ없음)을 읽어서 확인했습니다. 다만 러너 토큰에SeDebugPrivilege가 켜져 있어 같은 사용자의OpenProcess(PROCESS_VM_READ)거부는 CI에서 검증되지 않았습니다. 상승되지 않은 세션에서 확인이 필요합니다.dist-windows잡이pairier-1.1.0-windows-amd64.zip,pairier-1.1.0-windows-arm64.zip과 SBOM을 만들어 산출물(pairier-windows-2025,pairier-windows-11-arm)로 올립니다.실제 Windows PC에서 확인된 것
cargo test -p kms-sys를 돌리자creates_private_file_and_reopens가 실패했습니다. 상승된 토큰은 새 객체의 기본 소유자를 Administrators 그룹으로 두는데, 코드가 소유자를 지정하지 않아 소유자 검사에 걸린 것입니다. CI 러너의 토큰은 UAC로 나뉘지 않아 드러나지 않았습니다.O:<사용자 SID>를 넣고, 두 프로세스가 시작할 때 자기 토큰의 기본 소유자를 현재 사용자로 바꿉니다(코어는restrict_umask, 호스트는winsys초기화). 호스트의SetPrivate는 소유자가 다르면 먼저 소유자를 바꿉니다. 비상승 세션에서는 이전과 같이 동작합니다.CI 사용량
그 밖의 변경
호환성
병합 전 확인
kmsctl node init,kmsd, 다른 OS 노드와key push, 프로세스 DACL 거부 확인병합 후
v1.1.0태그,make dist FIPS=1(Linux 두 아키텍처), 태그 CI의pairier-windows-2025,pairier-windows-11-arm산출물에서 zip과 cdx.json을dist/로 복사dist/에서SHA256SUMS를 다시 만든 뒤 서명. CI 산출물에는.sha256파일이 없으므로sha256sum *.tar.gz *.zip *.cdx.json | LC_ALL=C sort > SHA256SUMS로 합치고, 각 Windows 산출물의SHA256SUMS와 해시가 같은지 확인한 다음make sign,make verify-dist, GitHub 릴리즈 게시origin/release/1.0.1삭제 여부 결정