Một tập tin có thể bị thay đổi một cách độc hại theo cách duy trì Hash SHA-1 ban đầu của nó không?


33

Theo này bài báo, và nhiều người khác, SHA-1 là không an toàn.

Trong trường hợp của tôi, tôi không quan tâm đến mật khẩu hoặc chứng chỉ kỹ thuật số. Tôi lo ngại về tính toàn vẹn của tập tin.

Liệu một cách hợp lý có thể khiến một tệp (ví dụ: ảnh ISO hoặc tệp thực thi) bị thay đổi độc hại theo cách:

  • Duy trì hàm băm SHA-1 của tệp gốc và
  • Duy trì nội dung và hoạt động chung của tệp (nhưng tất nhiên hiện bao gồm nội dung độc hại không có ở đó)

Cách tôi nhìn thấy, thay đổi một tệp theo cách tạo ra xung đột SHA-1 sẽ khiến tệp hoàn toàn vô dụng. ISO sẽ bị hỏng hoàn toàn hoặc tệp thực thi sẽ bị xáo trộn hoàn toàn đến mức nó thậm chí không còn là tệp thực thi nữa.

Nhưng, cách tôi nhìn thấy nó cũng có thể sai. Cho đến nay tôi không tìm thấy gì trên các tìm kiếm của Google liên quan đến sự phù hợp liên tục của SHA-1 để xác minh tệp. Bất kỳ hiểu biết?


7
Câu trả lơi con phụ thuộc vao nhiêu thư". Nếu ISO tình cờ chứa nhiều tệp jpeg hoặc tệp phim - cùng với mục tiêu thực thi của bạn, thì có thể. Bạn có thể sửa đổi các tệp jpeg khá đột ngột mà không thay đổi kích thước hoặc hình thức trực quan của chúng. Cuối cùng, tệp càng lớn, bạn càng phải chơi nhiều hơn và khả năng xảy ra va chạm không phá hủy càng cao.
Paul

7
@cpast chính xác, nhiều trang web liệt kê băm SHA-1 để cho phép bạn xác minh tải xuống của mình. Nghĩ về nó, có vẻ như nhiều khả năng tin tặc sẽ xâm phạm một trang web bằng cách thay đổi nội dung hàm băm được công bố. Sau đó, bạn đang thực sự say sưa.
misha256

1
Chỉ cần fyi, câu hỏi của tôi hỏi về SHA-1 cụ thể vì nó khá phổ biến, đặc biệt là với các bản tải xuống từ Microsoft / MSDN. Tất nhiên, một số trang web xuất bản băm MD5, một số khác SHA256, v.v.
misha256

2
Câu hỏi là, tại sao bạn muốn sử dụng hàm băm có bất kỳ lỗ hổng nào đã biết, khi có những lựa chọn thay thế nhanh, dễ sử dụng và có sẵn rộng rãi mà không (ví dụ: SHA-256) ? Ngoài ra, có một lý do các nhà mật mã học tuyên bố băm không an toàn sau khi chỉ tìm thấy một lỗ hổng: lịch sử đã chỉ ra rằng khi tìm thấy một lỗ hổng, những người khác nhanh chóng làm theo. Câu nói nổi tiếng của Bruce Schneier là "Tấn công luôn trở nên tốt hơn, chúng không bao giờ trở nên tồi tệ hơn"
BlueRaja - Danny Pflughoeft

3
@ misha256 Những băm sha1 đó là để bạn kiểm tra tải xuống tham nhũng, không phải để bảo mật. Nếu bạn muốn bảo mật thì hãy sử dụng các tệp có chữ ký gpg
Daenyth 17/03/2015

Câu trả lời:


41

Không ai đã hoàn thành điều này cho SHA-1. Có thể trong lý thuyết, nhưng vẫn không thực tế. Các báo cáo về sự không an toàn trong SHA-1 chỉ có nghĩa là mức độ bảo mật không cao như chúng tôi mong muốn và điều đó có nghĩa là chúng tôi không có nhiều năm trước khi chúng tôi phải lo lắng về điều này như chúng tôi nghĩ.

Thật khó để tạo ra một tệp có cùng hàm băm SHA-1 như một tệp đã cho so với việc tự tạo hai tệp với cùng hàm băm SHA-1. Và theo như chúng tôi biết, không ai ở bất cứ nơi nào trên thế giới chưa hoàn thành ngay cả nhiệm vụ dễ dàng hơn này. Điều đó không có nghĩa là nó không thể xảy ra vào ngày mai.


Thậm chí có một cuộc tấn công được biết đến trên SHA-1 vì va chạm với một tập tin nhất định? Tôi có ấn tượng rằng cuộc tấn công đó đã không được tìm thấy cho MD5 hoặc SHA-1 (chỉ có một cuộc tấn công va chạm, không phải là cuộc tấn công tiền giả thứ hai)
cpast

@cpast phần mềm độc hại Flame đã sử dụng xung đột MD5 xuất hiện từ Microsoft và chiếm quyền điều khiển Windows Update. Họ có thể đã có một loạt các Microsoft certs để lựa chọn, nhưng họ không chỉ cố gắng tìm bất kỳ 2 tệp nào có cùng MD5.
Aron Foster

2
@Aron Không, đó không phải là một ví dụ về xung đột với một tệp đã cho. Với Flame, Microsoft đã có một máy chủ cấp phép sẽ ký chứng chỉ X.509 theo yêu cầu ký chứng chỉ, điều đó có nghĩa là kẻ tấn công kiểm soát những gì được ký trong một số giới hạn. Không có giấy chứng nhận từ trước mà họ tìm thấy một vụ va chạm; Microsoft đã ký CSR từ khách hàng như một phần của kích hoạt, cho phép sử dụng một cuộc tấn công va chạm (không phải là một cuộc tấn công tiền giả thứ hai).
cpast

2
@OlivierDulac Không, nó thực sự chưa bao giờ được thực hiện. Không có va chạm SHA-1 được biết đến. Chi phí ước tính chỉ là một ước tính - nó không phải là ai đó đã làm nó và điều này là bao nhiêu, chúng tôi nghĩ rằng nó có giá, đó là chưa ai làm được điều đó nhưng chúng tôi nghĩ rằng đây là nó bao nhiêu sẽ chi phí.
cpast

4
@cpast Chúng tôi không biết chắc chắn đã được thực hiện hay chưa, nhưng cuộc tấn công trị giá 3 triệu đô la chưa đến 0,03% ngân sách hàng năm của NSA (thực tế, cuộc tấn công nên rẻ hơn vì họ đã sở hữu phần cứng và không phải thuê). Thật hợp lý khi kết luận rằng, vì họ có phương tiện và động lực để làm điều đó, nên có lẽ họ đã làm rồi. Nhớ ngọn lửa .
Bain

26

Về mặt lý thuyết là có thể, nhưng nó vẫn chưa được thực hiện.

Những gì bạn đang tìm kiếm được gọi là "va chạm băm:" hai tệp có cùng hàm băm. Mã băm mật mã như SHA-1 thường được thiết kế để gây khó khăn cho việc này. Vì SHA-1 là mã 160 bit, nên sẽ mất trung bình 2 ^ 159 nỗ lực vũ phu để tìm bản sao. Nếu một thuật toán được tìm thấy đáng tin cậy hơn so với thuật toán băm mật mã, thì băm được coi là "bị hỏng".

MD-5 là một ví dụ về hàm băm rất bị hỏng. Nó được cho là có sức mạnh 128 bit, yêu cầu trung bình 2 ^ 127 lần thử. Như là, lạm dụng các lỗ hổng đã biết, số lần thử thực tế cần thiết có thể thấp tới 2 ^ 47. Đây là một LÔ nhỏ hơn 2 ^ 127. Trong thực tế, nó đã được thực hiện trong một ngày trên một cụm máy tính hiện đại.

Tôi đưa ra ví dụ đó vì đó là cách gần nhất với cách bạn đang muốn sử dụng SHA-1. Tuy nhiên, đó không phải là cách tiếp cận phổ biến nhất sử dụng tiền điện tử để đảm bảo băm không bị hỏng. Chúng thường cho phép va chạm giữa hai tệp, như kẻ tấn công đã chọn, thay vì bạn chọn một tệp và kẻ tấn công đang tìm cách khớp nó. Kiểu tấn công này có một lợi thế là dễ dàng hơn để điểm chuẩn. Nếu tôi thấy "khó" bẻ khóa tập tin của bạn, điều đó có nghĩa là một tập tin khác cũng mạnh tương tự? Cuộc tấn công này, nơi kẻ tấn công được chọn cả hai tập tin đảm bảo chúng ta nắm bắt được điều tồi tệ nhất trong những điều tồi tệ nhất.

Kiểu tấn công này cho phép một thủ thuật thú vị được gọi là " cuộc tấn công sinh nhật ". Câu chuyện dài, việc sử dụng đòn tấn công sinh nhật giảm một nửa sức mạnh của thuật toán, vì vậy SHA-1 yêu cầu 2 ^ 80 lần thử (trung bình) và MD5 yêu cầu 2 ^ 64 lần thử (trung bình). Đây là một nửa của 160 và 128 tương ứng.

SHA-1 đã biết các cuộc tấn công làm giảm sức mạnh của nó từ 2 ^ 80 xuống 2 ^ 69. Điều này sẽ không quan trọng với bạn. 2 ^ 69 lần thử là một thời gian dài .

Tuy nhiên, từ lịch sử, chúng tôi thấy rằng các thuật toán băm không bị phá vỡ một cách tự nhiên, mà là bị phá vỡ theo thời gian. Không ai phá vỡ một thuật toán như MD-5 lấy nó từ 2 ^ 64 đến 2 ^ 47 qua đêm. Nó xảy ra theo thời gian, vì nhiều cá nhân xuất bản các bài báo về toán học mà họ đang sử dụng để chống lại nó. Người ta thường có thể thấy sự phức tạp của các cuộc tấn công đi xuống từ từ khi bắt đầu thuật toán (trong đó cuộc tấn công tốt nhất thường là cuộc tấn công sinh nhật).

Việc chúng ta đang thấy một số thay đổi trong các vụ va chạm cho thấy SHA-1 đang nhìn thấy ánh sáng ở cuối đường hầm. Nó vẫn mạnh, nhưng có thể có mong muốn đi lên chiếc SHA-3 mới nhất hiện đang an toàn hơn nhiều.

Bạn thực sự nên đưa ra quyết định như vậy từ quan điểm mô hình mối đe dọa. Kẻ tấn công có thể gây ra bao nhiêu sát thương nếu chúng bị một trong những va chạm này. Là những kẻ tấn công kịch bản của bạn có quyền truy cập vào một vài máy tính xách tay, hoặc chính phủ với toàn bộ cụm siêu máy tính theo ý của họ. Kẻ tấn công phải phá vỡ hàm băm lớn đến mức nào trước khi nó không sử dụng (nhiều cách sử dụng mật mã liên quan đến "thay đổi người bảo vệ", chẳng hạn như xoay mật khẩu). Tất cả những điều này sẽ ảnh hưởng đến mức độ nghiêm trọng của bạn khi xem xét va chạm.


8
Về đoạn tấn công sinh nhật của bạn, 2 ^ 80 là căn bậc hai của 2 ^ 160, không phải một nửa của nó (sẽ là 2 ^ 159).
Andrew Morton

Câu hỏi là về các cuộc tấn công tiền giả thứ hai, nhưng câu trả lời của bạn là về va chạm. Tấn công trước các cuộc tấn công chống lại SHA-1 & mdash; và thậm chí MD5 & mdash; là phi thực tế. (Có một cuộc tấn công tiền đề 2 ^ 123 chống lại MD5, nhưng với SHA-1, bạn bị mắc kẹt với lực lượng vũ trang 2 ^ 160.)
Matt Nordhoff

"Bởi vì SHA-1 là mã 160 bit, nên sẽ mất trung bình 2 ^ 159 nỗ lực vũ phu để tìm bản sao." Nhưng một mã 2 ^ 2 mất 2 ^ 2 lần đoán. Tôi không thấy lý do tại sao bạn -1. "Câu chuyện dài," ... "giảm một nửa sức mạnh của thuật toán, vì vậy SHA-1 yêu cầu 2 ^ 80" ... "MD5 yêu cầu 2 ^ 64" ... "Đây là một nửa của 160 và 128 tương ứng." Ở đây bạn nên có -1'ed. Các bit tăng thêm sức mạnh theo cấp số nhân, do đó, việc giảm một nửa cường độ của hàm băm 160 bit sẽ coi nó là hàm băm 159 bit, không phải là hàm băm 80 bit. Mỗi bit nhân đôi thách thức của một cuộc tấn công vũ phu.
TUYỆT VỜI 18/03/2015

@TOOGAM: Anh ấy nói 'trung bình'; qua nhiều thử thách, chỉ có 50% của không gian quan trọng phải được tìm kiếm trên trung bình để thành công trong một cuộc tấn công brute-force. Đối với bình luận giảm một nửa, bình luận của Andrew Morton ở trên giải thích rằng; nó phải là căn bậc hai, không phải một nửa, của sự phức tạp.
Reid

@AndrewMorton điểm tốt, tôi không rõ ràng với từ ngữ của tôi. Tôi thấy các tài liệu chuyển đổi giữa số lượng trạng thái và logarit cơ sở 2 của số lượng trạng thái khá thường xuyên. Từ ngữ của tôi đề cập đến việc giảm một nửa số bit bởi vì mọi người có xu hướng nói về "sức mạnh" về số lượng bit. Tôi đã quá quen với việc chuyển đổi qua lại mà tôi đã làm như vậy một cách vô thức. Tôi sẽ chỉnh sửa để loại bỏ sự nhầm lẫn.
Cort Ammon

8

Các lỗ hổng trong SHA-1 được thảo luận trong bài viết đó rất cụ thể: chúng cho phép kẻ tấn công tạo ra hai thứ băm đến cùng một giá trị (đây được gọi là "tấn công va chạm"). Tuy nhiên, một cuộc tấn công va chạm đòi hỏi kẻ tấn công kiểm soát cả hai tập tin liên quan. Nếu kẻ tấn công không kiểm soát tệp gốc, một cuộc tấn công va chạm sẽ không cho phép chúng tìm thấy một tệp khác có cùng giá trị băm.

Lý do điều này quan trọng đối với TLS / SSL (và chữ ký nói chung) là với những người đó, kẻ tấn công thường có thể kiểm soát cả hai tệp. Chứng chỉ TLS hầu hết được tạo bởi người yêu cầu (các bit mà họ không kiểm soát thường có thể dự đoán được), do đó, các va chạm cho phép họ tạo chứng chỉ hợp pháp và chứng thực bất hợp pháp, lấy chứng chỉ hợp pháp và chuyển chữ ký.

Đối với các tệp, tình huống tương tự không phải lúc nào cũng được áp dụng. Nếu mối quan tâm của bạn là người tạo tệp là kẻ tấn công (ví dụ: họ sẽ nhận được một điều được xác minh độc lập là tốt, sau đó gửi cho bạn trọng tải xấu với cùng hàm băm), thì tấn công SHA-1 sẽ được áp dụng và bạn nên xem xét hướng tới loại bỏ dần (mặc dù nó chưa quan trọng, như David Schwartz đã đề cập). Nếu tệp gốc được tin cậy, thì kẻ tấn công không thể áp dụng các cuộc tấn công SHA-1 hiện được biết đến, mặc dù bạn vẫn nên suy nghĩ về việc loại bỏ nó nếu bạn có thể (nếu bạn có lựa chọn, hãy sử dụng hàm băm mà không có các cuộc tấn công đã biết như SHA- 2).


Để đối phó với "vụ va chạm sẽ không hữu ích" - Mặc dù một cuộc tấn công không yêu cầu kẻ tấn công có thể có được một vụ va chạm hữu ích , nhưng nói chung, không khó để biến "va chạm" thành "va chạm hữu ích". Nhiều định dạng tệp có số lượng phòng khá lớn, trong đó bạn có thể có bất cứ thứ gì bạn muốn mà không ảnh hưởng đến chức năng của tệp; Kẻ tấn công thường có thể sửa đổi điều đó để có được một vụ va chạm (nếu va chạm thực tế có thể tìm thấy), trong khi vẫn giữ phần chức năng như bất cứ điều gì chúng muốn. Khoảng cách giữa "tấn công học thuật" và "tấn công thực tế" có thể lớn; khoảng cách giữa "bất kỳ va chạm" và "va chạm hữu ích" thường nhỏ hơn nhiều.


Vấn đề nghiêm trọng hơn, không liên quan đến sự lựa chọn thuật toán, là cách bạn nhận được hàm băm. Tất cả một hàm băm làm là chuyển vấn đề từ "lấy tệp thực" sang "lấy giá trị băm thực;" một giá trị băm được gửi từ cùng một máy chủ và trên cùng một loại kết nối vì tệp hoàn toàn không có giá trị chống lại sửa đổi độc hại (bất kỳ kẻ tấn công nào có thể giả mạo tệp đều có thể can thiệp vào hàm băm). Băm chỉ hữu ích cho việc này nếu bạn có thể tin tưởng vào hàm băm nhiều hơn mức bạn có thể tin tưởng vào tệp; trong khi đó đôi khi là trường hợp (torrents, gương), chúng thường được sử dụng khi không phải vậy. Vì vậy, bạn nên rất cẩn thận về điều đó bất cứ khi nào sử dụng băm để xác minh tính toàn vẹn.


5

Bạn phải phân biệt giữa tấn công va chạmtấn công tiền giả . Tìm bất kỳ hai tin nhắn băm đến cùng một giá trị là một cuộc tấn công va chạm.
Thay thế một thông điệp cụ thể, được đưa ra (ở đây: một thực thi) bằng một tin nhắn khác có cùng hàm băm là một cuộc tấn công tiền tố (thứ hai).

SHA-1 bị phá vỡ khi một cuộc tấn công va chạm có thể được thực hiện trong 2 52 hoạt động theo một bài viết trên Wikipedia không đưa ra một trích dẫn cho con số đó (cuộc tấn công tốt nhất mà tôi biết là thực sự đáng tin cậy là cuộc tấn công của Marc Stevens , trong đó có 2 60 hoạt động). Nhưng hãy giả sử trường hợp bi quan của 2 52 .

Điều này có liên quan vì một cuộc tấn công ở quy mô đó không chỉ có thể hiểu được về mặt lý thuyết mà thực sự hoàn toàn có thể thực hiện được trong một ngày trên giàn khoan đa GPU. Tất nhiên đó là một vấn đề đối với các ứng dụng mà thông báo "bất kỳ hai" sẽ làm. Ngay cả con số 2 60 do Stevens đưa ra (công việc gấp 256 lần) là hoàn toàn khả thi nếu kẻ tấn công của bạn sẵn sàng ném thêm tiền vào vấn đề, hoặc sẵn sàng dành một năm thời gian.
Đó chính xác là điều sẽ không ngăn ai đó liên quan đến gián điệp hoặc tội phạm mạng từ việc giả mạo chứng chỉ.

Bây giờ, một cuộc tấn công tiền chế có số mũ lớn gấp đôi, vì vậy giả sử 2 52 cho cuộc tấn công va chạm, đó sẽ là 2 104 hoạt động, đó là một sân bóng hoàn toàn khác.

Điều này không chỉ không thực tế (một cỗ máy nhanh hơn hàng tỷ lần so với máy được đề cập trong đoạn trước vẫn sẽ mất khoảng 6 triệu năm hoặc lâu hơn), nhưng với phương tiện tạo ra năng lượng trừng phạt của chúng tôi thì điều này là hoàn toàn không thể.

Thực hiện một phép tính lớn như vậy sẽ đòi hỏi một nguồn năng lượng lớn hơn nhiều so với bất cứ thứ gì chúng ta có thể đủ khả năng để dành cho một hoạt động. Không, không hẳn là một nguồn năng lượng kích thước của mặt trời, nhưng vẫn là một nguồn khá lớn .

Bạn thực sự có thể mong đợi nhận được bất cứ thứ gì từ 10 đến 50 GFLOPS trong một watt. Giả sử rằng một số loại phép lạ xảy ra và bộ xử lý có hiệu quả năng lượng gấp hàng nghìn lần trong đêm, người ta có thể giả sử 1 SHA ≈ 1 FLOP (khá lạc quan!). Điều này có nghĩa là để thực hiện 2 phép tính băm 104 trong vòng 10 năm, bạn cần một nhà máy điện 10 12 W. Để chạy cuộc tấn công trong vòng 1 năm, bạn cần một nhà máy điện 10 13 W. Đó là khoảng 50 lần so với toàn bộ các nhà máy điện hạt nhân của Hoa Kỳ, Pháp và Nhật Bản có thể sản xuất cùng nhau, chỉ để tạo ra một hàm băm duy nhất.

Điều này sẽ không xảy ra , có nhiều cách dễ dàng hơn để đạt được cùng một mục tiêu (khai thác máy chủ lưu trữ hàm băm ban đầu và thay thế mục tiêu đó, tống tiền ai đó, v.v.).


"... nhiều cách dễ dàng hơn để đạt được điều tương tự ..." Như được minh họa trong xkcd.com/538
Ralph J

2

Điểm chung của bài viết được đề cập trong câu hỏi là: SHA1 không được dùng nữa và nên được loại bỏ trong khi bạn vẫn còn thời gian để làm điều đó một cách trơn tru. Ở một số khu vực, thời gian không còn nhiều kể từ khi Google và Microsoft thực thi thời hạn.

Nguyên tắc chung cho công nghệ không dùng nữa :

  • Nếu bạn thực hiện một thiết kế mới hoặc thêm các tính năng, không sử dụng nó (SHA1).
  • Nếu bạn duy trì một cái gì đó cũ, hãy lập một kế hoạch khi nào cần thay thế nó (SHA1).

Trích dẫn tóm tắt từ bài đăng trên blog năm 2012 của Bruce Schneier.: "Vấn đề là chúng ta trong cộng đồng cần bắt đầu di chuyển khỏi SHA-1 và đến SHA-2 / SHA-3 ngay bây giờ."


2

Đối với phần va chạm băm SHA-1 trong câu hỏi của bạn, điều này đã được giải quyết bằng một vài câu trả lời.

Tuy nhiên, một phần lớn của bản lề này về loại tệp chúng tôi đang làm việc với:

Duy trì nội dung và hoạt động chung của tệp (nhưng tất nhiên hiện bao gồm nội dung độc hại không có nội dung ban đầu đã thay đổi)

Điều này có nghĩa khác nhau rất nhiều về những gì đang phát hiện các thay đổi:

  • Nếu đó là một cơ hội thực thi có chữ ký, không phải là cơ hội (hợp lý): bạn phải nhận được hai xung đột băm bằng cách nào đó: SHA-1 của tệp và chữ ký .exe bên trong.
  • Nếu đó là một tệp thực thi không dấu, .com, không dấu, hoặc tương tự, các nhánh tài nguyên của chúng có thể được thêm vào theo cách không thay đổi hoạt động của chúng và do đó bạn có thể (cuối cùng) có thể bị xung đột băm không thể phát hiện được bằng 'bình thường' hoạt động.
  • Nếu đó là tệp mã nguồn hoặc cấu trúc tương tự (.cs, .c, .h, .cpp, .rb, .yml, .config, .xml, .pl, .bat, .ini) thì việc bổ sung, sửa đổi hoặc xóa có thể bị hạn chế theo cú pháp nhận xét hợp lệ sao cho sự thay đổi sẽ không thể nhận thấy bằng hầu hết các cách sử dụng (biên dịch hoặc chạy nó, không mở nó bằng trình soạn thảo văn bản).
  • Nếu đó là .iso hoặc .zip hoặc định dạng chứa khác, điều đó cũng khó xảy ra hơn vì hầu hết các thay đổi ngẫu nhiên sẽ làm hỏng container. Có thể làm: thêm mục nhập tệp không có thật hoặc thay đổi nội dung trong vùng chứa và kiểm tra lại, nhưng bạn đang thêm một lớp phức tạp và thêm thời gian để kiểm tra kết quả, cũng như có mức độ tự do bị giới hạn làm thế nào và nội dung có thể được thay đổi.
  • Nếu đó là định dạng văn bản hoặc văn bản, chúng có thể được thay đổi gần như bất kỳ cách nào bạn thích trong khi vẫn là tệp 'hợp lệ', mặc dù nội dung có thể sẽ được chú ý.
  • Với nhiều định dạng như .rtf, .doc, .html, .xslx và các định dạng markup-esque khác, chúng có thể được thêm hoặc sửa đổi theo những cách mà trình phân tích cú pháp không thể phát hiện được, ngoại trừ độ dài (hoặc thậm chí với độ dài bị ràng buộc , ít tự do hơn) các tệp có thể được thay đổi để (cuối cùng) bị xung đột băm trong khi vẫn không chỉ là một tệp hợp lệ, mà không thay đổi đáng chú ý theo bất kỳ cách nào có thể nhìn thấy đối với các ứng dụng thông thường mà chúng sẽ được sử dụng.

Vì vậy, những gì bạn còn lại là làm thế nào để có được sự va chạm trong bất kỳ cấu trúc nào không gây khó chịu và một mức độ không thể phát hiện được có lẽ:

  1. Thực hiện bất kỳ thay đổi chức năng nào bạn muốn (có thể chèn nội dung độc hại) và thực hiện bất kỳ thay đổi bổ sung nào để giữ lại tính hợp lệ của định dạng tệp cụ thể
  2. Thêm một phần sẽ không có chức năng (giữa các khối nhận xét, ở phần cuối của tệp văn bản có trả về vận chuyển 3k phía trên nó, cô lập một khối nhận xét hiện tại)
  3. Thêm hoặc chọn một ký tự / điểm mã / byte để sửa đổi và thử mọi kết hợp hợp lệ có thể (ví dụ, không phải mọi kết hợp byte đều hợp lệ cho các mã hóa khác nhau).
  4. Tính toán lại hàm băm, xem nếu va chạm phù hợp.
  5. nếu không, goto 3.

Giả sử bạn có một máy tính siêu nhanh và một tệp nhỏ, như vậy việc sửa đổi với chuỗi byte hợp lệ và tính toán lại hàm băm mất 1 mili giây (có thể yêu cầu một số phần cứng chuyên dụng). Nếu phân phối băm là hoàn toàn ngẫu nhiên và được phân phối trên phạm vi, bạn sẽ bị va chạm với SHA-1 mỗi 2^160lần thử (vũ phu buộc nó).

2^160/1000/60/60/24/365.24 
= 4.63x10^37 years 
= 46,300,000,000,000,000,000,000,000,000,000,000,000 years 
= 46 undecillion years.

Nhưng này, chúng ta hãy thử các phiên bản 2^602^52phiên bản, và giả vờ rằng chúng cho phép chúng ta sửa đổi tệp theo bất kỳ cách nào chúng ta thích (chúng không) và chúng cũng có thể được thực hiện trong 1ms mỗi lần thử:

2^52 yields 142,714 years 
/*humans might still be around to care, but not about these antiquated formats*/
2^60 yields 3.65x10^7 years = 36,500,000 years 
/*machines will probably have taken over anyway*/

Nhưng này, bạn có thể gặp may mắn. Thực sự, thực sự, nhiều điều kỳ diệu hơn bất cứ điều gì mọi người gọi là phép lạ may mắn.


0

Không thực sự, bạn có thể đáp ứng một trong những điều kiện đó cùng một lúc nhưng không phải cả hai .. có thể có cùng một hàm băm cho hai tệp khác nhau nhưng đối với ai đó để thay đổi một tệp và sau đó cố gắng lấy cùng một hàm băm thì không thể như vậy Theo như tôi biết


1
Khá nhiều điều chưa thể . Với sức mạnh tính toán đủ, mọi thứ đều có thể.

-6

Vâng, nó là có thể. Hãy nghĩ về cách thức hoạt động của virus trên EXE. Tải trọng phần mềm độc hại được gắn vào EXE ban đầu, do đó chương trình vẫn thực hiện những gì ban đầu đã làm, nhưng cũng lây lan như một vi-rút. Bây giờ, để duy trì cùng một hàm băm, bạn sẽ cần thêm phần đệm được chế tạo đặc biệt .

Điều đó có nghĩa là các tập tin sẽ lớn hơn. Nhưng trong trường hợp EXE, có lẽ bạn có thể loại bỏ một số mã ít được sử dụng, để chương trình chỉ xuất hiện để hoạt động ban đầu. Trong trường hợp JPEG, bạn có thể nén hình ảnh hơn nữa hoặc sử dụng hoàn toàn một hình ảnh khác. Đối với ISO, bạn có thể xóa các tập tin. Các tính toán cần thiết để sao chép hàm băm sẽ khó khăn hơn và có lẽ về mặt toán học là không thể đối với các trường hợp cụ thể, nhưng nói chung vẫn có thể thực hiện được.


7
-1 mọi thứ trong bài này hoàn toàn được tạo ra. Các cuộc tấn công kéo dài không "duy trì cùng một hàm băm" (hàm băm chỉ thay đổi theo cách đã biết) . Ngoài ra, không có lý do gì vi-rút sẽ phải xóa "mã ít được sử dụng" (làm thế nào để xác định đó là gì?) . Và jpegs phải làm gì với bất cứ điều gì!?
BlueRaja - Daniel Pflughoeft

2
Điều này hoàn toàn sai, tôi thậm chí không thể bắt đầu đề xuất sửa chữa mà không viết lại toàn bộ câu trả lời
Mark K Cowan

2
-1 Không đúng chút nào. hay còn gọi là "Không sai" (Wolfgang Pauli)
Olivier Dulac

1
Chà, chúng ta có thể bắt đầu với thực tế là nếu một cái gì đó có thể nói chung thì rõ ràng là có thể trong một trường hợp cụ thể . Tuy nhiên, điều ngược lại không phải lúc nào cũng đúng: thật dễ để tưởng tượng một vấn đề có thể được giải quyết cho một trường hợp cụ thể, nhưng nói chung là không.
CVn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.