
Bazzite에 TPM 부팅 증명 계층을 더한 것입니다. 진행 중인 작업: 빌드는 검증되지 않았고, UKI 메커니즘은 미해결 상태입니다. 사양: github.com/plunder707/attested-gaming
안티치트 벤더가 배포판 이름 허용 목록에 의존하는 대신 무엇을 검증할 수 있는지 테스트하기 위한 실험적인 Linux 부팅 증명(attestation) 이미지 및 증거 하네스입니다.
메커니즘, 위협 모델, 벤더 사양은 plunder707/attested-gaming에 있습니다. 이 저장소는 증거를 생성하는 이미지입니다.
상태: 소스 메커니즘 미리보기. 설치 불가, 프로덕션 신뢰 불가.
GitHub Actions 실행 31157890393 및 31159951490은 Bazzite 기반 QCOW2를 빌드하고, swtpm과 게스트 네트워크 없이 QEMU/OVMF에서 부팅하고, 영구 EK/AK 핸들을 프로비저닝하고, 게스트 내부에서 SHA-256 PCR 7, 11, 12, 15에 대한 원시 쿼트(raw quote)를 검증했습니다. 그 경계 영수증의 SHA-256은
ad5ef12592cb5f4d1dfa8f0da88148931d48f0e6018924b2de4c766e1523ddaf입니다. 별도의 검증기 워크플로 31160003873은 이 저장소의 최종 에이전트 커밋b918392를 격리된 소프트웨어 TPM에 대해 실행하여 AK 등록, 원시 쿼트 검증, 재생 거부, 서명 변조 거부, QEMU/OVMF TPM 연결을 통과했습니다.부팅된 결과는 또한 Bazzite 정책 차단 요인을 확인해 줍니다. UKI 파일이나 systemd-stub 신호가 없었고, 의도된 lockdown 인자가 없었으며, PCR 11과 15는 0으로 남아 있었습니다. PCR 12도 0이었지만 이는 독립적인 실패가 아닙니다. 포함된 UKI 커맨드 라인은 PCR 11에 속하며, PCR 12는 외부 커맨드 라인 입력을 기록하므로 입력이 없으면 0으로 유지되는 것이 맞을 수 있습니다. 시큐어 부트 키 등록, UKI 기반 커맨드 라인 측정, 하드웨어 출처 증명, 이벤트 로그 재생, 전송 바인딩, 부트 정책 승인은 여전히 해결되지 않았습니다. 두 성공 실행 모두 실제 작동하는 프로덕션 증명 시스템을 구축하지는 못합니다.
별도의 Fedora 밀봉 이미지 양성 대조군은 실행 31218059725에서 두 번, 병합된 소스 헤드에서 실행 31219745053으로 다시 통과했습니다. 이는 하네스가 변경 불가능한 업스트림 서명 UKI를 부팅하고, 펌웨어가 선택한 경로와 로드된 파일 해시를 사전 부팅 검사에 결합하고, 0이 아닌 PCR 11을 관찰하고, 서명되지 않은
.cmdline변조를 거부할 수 있음을 증명합니다. 이는 하네스 대조군일 뿐입니다. 모든 제조사, 정책, 프로덕션 신뢰 플래그는 여전히 false이며, Bazzite 미리보기를 설치 가능하게 만들지 않습니다.그 후 별도의 서명된 PCR 12 정책 애드온 경로는 실행 31234464516에서 두 번 통과했습니다. 업스트림 UKI와 PCR 11은 바이트 단위로 동일하게 유지되었고, 두 서명 부팅 모두
lockdown=confidentiality module.sig_enforce=1을 정확히 한 번 적용했으며 PCR 12ca62dd5f...a8f5를 재현했습니다. 서명 후 변조는 거부되었고 0인 PCR 12 기준 상태로 돌아갔습니다. 이는 배포 가능한 키 계층 구조나 운영체제 신뢰 정책이 아니라 제한된 메커니즘을 증명합니다.이 소스는 검토와 재현 가능한 에뮬레이션을 위해 제공됩니다. 게시된 GHCR 이미지는 없으며 설치 가능한 신뢰할 수 있는 배포판이 아닙니다.
완료된 Bazzite 실험은 BOOTED_IMAGE_CANARY.md에 명시되어 있습니다. 재현 및 소스
빌드 지침은 BUILDING.md에 있습니다. UKI 기본 증거와 그 독립적인 승인 기준은
UKI_BASE_DECISION.md에 기록되어 있습니다. 서명된 PCR 12 정책 애드온 실험은
FEDORA_PCR12_ADDON_CANARY.md에 별도로 명시되어 있습니다.
마일스톤 순서와 중지 규칙은 ROADMAP.md에서 추적됩니다. 별도의 로드된 UKI 하네스 대조군은
FEDORA_SEALED_POSITIVE_CONTROL.md에 명시되어 있습니다.
제거되거나 패치되는 것은 없습니다. 다음 네 가지가 위에 추가됩니다:
tpm2-tools 및 tpm2-tss — 에이전트가 런타임에 필요로 합니다./usr/lib/attestos/cmdline의 커널 커맨드 라인 — lockdown=confidentiality와
module.sig_enforce=1을 포함합니다.attestos-provision — TPM 내부에 별개의 영구 RSA EK 및 AK ID를 생성하고, 인증서가 존재할 때
NV 저장소에서 인증서를 읽어내는 일회성(one-shot) 유닛입니다.attestos-agent — 루프백에서 소켓 활성화되며, 엄격한 attestos.tpm/v1 ID, 활성화 또는 쿼트
챌린지에 원시 TPM 증거로 응답합니다. 에이전트는 절대 신뢰 판정을 반환하지 않습니다.Bazzite는 Fedora에서 파생되었으며, Fedora 계열이 현재 안티치트 허용 목록에서 차단하는 대상입니다. 여기서 증명(attestation)이 작동함을 입증하는 것이 증명할 가치가 있는 사례입니다. SteamOS를 기반으로 구축한다면 아무것도 입증하지 못할 것입니다. SteamOS는 이미 통과가 허용되어 있으므로, 거기서 성공적인 데모를 해봐야 이미 갖고 있는 접근 권한을 얻게 될 뿐입니다.
Bazzite는 또한 레이어링되도록 설계되었습니다. OCI 이미지이므로 이 저장소는 미러와 설치 프로그램을 갖춘 배포판이 아니라 Containerfile과 GitHub Action입니다.
이것이 모든 것이 의미를 갖는지를 결정하는 부분입니다. lockdown=confidentiality는 /dev/mem, 실행 중인
커널에 대한 kprobes, 서명되지 않은 모듈 로딩을 차단합니다. 그 보장은 정책이 사용자가 편집할 수 있는 부트로더
설정에만 존재한다면 아무 가치가 없습니다. 그렇지 않으면 사용자가 인자를 삭제하고, 동일한 커널 측정값으로 부팅한
다음, 누락된 정책에 대해 아무것도 말해주지 않는 쿼트를 제시할 수 있습니다.
통합 커널 이미지(UKI)는 커널, initrd, 포함된 커맨드 라인을 하나의 서명된 PE 바이너리로 결합하여 PCR 11로 측정합니다. 별도로 서명된 systemd 커맨드 라인 애드온은 업스트림 UKI를 변경하지 않은 채 추가 정책을 PCR 12로 확장할 수 있습니다. 어느 경로든 정확히 로드된 아티팩트에 결합되어 검증기에 의해 재생되어야 합니다. 파일 존재 여부나 0이 아닌 PCR만으로는 충분하지 않습니다.
Bazzite는 UKI를 사용하지 않으며, 이제는 의심이 아니라 확인된 사실입니다. 해당 Containerfile은 UKI 커널 패키지를 적극적으로 제외합니다:
dnf5 -y config-manager setopt "*fedora*".exclude="mesa-* kernel-core-* \
kernel-modules-* kernel-uki-virt-* steam"
systemd-ukify는 저장소 어디에도 나타나지 않습니다. 따라서 이 이미지가 제공하는 cmdline 파일은 현재 의도
선언에 불과합니다. UKI가 없으면 이를 봉인할 수단이 없고, 사용자가 부트로더에서 편집할 수 있으며, PCR 11은
설계가 가정하는 대상을 측정하지 않습니다.
Bazzite를 고치는 것은 build.sh의 한 줄이 아닙니다. 이미지가 부팅되는 방식을 바꾸거나 이미 systemd-stub을
통해 부팅하는 베이스를 채택하는 등, 신뢰할 수 있는 커널 사전 측정 경로가 필요합니다.
실험을 통해 실질적인 선택지는 다음과 같이 좁혀졌습니다:
업스트림 Fedora UKI는 배포판 서명을 유지할 수 있지만, 별도의 attestos 정책 애드온은 여전히 펌웨어, Shim 또는 MOK가 승인한 서명 키를 필요로 합니다. 서드파티 커널은 같은 문제의 더 큰 버전을 갖고 있습니다. 배포 옵션은 다음과 같습니다:
일회용 Fedora 하네스는 실행 로컬 인증서를 복사된 UEFI DB에 등록하여 배포 모델을 주장하지 않고 메커니즘을 증명합니다. 여전히 수용된 최종 사용자 키 등록, 폐기 또는 복구 계약은 없습니다. 이는 엔지니어링 문제만큼이나 신뢰 당사자(relying party)의 문제입니다.
아직 지원되는 설치 명령은 없습니다. 특히 ghcr.io/plunder707/attestos:latest는 게시되지 않습니다. 현재
미리보기는 소스 검토와 격리된 QEMU/swtpm 재현 전용입니다. BUILDING.md를 참조하십시오.
Containerfile base image and the single RUN that calls build.sh
build_files/build.sh the attestation layer
system_files/ agent, provisioning script, systemd units
image-template.env image name and registry organisation
.github/workflows/ build-only and isolated evidence canaries
Justfile local build and test targets
build_files/와 system_files/ 밖의 모든 것은
ublue-os/image-template에서 가져온 것이며 그들의 작업물입니다.
31143048491에서 커밋 14e3a21에 대해 확인됨. 빌드는
치명적이지 않은 DNF 상태 린트 경고 두 개를 출력했습니다.bootc status 배포 주장을 검증된 이미지 ID로 전환하는 방법. 이 주장은
메타데이터이지 서명된 권위가 아니며, bootc가 없는 시스템에서는 명시적으로 unavailable입니다.bootc 루트에서 PCR 15가 설계가 가정하는 방식으로 채워지는지 여부.런타임 측정 질문에는 추가 하드웨어가 필요 없는 QEMU(OVMF 및 swtpm 포함)가 필요합니다. 연결과 원시 TPM 프로토콜 메커니즘은 이제 그 환경에서 통과했지만, 빌드된 이미지를 부팅하고 이벤트 로그와 정책을 검증하는 것은 별도의 실험으로 남아 있습니다. 벤더 수용에는 벤더와의 대화가 필요합니다.
Apache-2.0, 이 이미지가 기반으로 하는 템플릿과 동일합니다.