2010-06-16 22 views
11

Làm thế nào để tấn công brute-force trên dữ liệu được mã hóa biết khi nào họ tìm thấy chìa khóa bên phải để giải mã dữ liệu? Có cách nào để biết rằng dữ liệu đã được giải mã, ngoài việc có một con người nhìn vào nó? Điều gì xảy ra nếu nó không phải là dữ liệu thân thiện với con người?Các cuộc tấn công giải mã lực lượng vũ phu biết khi nào họ tìm được giải pháp đúng?

+1

Có thể ai đó mã hóa dữ liệu theo cách sao cho dữ liệu có thể được giải mã theo nhiều cách, tạo ra nhiều kết quả hợp lệ, nhưng khác biệt? (Chỉ với một trong số đó là chính xác, có lẽ.) – JAB

+0

@JAB: Bạn nhận được điều đó tự động với một pad thời gian ... nó chỉ là OTPs chỉ hữu ích trong một số trường hợp hạn chế. – dmckee

+3

** Trả lời cho câu hỏi không liên quan đến lập trình này: ** bằng cách tận dụng các thuộc tính đã biết hoặc dự kiến ​​của văn bản thuần túy đối với dự phòng và định dạng. Alice có thể làm cho cuộc sống của Eve trở nên khó khăn hơn bằng cách nén văn bản đơn giản trước khi mã hóa một cách hiệu quả. – dmckee

Trả lời

7

Tùy thuộc vào phương pháp mã hóa. Ví dụ: với mã hóa RSA, nếu bạn đang tìm khóa riêng tư, bạn biết bạn đã tìm thấy khóa đó khi khóa công khai là bội số của số được đề cập.

8

Các nhà mật mã hy vọng đã biết bản mã và bản rõ. Một chìa khóa giải mã rằng bản mã tới bản rõ đó chắc chắn là chìa khóa bên phải.

Không rõ nguyên bản, định dạng của dữ liệu phải được biết. Ví dụ: HTML văn bản thuần túy chứa thẻ. Một plaintext thư mục điện thoại chứa số điện thoại. Và cứ thế.

+0

... đó là lý do tại sao bạn nên viết các tin nhắn siêu bí mật của mình bằng một ngôn ngữ riêng tư bí mật * trước khi * áp dụng mã hóa. ;) ... tất nhiên ngôn ngữ đó vẫn có thể được giải mã, nhưng nó sẽ làm cho công việc làm nứt các thông điệp khó hơn rất nhiều. – FrustratedWithFormsDesigner

+2

... Hoặc chỉ cần mã hóa nhiều lần. Tôi đã hoàn thành cuốn sách kinh khủng của Dave Brown * Pháo đài số * –

+2

@Adam Gent: Đừng bận tâm. Hầu như bất kỳ hoạt động nào khác đáng giá hơn. – FrustratedWithFormsDesigner

3

Tùy thuộc vào thuật toán. Với nhiều thuật toán chỉ có một khóa giải mã chính xác. Khi bạn có khóa, bạn có thể dễ dàng xác minh đó là khóa chính xác trong thời gian đa thức.

Với một số thuật toán mặc dù không thể biết khi nào bạn có khóa chính xác. Tất cả các văn bản thuần tuý (có độ dài chính xác) đều có thể cho đầu ra. Ví dụ về sơ đồ như vậy là one-time pad với mã hóa XOR. Tuy nhiên, nếu một pad được sử dụng lại có thể được XORed với nhau để loại bỏ khóa và sau đó có thể trích xuất hai thông điệp rõ ràng bằng cách sử dụng các kỹ thuật như frequency analysis để xác định loại dữ liệu nào và .

+0

+1 cho miếng đệm một lần! ... mặc dù tôi nghĩ rằng chúng được gọi là miếng đệm một lần * bởi vì * chúng không thể được tái sử dụng ... hoặc có thể chúng có thể chống lại. – FrustratedWithFormsDesigner

+1

@Frustrated: Nếu bạn sử dụng lại chúng, chúng sẽ mất * tất cả * bảo mật tuyệt vời về mặt toán học được đảm bảo ... – dmckee

+3

Nếu bạn sử dụng lại chúng, chúng là miếng đệm hai lần. –

Các vấn đề liên quan