지식 기반 후드 아래
빌드 확인
오픈 소스는 실행 중인 코드가 원래 있던 코드인 경우에만 도움이 됩니다. 출판. Nymchat은 결정론적으로 구축되었으므로 내부에서 직접 확인할 수 있습니다. 앱이나 터미널에서.
이 페이지는 편의를 위해 기계 번역되었습니다. 영문 원본이 적용되는 버전입니다.
재현 가능한 빌드
앱을 빌드하면 build-manifest.json 소스 커밋을 포함하는
제공된 모든 HTML, JavaScript 및 CSS 자산의 SHA-256 해시와 단일
bundleHash 전체 자산 세트에 대해
출력은 소스 콘텐츠에만 의존합니다. 심지어 기록된 빌드 시간도
빌드가 실행된 순간이 아니라 커밋의 타임스탬프를 사용하므로 누구나 동일한 것을 다시 빌드할 수 있습니다.
커밋은 바이트와 동일한 파일을 가져오고 동일합니다. bundleHash.
그런 다음 GitHub Action은 각 커밋을 독립적으로 다시 빌드하고 빌드 출처에 서명합니다.
해시 및 매니페스트에 대한 증명이므로 다음을 연결하는 서명된 레코드가 있습니다.
bundleHash 커밋이 아닌 다른 것에 의해 생성된 저장소의 커밋에
배포.
정보 대화 상자에서 확인하는 사항
에 대한 헤더에서 브라우저에서 실시간으로 확인을 실행합니다.
페이지가 실제로 실행 중인 각 자산을 다시 가져오고 Web Crypto API로 해시한 다음
매니페스트와 비교됩니다. 그렇다면 – 이것이 중요한 부분입니다 –
다시 계산 bundleHash 해시에서 그것 방금 계산한게 아니라
매니페스트가 주장하는 모든 것을 저장소의 서명된 증명에서 조회합니다.
GitHub API를 통해.
이것이 바로 배포가 자체적으로 보증하는 것을 막는 것입니다. 즉, 수정된 파일을 다음과 함께 제공하는 것입니다. 다시 계산된 해시에 증명이 없기 때문에 일치하는 매니페스트가 여전히 실패합니다.
| 상태 | 수단 |
|---|---|
| &확인하다; 인증된 공식 앱(n/n) | 모든 자산이 일치하고, 다시 계산된 번들 해시가 저장소에 의해 증명됩니다. 그리고 페이지는 공식 도메인에서 제공됩니다. |
| ⚠ 검증된 빌드 · 공식 앱이 아님 | 코드는 진짜이고 증명되었지만 이는 다른 도메인의 미러입니다. 미러는 검증에 실패하지 않고는 이 경고를 제거할 수 없습니다. |
| ✗ 불일치 | 자산은 매니페스트에 명시된 내용으로 해시되지 않습니다. |
| ✗ 비공식 빌드 | 다시 계산된 번들 해시에는 자체 제작 매니페스트인 저장소의 증명이 없습니다. |
| ⚠ 출처 알 수 없음 | GitHub API에 연결할 수 없으므로 어느 쪽이든 증명을 확인할 수 없습니다. |
직접 확인하는 중
About 대화 상자 이름 커밋을 다시 빌드하고 비교합니다.
git clone https://github.com/Spl0itable/NYM
cd NYM
git checkout <commit shown in the About dialog>
npm ci
npm run build # prints "Build hash: <bundleHash>"
인쇄된 해시는 정보 대화 상자의 해시와 해당 커밋의 해시 모두와 일치해야 합니다. 빌드 출처 실행 요약. GitHub CLI를 사용하여 직접 서명을 확인할 수도 있습니다.
gh attestation verify dist/build-manifest.json --repo Spl0itable/NYM
영장 카나리아
영장 카나리아는 개발자가 정해진 일정에 따라 게시한 진술서입니다. ~ 아니다 공개가 금지된 정부의 비밀 명령을 받았습니다. FISA 명령인 국가 안보 서한(National Security Letter)입니다. 개발자는 다음 사항에 대해 침묵을 지킬 수 있습니다. 그러한 명령을 내리지만 강제로 거짓말을 할 수는 없으므로 카나리아는 부패하거나 사라지게 됩니다. 그 자체가 신호다.
그것은에 산다 canary.json 저장소의 루트에 있으며 직접 가져옵니다.
GitHub에서 배포되므로 배포된 사이트의 내용과 관계없이 기록을 감사할 수 있습니다.
정보 대화 상자는 색상으로 구분됩니다.
| 색상 | 수단 |
|---|---|
| 녹색 — 모두 클리어 | 서명됨, 현재 및 서명이 개발자의 키와 일치합니다. 비밀 명령이 접수되지 않았습니다. |
| 노란색 — 기한이 지났거나 모두 명확하지 않음 | 명시된 날짜까지 새로 고쳐지지 않았거나 allClear 플래그는 거짓입니다. 침묵하는 명령도 배제할 수 없습니다. |
| 빨간색 — 서명이 유효하지 않거나 사라졌습니다. | 서명이 개발자의 키와 일치하지 않거나 파일이 완전히 제거되었습니다. 이를 심각한 경고로 간주하십시오. |
신선도 앵커
서명된 카나리아에는 서명 순간의 최신 비트코인 블록 높이와 해시가 포함됩니다. 해당 해시는 블록이 존재하기 전에는 알 수 없었으며, 이는 카나리아가 서명됨 ~ 후에 몇 달 전에 미리 대량으로 서명하지 않고 특정 시점에 서명합니다. 정보 대화 상자는 앵커를 블록 탐색기에 연결하므로 확인할 수 있습니다.