Xem tóm tắt nhanh tại https://ostechnix.com/debian-linux-reproducible-builds/.
Tóm tắt nhanh
- Debian 14 "Forky" sẽ áp dụng bắt buộc build tái lập, yêu cầu bất kỳ ai dùng cùng mã nguồn và hướng dẫn build đều có thể tạo ra các tệp nhị phân giống hệt nhau từng bit.
- Sáng kiến này nhằm bảo mật chuỗi cung ứng phần mềm bằng cách chuyển niềm tin từ hạ tầng build sang mã nguồn có thể kiểm tra, đảm bảo mọi can thiệp ở cấp build đều bị phát hiện ngay qua hash mật mã không khớp.
- Hiện tại, dự án đạt kết quả ấn tượng. Với các kiến trúc phổ biến như amd64 và arm64, hơn 97% phần mềm trong kho Debian "Forky" đã có thể tái lập.
Giới thiệu
Hãy tưởng tượng bạn tải một bản cập nhật phần mềm và biết chắc chắn rằng không ai can thiệp vào nó. Bạn không cần phải "tin tưởng" nhà phát triển hay máy chủ build. Bạn có thể tự chứng minh điều đó. Đây là mục tiêu của build tái lập, và Debian đang biến nó thành bắt buộc và là phần cốt lõi của tương lai.
Build tái lập chính xác là gì?
Nói một cách đơn giản, một build được gọi là tái lập nếu bất kỳ ai cũng có thể lấy cùng mã nguồn, cùng môi trường và cùng hướng dẫn để tạo ra một bản sao giống hệt nhau từng bit của phần mềm.
Điều này có nghĩa là tệp cuối cùng, dù là tệp thực thi hay gói phân phối, phải hoàn toàn giống nhau, đến từng byte cuối cùng. Cách chính để xác minh là dùng hàm hash mật mã để so sánh các tệp. Nếu hash khớp, bạn biết phần mềm là xác thực.
Tại sao bit-for-bit giống hệt lại quan trọng?
Bạn có thể thắc mắc tại sao cần một tiêu chí khắt khe như vậy. Câu trả lời là bảo mật chuỗi cung ứng.
Thông thường, khi bạn cài đặt một gói qua apt, bạn đang tin tưởng rằng máy chủ build của Debian đã biên dịch đúng mã nguồn bạn thấy trên mạng. Nhưng nếu máy chủ đó bị hack thì sao? Một kẻ tấn công tinh vi có thể chèn "cửa hậu" vào tệp nhị phân mà không động đến mã nguồn.
Build tái lập giải quyết vấn đề này. Vì đầu ra phải giống hệt, bất kỳ ai cũng có thể tự build lại mã để xác minh. Nếu máy chủ phát hành tệp nhị phân đã bị can thiệp, một lần build lại độc lập sẽ tạo ra hash khác, phát hiện ngay cuộc tấn công.
Điều này chuyển trọng tâm niềm tin từ hạ tầng build vô hình sang mã nguồn có thể kiểm tra.
Thách thức: Loại bỏ tính bất định
Đạt được mức độ hoàn hảo này là khó vì hầu hết quy trình build đều bất định. Chúng chứa các biến thể nhỏ, ngẫu nhiên làm thay đổi tệp cuối cùng. Để build có thể tái lập, nhà phát triển phải săn lùng và sửa các "lỗi" phổ biến sau:
- Dấu thời gian: Các công cụ thường nhúng thời gian hiện tại vào tệp nhị phân. Giải pháp là dùng biến môi trường
SOURCE_DATE_EPOCHđể cung cấp dấu thời gian cố định, nhất quán. - Thứ tự tệp: Hệ thống tệp thường trả về danh sách tệp theo thứ tự ngẫu nhiên. Nhà phát triển dùng các công cụ như
disorderfsđể buộc thứ tự sắp xếp, có thể dự đoán trong quá trình build. - Đường dẫn build: Trình biên dịch đôi khi ghi lại đường dẫn thư mục tuyệt đối nơi nhà phát triển làm việc. Dùng các cờ như
-ffile-prefix-mapđể loại bỏ các đường dẫn cục bộ này, khiến tên thư mục không còn quan trọng. - Biến thể CPU: Đôi khi, ngay cả số lõi CPU được dùng cũng có thể thay đổi đầu ra.
Debian 14 Forky: Bắt buộc mới
Cộng đồng Debian đã làm việc về vấn đề này hơn một thập kỷ. Giờ đây, họ biến nỗ lực đó thành yêu cầu.
Debian 14 (tên mã "Forky"), dự kiến ra mắt vào 2027, sẽ áp dụng bắt buộc build tái lập. Theo quy định mới này, các gói phần mềm phải có khả năng tái lập để được đưa vào phiên bản "Stable" của bản phân phối.
Nếu một gói không thể tái lập, nó sẽ không được phép di chuyển từ kho "Unstable" sang kho "Testing". Điều này có nghĩa là nếu không đáp ứng tiêu chuẩn, gói đó sẽ không có mặt trong bản phát hành Stable cuối cùng.
Debian build lại mọi thứ như thế nào
Debian không chỉ hy vọng mọi thứ đều tái lập; họ kiểm tra liên tục. Dự án https://reproduce.debian.net/ cố gắng build lại mọi tệp nhị phân trong kho lưu trữ để xác minh.
Quy trình làm việc của họ như sau:
- Điều phối: Một công cụ gọi là
rebuilderdquản lý hàng đợi các gói cần kiểm tra. - Tái tạo môi trường: Công cụ
debrebuildxem xét tệp.buildinfođể biết chính xác phiên bản phụ thuộc nào đã được dùng trong build gốc. - Build lại: Dùng
sbuild, hệ thống tái tạo môi trường chính xác đó và biên dịch mã để xem hash kết quả có khớp với hash gốc không.
Hiện tại, kết quả rất ấn tượng. Với bản phát hành Debian 14 "Forky" sắp tới, các kiến trúc chính thống như amd64 và arm64 đã có tỷ lệ tái lập trên 97%.
Bạn có thể xác minh từ liên kết sau:
Trang này hiển thị liệu các gói trong bản phát hành Debian 14 sắp tới có thể được build lại độc lập và vẫn tạo ra tệp nhị phân giống hệt nhau từng bit hay không.
Các ảnh chụp màn hình sau đây hiển thị kết quả tái lập cho các gói arch:all trong Debian 14 "Forky":
Trang web hoạt động như sau:
- Debian phát hành một gói.
- Các máy chủ build lại độc lập tìm nạp cùng mã nguồn và hướng dẫn build.
- Họ build lại gói từ đầu bằng các công cụ như
rebuilderd,debrebuild,mmdebstrap, vàsbuild. - Tệp nhị phân đã build lại được so sánh với tệp nhị phân chính thức của Debian.
- Nếu hash khớp chính xác, gói được coi là có thể tái lập.
Trong liên kết này, bạn cũng sẽ tìm thấy:
- các trang kiến trúc khác nhau như amd64, arm64, i386, riscv64, v.v.
- thống kê về các lần tái lập thất bại,
- tìm kiếm gói,
- trạng thái worker tái lập.
Dưới đây là kết quả tái lập cho các gói arch:amd64 trong Debian 14 Forky:
Kết quả tái lập cho các gói arch:arm64 trong Debian 14 Forky:
Kiểm tra ngoài mã nguồn
Trong khi khả năng tái lập chứng minh tệp nhị phân khớp với mã nguồn, Debian cũng dùng https://wiki.debian.org/autopkgtest để đảm bảo phần mềm thực sự hoạt động.
Không giống kiểm thử đơn vị tiêu chuẩn, vốn kiểm tra một thành phần hoạt động trong nội bộ, autopkgtest thực hiện kiểm thử tích hợp toàn bộ gói. Nó chạy gói trong môi trường ảo để đảm bảo gói tương tác đúng với phần còn lại của hệ thống, chẳng hạn như kiểm tra xem chương trình có bị crash nếu thiếu tệp cấu hình không.
Một tiêu chuẩn mới cho ngành
Debian không đơn độc. Các dự án như https://f-droid.org/docs/Reproducible_Builds/ cũng đang thúc đẩy khả năng tái lập trong hệ sinh thái Android để đảm bảo người dùng nhận được chính xác mã mà nhà phát triển dự định.
Bằng cách tiến tới build tái lập, Debian đang đặt ra một tiêu chuẩn cao về trách nhiệm giải trình và minh bạch trong mã nguồn mở. Đây là một đầu tư mạnh mẽ vào bảo mật, bảo vệ cả nhà phát triển và người dùng khỏi các cuộc tấn công tinh vi vào hạ tầng số của chúng ta.
Tài nguyên:
Chủ đề: https://ostechnix.com/tag/announcements/, https://ostechnix.com/tag/cryptography/, https://ostechnix.com/tag/cybersecurity/, https://ostechnix.com/tag/debian-14-forky/, https://ostechnix.com/tag/linux/, https://ostechnix.com/tag/package-management/, https://ostechnix.com/tag/reproducible-builds/, https://ostechnix.com/tag/security/, https://ostechnix.com/tag/source-code/, https://ostechnix.com/tag/supply-chain-security/




