2012-04-05 3 views
2

Я довольно много новичок в криптографии, но я пытаюсь зашифровать некоторые данные и сохранить их в файле в iOS 3, потому что я не хочу, чтобы пользователь просто пошел и отредактируйте файл. Каков надлежащий способ безопасного (относительно) шифрования данных в iOS 3? Большинство документов, которые я нашел в Интернете, были для iOS 5.Правильный и безопасный способ симметричного шифрования строк в iOS 3+

Любая помощь была бы оценена!

Спасибо, Alex

ответ

0

Я не знаю iOS3 достаточно хорошо, чтобы предложить что-то, что уже встроены. Если вам нужно разработать шифрование с нуля, то RC4 абсурдно прост в программировании. Сейчас это устаревает, но все же достаточно безопасно. Его основная ошибка с вашей точки зрения заключается в том, что вам нужно выбрать безопасный ключ, используя хорошую функцию определения ключа (KDF), такую ​​как PBKDF2.

0

«Правильный» способ сделать это - использовать цепочку ключей Apple в IOS. К сожалению, как пишет this, это действительно не так безопасно для IOs3. Для ios4 он работает нормально.

У кого-то, возможно, есть платное решение, но вы вполне можете написать его самостоятельно. Вы будете хотеть, чтобы

  1. Выведите ключ от поставки пароля пользователя с помощью ключа функции выведения таких как PBKDF2. На самом деле вам нужно получить два ключа, так что вы гонг, чтобы запустить его дважды с двумя различными солями RANDOM.

  2. Используйте AES с помощью RANDOM IV и один из ваших производных ключей (важные части и весь код примера, который я видел, не были). добавьте соли и IV к вашему зашифрованному тексту

  3. Используйте hmac с другим производным ключом по всем вышеперечисленным данным. Подготовьте это.

  4. Чтобы расшифровать ключи, используя алгоритм деривации ключа с паролем и добавленными солями, регенерируйте hmac, возьмите хэш-файл sha1 сгенерированного и отдельно хэш-файл sha1 из сообщения в сообщении и убедитесь, что они одинаковы (напрямую не напрямую сравнивать hmacs), а затем расшифровывать данные с использованием другого производного ключа и предшествующего IV.

Это боль, чтобы написать и раздражает пользователей, так как они должны положить в отдельный пароль, но нет никакого способа, чтобы сделать это безопасно в противном случае. Если вы храните ключ на iphone, кто-то может его прочитать и расшифровать данные. Да, вы можете зашифровать ключ, но тогда как вы храните этот ключ?

Я не верю, что у яблока есть приличные объективные привязки c для любого из этого, поэтому вам нужно использовать общий API crypto c. Его документировано here. Объектно-ориентированные API, которые кажутся бесполезными, документированы here

Смежные вопросы