SHAttered là gì? Cuộc tấn công va chạm SHA-1, giải thích

Mục lục:

SHAttered là gì? Cuộc tấn công va chạm SHA-1, giải thích
SHAttered là gì? Cuộc tấn công va chạm SHA-1, giải thích

Video: SHAttered là gì? Cuộc tấn công va chạm SHA-1, giải thích

Video: SHAttered là gì? Cuộc tấn công va chạm SHA-1, giải thích
Video: Windows 7/8/10 - How To Enable Or Disable Aero Shake - YouTube 2024, Có thể
Anonim
Vào ngày đầu tiên của năm 2016, Mozilla đã chấm dứt hỗ trợ cho một công nghệ bảo mật yếu được gọi là SHA-1 trong trình duyệt web Firefox. Gần như ngay lập tức, họ đã đảo ngược quyết định của họ, vì nó sẽ cắt giảm quyền truy cập vào một số trang web cũ hơn. Nhưng vào tháng 2 năm 2017, nỗi sợ của họ cuối cùng đã thành hiện thực: các nhà nghiên cứu đã phá vỡ SHA-1 bằng cách tạo ra cuộc tấn công va chạm thực tế đầu tiên. Đây là tất cả những gì có nghĩa là.
Vào ngày đầu tiên của năm 2016, Mozilla đã chấm dứt hỗ trợ cho một công nghệ bảo mật yếu được gọi là SHA-1 trong trình duyệt web Firefox. Gần như ngay lập tức, họ đã đảo ngược quyết định của họ, vì nó sẽ cắt giảm quyền truy cập vào một số trang web cũ hơn. Nhưng vào tháng 2 năm 2017, nỗi sợ của họ cuối cùng đã thành hiện thực: các nhà nghiên cứu đã phá vỡ SHA-1 bằng cách tạo ra cuộc tấn công va chạm thực tế đầu tiên. Đây là tất cả những gì có nghĩa là.

SHA-1 là gì?

Image
Image

SHA trong SHA-1 là viết tắt của Thuật toán băm an toànvà, đơn giản, bạn có thể nghĩ nó như là một loại vấn đề toán học hay phương pháp xáo trộn dữ liệu được đưa vào đó. Được phát triển bởi NSA Hoa Kỳ, đây là một thành phần cốt lõi của nhiều công nghệ được sử dụng để mã hóa các truyền dẫn quan trọng trên internet. Các phương thức mã hóa phổ biến SSL và TLS, mà bạn có thể đã nghe nói đến, có thể sử dụng hàm băm như SHA-1 để tạo các chứng chỉ đã ký mà bạn thấy trong thanh công cụ của trình duyệt.

Chúng tôi sẽ không đi sâu vào môn toán và khoa học máy tính của bất kỳ chức năng SHA nào, nhưng đây là ý tưởng cơ bản. Một "băm" là một mã duy nhất dựa trên đầu vào của bất kỳ dữ liệu nào. Ngay cả chuỗi ký tự ngẫu nhiên, nhỏ, nhập vào hàm băm như SHA-1 sẽ trả về số ký tự dài, được đặt, làm cho nó (có khả năng) không thể hoàn nguyên chuỗi ký tự trở lại dữ liệu gốc. Đây là cách lưu trữ mật khẩu thường hoạt động. Khi bạn tạo mật khẩu, đầu vào mật khẩu của bạn được băm và lưu trữ bởi máy chủ. Khi bạn quay trở lại, khi bạn nhập mật khẩu của bạn, nó được băm một lần nữa. Nếu nó khớp với băm gốc, dữ liệu nhập có thể được giả định giống nhau và bạn sẽ được cấp quyền truy cập vào dữ liệu của mình.
Chúng tôi sẽ không đi sâu vào môn toán và khoa học máy tính của bất kỳ chức năng SHA nào, nhưng đây là ý tưởng cơ bản. Một "băm" là một mã duy nhất dựa trên đầu vào của bất kỳ dữ liệu nào. Ngay cả chuỗi ký tự ngẫu nhiên, nhỏ, nhập vào hàm băm như SHA-1 sẽ trả về số ký tự dài, được đặt, làm cho nó (có khả năng) không thể hoàn nguyên chuỗi ký tự trở lại dữ liệu gốc. Đây là cách lưu trữ mật khẩu thường hoạt động. Khi bạn tạo mật khẩu, đầu vào mật khẩu của bạn được băm và lưu trữ bởi máy chủ. Khi bạn quay trở lại, khi bạn nhập mật khẩu của bạn, nó được băm một lần nữa. Nếu nó khớp với băm gốc, dữ liệu nhập có thể được giả định giống nhau và bạn sẽ được cấp quyền truy cập vào dữ liệu của mình.
Hàm băm hữu ích chủ yếu bởi vì chúng giúp dễ dàng biết liệu đầu vào, ví dụ, một tệp hay mật khẩu, đã thay đổi. Khi dữ liệu đầu vào là bí mật, giống như mật khẩu, hàm băm gần như không thể đảo ngược và phục hồi dữ liệu ban đầu (còn được gọi là "khóa"). Đây là một chút khác với "mã hóa", mục đích của nó là xáo trộn dữ liệu cho mục đích giải mã nó sau này, sử dụng mật mã và các khóa bí mật. Hashes đơn giản chỉ nhằm đảm bảo tính toàn vẹn của dữ liệu - để đảm bảo mọi thứ đều giống nhau. Git, phần mềm điều khiển và phân phối phiên bản cho mã nguồn mở, sử dụng hàm băm SHA-1 vì lý do này.
Hàm băm hữu ích chủ yếu bởi vì chúng giúp dễ dàng biết liệu đầu vào, ví dụ, một tệp hay mật khẩu, đã thay đổi. Khi dữ liệu đầu vào là bí mật, giống như mật khẩu, hàm băm gần như không thể đảo ngược và phục hồi dữ liệu ban đầu (còn được gọi là "khóa"). Đây là một chút khác với "mã hóa", mục đích của nó là xáo trộn dữ liệu cho mục đích giải mã nó sau này, sử dụng mật mã và các khóa bí mật. Hashes đơn giản chỉ nhằm đảm bảo tính toàn vẹn của dữ liệu - để đảm bảo mọi thứ đều giống nhau. Git, phần mềm điều khiển và phân phối phiên bản cho mã nguồn mở, sử dụng hàm băm SHA-1 vì lý do này.

Đó là rất nhiều thông tin kỹ thuật, nhưng để đặt nó đơn giản: một băm không giống như mã hóa, vì nó được sử dụng để xác định nếu một tập tin đã thay đổi.

Công nghệ này ảnh hưởng đến tôi như thế nào?

Image
Image

Giả sử bạn cần truy cập trang web riêng tư. Ngân hàng, email của bạn, ngay cả tài khoản Facebook của bạn - tất cả đều sử dụng mã hóa để giữ dữ liệu bạn gửi cho họ riêng tư. Trang web chuyên nghiệp sẽ cung cấp mã hóa bằng cách lấy chứng chỉ từ cơ quan đáng tin cậy - bên thứ ba, được tin cậy để đảm bảo rằng mã hóa ở cấp độ, riêng tư giữa trang web và người dùng và không bị bất kỳ bên nào theo dõi. Mối quan hệ này với bên thứ ba, được gọi là Tổ chức phát hành chứng chỉ, hoặc là CA, là rất quan trọng, vì bất kỳ người dùng nào cũng có thể tạo chứng chỉ "tự ký" - thậm chí bạn có thể tự thực hiện trên máy chạy Linux với SSL mở. Symantec và Digicert là hai công ty CA được biết đến rộng rãi.

Image
Image

Hãy xem qua một kịch bản lý thuyết: How-To Geek muốn tiếp tục đăng nhập vào phiên của người dùng một cách riêng tư bằng mã hóa, vì vậy nó đề xuất một CA như Symantec với một yêu cầu đăng kí chứng chỉ, hoặc là CSR. Họ tạo ra một khóa công khaikhóa riêng để mã hóa và giải mã dữ liệu được gửi qua internet. Yêu cầu CSR gửi khóa công khai tới Symantec cùng với thông tin về trang web. Symantec kiểm tra khóa chống lại hồ sơ của nó để xác minh rằng dữ liệu không thay đổi bởi tất cả các bên, bởi vì bất kỳ thay đổi nhỏ nào trong dữ liệu làm cho hàm băm hoàn toàn khác nhau.

Các khóa công khai và chứng chỉ số được ký bởi hàm băm, vì đầu ra của các hàm này dễ thấy. Khóa công khai và chứng chỉ có hàm băm đã được xác minh từ Symantec (trong ví dụ của chúng tôi), một cơ quan, đảm bảo người dùng của How-To Geek rằng khóa không thay đổi và không được gửi từ ai đó độc hại.
Các khóa công khai và chứng chỉ số được ký bởi hàm băm, vì đầu ra của các hàm này dễ thấy. Khóa công khai và chứng chỉ có hàm băm đã được xác minh từ Symantec (trong ví dụ của chúng tôi), một cơ quan, đảm bảo người dùng của How-To Geek rằng khóa không thay đổi và không được gửi từ ai đó độc hại.
Image
Image

Bởi vì băm dễ giám sát và không thể (một số sẽ nói “khó”) để đảo ngược, chữ ký băm chính xác, được xác minh có nghĩa là chứng chỉ và kết nối có thể được tin cậy và dữ liệu có thể được đồng ý gửi mã hóa từ đầu đến cuối. Nhưng nếu băm không thực sự độc đáo?

Một cuộc tấn công va chạm là gì, và nó có thể xảy ra trong thế giới thực?

Bạn có thể đã nghe nói về "Vấn đề sinh nhật" trong toán học, mặc dù bạn có thể không biết nó được gọi là gì. Ý tưởng cơ bản là nếu bạn thu thập một nhóm người đủ lớn, rất có thể là hai hoặc nhiều người sẽ có cùng ngày sinh. Cao hơn bạn mong đợi, trên thực tế, đủ để nó có vẻ giống như một sự trùng hợp kỳ lạ. Trong một nhóm nhỏ với 23 người, có 50% cơ hội hai người sẽ chia sẻ sinh nhật.

Đây là điểm yếu vốn có trong tất cả các băm, bao gồm SHA-1. Về mặt lý thuyết, hàm SHA sẽ tạo ra một băm duy nhất cho bất kỳ dữ liệu nào được đưa vào nó, nhưng khi số lượng băm tăng lên, nhiều khả năng các cặp dữ liệu khác nhau có thể tạo cùng một băm.Vì vậy, người ta có thể tạo ra một chứng chỉ không đáng tin cậy với một hash giống hệt nhau cho một chứng chỉ tin cậy. Nếu họ khiến bạn cài đặt chứng chỉ không đáng tin cậy đó, nó có thể giả mạo là đáng tin cậy và phân phối dữ liệu độc hại.
Đây là điểm yếu vốn có trong tất cả các băm, bao gồm SHA-1. Về mặt lý thuyết, hàm SHA sẽ tạo ra một băm duy nhất cho bất kỳ dữ liệu nào được đưa vào nó, nhưng khi số lượng băm tăng lên, nhiều khả năng các cặp dữ liệu khác nhau có thể tạo cùng một băm.Vì vậy, người ta có thể tạo ra một chứng chỉ không đáng tin cậy với một hash giống hệt nhau cho một chứng chỉ tin cậy. Nếu họ khiến bạn cài đặt chứng chỉ không đáng tin cậy đó, nó có thể giả mạo là đáng tin cậy và phân phối dữ liệu độc hại.
Image
Image

Tìm các hash phù hợp trong hai tệp được gọi là va chạm va chạm. Ít nhất một cuộc tấn công va chạm quy mô lớn được biết là đã xảy ra đối với băm MD5. Nhưng vào ngày 27 tháng 2 năm 2017, Google đã công bố SHAttered, vụ va chạm được chế tạo đầu tiên cho SHA-1. Google có thể tạo một tệp PDF có cùng giá trị SHA-1 như một tệp PDF khác, mặc dù có nội dung khác nhau.

SHAttered được thực hiện trên một tập tin PDF. PDF là một định dạng tệp tương đối lỏng lẻo; rất nhiều thay đổi nhỏ, mức bit có thể được thực hiện mà không ngăn người đọc mở nó hoặc gây ra bất kỳ sự khác biệt rõ ràng nào. Các tệp PDF cũng thường được sử dụng để phân phối phần mềm độc hại. Mặc dù SHAttered có thể hoạt động trên các loại tệp khác, như ISO, chứng chỉ được chỉ định cứng nhắc, khiến cho khả năng tấn công đó khó xảy ra.

Vậy cuộc tấn công này sẽ dễ dàng như thế nào? SHAttered được dựa trên một phương pháp được Marc Stevens phát hiện vào năm 2012, yêu cầu trên 2 ^ 60,3 (9,23 nghìn tỷ) hoạt động SHA-1 - một con số đáng kinh ngạc. Tuy nhiên, phương pháp này vẫn hoạt động ít hơn 100.000 lần so với yêu cầu để đạt được kết quả tương tự với lực lượng vũ phu. Google nhận thấy rằng với 110 card đồ họa cao cấp hoạt động song song, sẽ mất khoảng một năm để tạo ra một vụ va chạm. Việc thuê thời gian tính toán này từ Amazon AWS sẽ tốn khoảng 110.000 đô la. Hãy nhớ rằng khi giá giảm cho các bộ phận máy tính và bạn có thể nhận được nhiều quyền lực hơn cho ít hơn, các cuộc tấn công như SHAttered trở nên dễ dàng hơn để kéo ra.

110.000 đô la có thể có vẻ như rất nhiều, nhưng nó nằm trong phạm vi khả năng chi trả của một số tổ chức - có nghĩa là những người thực thụ cuộc sống thực có thể giả mạo chữ ký tài liệu kỹ thuật số, can thiệp vào các hệ thống sao lưu và kiểm soát phiên bản như Git và SVN.

May mắn thay, có những yếu tố giảm thiểu ngăn chặn các cuộc tấn công như vậy. SHA-1 hiếm khi được sử dụng cho chữ ký số nữa. Tổ chức phát hành chứng chỉ không còn cung cấp chứng chỉ được ký với SHA-1 và cả Chrome và Firefox đã bỏ hỗ trợ cho họ. Bản phân phối Linux thường phát hành thường xuyên hơn một lần mỗi năm, khiến cho kẻ tấn công không thể tạo ra một phiên bản độc hại và sau đó tạo ra một đệm để có cùng một mã băm SHA-1.

Mặt khác, một số cuộc tấn công dựa trên SHAttered đã xảy ra trong thế giới thực. Hệ thống điều khiển phiên bản SVN sử dụng SHA-1 để phân biệt các tập tin. Tải lên hai tệp PDF có băm SHA-1 giống nhau vào một kho lưu trữ SVN sẽ làm cho nó bị hỏng.

Làm thế nào tôi có thể bảo vệ bản thân khỏi các cuộc tấn công SHA-1?

Không có nhiều người dùng điển hình làm. Nếu bạn đang sử dụng tổng kiểm tra để so sánh tệp, bạn nên sử dụng SHA-2 (SHA-256) hoặc SHA-3 thay vì SHA-1 hoặc MD5. Tương tự, nếu bạn là nhà phát triển, hãy đảm bảo sử dụng các thuật toán băm hiện đại hơn như SHA-2, SHA-3 hoặc bcrypt. Nếu bạn lo ngại rằng SHAttered đã được sử dụng để cung cấp cho hai tệp riêng biệt cùng một mã băm, Google đã phát hành một công cụ trên trang web SHAttered có thể kiểm tra cho bạn.

Tín dụng hình ảnh: Lego Firefox, nhiều băm, xin vui lòng không làm tổn hại đến tác giả web, Google.

Đề xuất: