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