Điểm:1

Gặp nhau ở giữa thời gian phức tạp

lá cờ in

Xin chào,
Tôi thắc mắc tại sao người ta nói rằng tin nhắn được mã hóa kép với 2 khóa DES có thể bị phá vỡ trong trường hợp xấu nhất ở $2\times2^{56}$ thời gian sử dụng đáp ứng trong cuộc tấn công giữa.

Đây là lý do của tôi:

  1. Cặp bản rõ & bản mã ví dụ: AAAAAAAAAAAAAAAAA & 35E16A5E44161DB8 (các phím cần ngắt: BABABABABABABABA & CDCDCDCDCDCDCDCD), các cặp bản rõ & bản mã bổ sung cần kiểm tra ở bước 4 vì không gian khóa đủ lớn để có thể có nhiều cặp khóa sẽ thành công chỉ với một cặp: 0000000000000000 & 84EC2BA1A2748F7B ; 1111111111111111 & 549A6B5696E02B5E ; 2222222222222222 & 7BB2C14B23A807C3 ; 3333333333333333 & 3BD27AAF1E0EB4F7
  2. Tôi tạo mảng có 2^56 mục nhập, mục nhập thứ n là cặp (khóa thứ n; văn bản gốc được mã hóa DES AAAAAAAAAAAAAAAA với khóa thứ n). Nó sẽ trông như thế này (các phím theo thứ tự tăng dần với các bit chẵn lẻ chính xác):
    0101010101010101 3AE716954DC04E25
    0101010101010102 2B74C1D96CDE840B
    0101010101010104 3367B1FBB4D2FFA7
    0101010101010107 8880DA13709C9198
    0101010101010108 80181B831CDC8D61
    010101010101010B 0F6CD43C15297456
    .....
  3. Bây giờ tôi phải sắp xếp mảng theo bản mã trong cột 2
  4. Bây giờ tôi thử giải mã bản mã 35E16A5E44161DB8 bằng các khóa liên tiếp và tìm kiếm giá trị này trong cột 2 bằng tìm kiếm nhị phân:
    Nỗ lực #1: khóa 0101010101010101 cung cấp khóa tìm kiếm 477B6FD8296E1956 trong mảng đã sắp xếp, nếu tìm thấy khóa, hãy kiểm tra các cặp văn bản gốc & bản mã khác, sẽ thất bại
    Nỗ lực #2: khóa 0101010101010102 cung cấp khóa tìm kiếm 107272EB5D1BFF28 trong mảng đã sắp xếp, nếu tìm thấy khóa, hãy kiểm tra các cặp văn bản gốc & bản mã khác, sẽ thất bại
    Nỗ lực #3: khóa 0101010101010104 cung cấp khóa tìm kiếm 23153894F3FF825E trong mảng đã sắp xếp, nếu tìm thấy khóa, hãy kiểm tra các cặp văn bản gốc & bản mã khác, sẽ không thành công
    Nỗ lực #4: khóa 0101010101010107 cung cấp khóa tìm kiếm D0D497791C20B166 trong mảng đã sắp xếp, nếu tìm thấy khóa, hãy kiểm tra các cặp văn bản gốc & bản mã khác, sẽ không thành công
    Nỗ lực #5: khóa 0101010101010108 cung cấp khóa tìm kiếm 8A830E5E7927C541 trong mảng đã sắp xếp, nếu tìm thấy khóa, hãy kiểm tra các cặp văn bản gốc & bản mã khác, sẽ thất bại
    Nỗ lực #6: khóa 010101010101010B cung cấp khóa tìm kiếm BA7A15AA12A62C02 trong mảng đã sắp xếp, nếu tìm thấy khóa, hãy kiểm tra các cặp văn bản gốc & bản mã khác, sẽ thất bại
    .....
    Nỗ lực #57873028282430310: khóa CDCDCDCDCDCDCDCD cung cấp khóa tìm kiếm AC972FC04E884797 trong mảng đã sắp xếp, nếu tìm thấy khóa, hãy kiểm tra các cặp văn bản gốc & bản mã khác, sẽ thành công

Đối với tôi, có vẻ như bước 3 là cần thiết để có thể thực hiện bước 4

Nếu tôi đúng, thì độ phức tạp của thời gian sẽ vào khoảng $2^{56}\times\log(2^{56}) = 56\times2^{56}$ sử dụng thuật toán sắp xếp tối ưu. Tôi đang thiếu gì trong lý luận của mình?

kelalaka avatar
lá cờ in
Liên quan và trùng lặp ...[Tại sao áp dụng DES 56 bit hai lần chỉ mang lại 57 bit bảo mật?](https://crypto.stackexchange.com/q/25073/18298)
fgrieu avatar
lá cờ ng
Đã thực hiện [câu hỏi về cách thực hiện cuộc tấn công](https://crypto.stackexchange.com/q/25258/555) (vì yêu cầu RAM $2^{62}$-bit thật lố bịch, không phải vậy).
Điểm:4
lá cờ my

Tôi đang thiếu gì trong lý luận của mình?

Hai điều:

  • Có các chiến lược khác ngoài việc phân loại để tìm va chạm; một điều hiển nhiên là xây dựng một bảng băm khổng lồ. Bây giờ, trong thực tế, việc sắp xếp có thể sẽ diễn ra nhanh hơn (vì một bảng băm lớn như vậy sẽ không thực tế), nhưng về mặt lý thuyết, một bảng băm sẽ cho phép $O(1)$ truy cập mà phân tích phức tạp này giả định ngầm.

  • $O(n \log n)$ không thực sự là thời gian sắp xếp tối ưu. Đó là nếu các thao tác duy nhất bạn có thể thực hiện trên dữ liệu là so sánh và di chuyển dữ liệu; tuy nhiên chúng tôi không thực sự bị hạn chế theo cách đó. Một cách tiếp cận rõ ràng là thực hiện phương pháp sắp xếp cơ số, phương pháp này có thể có độ phức tạp về thời gian tốt hơn đáng kể.

Bây giờ, thành thật mà nói, chúng ta thường bỏ qua thời gian dành cho các hoạt động phi mã hóa này (chẳng hạn như tìm kiếm và sắp xếp), trừ khi chúng chiếm một phần rất lớn trong tổng thời gian. Thành thật mà nói, có thể có rất nhiều chi tiết khi bạn đi xuống cấp độ đó (chẳng hạn như sự phức tạp của việc xử lý $O(2^{56})$ dữ liệu), và thay vào đó chúng tôi chỉ tính các đánh giá DES.

Chúng tôi không thực sự cố gắng phá vỡ 2DES; thay vào đó, chúng tôi đang chứng minh rằng việc phá vỡ 2DES thực sự có thể đạt được trong thời gian thực tế. Nếu chúng tôi thực sự đang cố gắng phá vỡ nó, thay vào đó, chúng tôi có thể sử dụng tìm kiếm lambda, điều này sẽ có hệ số phức tạp tăng liên tục và không được đảm bảo, sẽ dễ triển khai hơn (vì tìm kiếm lambda sẽ sử dụng ít bộ nhớ hơn và vẫn dễ dàng song song hóa).

fgrieu avatar
lá cờ ng
Bổ sung: Chiến lược bảng băm được hỗ trợ vì các giá trị 64 bit được tìm kiếm về cơ bản là ngẫu nhiên. Chúng ta có thể ví dụ sử dụng 48 bit bậc cao của giá trị được tìm kiếm trực tiếp dưới dạng chỉ mục trong một bảng băm nhỏ hơn. Phần thưởng là 48 bit này không cần phải được lưu trữ, giống như đối với một bảng băm đầy đủ. Có thể chỉ ra rằng ngay cả khi chúng ta có chỗ cho các mục nhập $2^8+2^{8/2}$ trên mỗi bảng băm nhỏ hơn (với giá trị được tìm kiếm 16 bit và nội dung 56 bit cho khóa) và bỏ qua phần còn lại, vẫn có cơ hội tuyệt vời để thành công. Chiến lược này ít hơn gấp đôi RAM so với đường cơ sở $2^{62}$-bit.
pajacol avatar
lá cờ in
Độ phức tạp không gian của 2^56 có tăng lên nếu tôi sử dụng bảng băm hoặc sắp xếp cơ số không?
poncho avatar
lá cờ my
@pajacol: không phần lớn (nghĩa là, nó phải duy trì trong một yếu tố không đổi không quá xa so với 1) - tất nhiên, các chi tiết sẽ phụ thuộc vào việc triển khai
lá cờ kr
Đây là một câu trả lời hay nhưng tôi nghĩ rằng nó thiếu một chi tiết quan trọng: 2DES có khóa *112*-bit và tính năng gặp gỡ ở giữa cung cấp cho bạn một cuộc tấn công $O(2^{56})$ vào nó. Nói cách khác, cuộc gặp gỡ ở giữa chứng minh rằng (với thiết bị bẻ khóa lý tưởng) 2DES * không mạnh hơn DES đơn lẻ *. Yếu tố không đổi phía trước chữ O lớn không phải là vấn đề.
lá cờ sh
@zwol nếu bạn đang bỏ qua các yếu tố không đổi, thì $2^{56}$ cũng là một yếu tố không đổi. (Tôi nghĩ rằng việc sử dụng ký hiệu $O(...)$ với một hằng số là một sự lạm dụng ký hiệu kỳ lạ. $O(2^{128}) = O(2^{56}) = O(1)$ trong nghĩa thông thường của $O$.)
lá cờ kr
@ PaÅloEbermann Vâng, tôi đồng ý rằng đó là sự lạm dụng ký hiệu nhưng IME không phải là điều bất thường khi nói về chi phí tấn công vào mật mã. Ý tưởng là điều duy nhất chúng ta quan tâm là số mũ: chuyển từ $2^{112}$ sang $2^{56}$ thể hiện sự yếu đi đáng kể của mật mã.
Điểm:1
lá cờ cl
  1. Bạn có thể lưu tất cả các tùy chọn trên Hashtable (từ điển) (lớn) -> tiếp cận O(1), do đó bạn không cần phải sắp xếp.
  2. Bạn có thể sắp xếp theo sắp xếp cơ số (hoặc nhóm) (ít hơn nlog(n)).

Đă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.