#c# #encryption #3des #tripledes
#c# #шифрование #3des #tripledes
Вопрос:
При создании нового экземпляра TripleDESCryptoServiceProvider генерируются ключ и IV.
Имеет смысл, что IV генерируется каждый раз.
Но в чем смысл того, что ключ генерируется каждый раз?
Разве ключ не должен быть статическим, чтобы его можно было совместно использовать между сторонами, которые отправляют друг другу зашифрованные сообщения? Разве я не всегда просто переопределял случайный ключ общим ключом?
В какой ситуации полезно каждый раз генерировать новый ключ?
Ответ №1:
Часто ключи генерируются случайным образом для каждого сообщения, а затем надежно передаются вместе с зашифрованным сообщением получателю с использованием алгоритма открытого ключа.
Итак, в этом случае инициализация шифра соответствующим ключом удобна и, вероятно, безопаснее, если вы предполагаете, что разработчик библиотеки с меньшей вероятностью будет использовать неправильные методы генерации ключей.
Однако, если у вас есть существующий ключ, который вам нужно использовать, и перезаписать начальный ключ шифра, единственное, что вы потеряли, это некоторые биты из пула энтропии.
Комментарии:
1. Кроме того, DES и Triple DES имеют так называемые слабые ключи, которые будут автоматически отфильтровываться при генерации ключа через API. Это лишь слабый аргумент, потому что другие поставщики криптосервисов (например, AES) делают то же самое.