Tiếng Việt

Công cụ dành cho nhà phát triển · Máy tính hàm băm SHA

Tổng kiểm tra trùng khớp không phải là chữ ký: Tính toàn vẹn và tính xác thực

· Tại sao nó quan trọng

sha-256 mật mã bảo vệ

Tổng kiểm tra trên cùng một trang với bản tải xuống so với chữ ký trên một tài liệu khóa chung riêng biệt
Hình minh họa vector ToolAcre gốc

SHA-256 được xuất bản cho phép người dùng phát hiện bản tải xuống bị lỗi nhưng nếu kẻ tấn công kiểm soát trang thì họ cũng sẽ kiểm soát tổng kiểm tra. Bài đăng này tách biệt tính toàn vẹn khỏi tính xác thực và giải thích những gì chữ ký thêm vào.

Tổng kiểm tra trên cùng một trang với trang tải xuống — tại sao nó bảo vệ khỏi bị hỏng nhưng không bảo vệ được máy chủ bị xâm nhập

Bản phát hành phần mềm được xuất bản có tổng kiểm tra SHA-256 trên cùng trang với bản tải xuống. Người dùng có thể tìm nạp kho lưu trữ, băm nó và so sánh kết quả với giá trị được công bố. Nếu chúng khớp nhau thì quá trình tải xuống không bị hỏng. Đây là xác minh tính toàn vẹn và là một kiểm tra thực tế và hữu ích. Tuy nhiên, nếu kẻ tấn công xâm phạm máy chủ web lưu trữ bản phát hành, chúng có thể thay thế tệp nhị phân, tính toán lại SHA-256 của nó và cập nhật tổng kiểm tra trên trang. Người dùng xác minh tổng kiểm tra và phần mềm độc hại của kẻ tấn công dường như đến từ nhà xuất bản. Hệ thống hoạt động chính xác như thiết kế nhưng không trả lời được câu hỏi mà người dùng nghĩ là họ đang hỏi.

Đây không phải là lỗi của tổng kiểm tra. Đó là một quan sát chính xác về những gì tổng kiểm tra làm và không làm. Tổng kiểm tra chứng minh rằng hai bản sao dữ liệu giống hệt nhau. Nó không chứng minh được ai đã tạo ra dữ liệu. Đó là sự khác biệt giữa tính toàn vẹn và tính xác thực, đồng thời việc nhầm lẫn chúng là một trong những lỗi bảo mật phổ biến nhất trong quá trình xác minh bản phát hành. Nhiều hệ thống bị hỏng không phải vì tổng kiểm tra của chúng sai mà vì người dùng tin tưởng chúng sẽ trả lời những câu hỏi mà họ không thể trả lời.

Hàm băm chứng minh điều gì - rằng hai đầu vào có cùng byte và không có gì về người tạo ra chúng

Tính toàn vẹn là một thuộc tính của chính dữ liệu. Nếu bạn có một tệp và SHA-256 của nó và tệp đó chưa được sửa đổi thì hàm băm sẽ khớp. Hàm băm chứng minh rằng mỗi byte không thay đổi so với khi nó được tính toán. Nếu tệp bị hỏng do lỗi truyền, lỗi ổ đĩa hoặc bit bị lật trên cáp mạng thì hàm băm sẽ không khớp. Đây là những gì tổng kiểm tra làm tốt. Họ rất giỏi trong việc phát hiện các vụ tai nạn và tham nhũng ngẫu nhiên. Họ thất bại trước một đối thủ cũng có thể tính toán các hàm băm.

Tính xác thực là thuộc tính của tuyên bố về người đã tạo ra dữ liệu. Câu hỏi "tệp này có đến từ nhà xuất bản mà tôi tin tưởng không?" về cơ bản là khác với câu hỏi "tệp này đã được sửa đổi chưa?" Bản thân hàm băm không thể trả lời câu hỏi về tính xác thực vì bất kỳ ai cũng có thể tính toán hàm băm. Kẻ tấn công sửa đổi tệp có thể tính toán hàm băm mới và đăng nó dễ dàng như nhà xuất bản hợp pháp có thể. Băm là đối xứng; cả người phòng thủ và kẻ tấn công đều có khả năng tính toán như nhau.

Yêu cầu về kênh đáng tin cậy - tại sao tổng kiểm tra chỉ đáng tin cậy ở nơi bạn nhận được nó

Yêu cầu về kênh đáng tin cậy là thông tin chi tiết quan trọng. Tổng kiểm tra chỉ đáng tin cậy như kênh mà nó đi qua. Nếu bạn tải xuống tệp nhị phân phần mềm từ CDN chính thức của nhà xuất bản và tải xuống tổng kiểm tra từ cùng một máy chủ thì chúng sẽ đi theo cùng một đường dẫn. Việc xâm phạm máy chủ có nghĩa là kẻ tấn công kiểm soát cả hai. Tổng kiểm tra cung cấp khả năng bảo vệ chống lại sai sót trong quá trình phân phối—một tệp bị hỏng sẽ không khớp—nhưng không chống lại kẻ tấn công kiểm soát nguồn. Tổng kiểm tra và tệp chia sẻ một điểm lỗi.

Nếu tổng kiểm tra được xuất bản riêng biệt, trên một máy chủ khác, với các biện pháp kiểm soát truy cập khác nhau thì nó sẽ mang lại khả năng bảo vệ tốt hơn. Kẻ tấn công xâm phạm trang chính sẽ cần xâm phạm cả hai vị trí để giả mạo một cặp phù hợp. Điều này tốt hơn nhưng nó vẫn dựa vào hai điểm kiểm soát độc lập để đảm bảo an toàn. Kẻ tấn công bây giờ phải xâm phạm hai hệ thống thay vì một, làm tăng chi phí của cuộc tấn công. Nhưng nó vẫn chưa phải là bằng chứng xác thực; nó chỉ là một cuộc tấn công tốn kém hơn.

Chữ ký liên kết hàm băm với danh tính — cách ký thông báo bằng khóa riêng sẽ tăng thêm tính xác thực

Chữ ký số giải quyết vấn đề này bằng cách liên kết dữ liệu với danh tính bằng mật mã. Nhà xuất bản tạo một cặp khóa: khóa riêng họ giữ bí mật và khóa chung họ xuất bản. Họ ký vào tệp bằng cách tính toán một bản tóm tắt và sau đó mã hóa bản tóm tắt đó bằng khóa riêng của họ. Kết quả là chữ ký. Người dùng xác minh chữ ký bằng cách giải mã nó bằng khóa chung của nhà xuất bản và kiểm tra xem kết quả có khớp với bản tóm tắt được tính toán của tệp đã nhận hay không. Mật mã tạo ra sự bất đối xứng mà tổng kiểm tra không thể đạt được.

Nếu điều này thành công, hai điều đã được chứng minh: dữ liệu khớp với thông báo mà nhà xuất bản đã ký và khóa riêng được sử dụng để ký nó khớp với khóa chung được xuất bản. Điều đó chứng tỏ nhà xuất bản đã tạo ra nó chứ không chỉ kẻ tấn công đã làm điều đó. Khóa chung phải đi qua một kênh bảo mật—thường là chứng chỉ từ cơ quan cấp chứng chỉ đáng tin cậy—nhưng khi bạn có khóa chung, bạn có thể xác minh chữ ký từ nhà xuất bản đó vô thời hạn. Cuộc tấn công hiện yêu cầu đánh cắp khóa riêng, việc này khó hơn nhiều so với việc xâm phạm máy chủ web.

Ví dụ đã hoạt động - ba tình huống đe dọa (nhân bản bị hỏng, trang bị xâm nhập, nội bộ độc hại) và tổng kiểm tra và chữ ký mỗi lần phát hiện

Ba kịch bản đe dọa minh họa sự khác biệt. Tình huống một: máy nhân bản tải xuống bị hỏng do lỗi ngẫu nhiên. Tổng kiểm tra bắt được nó; chữ ký bắt được nó. Cả hai đều hoạt động tốt như nhau vì không cần phải đánh bại kẻ tấn công. Tình huống hai: máy nhân bản bị xâm phạm bởi kẻ tấn công thay thế tệp và tổng kiểm tra. Tổng kiểm tra không bảo vệ được; chữ ký vẫn hoạt động vì kẻ tấn công không có khóa riêng và không thể giả mạo chữ ký hợp lệ. Kẻ tấn công có thể đăng bất cứ thứ gì nhưng chữ ký chứng tỏ nó không phải của nhà xuất bản.

Trường hợp ba: CDN bị xâm phạm nhưng chữ ký đã được xuất bản qua một kênh khác. Tổng kiểm tra trên CDN không thể tin cậy được nhưng việc xác minh chữ ký vẫn hoạt động vì kiểm tra tính toàn vẹn được liên kết bằng mật mã với khóa của nhà xuất bản chứ không phải với kênh. Kẻ tấn công bây giờ phải giả mạo chữ ký, yêu cầu khóa riêng. Chữ ký là xác minh duy nhất tồn tại sau sự thỏa hiệp của máy chủ. Đây là lý do tại sao chữ ký lại cần thiết cho tính xác thực; chúng là công cụ duy nhất chứng minh danh tính bất chấp sự xâm phạm của kênh.

Vai trò của TLS và các giới hạn của nó — bảo mật truyền tải bảo vệ quá trình tải xuống trong quá trình thực hiện chứ không phải máy chủ của nhà xuất bản

Bảo mật vận chuyển bảo vệ kết nối đến máy chủ được đặt tên theo chứng chỉ. Nó có thể ngăn người quan sát trên đường dẫn thay thế byte tải xuống, nhưng nó không thể khiến nguồn gốc của nhà xuất bản bị xâm phạm trở nên trung thực. Nếu nguồn gốc đó cung cấp bản lưu trữ đã sửa đổi và tổng kiểm tra mới được tính toán trên TLS hợp lệ, thì cả hai đều đến nơi nguyên vẹn và vẫn mô tả nội dung do kẻ tấn công kiểm soát.

Đây là lý do tại sao việc vận chuyển, tính toàn vẹn và tính xác thực là các lớp riêng biệt. TLS bảo mật kênh, thông báo so sánh byte và chữ ký liên kết kết quả xác minh với việc kiểm soát khóa riêng. Không có lớp nào được mô tả là chứng minh thuộc tính được cung cấp bởi lớp khác, ngay cả khi quy trình phát hành kết hợp hợp lý cả ba.

Điều này không bao gồm những gì - nguồn gốc phân phối khóa và tin cậy, vốn là phần cứng của chữ ký

Phân phối khóa là ranh giới cứng nhắc mà máy tính tổng hợp này không vượt qua được. Trình xác minh chữ ký vẫn cần một chuỗi khóa công khai hoặc chứng chỉ xác thực và chính sách xoay vòng, thu hồi và các thuật toán được chấp nhận. Chữ ký hợp lệ về mặt toán học dưới một khóa không đáng tin cậy chỉ chứng tỏ rằng người nắm giữ khóa không đáng tin cậy đó đã ký các byte.

Theo đó, các kịch bản đã hoạt động sẽ dừng khi khóa đáng tin cậy đã có sẵn. Họ không quy định việc ghim chứng chỉ, cơ sở hạ tầng khóa công khai hoặc nghi thức phát hành khóa. Những lựa chọn triển khai đó cần có thiết kế được xem xét riêng; ToolAcre cung cấp thông báo đơn giản có thể được ký chứ không phải gốc tin cậy được sử dụng để xác thực danh tính.

Bài học rút ra: tổng kiểm tra tính toàn vẹn, chữ ký để xác thực — máy tính băm ToolAcre SHA tính toán các bản tóm tắt; xác minh ai đã xuất bản chúng là một bước riêng biệt

Công cụ tính hàm băm ToolAcre SHA tính toán mặt toàn vẹn của xác minh này. Sử dụng nó để băm tệp đã tải xuống và kiểm tra giá trị đã xuất bản. Nếu chúng khớp nhau thì quá trình tải xuống không bị hỏng. Nhưng nếu chúng trùng khớp vì kẻ tấn công viết lại cả hai thì chỉ xác minh tính toàn vẹn sẽ không phát hiện được. Công cụ này trung thực về hạn chế này và không yêu cầu xác minh tính xác thực. Chỉ dành cho tính toàn vẹn, tổng kiểm tra nhanh và tốt. Để xác thực, bạn cần có chữ ký. TLS cung cấp bảo mật truyền tải cho chính quá trình tải xuống. Kết nối đến máy chủ được mã hóa và xác thực, do đó kẻ tấn công trên mạng không thể sửa đổi tệp trong quá trình truyền. Tuy nhiên, TLS không giúp ích gì nếu bản thân máy chủ bị xâm phạm. Máy chủ bị xâm nhập có thể phân phối bất kỳ tệp nào qua bất kỳ kết nối TLS an toàn nào. Đây là lý do tại sao việc xác minh cấp ứng dụng—tổng kiểm tra và chữ ký—có vai trò tách biệt với bảo mật truyền tải.

Một mô hình phổ biến trong các bản phát hành phần mềm là xuất bản cả tổng kiểm tra và chữ ký. Tổng kiểm tra rất thuận tiện; người dùng có thể xác minh chúng một cách nhanh chóng bằng lệnh shell một dòng. Chữ ký cung cấp tính xác thực cho người dùng có khóa chung của nhà xuất bản. Trước tiên, người dùng có thể kiểm tra tổng kiểm tra để vượt qua tính toàn vẹn nhanh chóng, sau đó xác minh chữ ký dựa vào khóa được lưu trong khóa GPG của họ để xác thực. Hai bước kiểm tra này phục vụ các mục đích khác nhau và có thể được phân lớp để bảo vệ theo chiều sâu. Phần khó khăn của chữ ký là sự phân phối chìa khóa và sự tin cậy. Bạn cần khóa công khai của nhà xuất bản và bạn cần tin tưởng rằng đó thực sự là của họ. Đây là vấn đề mà các cơ quan cấp chứng chỉ tồn tại để giải quyết: họ ký chứng chỉ của nhà xuất bản và chứng chỉ CA gốc được tải sẵn trong trình duyệt và hệ điều hành. Đối với dự án nhỏ hơn, bạn có thể xuất bản khóa GPG trên một trang web riêng biệt, cứng nhắc hoặc trên máy chủ khóa công khai. Tổng kiểm tra rất rẻ để xác minh; chữ ký yêu cầu quản lý nguồn gốc tin cậy. Sự phức tạp bổ sung là cái giá của tính xác thực.