Tiếng Việt

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

Va chạm, tiền ảnh và tiền ảnh thứ hai: Ba mục tiêu bảo mật băm

· Lý lịch

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

Ba sơ đồ thể hiện khả năng chống tiền ảnh, khả năng chống tiền ảnh thứ hai và khả năng chống va chạm
Hình minh họa vector ToolAcre gốc

Lời khuyên cho biết thuật toán có vấn đề xung đột và bạn cần biết liệu việc sử dụng của mình có bị ảnh hưởng hay không. Bài đăng này xác định ba thuộc tính điện trở, cho biết trường hợp sử dụng nào phụ thuộc vào trường hợp nào và áp dụng chúng cho SHA-1.

Việc sử dụng của tôi có bị ảnh hưởng không? — câu hỏi mà nhà tư vấn hiếm khi trả lời trực tiếp

Một lời khuyên đến cho biết SHA-1 có vấn đề về xung đột nên hệ thống của bạn phải nâng cấp. Nhưng điều gì sẽ xảy ra nếu hệ thống của bạn chỉ sử dụng SHA-1 để lấy khóa chứ không phải để xác thực thư? Điều gì sẽ xảy ra nếu SHA-1 chỉ được sử dụng để loại bỏ các tệp giống hệt nhau chứ không phải để chứng minh tính xác thực? Câu hỏi "hệ thống của tôi có bị ảnh hưởng không?" không thể trả lời nếu không hiểu thuộc tính nào của hàm băm thực sự bị hỏng và trường hợp sử dụng của bạn phụ thuộc vào thuộc tính nào.

Hàm băm cung cấp nhiều thuộc tính bảo mật: khả năng chống tiền ảnh, khả năng chống tiền ảnh thứ hai và khả năng chống va chạm. Việc phá vỡ một thuộc tính không làm hỏng thuộc tính khác và một số trường hợp sử dụng chỉ phụ thuộc vào các thuộc tính vẫn được bảo mật. Công cụ tính hàm băm ToolAcre SHA hiển thị các thuật toán và độ rộng tóm tắt của chúng, các thuộc tính xác định giới hạn cho từng mục tiêu bảo mật. Hiểu các thuộc tính này là bước đầu tiên để quyết định liệu một lời khuyên có ảnh hưởng đến hệ thống của bạn hay không.

Khả năng chống ảnh hưởng trước - được cung cấp một hàm băm, bạn không thể tìm thấy đầu vào tạo ra nó

Khả năng chống lại ảnh sớm có nghĩa là với một bản tóm tắt nhất định, sẽ không thể tìm được đầu vào tạo ra bản tóm tắt đó. Bạn nhận được hàm băm của mật khẩu và muốn đoán mật khẩu; đây là một cuộc tấn công tiền ảnh. Khả năng kháng ảnh sớm thứ hai có nghĩa là với một thông báo đã cho và hàm băm của nó, sẽ không thể tìm thấy một thông báo khác có cùng hàm băm. Bạn có tệp đã tải xuống và tổng kiểm tra SHA-256 của tệp đó; kẻ tấn công muốn hoán đổi tệp bằng một tệp khác có cùng hàm băm; đây là cuộc tấn công tiền ảnh thứ hai.

Khả năng chống va chạm có nghĩa là không thể tìm thấy hai thông điệp khác nhau có cùng hàm băm. Bạn đang ký một tài liệu; kẻ tấn công muốn tạo một tài liệu khác có cùng chữ ký; đây là một cuộc tấn công va chạm. Ba tình huống này yêu cầu kẻ tấn công phải thực hiện khối lượng công việc khác nhau và các giới hạn bảo mật cũng khác nhau. Khả năng chống ảnh hưởng trước là đặc tính mạnh nhất và hiếm khi bị phá vỡ. Đưa ra một bản tóm tắt, việc tìm kiếm tiền ảnh đòi hỏi phải tìm kiếm mạnh mẽ trong không gian của các đầu vào có thể có. Độ rộng thông báo ảnh hưởng đến không gian tìm kiếm chung, nhưng bài viết này không nêu số lượng thao tác mà không lấy nó và xác định mô hình tấn công.

Khả năng chống tiền ảnh thứ hai - được cung cấp một đầu vào, bạn không thể tìm thấy đầu vào khác có cùng hàm băm

Khả năng chống tiền ảnh thứ hai là mức mạnh nhất tiếp theo và nó cũng hiếm khi bị phá vỡ nếu cô lập. Với một thông báo và hàm băm của nó, việc tìm một thông báo khác có cùng hàm băm cũng đòi hỏi công việc theo cấp số nhân trong kích thước tóm tắt. Tìm kiếm tiền ảnh thứ hai và tìm kiếm xung đột mang lại cho kẻ tấn công những lựa chọn khác nhau, do đó giới hạn chung của chúng không thể thay thế cho nhau. Ở đây sự khác biệt về chất lượng là đủ; không có giới hạn số nào được xác nhận mà không có đạo hàm nội tuyến. Thuật toán sẽ mất khả năng chống tiền ảnh thứ hai nếu có một cuộc tấn công cấu trúc không cần đến vũ lực.

Khả năng chống va chạm là đặc tính yếu nhất trong ba đặc tính và là đặc tính thường bị gãy hoặc uốn cong nhất. Tìm kiếm xung đột cho phép kẻ tấn công chọn cả hai đầu vào, không giống như hai mục tiêu còn lại, do đó nó có giới hạn chung khác. Bài viết này cố tình bỏ qua các số liệu giới hạn ngày sinh nhật và mốc thời gian phần cứng vì việc lấy và tìm nguồn cung cấp chúng nằm ngoài tài liệu đã được xác minh.

Khả năng chống va chạm - bạn không thể tìm thấy bất kỳ hai đầu vào nào có cùng hàm băm và tại sao đây là đầu vào yếu nhất trong ba đầu vào

Ánh xạ ba thuộc tính bảo mật vào các trường hợp sử dụng sẽ hiển thị thuộc tính nào được yêu cầu cho mỗi tác vụ. Việc loại bỏ trùng lặp dựa trên giả định rằng nếu hai tệp có cùng hàm băm thì chúng là cùng một tệp. Điều này đòi hỏi khả năng chống va chạm: nếu có thể xảy ra va chạm, kẻ tấn công có thể tạo hai tệp khác nhau có cùng hàm băm và phá vỡ bất biến loại bỏ trùng lặp. Tuy nhiên, đây là một yêu cầu yếu, vì va chạm thực tế là cực kỳ hiếm ngay cả khi về mặt lý thuyết chúng có thể xảy ra.

Chữ ký số yêu cầu khả năng chống va chạm ở dạng mạnh. Khi người ký tạo chữ ký cho hàm băm của tài liệu và người xác minh sau đó sẽ kiểm tra chữ ký, cả hai phải kiểm tra cùng một hàm băm. Nếu dễ xảy ra xung đột, kẻ tấn công có thể giả mạo chữ ký cho một tài liệu khác bằng cách tìm ra xung đột với tài liệu đã ký. Đây là cuộc tấn công thúc đẩy nâng cấp từ SHA-1 lên SHA-256 trong chứng chỉ. Chứng chỉ được CA ký và chứng chỉ giả mạo có cùng chữ ký đều vượt qua quá trình xác minh nếu hàm băm có xung đột.

Khả năng chống va chạm khác với mục tiêu hình ảnh trước; không có số liệu giới hạn ngày sinh nhật nào xuất hiện mà không có nguồn gốc

Bộ lưu trữ có địa chỉ nội dung sử dụng hàm băm làm khóa tra cứu. Nếu một tệp được lưu trữ tại vị trí được xác định bởi hàm băm của nó và sau đó được truy xuất bằng cùng một hàm băm thì hai thao tác phải đến cùng một tệp. Điều này yêu cầu khả năng chống va chạm nếu có kẻ tấn công đang hoạt động, nhưng nó chỉ yêu cầu khả năng chống va chạm thứ hai nếu kẻ tấn công thụ động. Kẻ tấn công thụ động không thể tạo ra va chạm; họ chỉ có thể quan sát xem các tệp hợp pháp có tình cờ va chạm hay không.

Xác minh tải xuống sử dụng tổng kiểm tra để xác nhận rằng tệp được truy xuất từ ​​​​Internet không bị hỏng. Tổng kiểm tra thường được xuất bản cùng với tệp từ một nguồn đáng tin cậy. Kẻ tấn công sửa đổi tệp đã tải xuống không thể cập nhật tổng kiểm tra mà không có quyền truy cập vào nguồn đáng tin cậy. Trường hợp sử dụng này yêu cầu khả năng chống tiền ảnh thứ hai: với tệp gốc và tổng kiểm tra của nó, kẻ tấn công sẽ không thể tạo ra một tệp khác có cùng tổng kiểm tra. SHA-1 Khả năng chống hình ảnh thứ hai vẫn ổn định mặc dù va chạm bị vỡ.

Tính toàn vẹn của bản đồ và cách đặt tên sử dụng cho các thuộc tính được yêu cầu; băm đơn giản không phải là lưu trữ mật khẩu

Lưu trữ mật khẩu là trường hợp sử dụng duy nhất trong đó hàm băm không phải là công cụ phù hợp. Nếu mật khẩu được lưu trữ dưới dạng băm SHA-256 và cơ sở dữ liệu băm bị rò rỉ, kẻ tấn công có thể thực hiện một cuộc tấn công từ điển: băm hàng triệu lần đoán và kiểm tra xem có khớp với các giá trị băm được lưu trữ hay không. Kẻ tấn công chỉ cần một tiền ảnh cho mỗi mật khẩu và chức năng nhanh mang lại cho kẻ tấn công một vòng so sánh ngoại tuyến hiệu quả mà không có giới hạn tốc độ ứng dụng.

Mật khẩu cần có chức năng tạo muối cho mỗi người dùng một cách có chủ ý, chậm, khó nhớ, như Argon2id, scrypt hoặc bcrypt. Một muối duy nhất cho mỗi người dùng làm cho các mật khẩu giống hệt nhau tạo ra các bản ghi được lưu trữ khác nhau, trong khi chi phí thời gian và bộ nhớ được cấu hình của chức năng mật khẩu khiến mỗi ứng viên trở nên đắt đỏ hơn một cách có chủ ý. Các thông số chính xác yêu cầu điểm chuẩn cục bộ và không được quy định ở đây. Công cụ tính hàm băm ToolAcre SHA không thực hiện băm mật khẩu và tài liệu hướng dẫn giải thích lý do tại sao SHA-256 không phù hợp cho trường hợp sử dụng này.

Ví dụ đã hoạt động — áp dụng ánh xạ tới SHA-1 trong kho Git so với SHA-1 trong chứng chỉ

Một ví dụ hoạt động: SHA-1 trong kho Git. Mọi cam kết Git đều có hàm băm SHA-1 làm ID đối tượng của nó. Nếu khả năng chống va chạm SHA-1 bị phá vỡ, kho lưu trữ Git có dễ bị tấn công không? Câu trả lời là: có thể. Kẻ tấn công có thể tạo một cam kết có cùng SHA-1 như một cam kết hiện có và đẩy nó đến một máy chủ kho lưu trữ, sau đó máy chủ này có thể phân phát các cam kết khác nhau cho các máy khách khác nhau. Tuy nhiên, điều này đòi hỏi phải chọn một mục tiêu cụ thể và tính toán một vụ va chạm, việc này rất tốn kém ngay cả với SHA-1 bị hỏng.

Các thành viên dự án Git đã công bố lộ trình di chuyển sang SHA-256, nhưng mức độ khẩn cấp ở mức vừa phải vì cuộc tấn công thực tế yêu cầu cả kỹ thuật va chạm và thỏa hiệp máy chủ. Đối với một nhà phát triển hỏi "bảo mật kho lưu trữ Git của tôi có phụ thuộc vào khả năng chống va chạm SHA-1 không?" câu trả lời là có, nhưng rủi ro thực tế thấp so với các mối đe dọa bảo mật khác. Công cụ tính hàm băm ToolAcre SHA cung cấp cả SHA-1 và SHA-256, được gắn nhãn thích hợp để các nhà phát triển có thể tính toán và hiểu được sự khác biệt.

Bài học rút ra: hãy đặt tên cho thuộc tính trước khi bạn hoảng sợ — công cụ tính hàm băm ToolAcre SHA cho phép bạn xem độ dài tóm tắt đặt giới hạn của từng thuật toán

Đối với bất kỳ hệ thống nào sử dụng SHA-1, quyết định nâng cấp tùy thuộc vào việc trường hợp sử dụng có yêu cầu thuộc tính cụ thể bị hỏng hay không. Nếu trường hợp sử dụng là chữ ký số hoặc chống trùng lặp chống lại những kẻ tấn công đang hoạt động thì cần phải có khả năng chống va chạm và SHA-1 bị hỏng, vì vậy hãy nâng cấp lên SHA-256 ngay lập tức. Nếu trường hợp sử dụng là bộ nhớ hoặc tổng kiểm tra có địa chỉ nội dung thì cần phải có khả năng chống tiền ảnh thứ hai và SHA-1 vẫn an toàn cho mục đích đó, tuy nhiên SHA-256 thích hợp hơn cho việc kiểm chứng trong tương lai.

Nếu trường hợp sử dụng là dẫn xuất khóa hoặc xác minh mật khẩu thì cần phải có khả năng chống tiền ảnh và không nên sử dụng gì trong bộ công cụ này vì các chức năng nhanh hơn sẽ tốt hơn cho việc dẫn xuất khóa. Công cụ tính hàm băm ToolAcre SHA cho phép các nhà phát triển tính toán các bản tóm tắt và xem các thuộc tính đang hoạt động. Hiểu ba thuộc tính này và kết hợp chúng với các trường hợp sử dụng là nền tảng của việc đưa ra các lựa chọn mật mã an toàn trong các hệ thống thực.