SHAttered là gì? Tấn công va chạm SHA-1, giải thích
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 kém có tên 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 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ợ hãi của họ cuối cùng đã trở thành sự thật: 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 trong thế giới thực đầu tiên. Đây là tất cả những gì có nghĩa là.
SHA-1 là gì?
SHA trong SHA-1 là viết tắt của Thuật toán băm an toàn, và, nói một cách đơn giản, bạn có thể nghĩ về nó như một loại vấn đề hoặc phương pháp toán học xáo trộn dữ liệu được đưa vào nó. Được phát triển bởi NSA Hoa Kỳ, đây là 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, có thể sử dụng hàm băm như SHA-1 để tạo chứng chỉ đã ký mà bạn thấy trên thanh công cụ trình duyệt của mình.
Chúng tôi sẽ không đi sâu vào toán học và khoa học máy tính về bất kỳ chức năng SHA nào, nhưng đây là ý tưởng cơ bản. Một mã băm của Nhật Bản 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ự nhỏ, ngẫu nhiên nhập vào hàm băm như SHA-1 sẽ trả về một số ký tự dài, được đặt, khiến 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 trở về, khi bạn nhập mật khẩu, nó sẽ được băm lại. Nếu nó khớp với hàm băm ban đầu, đầu vào có thể được coi là giống nhau và bạn sẽ được cấp quyền truy cập vào dữ liệu của mình.
Các hàm băm là hữu ích chủ yếu vì chúng giúp dễ dàng biết liệu đầu vào, ví dụ, một tệp hoặc 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à khôi phục dữ liệu gốc (còn được gọi là khóa phím Lần). Điều này khác một chút so với mã hóa của Wap, có mục đích 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à khóa bí mật. Băm chỉ đơn giản là để đảm bảo tính toàn vẹn dữ liệu - để đảm bảo rằng mọi thứ đều giống nhau. Git, phần mềm kiểm soát và phân phối phiên bản cho mã nguồn mở, sử dụng băm SHA-1 vì lý do này.
Đó là rất nhiều thông tin kỹ thuật, nhưng nói một cách đơn giản: 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?
Giả sử bạn cần truy cập một trang web riêng tư. Ngân hàng, email, thậm chí 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ọ ở chế độ riêng tư. Mộ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 khác theo dõi. Mối quan hệ này với bên thứ ba, được gọi là Cơ quan cấp 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ý tên của Cameron - bạn thậm chí có thể tự làm điều đó trên máy chạy Linux với Open SSL. Symantec và Digicert là hai công ty CA nổi tiếng, ví dụ.
Chúng ta hãy chạy qua một kịch bản lý thuyết: How-To Geek muốn giữ riêng tư các phiên của người dùng đã đăng nhập bằng mã hóa, do đó, nó kiến nghị 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 khai và khó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 chung tới Symantec cùng với thông tin về trang web. Symantec kiểm tra khóa so với bản ghi của nó để xác minh rằng dữ liệu không bị 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 đề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ỉ kỹ thuật số đó được ký bởi các hàm băm, bởi vì đầu ra của các hàm này rất dễ nhìn 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), cơ quan có thẩm quyền, đảm bảo với người dùng How-To Geek rằng khóa không thay đổi và không được gửi từ ai đó độc hại.
Bởi vì hàm băm rất dễ giám sát và không thể (một số người sẽ nói khó khăn), 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?
Cuộc tấn công va chạm là gì và có thể xảy ra trong thế giới thực?
Bạn có thể đã nghe nói về vấn đề sinh nhật của người Bỉ 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 tập hợp một nhóm người đủ lớn, khả năng khá cao là hai hoặc nhiều người sẽ có cùng ngày sinh. Thực tế cao hơn bạn mong đợi, thực tế - đủ để nó có vẻ như là một sự trùng hợp kỳ lạ. Trong một nhóm nhỏ chỉ 23 người, có 50% cơ hội hai người sẽ chia sẻ một ngày sinh nhật.
Đây là điểm yếu cố hữu trong tất cả các giá trị băm, bao gồm SHA-1. Về mặt lý thuyết, hàm SHA sẽ tạo ra một hàm 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 ra cùng một hàm băm. Vì vậy, người ta có thể tạo một chứng chỉ không tin cậy với hàm băm giống hệt với chứng chỉ tin cậy. Nếu họ yêu cầu bạn cài đặt chứng chỉ không đáng tin cậy đó, nó có thể giả trang là đáng tin cậy và phân phối dữ liệu độc hại.
Tìm các giá trị băm phù hợp trong hai tệp được gọi là tấn công 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 đầu tiên được tạo ra cho SHA-1. Google đã có thể tạo một tệp PDF có cùng hàm băm 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 PDF. PDF là một định dạng tệp tương đối lỏng lẻo; rất nhiều thay đổi nhỏ, ở cấp độ 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. PDF cũng thường được sử dụng để cung cấp 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 một cuộc tấn công như vậy khó xảy ra.
Vì vậy, cuộc tấn công này dễ dàng như thế nào để thực hiện? SHAttered 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 hơn 2 ^ 60.3 (9.223 triệu) 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 phát hiện ra 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. Thuê thời gian tính toán này từ Amazon AWS sẽ có giá 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 năng lượng hơn với chi phí thấp hơn, các cuộc tấn công như SHAttered trở nên dễ dàng hơn để loại bỏ.
110.000 đô la có vẻ như rất nhiều, nhưng trong phạm vi khả năng chi trả của một số tổ chức - điều đó có nghĩa là các nhà khoa học thực tế 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 kiểm soát phiên bản 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 nhẹ 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. Cơ quan cấp chứng chỉ không còn cung cấp chứng chỉ đã ký với SHA-1 và cả Chrome và Firefox đều bỏ hỗ trợ cho họ. Các 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 kẻ tấn công tạo ra một phiên bản độc hại và sau đó tạo một bản đệm để có cùng hà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 kiểm soát phiên bản SVN sử dụng SHA-1 để phân biệt các tệp. Tải lên hai tệp PDF có băm SHA-1 giống hệt nhau vào kho lưu trữ SVN sẽ khiến nó bị hỏng.
Làm cách 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 thứ cho người dùng thông thường làm. Nếu bạn đang sử dụng tổng kiểm tra để so sánh các 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 chắc chắn 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 lắng rằng SHAttered đã được sử dụng để cung cấp hai tệp riêng biệt cùng một hà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, Rất nhiều Hash, Xin đừng làm tổn thương tác giả web, Google.