知識庫 在引擎蓋下
驗證建置
只有當您正在運行的程式碼是先前的程式碼時,開源才有幫助 發表。 Nymchat 是確定性構建的,因此您可以從內部自行檢查 應用程式或從終端。
為了方便起見,此頁面是機器翻譯的。英文原件為適用版本。
可重複的構建
建立應用程式會發出 build-manifest.json 包含來源提交,a
每個服務的 HTML、JavaScript 和 CSS 資產的 SHA-256 雜湊值以及單一
bundleHash 整個資產集。
輸出僅取決於來源內容 - 甚至記錄的建置時間也是
提交的時間戳而不是建置運行的時刻——因此任何人都可以重建相同的時間戳
commit 得到字節相同的檔案並且相同 bundleHash.
然後,GitHub Action 獨立重建每個提交並簽署建置來源
哈希和清單的證明,因此有一個簽名記錄綁定
bundleHash 到儲存庫中的提交,由除
部署。
關於對話框檢查的內容
關於 在標題中,在瀏覽器中即時執行檢查。
它重新取得頁面實際運行的每個資產,使用 Web Crypto API 對其進行雜湊處理,然後
與清單進行比較。然後——這是重要的部分——
重新計算 bundleHash 從哈希值 它 只是計算出來的,不是從
清單聲明的任何內容,並在存儲庫的簽名證明中查找
透過 GitHub API。
這就是阻止部署為其自身提供擔保的原因:將修改後的文件與 匹配清單仍然失敗,因為重新計算的哈希沒有證明。
| 地位 | 方法 |
|---|---|
| &查看;已驗證的官方應用程式 (n/n) | 每個資產都匹配,重新計算的捆綁散列由存儲庫證明, 和 該頁面由官方網域提供。 |
| ⚠ 已驗證版本·不是官方應用程序 | 該程式碼是真實的且經過驗證的,但這是另一個網域上的鏡像。如果驗證失敗,鏡像將無法刪除此警告。 |
| ✗ 不匹配 | 資產不會根據清單內容進行哈希處理。 |
| ✗ 非官方構建 | 重新計算的捆綁雜湊沒有來自儲存庫的證明——一個自製的清單。 |
| ⚠ 無法取得出處 | 無法存取 GitHub API,因此無法以任何方式檢查證明。 |
自己驗證一下
重建提交“關於”對話框名稱並進行比較:
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 命令。開發商可能被迫保持沉默 這樣的命令,但不能強迫說謊,所以金絲雀變質或消失是 本身就是訊號。
它住在 canary.json 位於儲存庫的根目錄並直接獲取
來自 GitHub,因此其歷史記錄是可審計的,與部署的網站所說的無關。
關於對話框對其進行顏色編碼:
| 顏色 | 方法 |
|---|---|
| 綠色的 — 全部清除 | 已簽署、目前且簽署與開發人員的金鑰相符。尚未收到任何秘密命令。 |
| 黃色的 — 逾期或未全部清除 | 它沒有在規定的日期或它的 allClear 標誌是假的。不能排除沉默令。 |
| 紅色的 — 簽名無效或消失 | 簽章與開發人員的金鑰不匹配,或檔案已完全刪除。將此視為嚴重警告。 |
新鮮度錨
簽名的金絲雀嵌入了簽名時最新的比特幣區塊高度和哈希值。 在區塊存在之前,不可能知道該哈希值,這證明金絲雀是 簽署 後 一個特定的時間點,而不是幾個月前批量預先簽署。 「關於」對話方塊將錨點連結到區塊資源管理器,以便您可以檢查它。