Điểm:12

Nghịch lý băm trong một tệp hình ảnh có chứa văn bản băm?

lá cờ cn

Có thể bao gồm một thông báo băm rõ ràng trong một hình ảnh, sao cho hàm băm của chính hình ảnh đó chính là thông báo đó không?

Khi chúng tôi vẽ văn bản của hàm băm trong hình ảnh, tất nhiên chúng tôi sẽ thay đổi hàm băm của hình ảnh cùng một lúc, bởi vì như chúng ta biết, những thay đổi nhỏ đối với đầu vào của hàm băm sẽ tạo ra những thay đổi đáng kể ở đầu ra.

Tôi cũng biết rằng các hàm băm là không thể đảo ngược.

Tôi nghĩ về điều này trong khi học xử lý hình ảnh. Tôi muốn đặt văn bản có giá trị của chính hàm băm hình ảnh ở gần đầu hình ảnh.

Có một giải pháp để đạt được mục đích của tôi bằng cách nào đó?

nhập mô tả hình ảnh ở đây

lá cờ xk
Từ nhận xét của bạn về câu trả lời hiện có: "thực ra mục đích của tôi không phải vì lý do bảo mật, mà là để thuyết phục những người đoán được hình ảnh này đang nói về điều gì. Nếu tôi nói câu trả lời `trái tim tan nát` sau khi họ đầu hàng, tất nhiên họ không tin tôi, vì vậy đó là lý do tại sao tôi đặt hàm băm bên trong hình ảnh." Nếu mục tiêu chỉ đơn giản là để có một cam kết (với văn bản `trái tim tan vỡ`), thì tại sao việc bao gồm một hàm băm của điều bạn cam kết trong bức tranh lại không đủ? Tại sao *bản thân hình ảnh* cũng phải băm thành thứ giống như những gì bạn đã cam kết?
lá cờ cn
Tất cả các thuật toán băm hiện đại được thiết kế có chủ ý để giảm thiểu khả năng này. Điều bạn đang yêu cầu là tìm một thuật toán băm không có khả năng chống lại [tấn công tiền ảnh](https://en.wikipedia.org/wiki/Preimage_attack). Đây là lý do tại sao, ví dụ, một thư có chữ ký PGP bao gồm tất cả văn bản trong email *ngoại trừ* chữ ký. Sẽ không thể tính được chữ ký bao gồm chính nó trong văn bản, ít nhất là theo như chúng tôi biết.
Joseph Sible-Reinstate Monica avatar
lá cờ vn
https://news.ycombinator.com/item?id=13823704
Điểm:13
lá cờ in

có giải pháp nào để đạt được mục đích của tôi không?

Chúng tôi có thể chính thức hóa lại câu hỏi của bạn ở dạng chung như;

Tìm một văn bản có chứa hàm băm bên trong nó. $$\text{digest-value} = \operatorname{Hash}(\text{some part| digest-value | some other part)})$$

Khi bạn thay đổi văn bản, giá trị băm sẽ được thay đổi. Điều này là không thể với các hàm băm mật mã vì việc tìm kiếm vượt quá tất cả.

Bạn có thể làm gì;

  • nếu văn bản băm thực sự là 16 giá trị hex, sau đó bạn thử tất cả những gì có thể $2^{64}$ các giá trị để phù hợp. Chúng tôi có thể cho rằng bạn sử dụng SHA-256 và cắt bớt kết quả. Hạn chế là điều này; chúng tôi không biết rằng SHA-256 đã cắt bớt đạt được tất cả các giá trị.

    Nếu một băm $2^k$ giá trị và trims để $k-bit$ sau đó do kỳ vọng va chạm bởi nghịch lý sinh nhật, chúng tôi không mong đợi tất cả các giá trị xảy ra.

    Vì vậy, điều này có thể không có giải pháp cho tất cả các hình ảnh. Điều này vẫn đòi hỏi rất nhiều công việc.

    Nếu văn bản băm là kích thước thực thì điều trên là không thể.

  • Sử dụng một phần hình ảnh, điều này tương tự như giấy PUF. Họ đã trích xuất bề mặt của tờ giấy bằng một số bộ trích xuất mờ, sau đó tờ giấy được ký trên phần mà việc trích xuất không được thực hiện.

    Sử dụng một phần của hình ảnh để tính giá trị băm sau đó in giá trị băm trên phần mà giá trị băm không được tính.

  • Sử dụng hình ảnh nhiều lớp. Một lớp chứa hình ảnh mà toàn bộ phần có thể được băm và lớp trên có thể chứa giá trị có.

    Người dùng có thể khó xử lý các lớp, thay vào đó, bạn có thể sử dụng các thủ thuật lập trình như trong các trang web, người ta có thể thêm văn bản trên một hình ảnh bằng HTML và CSS.

Mục đích của tôi là làm cho một số người dễ dàng hơn mà họ không cần phải băm nó theo cách thủ công.

Tại sao họ không cần phải băm thủ công thì việc sử dụng hàm băm là gì? Kẻ tấn công không thể gửi một hình ảnh có giá trị băm của tệp của họ, để người dùng tin vào điều đó? Đây hoàn toàn không phải là một phương pháp bảo mật tốt, hãy để người dùng tính toán hàm băm thậm chí kiểm tra chữ ký số mà bạn ký.

Maarten Bodewes avatar
lá cờ in
Nhận xét không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được [chuyển sang trò chuyện](https://chat.stackexchange.com/rooms/133668/discussion-on-answer-by-kelalaka-hash-paradox-in-an-image-file-that-contain- băm).
Điểm:9
lá cờ in

Đã có ít nhất hai nỗ lực thành công để tạo ảnh GIF hiển thị hàm băm MD5 của riêng chúng:

hashquine bởi spq

Hashquine của spq

hashquine của Copyheart Rogdham

Hashquine của Copyheart Rogdham

Bạn có thể tải xuống cả hai tệp và xác minh rằng md5sum giá trị băm bằng giá trị băm được hiển thị trong hình ảnh.

Những điều này dựa trên thực tế là các xung đột MD5 ngày nay rất dễ tạo ra và thực tế là định dạng GIF là một chuỗi các khung. Thực tế, ảnh GIF bao gồm 32 khối dữ liệu hoạt ảnh. Mỗi đoạn được tính là đa va chạm MD5 16 chiều, tức là có 16 đoạn khác nhau tạo ra cùng một hàm băm nhưng hiển thị các chữ số thập lục phân khác nhau. Vì vậy, GIF được tạo bằng cách tính toán và ghép nối tất cả 32 xung đột 16 chiều, tính toán hàm băm kết quả của tệp, sau đó chọn các khối tạo ra đầu ra mong muốn.Nói cách khác, tính linh hoạt của định dạng GIF và điểm yếu của MD5, cho phép hàm băm hiển thị được chọn một chữ số tại một thời điểm mà không ảnh hưởng đến hàm băm của tệp hình ảnh.

Về nguyên tắc, một kết quả tương tự có thể đạt được đối với bất kỳ hàm băm nào khác, miễn là nó dễ tạo ra xung đột. Ví dụ: sẽ dễ dàng thực hiện điều này với họ băm CRC, vì rất dễ va chạm với chúng (chỉ cần giải một phương trình tuyến tính). Tuy nhiên, đối với các hàm băm hiện có khả năng chống va chạm, chẳng hạn như SHA-256, thì không khả thi về mặt tính toán.

Các định dạng tệp khác cũng có thể bị tấn công theo cách này: ví dụ: số 14 của tạp chí PoC||GTFO hiển thị hàm băm MD5 của chính nó trên trang bìa của tệp PDF: https://www.alchemistowl.org/pocorgtfo/pocorgtfo14.pdf. PostScript, và thậm chí cả định dạng NES ROM cũng có thể bị tấn công tương tự nhờ các thủ thuật định dạng tệp; đọc tạp chí để biết thêm chi tiết kỹ thuật.

kelalaka avatar
lá cờ in
Có, điều này yêu cầu GIF không áp dụng cho các tệp hình ảnh tiêu chuẩn.
lá cờ in
Tôi khá chắc chắn rằng định dạng GIF là một "tệp ảnh tiêu chuẩn"; nó được chấp nhận rộng rãi trong các trình duyệt và công cụ hình ảnh, đồng thời rất phổ biến trên Internet. Có, điều này không thể khái quát hóa cho tất cả các định dạng - chẳng hạn như BMP rất có thể sẽ không hoạt động - nhưng tôi sẽ không ngạc nhiên nếu bạn có thể làm cho các kỹ thuật tương tự hoạt động không chỉ cho GIF. (Đã có hashquines cho PDF, PS, v.v.)
kelalaka avatar
lá cờ in
Lẽ ra tôi nên nói không hoạt hình đó là mấu chốt của cuộc tấn công. Tôi nghĩ, tuy nhiên, tôi không thể tìm ra cách để áp dụng cuộc tấn công này. Chúng ta nên quên MD5 và SHA-1 đi. Và, tất nhiên, chào mừng bạn đến với [cryptography.se]
lá cờ in
PDF và PS không hoạt hình, nhưng cuộc tấn công vẫn được áp dụng. Tôi sẽ không ngạc nhiên nếu có một cách thông minh để áp dụng điều này cho PNG hoặc JPEG với một số lạm dụng định dạng rất xảo quyệt.
kelalaka avatar
lá cờ in
Trên thực tế, hạn chế duy nhất là OP đã yêu cầu một hàm băm cụ thể, không phải là hàm băm ngẫu nhiên được tạo ra do va chạm. Bạn có thể thấy điều này trên các nhận xét được chuyển vào cuộc trò chuyện dưới câu trả lời của tôi hoặc trên phần cuối cùng của phần trích dẫn câu trả lời của tôi.
kelalaka avatar
lá cờ in
Bất cứ khi nào định dạng dữ liệu cho phép tự do, cuộc tấn công này sẽ hoạt động.
lá cờ ph
jpa
Điều này có thể thực hiện được ở bất kỳ định dạng bitmap nào theo cách này: tạo hai khối 32x RGB32 pixel, một cho nền trước và một cho màu nền. Chọn ngẫu nhiên các bit ít nhạy cảm nhất của mỗi pixel cho đến khi bạn tìm thấy xung đột MD5 giữa tiền cảnh và hậu cảnh (tồn tại các thuật toán cụ thể để tăng tốc độ này). Lắp ráp các khối lại với nhau để có được hình ảnh bạn muốn. Kết quả là văn bản có độ phân giải thấp dạng khối.
lá cờ in
@jpa: Đó là một ý tưởng hay. Tôi nghĩ rằng nếu bạn có * nhiều * kiên nhẫn, bạn có thể sử dụng xung đột tiền tố đã chọn để đạt được điều này theo một cách hơi khác. Cuộc tấn công xung đột được chọn MD5 cho phép bạn lấy hai tiền tố tùy ý, khác nhau và tính toán hai khối dữ liệu ngẫu nhiên tương ứng (trong khoảng 1 ngày) có thể được thêm vào để làm cho các giá trị băm MD5 bằng nhau. Thật không may, điều này tương ứng với việc có một hoặc hai hàng rác giữa các khối, nhưng có thể có nhiều cách để ẩn/giảm nhiễu thị giác, ví dụ: với thủ thuật bảng màu.
Điểm:4
lá cờ cn

Đã có lúc điều này là có thể. Internet Explorer (kinh dị) đã chấp nhận các tệp WMF dưới dạng tệp hình ảnh. Nhờ một thứ được thiết kế ở định dạng tệp, điều này không bao giờ an toàn. Hình ảnh có thể chạy mã tùy ý như một phần của kết xuất hình ảnh. Do đó, giải pháp là để tệp tính toán hàm băm của chính nó tại thời điểm kết xuất và đặt nó lên trên phần còn lại của hình ảnh.

https://en.wikipedia.org/wiki/Windows_Metafile_vulnerability

Tôi biết đây không phải là câu trả lời bạn đang tìm kiếm, nhưng nó là như vậy. Một câu trả lời thực sự cho một hàm băm tiền điện tử sẽ khó đến mức này. Các thuật toán băm tiền điện tử được thiết kế để bạn không thể làm điều này và đó chính là điểm mấu chốt. Nếu bạn có thể làm điều này với dữ liệu tĩnh thì hàm băm không thể làm những gì chúng được thiết kế để làm.

Khi xem xét, đủ công việc giống như Quine và bạn có thể nhận được một bản tái bút hoặc một tệp PDF thực hiện việc này. Nó sẽ khá phiền phức đối với cộng đồng bảo mật cho đến khi họ tìm ra mánh khóe.

Điểm:3
lá cờ cn

Đây là một trong những trường hợp mà câu trả lời toán học và câu trả lời CS khá khác nhau. Đưa ra một hàm băm bảo mật bằng mật mã:

Từ góc độ toán học, được cung cấp một tệp f và một cách cố định để kết hợp các tệp và giá trị băm, chúng ta nên mong đợi cơ hội 1/e có ít nhất một hàm băm h sao cho hàm băm của h kết hợp với f là h. Nếu chúng ta thay đổi các cách kết hợp (đặt ở góc trên cùng bên trái tuyệt đối, đặt ở góc trên cùng bên phải, đặt ở góc trên cùng bên trái nhưng di chuyển một pixel sang bên phải, v.v.), xác suất nhanh chóng tiến gần đến 1 .

Từ quan điểm CS, số lượng phép tính dự kiến ​​tỷ lệ thuận với số lượng đầu ra hàm băm có thể. Đối với bất kỳ hàm băm có kích thước phù hợp nào, đó là một lượng tính toán lớn không khả thi. Số lượng tính toán cần thiết sẽ tương đương với số lượng cần thiết để có được một tệp có hàm băm bằng với hàm băm được chọn trước. Nếu bạn có thể làm điều này, mọi người sẽ ngay lập tức bắt đầu lo lắng liệu bạn có phá vỡ hàm băm bằng cách nào đó hay không.

lá cờ ru
Một cách hay để loại bỏ hàm băm mà bạn không thích - tạo tệp hình ảnh có phần băm của hình ảnh.
Điểm:1
lá cờ us

Sử dụng tên tệp

Vì hàm băm trong hình ảnh thực sự được dùng như một mẹo, nên bạn chỉ cần đặt tên cho tệp 3e2c5b56e34f1979.jpg

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.