Tại sao mã hóa với cùng một lần không tốt?


20

Để mã hóa một thông điệp với một one-time-pad quan trọng k bạn làm E n c ( m 1 , k ) = m 1k .m1kEnc(m1,k)=m1k

Nếu bạn sử dụng cùng để mã hóa một thông điệp khác nhau m 2 bạn nhận được E n c ( m 2 , k ) = m 2k , và nếu bạn thực hiện XOR của hai bản mã bạn nhận được ( m 1k ) ( m 2k ) = m 1m 2km2Enc(m2,k)=m2k

(m1k)(m2k)=m1m2

vì vậy, OK, có một số rò rỉ thông tin vì bạn học , nhưng tại sao nó không an toàn? Tôi không có cách nào để học (nói) m 1 trừ khi tôi biết m 2 . Vậy tại sao lại sai khi sử dụng k hai lần ??m1m2m1m2k


vâng, đây là gieo hạt. Chủ yếu, gieo mầm cuộc tranh luận về đường biên giữa crypto.se và cs.se.
Ran G.

Xin vui lòng xem ở đây để thảo luận về các thẻ được sử dụng.
Raphael

Tôi nhớ tôi đã thấy một hình ảnh trực quan làm cho nó thực sự rõ ràng, nhưng tôi không thể tìm thấy nó bây giờ. Có ai biết tôi đang nói về cái gì không? (Tôi hy vọng rằng tôi không nhầm lẫn nó với một hình ảnh tiền điện tử khác như ECB linux-pinguin, v.v.)
Ran G.

1
@RanG. : phải - câu hỏi crypto.se tương ứng là tại Lợi dụng tái sử dụng khóa phím một lần?
David Cary

Câu trả lời:


14

Tôi không có cách nào để học (nói) trừ khi tôi biết m 2 .m1m2

(m2k)m2=k

k

Chiến lược chung này để phá vỡ một hệ thống mật mã được gọi là một cuộc tấn công bằng văn bản đã biết . Nhiều hệ thống, như AES và RSA, được cho là an toàn trước các cuộc tấn công này. Nhưng một miếng đệm một lần trở nên hoàn toàn không an toàn đối với chúng trừ khi một miếng đệm mới được sử dụng cho mọi mã hóa, đó là lý do tại sao chúng được đặt tên là "miếng đệm một lần".


11

Nó không chính xác do lý do bạn đề cập - có một số rò rỉ thông tin.

Về cơ bản, nếu bạn có bất kỳ giả định nào về các bản rõ (văn bản tiếng Anh, các tệp có cấu trúc đã biết, v.v.), nó sẽ dẫn đến một phân tích thống kê dễ dàng. Có lẽ việc sử dụng nó hai lần không làm thay đổi đáng kể tính thực tế của cuộc tấn công, nhưng sử dụng nó nhiều lần với một bản rõ không ngẫu nhiên, cuối cùng sẽ tiết lộ đủ thông tin để phục hồi khóa.

Cuối cùng, nếu bạn chỉ có khả năng sử dụng hai lần , bạn cũng có khả năng chỉ sử dụng một lần - hạn chế là những miếng đệm một lần này không được sử dụng có khả năng chưa biết và theo thời gian, làm hỏng số lần.

m1m2

Các cuộc tấn công văn bản đơn giản được biết đến là khá phổ biến, thật dễ dàng để ép buộc một cơ chế mã hóa để mã hóa thứ gì đó mà bạn biết a-prori. Nếu không, bạn thường có thể đưa ra các giả định thống kê hợp lý.


Ngoài ra, các miếng đệm một lần có thuộc tính mà nếu bạn biết cyphertext và thậm chí là một phần của bản rõ, bạn có thể khôi phục ngay phần tương ứng của khóa, có nghĩa là một phần của tất cả các tin nhắn được mã hóa bằng cùng một pad được gửi một cách hiệu quả trong rõ ràng (làm cho nó dễ dàng hơn để đoán thêm một số bản rõ, tiết lộ thêm về khóa, v.v.). Nếu bạn đang mã hóa nhiều thứ như email hoặc yêu cầu HTTP, thì kẻ tấn công hầu như luôn có thể biết một phần của bản rõ đơn giản là do cấu trúc của các giao thức này.
Ben

6

(m1k)(m2k)=m1m2

log226=4.7

Nếu bạn muốn sử dụng một lần hai lần, bạn cần nén tin nhắn của mình trước. Và thậm chí sau đó, nếu bạn không sử dụng thuật toán nén gần như hoàn hảo và bạn sử dụng bộ đệm một lần nhiều lần, sẽ có đủ entropy còn lại để khôi phục thông điệp theo lý thuyết. Tôi không biết nó sẽ khó như thế nào trong thực tế.


4

m1m2m1m2

Trên thực tế, đối với nhiều trường hợp, nó rất đơn giản. Đây là một hình dung đơn giản.


2

Đây là một cách trực quan để thể hiện cách tiếp cận mà không đòi hỏi toán học. Giả sử bạn có hai tin nhắn được mã hóa đã được mã hóa bởi cùng một thời gian.

  1. Đoán một từ hoặc cụm từ có thể được chứa trong một trong các tin nhắn. Hãy nói cụm từ "Báo cáo thời tiết"
  2. Bắt đầu với tin nhắn 1, giả sử rằng "Báo cáo thời tiết" xảy ra ở vị trí chữ cái đầu tiên.
  3. Tính lại 14 ký tự đầu tiên của bảng đệm một lần.
  4. Giải mã 14 ký tự đầu tiên của tin nhắn 2 bằng OTP được tính toán ngược.
  5. Nếu bản rõ trông giống như gobble-di-gook, sau đó quay lại bước 2 và lặp lại ở vị trí chữ cái thứ 2. Tuy nhiên, nếu bạn nhận được văn bản có ý nghĩa (ví dụ "Chào buổi sáng tôi" thì xin chúc mừng, bạn đã tìm ra 14 ký tự đầu tiên của OTP (và 14 ký tự đầu tiên của mỗi chữ cái)
  6. Nếu bạn đến cuối tin nhắn 1 mà không ném bất cứ thứ gì ngoài các chữ cái ngẫu nhiên, thì bạn có thể kết luận rằng cụm từ "Báo cáo thời tiết" không xảy ra trong tin nhắn 1. Quay trở lại bước 1 với một cụm từ khác như "Đại tá thân mến "
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.