2010-07-12 67 views
6

Tôi có một nhiệm vụ không thể giải mã các gói dữ liệu được mã hóa AES/CBC được gửi từ máy khách. Tôi đã thực hiện rất nhiều nghiên cứu dẫn tôi tin rằng mã hóa không an toàn nếu IV tĩnh. Đối với nhiệm vụ này cụ thể, IV luôn được đặt tĩnh là 0. Có cách nào để thực hiện điều này không?Cách giải mã AES/CBC với IV đã biết

EDIT: Văn bản thuần tuý là đoạn trích từ tập lệnh của ấp. Khách hàng gửi chúng theo các khối ngẫu nhiên để độ dài không nhất quán. Các gói tin cuối cùng có thể lặp lại nhưng tôi không chắc chắn 100%.

+0

Có các mẫu/lặp lại đã biết trong bản rõ không? Tôi không biết một cách tiếp cận hoàn toàn ngẫu nhiên. –

Trả lời

3

Không có khóa.

Cụ thể, giả sử không có đệm, lỗ hổng xảy ra khi sử dụng cùng một IV mỗi lần nếu bạn bắt đầu mã hóa cùng dữ liệu bạn đã mã hóa lần trước, bạn sẽ nhận được cùng một chuỗi được mã hóa cả hai lần. Điều này cho phép kẻ tấn công suy ra một cái gì đó về nội dung tin nhắn, mặc dù nó không giúp họ giải mã nó.

0

Zero IV có thể rò rỉ một số thông tin về byte dữ liệu đầu tiên, tuy nhiên, nếu chúng khác nhau thì đây không phải là vấn đề (tuy nhiên, không nên sử dụng). Ví dụ, OpenPGP sử dụng số không IV trong một số trường hợp.

1

Chỉ cần ký hiệu, thuật ngữ "giải mã" có nghĩa là thao tác thông thường bằng cách sử dụng phím. Nếu bạn không có chìa khóa, điều này thường được gọi là "phá vỡ", "nứt" hoặc "cryptanalysis".

CBC với vectơ khởi tạo cố định có thuộc tính mà thông báo (được mã hóa bằng cùng khóa) với khối khởi đầu giống nhau cũng sẽ hiển thị các khối khởi đầu giống nhau trong bản mã ... và đây là điểm yếu duy nhất. Vì vậy, nếu bạn có thể khiến nạn nhân của bạn mã hóa một số đoán cho thông điệp của bạn (với cùng một khóa), bạn có thể so sánh bản mã của nó với mật mã được sử dụng trong thư bạn đang sử dụng.

Điều này dễ hơn khi thư có định dạng cố định và vô vọng nếu thư chứa đủ dữ liệu ngẫu nhiên trước phần thú vị (đây là "vector khởi tạo của người nghèo").

Các điểm yếu khác của CBC phụ thuộc vào các cuộc tấn công mã hóa được lựa chọn mà bạn chọn vector khởi tạo và quan sát một số xác thực giải mã của chúng cũng có thể áp dụng được (bạn sẽ đặt khối bản mã đầu tiên và quan sát xem khối thứ hai có đệm hợp lệ hay không).

0

Vấn đề chính với IV không ngẫu nhiên là hai khối ban đầu giống nhau được mã hóa bằng cùng một khóa sẽ tạo ra cùng một đầu ra. Vì vậy, với mô tả của bạn mảnh ra khỏi Ấp, biết rằng bạn đang sử dụng IV cùng lặp đi lặp lại, tôi sẽ làm như sau:

  • tôi sẽ tính toán bản mã cho "Tồn tại hay không" (16 byte) cho nhiều loại mật khẩu có khả năng (như có thể được tạo ra bởi John the Ripper).
  • Tôi sẽ so sánh cipertext kết quả với tất cả các thư, dựa trên tiền đề rằng chúng có thể bắt đầu với 16 byte này.
  • Nếu phù hợp, tôi biết mật khẩu. Làm xong.

Tôi cũng làm như vậy với một số cụm từ nổi tiếng khác. Đây là một hoạt động tôi có thể làm ồ ạt song song ngay cả trước khi tôi nắm bắt tập tin của bạn và bộ nhớ cache trong một cơ sở dữ liệu. Thuật ngữ chung cho phương pháp này là rainbow table.

Công việc của tôi trở nên dễ dàng hơn rất nhiều nếu tôi biết 16 byte đầu tiên của thư của bạn (chẳng hạn như chúng là thư email cho một người đã biết hoặc yêu cầu HTTP có tiêu đề đã biết hoặc tương tự).

Nhưng nếu bạn sử dụng các khóa ngẫu nhiên (hoặc một KDF thích hợp như PBKDF2) thì sao? Vâng, chúng ta hãy nói rằng tôi có một vài tin nhắn từ bạn, và ít nhất một số người trong số họ có cùng 16 byte đầu tiên (một lần nữa, tiêu đề trong giao thức giúp tôi rất nhiều ở đây). Vâng, bước một là tôi biết rằng những thông điệp này có cùng 16 byte đầu tiên. Đó là thông tin khá hữu ích. Và bây giờ tôi có một số crib để tấn công tin nhắn của bạn.

Việc sử dụng lại khóa IV + trong CBC không hoàn toàn phá hủy tính bảo mật của nó (khi sử dụng lại khóa Nonce + trong chế độ CTR). Nhưng nó mang lại cho kẻ tấn công rất nhiều công cụ hữu ích trong việc đơn giản hóa cuộc tấn công.

Tôi không nói rằng bất kỳ điều nào trong số này sẽ cho phép bạn giải mã bản mã cụ thể của mình trong một khoảng thời gian ngắn. Nhưng tất cả họ đều làm suy giảm mạnh mẽ mật mã mạnh mẽ bị cáo buộc của AES.

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