Skip to content

Windows 운영체제 지원 및 동작 테스트 필요 #2

Open

Description

@Quant-TheodoreFelix

Windows에서 실행 가능한 바이너리 산출도 아직 진행하지 않은 상태입니다.

Makefile 자체가 Windows를 고려하지 않고 설계되어 있어서 기능 테스트 및 수정 필요합니다.

Activity

  1. jaewon9892 commented on Oct 15, 2026

    @jaewon9892

    Windows 빌드 실패 보고

    빌드 대상

    Windows CMD에서 Rust core와 Go host의 네이티브 빌드를 시도함.

    시도 방법

    프로젝트 Makefile의 기본 빌드 명령을 CMD 환경에 맞춰 실행함.

    core

    cargo +1.95.0 build --release --frozen -p kms-core --features pqc
    Image

    host

    set GOTOOLCHAIN=local
    set GOPROXY=off
    set GOFLAGS=-mod=vendor -trimpath
    set CGO_ENABLED=0
    set GOFIPS140=certified
    go build -ldflags "-s -w -X main.version=1.0.0" -o bin/ ./cmd/...

    Image

    결과

    • core 실패: MSVC 링커 link.exe를 찾지 못해 중단됨. 프로젝트 코드의 Windows 호환성 확인 단계까지 진행하지 못함.
    • host 실패: Windows에서 제공되지 않는 syscall.Socketpair, syscall.Stat_t, syscall.Flock 등의 참조로 컴파일 오류 발생.

    Co-authored-by: Codex noreply@openai.com

  2. Quant-TheodoreFelix commented on Oct 15, 2026

    @Quant-TheodoreFelix
    MemberAuthor

    windows 지원은 현재로썬 장기적으로 봐야 할 것 같네요.

    현재는 코어의 격리 부분이 Unix에만 있는 기능에 의존하기 때문에 unix 쪽 진행이 우선되어야 할 것 같습니다.

  3. changed the title [-]Windows 운영체제 동작 테스트 필요[/-] [+]Windows 운영체제 지원 및 동작 테스트 필요[/+] on Oct 21, 2026
  4. Quant-TheodoreFelix commented on Nov 3, 2026

    @Quant-TheodoreFelix
    MemberAuthor

    이 작업은 v1.1.0 작업을 위한 브랜치에서 진행하겠습니다.
    이 릴리즈의 핵심은 Windows 환경 지원이 될 것 같네요.

  5. Quant-TheodoreFelix commented on Nov 3, 2026

    @Quant-TheodoreFelix
    MemberAuthor

    @jaewon9892 Windows 환경 테스트 요청 드립니다. 현재 저장소는 draft PR #4 에서 Windows 환경 지원을 위한 v1.1.0 릴리즈를 구현 중에 있습니다. 중요한 핵심 테스트들은 Github CI(Actions)를 통해 Windows 2025, Windows 11 ARM 환경에서 바이너리가 동작하는 것을 확인했으나, 미처 발견하지 못 한 중대한 문제를 검토하기 위해 실제 머신에서의 테스트가 필요합니다.

    테스트를 위한 가장 빠른 방법은 PR CI 산출물을 받는 것입니다. https://github.com/Quant-Off/pairier/actions/runs/41609123092 에서 환경에 맞는 산출물을 다운로드 받으신 후, 압축을 해제하여 다음 세 가지 바이너리의 존재 유무를 확인해주세요. 모든 바이너리는 하나의 디렉토리에 속해 있습니다.

    • kms-core.exe
    • kmsd.exe
    • kmsctl.exe

    이 과정은 빠르지만 테스트 환경에선 권장되지 않습니다. 가능한 경우 소스를 직접 빌드해주세요. Visual Studio Build Tools(C++ 워크로드), cmake, NASM(x86_64만), Rust 1.95.0 MSVC, Go 1.27.3 가 필요하나 몇 가지는 이미 설치되어있을 수 있습니다. 이후 make 명령을 통해 빌드하실 수 있습니다. 테스트 스위트까지 돌리기 위해선 소스 빌드가 필요합니다.

    테스트는 관리자 권한이 아닌 일반 PowerShell에서 해주세요. 가능하다면 일반 유저 계정(관리자가 아닌 계정)을 사용해주세요. whoami /priv 명령을 통해 SeDebugPrivilege가 Disabled이거나 없는지 확인해주세요. 없거나 Disabled 상태이어야 합니다. 노드 디렉토리는 %LOCALAPPDATA%\pairier\<이름>처럼 NTFS 경로를 사용하며, OneDrive 동기화 폴더와 네트워크 드라이브는 사용하지 않는걸 권장드립니다.

    준비가 완료된 경우 다음과 같이 테스트를 진행해주세요.

    # kmsctl 바이너리 버전 확인
    PS> kmsctl.exe version
    
    <# 노드 디렉토리 설정 후 kmsctl 바이너리 실행
    --id 플래그의 경우 다른 이름이어도 됩니다. 혼동만 없도록 해주세요. #>
    PS> kmsctl.exe --dir $env:LOCALAPPDATA\pairier\bob init --id bob --pqc

    바이너리 실행 출력에서 core_fips false, go_fips true를 확인하고, icacls $env:LOCALAPPDATA\pairier\bob에 본인 계정과 SYSTEM만 보이는지 확인해주세요.

    # 카드 교환
    PS> kmsctl.exe card --out bob.card

    이전 명령에서 설정한 id 를 사용하여 카드 교환을 테스트해주세요. 카드를 만드신 경우 제 환경에서 member add를 진행하겠습니다.

    이후 다음과 같이 키 페어(쌍)를 생성해주세요.

    PS> kmsctl.exe key gen

    그리고 key send/key receive 을 사용하여 저와 양방향으로 키를 교환해주세요. 이 과정과 중간에 산출(출력)된 값은 Discord를 사용하여 저에게 직접 전달해주세요. 절대 이 이슈에 첨부하지 마세요. 이 과정을 오프라인 전달로 인지하겠습니다.

    온라인 전달 테스트도 필요합니다. 다음 명령으로 서버를 띄워주세요.

    PS> kmsd.exe --listen 0.0.0.0:7443

    제 쪽에서 헬스체크(health check)를 진행하겠습니다. Windows 환경에선 inbox 명령을 통해 통신 확인 바랍니다.

    그리고 다음 명령을 통해 감사(audit) 테스트를 진행해주세요.

    PS> audit verify
    PS> audit verify --peer

    마지막으로 거부 동작을 확인해주세요. icacls <노드 디렉토리> /grant Users:R 명령을 통해 권한을 하나 추가한 뒤 명령이 store: insecure directory로 중단되는지, UNC 경로를 --dir 플래그로 전달하면 거부되는지 확인해주시고 권한은 /remove Users로 되돌려주세요. 부가적으로 다음 항목도 점검 바랍니다.

    프로세스 DACL 확인 (이건 CI에서 못 한 항목임)

    • kmsd.exe를 띄운 상태에서 같은 사용자의 비상승 세션으로 작업 관리자에서 kms-core.exe의 "덤프 파일 만들기"를 시도하여 액세스 거부가 나오는지 확인해주세요.
    • 소스 빌드를 했다면 더 정확합니다. core(Rust)에서 cargo test --frozen -p kms-sys process_dacl -- --nocapture를 실행하여 "skipping the access check" 출력 없이 통과해야 합니다.

    위 모든 작업을 직접 시도하실 수도 있겠으나, AI Agent를 사용해도 문제는 없습니다. 진행 상황을 이슈로 보고하고자 하는 경우 "안전한" 출력(또는 산출)부만 게시해주시길 바라며, 제 환경과 상호 작용 또는 교환 등이 필요한 경우는 오프라인을 가정한 Discord 애플리케이션을 사용해주세요. Discord 는 E2EE를 지원하여 안전합니다.

    또한 바이너리 사용법에 대해 궁금하신 경우 USAGE_KR.md 문서를 확인하실 수 있습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions