Для AES128 с использованием CCCrypt () ключ может быть длиннее 128 бит? - PullRequest
5 голосов
/ 14 октября 2011

Я использую метод CCCrypt.

Могу ли я использовать более длинный ключ, чем 128 бит?Это может быть сколь угодно долго?Или, может быть, умножить на 128?

Если так, как бы я это сделал?

Я не думал, что это возможно, но я нашел этот текст: здесь

Некоторые алгоритмы, такие как AES и RSA, допускают ключи различной длины , но другие являются фиксированными, например, DES и 3DES.Шифрование с использованием более длинного ключа обычно подразумевает более высокую устойчивость к восстановлению сообщений.Как обычно, между безопасностью и временем существует компромисс, поэтому выберите длину ключа соответствующим образом.

Как AES допускает разные длины, игнорирует ли он биты больше 128?

Я тяну волосы за это.

Ответы [ 2 ]

7 голосов
/ 15 октября 2011

AES ( Advanced Encryption Standard ) на самом деле представляет собой набор из трех связанных алгоритмов блочного шифрования (или пары алгоритмов, если один учитывает шифрование и дешифрование по отдельности). Все они работают на 128-битных блоках (16 байт).

Наиболее часто используемым является AES-128, который принимает 128-битный ключ (то есть 16 байтов). AES-192 использует 192-битный ключ (24 байта), AES-256 принимает 256-битный ключ (32 байта).

Эти три алгоритма работают одинаково, но все же по-разному (а алгоритмы для более длинных ключей занимают немного больше времени, поскольку они выполняют больше «циклов» операции внутренней путаницы, поэтому все биты ключей могут как-то влиять на все биты зашифрованного текста). Таким образом, все эти ключи для всех этих алгоритмов шифруются и дешифруются по-разному (то есть не существует ключа AES-256, который делает то же самое, что ключ AES-128).

Тем не менее, я, к сожалению, понятия не имею, поддерживает ли библиотека CommonCrypto все варианты AES, и если да (то, что я предполагаю), как выбрать правильный вариант.

5 голосов
/ 15 октября 2011

Объяснение Пауло превосходно!и намного лучше, чем документация Apple по этому вопросу ;-)

Теперь, чтобы поместить это знание в контекст iOS ... вам нужно знать, что cccrypt (как его имя в man страниц) часто называют CommonCrypto (что может облегчить ваш поиск) в других местах на веб-сайте.

Однако вы не найдете много, пока не поймете, что эта часть является программным обеспечением с открытым исходным кодом и в действительности отсутствует документация.

Но как только вы найдете это, вы сможете искать по источникукод для поиска CommonCrypto.h и обнаружение перечислений, которые вы можете использовать, включая: kCCKeySizeAES128 , kCCKeySizeAES192 и kCCKeySizeAES256 - так ДА вы можете использовать 256-битные ключи с AES на iOS.

...