Cơ sở tri thức Dưới mui xe
Xác minh bản dựng
Nguồn mở chỉ hữu ích nếu mã bạn đang chạy là mã đã được được xuất bản. Nymchat được xây dựng một cách xác định để bạn có thể tự mình kiểm tra từ bên trong ứng dụng hoặc từ một thiết bị đầu cuối.
Trang này được dịch bằng máy để thuận tiện. Bản gốc tiếng Anh là phiên bản được áp dụng.
Bản dựng có thể tái tạo
Việc xây dựng ứng dụng sẽ phát ra một build-manifest.json chứa cam kết nguồn, một
Hàm băm SHA-256 của mọi nội dung HTML, JavaScript và CSS được cung cấp và một
bundleHash trên toàn bộ tập tài sản đó.
Đầu ra chỉ phụ thuộc vào nội dung nguồn - ngay cả thời gian xây dựng được ghi lại cũng là
dấu thời gian của cam kết thay vì thời điểm bản dựng chạy - vì vậy bất kỳ ai xây dựng lại giống nhau
cam kết nhận các tệp giống hệt byte và giống nhau bundleHash.
Sau đó, Hành động GitHub sẽ xây dựng lại từng cam kết một cách độc lập và ký tên nguồn gốc xây dựng
chứng thực cho hàm băm và bảng kê khai, do đó có một bản ghi đã ký kết buộc một
bundleHash tới một cam kết trong kho lưu trữ, được tạo ra bởi một cái gì đó không phải là
triển khai.
Hộp thoại Giới thiệu kiểm tra nội dung gì
Về trong tiêu đề chạy kiểm tra trực tiếp, trong trình duyệt của bạn.
Nó tìm nạp lại từng nội dung mà trang đang thực sự chạy, băm nó bằng API Web Crypto và
so sánh với bảng kê khai. Sau đó - và đây là phần quan trọng - nó
tính toán lại bundleHash từ băm Nó vừa tính toán, không phải từ
bất kỳ điều gì mà bản kê khai tuyên bố và tìm kiếm điều đó trong các chứng thực đã ký của kho lưu trữ
thông qua API GitHub.
Đó là điều khiến quá trình triển khai không thể tự bảo đảm: cung cấp các tệp đã sửa đổi cùng với bảng kê khai phù hợp vẫn không thành công vì hàm băm được tính toán lại không có chứng thực.
| Trạng thái | Có nghĩa |
|---|---|
| &kiểm tra; Ứng dụng chính thức đã được xác minh (n/n) | Mọi nội dung đều khớp, hàm băm gói được tính toán lại được chứng thực bởi kho lưu trữ, Và trang được phục vụ từ tên miền chính thức. |
| ⚠ Bản dựng đã được xác minh · không phải ứng dụng chính thức | Mã này là chính hãng và đã được chứng thực, nhưng đây là bản sao của một miền khác. Một tấm gương không thể loại bỏ cảnh báo này nếu không xác minh được. |
| ✗ Không phù hợp | Một nội dung không băm theo nội dung của bảng kê khai. |
| ✗ Bản dựng không chính thức | Băm gói được tính toán lại không có chứng thực từ kho lưu trữ - một bảng kê khai tự tạo. |
| ⚠ Không thể truy cập được nguồn gốc | Không thể truy cập API GitHub nên không thể kiểm tra chứng thực theo cách nào đó. |
Tự mình xác minh
Xây dựng lại cam kết tên hộp thoại Giới thiệu và so sánh:
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>"
Hàm băm được in phải khớp với cả hàm băm trong hộp thoại Giới thiệu và hàm băm trong cam kết đó bản tóm tắt quá trình xây dựng xuất xứ. Bạn cũng có thể kiểm tra chữ ký trực tiếp bằng GitHub CLI:
gh attestation verify dist/build-manifest.json --repo Spl0itable/NYM
Các ứng dụng Android và iOS
Việc kiểm tra ở trên là kiểm tra ứng dụng web và lý do cần nêu rõ: một ứng dụng gốc không thể làm điều tương tự với chính nó. Những gì chạy trên điện thoại của bạn là mã máy được biên dịch chứ không phải nguồn trong kho lưu trữ và không có gì mà ứng dụng có thể tính toán trên thiết bị liên quan đến nguồn đó. khác.
Android có thể làm điều tốt nhất tiếp theo. Đã cài đặt .apk là một tập tin ứng dụng có thể đọc
và hàm băm, và hàm băm của mọi bản phát hành được xuất bản đều đã được công khai: xuất bản lên
Zapstore
ký một sự kiện Nostr mang theo SHA-256 của APK và SHA-256 của chứng chỉ ký của nó. Vì vậy
Android Về hộp thoại băm APK mà nó đang chạy từ đó, tìm nạp những APK đã ký
các sự kiện, chỉ giữ lại những sự kiện được ký bởi khóa của nhà phát triển và so sánh. Nó cho thấy hai
cũng băm, vì vậy bạn có thể lặp lại việc kiểm tra thiết bị: tải xuống APK đã xuất bản, chạy
sha256sum trên đó và tự mình xem xét sự kiện đó.
Không thể kiểm tra ứng dụng được cài đặt từ Google Play theo cách này, và đó không phải là một dấu hiệu cho thấy bất cứ điều gì là sai. Google ký lại mỗi upload với khóa riêng của nó và xây dựng một APK riêng biệt cho mỗi thiết bị, vì vậy những gì hạ cánh trên điện thoại của bạn không phải là tệp mà nhà phát triển sản xuất và hash của nó không khớp với bất cứ điều gì có thể được phát hành. Ứng dụng nhận ra một Play cài đặt và nói như vậy thay vì báo cáo một sự thất bại. Để kiểm tra một build chính mình, cài đặt APK được phát hành trực tiếp.
iOS hoàn toàn không thể kiểm tra được. Apple mã hóa và ký lại mỗi lần tải xuống riêng lẻ, do đó hàm băm được tính trên iPhone của bạn là duy nhất cho iPhone của bạn và không khớp với gì được xuất bản ở bất cứ đâu. Hộp thoại Giới thiệu nói thẳng điều này thay vì thể hiện thái độ trấn an trạng thái đó không có ý nghĩa gì. Nếu bạn muốn có Nymchat, bạn có thể xác minh trên phần cứng của Apple, hãy sử dụng web app, ứng dụng này sẽ kiểm tra mọi tệp nó đang chạy.
Việc kiểm tra một ứng dụng tự chạy không thể chứng minh ứng dụng đó là trung thực - bất kể ai đã sửa đổi nó cũng có thể xóa séc. Điều nó chứng tỏ là trường hợp thông thường: rằng bản sao bạn đã cài đặt là bản sao đã được xuất bản. Điều đó đáng có vì những giá trị của nó so sánh là công khai, vì vậy ai đó không phải là bạn có thể kiểm tra chúng và không đồng ý.
Lệnh bắt chim hoàng yến
Lệnh bảo đảm là một tuyên bố được xuất bản theo một lịch trình cố định mà nhà phát triển có không nhận được một lệnh bí mật của chính phủ mà họ bị cấm tiết lộ - một Thư An ninh Quốc gia, lệnh FISA. Nhà phát triển có thể bị buộc phải giữ im lặng về mệnh lệnh như vậy, nhưng không thể bắt buộc phải nói dối, nên con chim hoàng yến bị ôi thiu hoặc biến mất là chính nó là tín hiệu.
Nó sống ở canary.json ở thư mục gốc của kho lưu trữ và được lấy trực tiếp
từ GitHub, vì vậy lịch sử của nó có thể được kiểm tra độc lập với bất kỳ điều gì trang web được triển khai nói.
Hộp thoại Giới thiệu mã màu cho nó:
| Màu sắc | Có nghĩa |
|---|---|
| Màu xanh lá - tất cả đều rõ ràng | Đã ký, hiện tại và chữ ký khớp với khóa của nhà phát triển. Không có lệnh bí mật nào được nhận. |
| Màu vàng — quá hạn, hoặc không rõ ràng | Nó không được làm mới trước ngày đã nêu, hoặc allClear cờ là sai. Không thể loại trừ được lệnh im lặng. |
| Màu đỏ — chữ ký không hợp lệ hoặc đã biến mất | Chữ ký không khớp với khóa của nhà phát triển hoặc tệp đã bị xóa hoàn toàn. Hãy coi đây là một cảnh báo nghiêm túc. |
Mỏ neo tươi mát
Canary đã ký sẽ nhúng chiều cao và hàm băm khối Bitcoin mới nhất tại thời điểm ký. Hàm băm đó không thể được biết trước khi khối tồn tại, điều này chứng tỏ chim hoàng yến đã đã ký sau đó một thời điểm cụ thể thay vì được ký trước hàng loạt tháng trước đó. Hộp thoại Giới thiệu liên kết mỏ neo với trình khám phá khối để bạn có thể kiểm tra nó.