Ваше использование «шифрования» не подпадает под действие правил экспорта США, потому что это не для «информационной безопасности» (я думаю, что вы отвечаете «да, да, да, нет» или около того, ICBW, или они могли изменить порядок).По сути, если это не мешает АНБ шпионить за вами, они с радостью позволят вам его использовать.
Однако шифрование традиционно обеспечивает конфиденциальность, а не целостность сообщений.Если вы хотите убедиться, что пользователь не вмешивался в файл настроек (например, редактируя резервную копию iPhone), просто сохраните его с MAC.То есть
- Сгенерируйте ключ MAC (вытащите несколько байтов из /dev/random).
- Рассчитайте MAC файла при его сохранении (см. Цель-C пример кода для HMAC-SHA1 ; обратите внимание, что принятый ответ на самом деле HMAC-SHA-256)
- Добавить MAC в конец файла (или установить его как атрибут файла, иливставьте его в другой файл).
- При чтении вычислите MAC для файла и убедитесь, что это тот, который вы сохранили.Если он добавлен в файл, вам придется удалить последние несколько байтов (например,
[NSData dataWithContentsOfFile:path]
, затем -subdataWithRange:
дважды, чтобы получить «сообщение» и MAC, затем проверить MAC и проанализировать «сообщение» при проверке).успешно.
Это не помешает кому-то с джейлбрейкнутым телефоном извлечь ключ MAC из вашего бинарного файла, но не слишком сильно. Это также не помешает кому-то прочитать файл настроек открытого текста, ноэто может не быть такой проблемой.
Если вы генерируете файл на компьютере, которым вы управляете (например, это файл, загруженный с сервера), то подпишите его. Технически проверка подписи RSA эквивалентна шифрованию, но я не думаю, что это считается шифрованием для целей экспорта (если это так, то для целей «аутентификации» и до сих пор не считается). Проверка подписи DSA не является шифрованием (я думаю, математика за этим пошланад моей головой) и тоже должно быть в порядке.