< Quay lại Tin tức

Bản phát hành SSP hoàn toàn tái lập được — Docker và GPG

·4 phút đọc·Bởi SSP Editorial Team
Phù hiệu SECURITY với biểu tượng khiên có dấu tick, ổ khóa, chip xử lý và chìa khóa trên tiêu đề «Bản phát hành SSP hoàn toàn tái lập được».

Vào 2025-08-03, SSP Wallet v1.25.0 đã giao hai thay đổi mà, gộp lại, vá một trong những điểm yếu im lặng lâu đời nhất của khâu phát hành ví: bạn không còn phải tin rằng tệp nhị phân trên cửa hàng là tệp nhị phân trong kho mã. Bản phát hành nay được biên dịch tất định bên trong Docker và được ký bằng GPG. Bất kỳ ai — không chỉ chúng tôi, không chỉ một kiểm toán viên — đều có thể biên dịch lại từ mã nguồn và xác minh rằng kết quả khớp, từng byte một, với những gì chúng tôi đã công bố.

Đừng tin, hãy xác minh — áp dụng cho nhị phân ví

Châm ngôn bitcoin «đừng tin, hãy xác minh» thường được nói về giao dịch. Nó áp dụng, với cùng sức nặng, cho phần mềm ký các giao dịch ấy. Mã nguồn của một ví có thể mở và được kiểm toán mà vẫn xuất xưởng một nhị phân bị xâm phạm, vì đường đi từ mã đến nhị phân chạy qua một máy chủ build, một bước đóng gói, một khóa ký mã và một lần tải lên cửa hàng. Bất kỳ mắt xích nào cũng có thể bị nhiễm độc. Một token CI bị rò, một nhị phân bị tráo trong pipeline, một build agent bị can thiệp — không cái nào trong số này chạm tới kho mã công khai và không cái nào hiện ra trong git log.

Câu trả lời phòng thủ cho mô hình mối đe dọa đó là chính tệp nhị phân phải có thể xác minh được. Không phải «có thể xác minh vì chúng tôi hứa». Có thể tái lập bởi người lạ.

Build tất định bằng Docker

Đó là điều v1.25.0 mang lại. Mọi bản phát hành SSP nay đều được biên dịch bên trong một container Docker với image gốc ghim cứng, phiên bản toolchain ghim cứng và môi trường hoàn toàn cô lập. Build không có truy cập mạng ở nơi không cần, không rò hệ thống tệp của host, không nướng timestamp hay đường dẫn riêng của máy vào đầu ra. Đầu ra là hàm tất định của đầu vào.

Hệ quả thực tế: mã nguồn y hệt sinh ra nhị phân y hệt với checksum khớp. Lấy tag, biên dịch trong container đã được tài liệu hóa trên máy của bạn, và bạn sẽ nhận cùng SHA-256 như chúng tôi. Nếu không, một thứ gì đó đã lệch giữa tag và nhị phân được công bố — và đó chính là tín hiệu bạn cần, vì kết cục duy nhất trung thực là «nhị phân khớp với mã» hoặc «không khớp».

Đây là biện pháp giảm thiểu tấn công chuỗi cung ứng. Nó không giả định máy chủ build là trung thực. Nó không giả định laptop của lập trình viên sạch. Nó không giả định gì và trao cho người lạ công cụ để kiểm tra.

Bản phát hành ký bằng GPG

Tính tái lập nói với bạn rằng một nhị phân tương ứng với một cây mã. Tự nó không nói cho bạn biết cây mã nào là cây mã thực. Đó là điều chữ ký GPG giải.

Mỗi artefact của v1.25.0 — các bundle tiện ích mở rộng, tệp checksum — đều được ký bằng khóa phát hành SSP. Chữ ký được công bố cạnh release trên GitHub. Để xác minh một bản tải, bạn nhập khóa công khai một lần, chạy gpg --verify với chữ ký, và công cụ sẽ cho biết tệp có còn nguyên vẹn không và liệu khóa đã ký có phải khóa bạn mong đợi hay không.

Hai cơ chế bù trừ. Chữ ký GPG chứng minh «đây là tệp SSP đã phát hành». Build tất định chứng minh «tệp này tương ứng với commit này». Cùng nhau chúng xóa khoảng cách tin cậy giữa commit và lúc cài đặt.

Cách tự bạn xác minh một bản phát hành

Trang release trên GitHub là nguồn có thẩm quyền cho các bước chính xác — vân tay khóa công khai, tên các tệp chữ ký, lệnh Docker để tái lập một bản build. Phiên bản ngắn: nhập khóa phát hành SSP, tải tệp checksum cùng chữ ký, chạy gpg --verify với chữ ký, rồi sha256sum -c các checksum với nhị phân bạn đã tải. Nếu cả hai vượt qua, artefact còn nguyên và xác thực.

Người dùng nâng cao muốn đi xa hơn có thể clone tag, chạy build Docker đã được tài liệu hóa và xác nhận SHA-256 thu được khớp với checksum công bố. Phần lớn người dùng sẽ không bao giờ làm vậy. Điểm mấu chốt là một số người sẽ làm, và chỉ cần một trong số họ phát hiện ra sai lệch là cuộc tấn công lộ ngay.

Điều này thay đổi gì

SSP là mã nguồn mở kể từ v1.0.0 và đã được Halborn kiểm toán trọn vẹn từ kỳ rà soát toàn diện đầu 2025. v1.25.0 đóng kín cạnh thứ ba của tam giác đó. Mã nguồn mở nghĩa là bạn có thể đọc mã; được kiểm toán nghĩa là các chuyên gia đã xem xét; tái lập được cộng ký nghĩa là thứ chạy trên máy bạn thực sự là mã bạn đã đọc.

Ba bảo đảm này độc lập và bù trừ. Một nhị phân mã nguồn mở không tái lập được vẫn có thể giấu sự xâm phạm trong pipeline build. Một dự án được kiểm toán không tái lập được vẫn có thể giao một nhị phân bị can thiệp mà kiểm toán viên chưa bao giờ thấy. Với v1.25.0, «xác minh trước khi cài» thôi là khát vọng và trở thành một danh sách kiểm cụ thể.

Đó là câu chuyện chuỗi cung ứng của một ví tự quản, được kể theo cách duy nhất có thể kể trung thực.

Chia sẻ bài viết này

Bài viết liên quan