Какую альтернативу использовать вместо CommonCrypto на iphone? - PullRequest
1 голос
/ 24 ноября 2010

Подготовка к отправке моего приложения в магазине Apple Itunes и озадаченный вопросом во время процесса отправки: «Законы об экспорте требуют, чтобы продукты, содержащие шифрование, были должным образом разрешены для экспорта ...... Использует ли ваш продукт шифрование?"

Я использовал CommonCrypto CommonCryptor.h для кодирования файла настроек от несанкционированных изменений.Так что теперь я не уверен, должен ли я полностью удалить все шифрование и оставить только XML-файл в основном как есть или я должен использовать какой-то другой метод для защиты файла.Какие еще простые механизмы защиты я могу использовать для защиты и в то же время не использую шифрование, чтобы я мог подать свое приложение без тонны лишних документов?

1 Ответ

1 голос
/ 24 ноября 2010

Ваше использование «шифрования» не подпадает под действие правил экспорта США, потому что это не для «информационной безопасности» (я думаю, что вы отвечаете «да, да, да, нет» или около того, ICBW, или они могли изменить порядок).По сути, если это не мешает АНБ шпионить за вами, они с радостью позволят вам его использовать.

Однако шифрование традиционно обеспечивает конфиденциальность, а не целостность сообщений.Если вы хотите убедиться, что пользователь не вмешивался в файл настроек (например, редактируя резервную копию iPhone), просто сохраните его с MAC.То есть

  1. Сгенерируйте ключ MAC (вытащите несколько байтов из /dev/random).
  2. Рассчитайте MAC файла при его сохранении (см. Цель-C пример кода для HMAC-SHA1 ; обратите внимание, что принятый ответ на самом деле HMAC-SHA-256)
  3. Добавить MAC в конец файла (или установить его как атрибут файла, иливставьте его в другой файл).
  4. При чтении вычислите MAC для файла и убедитесь, что это тот, который вы сохранили.Если он добавлен в файл, вам придется удалить последние несколько байтов (например, [NSData dataWithContentsOfFile:path], затем -subdataWithRange: дважды, чтобы получить «сообщение» и MAC, затем проверить MAC и проанализировать «сообщение» при проверке).успешно.

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

Если вы генерируете файл на компьютере, которым вы управляете (например, это файл, загруженный с сервера), то подпишите его. Технически проверка подписи RSA эквивалентна шифрованию, но я не думаю, что это считается шифрованием для целей экспорта (если это так, то для целей «аутентификации» и до сих пор не считается). Проверка подписи DSA не является шифрованием (я думаю, математика за этим пошланад моей головой) и тоже должно быть в порядке.

...