Bản dựng có thể tái tạo cung cấp một mối liên kết có thể kiểm chứng giữa mã nguồn đã công bố và tệp nhị phân phát hành. Phạm vi bản dựng có thể tái tạo hiện tại của chúng tôi áp dụng cho bản phát hành F-Droid trên Android. Chúng tôi dự định mở rộng phạm vi này sang các kênh phân phối Android và iOS khác.
Android
F-Droid
Gem Wallet sử dụng hạ tầng bản dựng độc lập của F-Droid để dựng lại APK F-Droid và xác minh APK này trước khi công bố.
Mô hình xác minh
Gem Wallet công bố một APK F-Droid đã được ký cho mỗi bản phát hành. Về phía mình, các máy chủ bản dựng của F-Droid thực thi công thức bản dựng công khai trong một môi trường sạch:
- Siêu dữ liệu F-Droid chọn chính xác một commit Git và một phiên bản Android NDK.
- F-Droid lấy mã nguồn ở commit đó từ kho mã nguồn công khai của Gem Wallet.
- Các tập lệnh bản dựng có thể tái tạo công khai cài đặt chuỗi công cụ native đã được ghim phiên bản và chạy
:app:assembleFdroidRelease. - Quá trình dựng tạo ra một APK chưa được ký. F-Droid tải xuống APK tương ứng do nhà phát triển ký và xác nhận rằng APK này được ký bởi chứng chỉ có dấu vân tay được khai báo trong
AllowedAPKSigningKeys. - F-Droid sao chép chữ ký APK sang sản phẩm được dựng lại và xác minh chữ ký đó. Chữ ký APK Signature Scheme v2/v3 của Android bao phủ toàn bộ APK bên ngoài khối chữ ký, vì vậy để xác minh thành công, phần nội dung của APK được dựng lại phải khớp đến từng byte với bản phát hành của Gem Wallet.
- F-Droid chỉ công bố APK do nhà phát triển ký khi quá trình xác minh thành công. Bản phát hành không thể tái tạo sẽ không được công bố.
Kiểm soát tính tất định của bản dựng
Gem Wallet bao gồm các thư viện native viết bằng Rust, khiến đầu ra nhạy cảm với những khác biệt về trình biên dịch, trình liên kết, NDK, nền tảng máy chủ và trình tối ưu hóa. Bản dựng F-Droid kiểm soát các đầu vào này bằng cách:
- ghim phiên bản của chuỗi công cụ Rust và
cargo-ndktrongandroid/reproducible/versions.sh; - cài đặt
cargo-ndkvới--locked, trong khi các phụ thuộc Rust của ứng dụng được phân giải theo tệpCargo.lockđã được commit; - ghim chính xác revision của Android NDK trong cả dự án Android lẫn siêu dữ liệu F-Droid;
- thực hiện bản dựng trên máy chủ Linux
x86_64với các đường dẫn tường minh tới trình liên kết và trình lưu trữ của NDK; - giới hạn các mục tiêu native của APK trong
armeabi-v7avàarm64-v8a, độc lập với máy chủx86_64thực hiện bản dựng; - sử dụng kênh sản phẩm
fdroidchuyên biệt, không có các mô-đun push và đánh giá của Google; - tắt tối ưu hóa R8 bằng
-dontoptimizeđể ngăn đầu ra DEX và các định danh ánh xạ không mang tính tất định; - chạy Gradle mà không dùng daemon hay bộ nhớ đệm cấu hình và xóa các bộ nhớ đệm chuyển đổi trước khi thực hiện bản dựng phát hành.
Commit nguồn chính xác, các lệnh dựng, đường dẫn đầu ra, revision của NDK, URL của APK upstream và chứng chỉ ký được cho phép đều công khai trong siêu dữ liệu F-Droid. Các tập lệnh cấu hình Rust, Cargo, chuỗi công cụ NDK và Gradle được duy trì cùng với mã nguồn ứng dụng tại android/reproducible.
Thuộc tính bảo mật và hạn chế
Một lần xác minh F-Droid thành công chứng minh rằng APK đã ký do Gem Wallet công bố có thể được tái tạo từ commit nguồn và công thức bản dựng đã khai báo. Việc dựng lại được thực hiện bên ngoài hạ tầng của Gem Wallet, nhờ đó giảm sự phụ thuộc vào quy trình phát hành của chúng tôi như một điểm tin cậy duy nhất.
Khả năng tái tạo không chứng minh rằng mã nguồn không có lỗ hổng, rằng mọi phụ thuộc đều đáng tin cậy, hay rằng chuỗi công cụ biên dịch được chọn không bị xâm phạm. Những rủi ro đó đòi hỏi việc rà soát mã nguồn, kiểm soát phụ thuộc và bảo mật chuỗi công cụ, bên cạnh bản dựng có thể tái tạo.
Trạng thái bản dựng và các bản phát hành đã được xác minh có tại trang F-Droid của Gem Wallet.
Universal APK và Google Play
APK universal của Gem Wallet và bản phát hành trên Google Play hiện chưa thuộc phạm vi xác minh F-Droid được mô tả ở trên. Việc hỗ trợ bản dựng có thể tái tạo cho các kênh phân phối Android này được lên kế hoạch cho tương lai.
iOS
Bản phát hành trên App Store hiện chưa thể tái tạo. Việc hỗ trợ bản dựng có thể tái tạo cho iOS và xác minh độc lập tệp nhị phân App Store được lên kế hoạch cho tương lai.