AES Шифрование на Какао Touch - PullRequest
       2

AES Шифрование на Какао Touch

2 голосов
/ 17 декабря 2011

Недавно я разрабатывал приложение, которое нуждается в шифровании AES. Я использую библиотеку шифрования AES, которая имеет такой вызов:

  • (NSData *) encryptData: (NSData *) ключ данных: (NSData *) ключ iv: (NSData *) iv;

Я понимаю, для чего нужны данные и ключ, но iv или вектор инициализации меня смущают. Не возражает ли кто-нибудь объяснить мне важность этого / что это такое и как будет выглядеть правильный вектор инициализации для AES?

Также я был бы признателен, если бы кто-то указал мне верное направление для изучения базовой программной криптографии, любых хороших книг или учебных пособий для изучения шифрования с использованием библиотек C или структур Какао.

1 Ответ

2 голосов
/ 17 декабря 2011

IV "должен" быть случайной строкой данных, вы можете извлечь данные / dev / random для простоты.Это в основном случайная соль, которая встряхивает шифрование.http://en.wikipedia.org/wiki/Initialization_vector имеет больше информации о том, что конкретно является IV.Следите за своим iv с вашим ключом, потому что он также используется в расшифровке.

 NSString *key = @"password";
 NSString *iv = @"randomstringofcharactersfromdevrandom"

 NSData *cipherstream = [ EncryptionLibrary encryptData: data key: key iv: iv ];

 NSData *cleartext = [ EncryptionLibrary decryptData: cipherstream key: key iv: iv ];

Ваш вектор инициализации должен быть случайным для каждого экземпляра приложения, но ваш ключ обычно постоянен или получен из сертификата SSL.

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

...