Подтвердить что ты не робот

Шифрование AES и С#

Из моего чтения я не уверен, является ли AES единым стандартизованным алгоритмом, который может работать с разными ключами длины или с семейством подобных алгоритмов? Я имею в виду, если я найду какие-либо 2 реализации AES с 128-битным ключом, должен ли я быть уверенным, что они будут работать одинаково (запрет ошибок)?

В частности, в .Net/С# я был смущен, почему существуют две реализации абстрактного базового класса System.Security.Cryptography.Aes: System.Security.Cryptography.AesCryptoServiceProvider и System.Security.Cryptography.AesManaged.

Тогда существует, по-видимому, различие/перекрытие между AES и Rijndael,.NET имеет классы Rijndael и RijndaelManaged, а также RijndaelManagedTransform

Каковы различия между ними? Я замечаю, что классы AES, похоже, существуют только с .NET 3.5, тогда как Rijndael существует с 1.0

Извините, если это глупые вопросы, я новичок в криптографии, кроме защищенных хеширующих функций.

4b9b3361

Ответ 1

AES, стандарт расширенного шифрования, определяет в FIPS PUB 197 три симметричных блок-шифра: AES-128, AES-192 и AES- 256. Все три алгоритма определяются конкретными параметрами-выборами для алгоритма Rijndael.

AES-128-шифрование - это функция (ключ, данные) → (шифрование). Rijndael-encryption - это функция (ключ, данные, размер блока, размер ключа) → (шифрование).

AesCryptoServiceProvider использует базовый Windows CryptoAPI для выполнения шифрования. AesManaged выполняет шифрование в чистом управляемом коде. RijndaelManaged поддерживает полный диапазон параметров-выборов (также в чистом управляемом коде).

Преимущества использования AesCryptoServiceProvider включают потенциал для более высокой скорости и тот факт, что CryptoAPI сертифицирован FIPS (в некоторых версиях Windows).

Преимущества AesManaged включают переносимость (AesCryptoServiceProvider не поддерживается во всех версиях Windows).

Единственное преимущество RijndaelManaged заключается в том, что оно поддерживается в ранних версиях .NET Framework. Я никогда не видел, чтобы кто-либо использовал параметры параметра, отличного от AES.

Ответ 2

Ниже приведена страница AesCryptoServiceProvider MSDN.

Windows 7, Windows Vista с пакетом обновления 1 (SP1) или более поздней версии, Windows XP с пакетом обновления 3 (SP3), Windows Server 2008 (роль сервера не поддерживается), Windows Server 2008 R2 (роль основного ядра сервера не поддерживается), Windows Server 2003 SP2

.NET Framework не поддерживает все версии каждой платформы. Список поддерживаемых версий см. В разделе Требования к платформе .NET Framework.

Дело в том, что я действительно не вижу причины, почему он не будет поддерживаться..NET 3.5 обычно устанавливается в Windows XP, но может быть что-то о CLR до XP SP3, которое может быть другим и не позволяет этому работать должным образом. На странице MSDN действительно недостаточно информации для спекуляции; хотя.

Что касается вашего вопроса, различия (опять же из MSDN) между классами выглядят следующим образом:

AesManaged

Предоставляет управляемую реализацию симметричного алгоритма Advanced Encryption Standard (AES).

Алгоритм AES по существу является симметричным алгоритмом Рийндаля с фиксированным размером блока и количеством итераций. Этот класс работает так же, как класс RijndaelManaged, но ограничивает блоки до 128 бит и не поддерживает режимы обратной связи.

AesCryptoServiceProvider

Выполняет симметричное шифрование и дешифрование с использованием реализации Cryptic Application Programming Interfaces (CAPI) алгоритма Advanced Encryption Standard (AES).

Айз

Представляет абстрактный базовый класс, из которого должны наследоваться все реализации стандарта расширенного шифрования (AES).

Я всегда придерживался реализаций * CryptoServiceProvider, поскольку они всегда предоставляли мне то, что я желаю. Единственное, что я предлагаю, это то, что вы хотите увидеть, работают ли разные классы по-разному, чтобы написать некоторые тестовые примеры и модульные тесты и фактически увидеть их в действии.

Ответ 3

Обратите внимание, что эти функции не поддерживаются на XP (даже XP SP3), поэтому, если поддержка XP важна, вы не должны использовать их