Điểm:2

CTR trùng lặp với IV ngẫu nhiên

lá cờ cn

Vấn đề:

Tôi hơi lo lắng về số lần lặp lại bộ đếm trong chế độ CTR khi sử dụng IV ngẫu nhiên.

  • Nếu bạn chia nhỏ nó (như một nửa IV, một nửa bộ đếm), nó sẽ tăng khả năng có cùng một IV (nó nhỏ hơn) và giới hạn độ dài tin nhắn (nếu ít hơn một nửa).
  • Nếu bạn bắt đầu với toàn bộ khối IV, bộ đếm có thể chồng lên nhau.

Tôi muốn bằng cách nào đó có được bộ đếm khối IV đầy đủ và một nửa khối mà không bị trùng lặp.

Giải pháp đề xuất:

Thay vì sử dụng IV ngẫu nhiên làm nonce trong bộ đếm, chúng tôi tạo khóa mới bằng cách mã hóa IV bằng khóa. Chúng tôi sử dụng khóa mới đó để mã hóa. Bộ đếm bắt đầu với một nửa số không và với một nửa IV hoặc với một nửa khóa chính để làm cho tấn công đa mục tiêu khó hơn.

Giả sử rằng khóa, IV, mật mã khối đều có cùng kích thước.

$k_{data} = E_{k_{master}}(IV)$

$keystream_i = E_{k_{data}}(half(IV) || counter_i)$

Điều này có tốt hơn/tệ hơn không?

Tôi lo lắng điều này sẽ làm yếu chìa khóa. Tổ hợp khóa và IV khác nhau sẽ cho cùng một khóa mới. Nhưng điều này về cơ bản giống như hàm dẫn xuất khóa đơn giản với muối.Điều này sẽ cho phép mọi tin nhắn đến giới hạn sinh nhật.

kelalaka avatar
lá cờ in
Hiện đã có bộ đếm hướng dẫn/LFSR [NIST 800-38-a](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38a.pdf) và [AES CTR: Random IV](https: //crypto.stackexchange.com/q/87064/18298)
lá cờ cn
Cách tiếp cận đầu tiên là hoàn hảo, nhưng không thực tế. Cách tiếp cận thứ hai với IV ngẫu nhiên bị giới hạn ở số lượng tin nhắn hoặc độ dài của tin nhắn như đã đề cập.
Maarten Bodewes avatar
lá cờ in
Tôi nghĩ tốt nhất là coi cấu trúc của bạn là một KBKDF. Trong trường hợp đó, câu hỏi trở thành: KDF đó an toàn đến mức nào? Nhưng có một số điều không rõ ràng với tôi. Nếu bạn viết $k = E_k(IV)$, ý bạn là $k$ sẽ được thay thế? Trong trường hợp đó, bạn đã tạo một giao thức có trạng thái. Thông thường, bạn sẽ có một $k_{master}$ và nhiều $k_{data}$. Hơn nữa, chúng ta có nên luôn giả sử AES 128 bit không? Mã hóa một khối sẽ không tạo khóa 192 hoặc 256 bit.
lá cờ cn
Khóa chỉ được thay thế cho một tin nhắn. Nó không thay đổi khóa chính. Tôi cho rằng khóa đó có cùng kích thước với mật mã khối.
Maarten Bodewes avatar
lá cờ in
Tôi không biết $half(k_{master})$ đột nhiên đến từ đâu nhưng nhìn chung bạn sẽ không bao giờ đưa thông tin chính vào luồng khóa của mình. Nếu tôi nhớ không nhầm thì trước tiên bạn chỉ có một bộ đếm dựa trên số không.
lá cờ cn
Tôi đã đề cập đến nó như là tùy chọn. Điều này là để làm cho các cuộc tấn công đa mục tiêu khó khăn hơn. Nó cũng có thể là $half(IV)$, nhưng tôi nghĩ $k_{master}$ tốt hơn vì nó là bí mật.
lá cờ cn
Suy nghĩ lại, tôi nghĩ $half(IV)$ sẽ an toàn hơn. Nó ít có khả năng lặp lại.
Điểm:-1
lá cờ mc

Nếu bạn có thể nói rằng có giới hạn về lượng dữ liệu được mã hóa trong một luồng, bạn có thể chia IV thành một phần ngẫu nhiên và một phần đối ứng (ví dụ: 64 bit ngẫu nhiên, được tạo một lần trên mỗi luồng) và phần đối chiếu ( bắt đầu từ 0). Bạn có thể chia nó theo bất kỳ cách nào bạn muốn, bạn chỉ cần lo lắng về vấn đề sinh nhật cho kích thước ngẫu nhiên.

Hoặc chỉ cần sử dụng một khóa khác cho mỗi luồng và bắt đầu bộ đếm ở mức 0. Không bao giờ phải lo lắng về sự chồng chéo trong tình huống đó.

lá cờ cn
Có, nhưng trong trường hợp đó với IV ngẫu nhiên 64 bit thì hơi nhỏ. Như được mô tả ở đây: https://crypto.stackexchange.com/questions/1849/why-nên-i-avoid-using-a-randomized-iv-for-ctr-mode
lá cờ cn
Bạn có nghĩ rằng giải pháp được đề xuất của tôi (lấy khóa từ IV ngẫu nhiên) cũng tốt như sử dụng khóa khác nhau cho mỗi luồng không?
Swashbuckler avatar
lá cờ mc
@LightBit Nếu bạn đang gặp phải vấn đề mà họ đang nói đến thì bạn đã gặp phải những vấn đề lớn hơn khác rồi. Có nghiên cứu cho thấy rằng chế độ CTR khá dễ bị rò rỉ và bạn chỉ nên mã hóa nhiều dữ liệu bằng MỘT KHÓA như bạn thực hiện với chế độ CBC, đối với tôi là khoảng 64 GB (tùy thuộc vào thời gian bạn muốn giữ dữ liệu). Đó là cách ít dữ liệu hơn họ đang xem xét.
Swashbuckler avatar
lá cờ mc
Đối với việc lấy khóa từ một IV ngẫu nhiên, tôi sẽ không làm thế. IV không phải là một bí mật, chìa khóa cần phải được bí mật. Nếu bạn đã sử dụng một quy trình cố định để lấy khóa từ IV thì kẻ tấn công có thể lặp lại quy trình đó và lấy khóa.
lá cờ cn
Để lấy khóa từ IV, tôi sẽ mã hóa nó bằng khóa chính. Vì vậy, khóa dẫn xuất sẽ là bí mật.

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