Công cụ dành cho nhà phát triển · Máy tính hàm băm SHA
SHA-1 Giải thích về các vụ va chạm: Điều gì vẫn an toàn và điều gì phải di chuyển
· Tại sao nó quan trọng
sha-256 mật mã bảo vệ
Máy quét gắn cờ SHA-1 và ban quản lý hỏi mức độ khẩn cấp. Bài đăng này giải thích những gì một cuộc tấn công xung đột thực hiện và không phá vỡ, nơi SHA-1 vẫn được chấp nhận và cách lập kế hoạch di chuyển.
Máy quét cho biết SHA-1 bị hỏng — nhưng bị hỏng vì lý do gì? Câu hỏi quyết định tính cấp bách của việc di cư
Trình quét an ninh mạng gắn cờ SHA-1 trên cơ sở hạ tầng của bạn. Ban quản lý hỏi nó khẩn cấp đến mức nào. Câu trả lời hoàn toàn phụ thuộc vào mục đích bạn đang sử dụng SHA-1 và câu hỏi đó cho biết liệu bạn có vấn đề về tuân thủ, vấn đề bảo mật đang hoạt động hay chỉ đơn giản là một tạo phẩm cũ phải được lập danh mục. SHA-1 bị phá vỡ về mặt mật mã—các cuộc trình diễn mang tính học thuật đã chứng minh được sự xung đột. Nhưng "hỏng" có nghĩa khác nhau tùy thuộc vào vai trò của SHA-1 trong hệ thống của bạn.
Hàm băm mật mã phục vụ các mục đích khác nhau trong các bối cảnh khác nhau. Đôi khi nó là một tổng kiểm tra bảo vệ chống lại sự tham nhũng vô tình. Đôi khi đó là một cam kết, chẳng hạn như tổng kiểm tra tải xuống đã xuất bản cho phép người dùng xác minh rằng họ đã nhận được tệp mà nhà xuất bản dự định. Đôi khi nó là một phần của chuỗi chữ ký hoặc chứng chỉ, trong đó kẻ tấn công có đủ quyền kiểm soát có thể tạo ra hai tài liệu, cả hai đều có ý nghĩa, chia sẻ cùng một hàm băm và do đó giả mạo xác thực. Mức độ nghiêm trọng của một vụ va chạm SHA-1 phụ thuộc rất nhiều vào vai trò nào trong số những vai trò mà SHA-1 có trong hệ thống của bạn.
Va chạm so với tiền ảnh - tại sao các cuộc tấn công được trình diễn công khai nhắm vào va chạm và điều đó có ý nghĩa gì đối với hàm băm hiện có
Một cuộc tấn công va chạm tạo ra hai đầu vào khác nhau với cùng một đầu ra. Kẻ tấn công không tìm thấy thông báo băm thành một giá trị định trước—đó sẽ là một cuộc tấn công tiền hình ảnh và nó vẫn không khả thi đối với SHA-1. Thay vào đó, một cuộc tấn công va chạm có nghĩa là kẻ tấn công có thể tạo ra hai tài liệu có hàm băm giống hệt nhau. Nếu một hệ thống dựa vào hàm băm để chứng minh hai thứ giống nhau, thì sự va chạm sẽ phá vỡ bằng chứng đó. Kẻ tấn công phải tạo ra cả hai đầu vào, việc này đòi hỏi thời gian và tính toán, nhưng kết quả là hai thứ riêng biệt xuất hiện giống hệt nhau dưới hàm băm.
Một cuộc tấn công tiền ảnh có nghĩa là kẻ tấn công có thể lấy hàm băm SHA-1 đã xuất bản và tìm một số đầu vào khớp với nó. Đó không phải là cách hoạt động của các cuộc tấn công SHA-1. Nếu bạn có kho lưu trữ SHA-1 thông báo và lo lắng về việc liệu tệp có thực sự khớp với chúng hay không thì một cuộc tấn công xung đột không phải là mối đe dọa. Mối đe dọa là liệu ai đó có quyền truy cập vào kho lưu trữ của bạn có thể giả mạo một tệp khác vào cùng một bản tóm tắt hay không. Trong hầu hết các trường hợp, điều đó cũng không thực tế nếu không kiểm soát được quá trình băm. Mô hình tấn công cụ thể cũng quan trọng như thuật toán.
Bản trình diễn 2017 — hai tệp khác nhau có cùng SHA-1, được mô tả định tính và tác phẩm có tiền tố được chọn theo sau
Cuộc tấn công SHAttered từ 2017 đã thể hiện sự xung đột thực tế: hai tệp PDF khác nhau có cùng thông báo SHA-1. Các nhà nghiên cứu đã cẩn thận xây dựng cả hai tệp, biến chúng thành các tệp PDF hợp lệ khi va chạm. Công việc đòi hỏi nỗ lực tính toán đáng kể và phần cứng chuyên dụng. Điều quan trọng là điều đó hoàn toàn có thể xảy ra: khả năng chống va chạm biện minh cho việc sử dụng SHA-1 để bảo mật đã không còn nữa. Cuộc tấn công đã chứng minh rằng hai tài liệu khác nhau về mặt ngữ nghĩa có thể chia sẻ một bản tóm tắt, điều này phá vỡ bất kỳ hệ thống nào coi bản tóm tắt đó là bằng chứng nhận dạng.
Cuộc tấn công tiếp theo trong 2020, được gọi là "SHA-1 là một cuộc tấn công hỗn loạn", đã thực hiện bước tiếp theo: xung đột tiền tố đã chọn. Biến thể này có nghĩa là kẻ tấn công có thể lấy hai tài liệu tùy ý, ghép các hậu tố khác nhau vào mỗi tài liệu và tạo ra xung đột. Đây là cuộc tấn công nguy hiểm đối với chữ ký và chứng chỉ. Kẻ tấn công không phải bắt đầu lại từ đầu; chúng có thể xung đột với hai tài liệu riêng biệt, có ý nghĩa. Điều đó phá vỡ mô hình bảo mật của bất kỳ hệ thống nào ký thông báo SHA-1. Kẻ tấn công có thể tạo ra hai tài liệu có hàm băm giống nhau và cả hai đều có ý nghĩa khác nhau.
Trong đó SHA-1 là không thể chấp nhận được — chữ ký, chứng chỉ và bất kỳ thứ gì mà kẻ tấn công có thể ảnh hưởng đến cả hai bên
Sự khác biệt quan trọng vì SHA-1 vẫn có thể chấp nhận được ở một số vai trò và hoàn toàn không thể chấp nhận được ở những vai trò khác. Trong Git, SHA-1 được sử dụng làm địa chỉ nội dung—tên cho ảnh chụp nhanh cụ thể của tệp. Git không sử dụng SHA-1 để xác thực; đó là một kế hoạch đặt tên. Về mặt lý thuyết, kẻ tấn công có thể tính toán hai trạng thái kho lưu trữ khác nhau có cùng một ID, nhưng điều đó đòi hỏi phải kiểm soát toàn bộ quá trình tạo nội dung và đẩy cả hai phiên bản trước khi bất kỳ ai nhận ra. Đối với hầu hết các đội, mức độ kiểm soát kẻ tấn công đó không phải là mô hình mối đe dọa. Đây là lý do tại sao Git đang cố tình chuyển sang SHA-256 thay vì coi đó là trường hợp khẩn cấp.
Trong trường hợp xác minh tải xuống trên web, nhà xuất bản đăng tệp và tổng kiểm tra SHA-1 của tệp đó trên cùng một máy chủ. Kẻ tấn công xâm phạm máy chủ đó sẽ kiểm soát cả tệp và tổng kiểm tra. Họ có thể tải tệp lên và đăng SHA-1 tệp đó mà không cần phải xung đột. Nếu tổng kiểm tra được đăng ở nơi khác—trên VPN an toàn, được in trong email đã ký, được xuất bản trong cơ sở hạ tầng khác—thì kẻ tấn công phải va chạm và điều đó trở nên không khả thi. Tổng kiểm tra chỉ đáng tin cậy như kênh của nó. Đây là lý do tại sao việc xác minh tải xuống yêu cầu nhiều hơn một hàm băm.
Nơi nó tồn tại với ít rủi ro hơn — nhận dạng nội dung trong cài đặt không đối nghịch và quá trình chuyển đổi theo giai đoạn của Git sang SHA-256
Đối với chữ ký và chứng chỉ, SHA-1 là không thể bảo vệ được. Chuỗi chứng chỉ từ một nguồn gốc đáng tin cậy. Nếu CA ký hai chứng chỉ khác nhau bằng cách sử dụng cùng một thông báo SHA-1 thì một cuộc tấn công xung đột sẽ cho phép kẻ tấn công giả mạo. Đây không phải là lý thuyết: các cuộc tấn công chống lại CA trung gian đã được ghi nhận. Bất kỳ lược đồ chữ ký nào dựa trên SHA-1 đều có khả năng bị giả mạo bởi kẻ tấn công có đủ tài nguyên. Mọi nhà cung cấp hệ điều hành và trình duyệt chính đều không dùng SHA-1 chứng chỉ. Chứng chỉ mới phải sử dụng SHA-256. Các nhà cung cấp nền tảng đã lên tiếng rõ ràng vì mối đe dọa là có thật và ngay lập tức.
NIST, cơ quan tiêu chuẩn Hoa Kỳ, đã đưa ra mốc thời gian rõ ràng. Kể từ 2024, SHA-1 không được sử dụng cho bất kỳ ứng dụng mới nào. Kể từ 2030, SHA-1 dự kiến sẽ bị loại bỏ hoàn toàn khỏi các hệ thống liên bang. Đây không phải là một sự phản đối mơ hồ; đó là một nhiệm vụ cụ thể đối với các nhà thầu chính phủ và là một tín hiệu cho ngành. Việc tuân theo dòng thời gian của NIST đảm bảo hệ thống của bạn luôn đi trước đường cong không dùng nữa thay vì phải vật lộn sau thời hạn.
Bằng chứng kho lưu trữ hỗ trợ việc ngừng sử dụng SHA-1, không phải là ấn phẩm NIST chưa đọc hoặc ngày ngừng sử dụng
Các tài liệu nguồn kho lưu trữ SHA-1 dưới dạng khả năng tương tác kế thừa và các tên đã thể hiện khả năng xung đột nhưng nó không chứa lịch trình ngừng hoạt động của phần thân tiêu chuẩn. Do đó, phần này sẽ sửa lại dàn ý bằng cách xử lý việc ngừng sử dụng như một vấn đề kiểm kê kỹ thuật thay vì trích dẫn số xuất bản chưa đọc hoặc ngày tuân thủ.
Đối với các môi trường được kiểm soát bằng chính sách, hãy tham khảo ý kiến cơ quan quản lý việc triển khai đó và ghi lại tài liệu chính xác đã được xem xét. Bằng chứng sản phẩm ở đây hỗ trợ hành động hẹp hơn: luôn sẵn sàng SHA-1 để tái tạo các giá trị hiện có, gắn nhãn nó là không phù hợp cho các mục đích sử dụng bảo mật mới và tính toán thay thế SHA-256 ở bất cứ nơi nào giao thức xung quanh cho phép di chuyển.
Ví dụ đã hoạt động - danh sách kiểm tra di chuyển được áp dụng cho trang xác minh tải xuống cũ
Đường dẫn di chuyển từ SHA-1 thường bắt đầu bằng khoảng không quảng cáo: SHA-1 được sử dụng ở đâu? Giấy chứng nhận và chữ ký? Ưu tiên ngay. Kho Git và địa chỉ nội dung? Ưu tiên trung bình, theo tốc độ di chuyển Git. Tổng kiểm tra được xuất bản để tải xuống? Phụ thuộc vào mô hình tin cậy. Tổng kiểm tra nội bộ để loại bỏ trùng lặp hoặc lưu trữ? Mức độ ưu tiên thấp hơn, nhiều thời gian hơn cho việc lập kế hoạch. Giai đoạn kiểm kê cho thấy diện tích bề mặt thực sự và giúp bạn ưu tiên dựa trên rủi ro thực tế thay vì mức độ khẩn cấp trừu tượng.
Đối với mỗi vai trò, quá trình di chuyển sẽ khác nhau. Chứng chỉ nâng cấp lên SHA-256 ngay lập tức. Giai đoạn kho lưu trữ Git trong SHA-256 giới thiệu dần dần trong khi vẫn duy trì SHA-1 để có khả năng tương thích ngược. Tổng kiểm tra tải xuống bắt đầu được xuất bản trong cả SHA-1 và SHA-256, sau đó cuối cùng chỉ còn SHA-256. Có thể xác minh các thông số tổng hợp SHA-1 kế thừa trong cơ sở dữ liệu tổng kiểm tra bằng công cụ tính hàm băm ToolAcre SHA và các mục nhập mới nên sử dụng SHA-256. Công cụ này hỗ trợ cả hai mặt của quá trình chuyển đổi, cho phép bạn xác minh các giá trị băm cũ và tạo các giá trị băm mới.
Bài học rút ra: SHA-1 để so sánh, SHA-256 cho công việc mới — máy tính hàm băm ToolAcre SHA bao gồm SHA-1 để có thể kiểm tra các bản tóm tắt cũ chứ không phải dưới dạng xác nhận
Đối với hầu hết các tổ chức, quá trình di chuyển không phải là "tắt SHA-1 vào ngày mai". Đó là "hiểu nơi nó được sử dụng, ưu tiên các vai trò quan trọng về bảo mật và có kế hoạch nhiều năm." Kho lưu trữ Git có số năm cam kết SHA-1 sẽ chuyển đổi dần dần, với công cụ xử lý cả hai. Cơ sở hạ tầng chứng chỉ lẽ ra đã được di chuyển. Tổng kiểm tra được xuất bản phải là thuật toán kép trong cửa sổ chuyển tiếp. Việc di chuyển dần dần làm giảm những thay đổi đột phá và giúp hệ thống có thời gian thích ứng với thực tế mới.
Công cụ tính hàm băm ToolAcre SHA cung cấp cả hai mặt của quá trình chuyển đổi đó. Bạn có thể xác minh thông báo SHA-1 hiện có từ hệ thống cũ của mình để xác nhận tệp khớp với chúng. Bạn có thể tính toán hàm băm SHA-256 để bắt đầu xuất bản đường dẫn di chuyển. Công cụ này không cho rằng SHA-1 là an toàn; nó dán nhãn là bị hỏng và giải thích lý do. Tuy nhiên, nó cho phép bạn làm việc với các hàm băm cũ mà bạn vẫn cần duy trì khi xây dựng cầu nối tới SHA-256 và lên kế hoạch ngừng sử dụng.