Подтвердить что ты не робот

Безопасность Keychain iOS

мы хотим использовать сертификаты на iPhone для аутентификации для MS Exchange Sync. Мы не знаем, как внедрена концепция безопасности для защиты этих сертификатов.

например. можно ли получить полный доступ к Keychain на iPhone, если ScreenLock не включен? (или с Jailbroken iPhone).

Есть ли у кого-нибудь ссылки об этом?

4b9b3361

Ответ 1

Исследование Fraunhofer по безопасности брелка iOS:

Из того, что я могу сказать, существуют два уровня шифрования, которые использует keychain iOS. На первом уровне в качестве ключа шифрования используется код блокировки экрана блокировки. Второй уровень использует ключ, сгенерированный и сохраненный на устройстве.

Исследователи Фраунгофера выяснили, как обойти второй уровень. Это "более простой" уровень, чтобы обойти, так как ключ шифрования хранится на устройстве. Итак, на iOS4 их метод работает только с записями keychain, которые НЕ используют kSecAttrAccessibleWhenUnlocked или kSecAttrAccessibleWhenUnlockedThisDeviceOnly, потому что эти записи хранятся в памяти с дешифровкой первого уровня - даже когда телефон заблокирован.

  • Начиная с iOS 4, ключи с kSecAttrAccessibleWhenUnlocked и kSecAttrAccessibleWhenUnlockedThisDeviceOnly защищены дополнительным уровнем шифрования
  • В iOS 3.x и ранее все ключи могут быть дешифрованы с использованием метода Fraunhofer, независимо от используемого атрибута доступности.
  • Устройства без каких-либо паролей будут по-прежнему уязвимы
  • Устройства со слабыми паролями (менее шести цифр) будут по-прежнему уязвимы

≈50 мс за пароль попробуйте; → ≈20 попыток в секунду; → ≈1,7 года для 50% изменение угадывания правильного кода доступа для 6-значного буквенно-цифрового код с базой 36. Стандартный простой код из 4 цифровых цифр быть грубым-принужденным менее чем за 9 минут. Исходя из предположения, что счетчик для неправильных попыток в iOS можно обойти, так как это не аппаратный

Apple Inc. WWDC 2010, Core OS, сессия 209 "Защита данных приложения", слайд 24

Нижняя линия: Если вы должны хранить конфиденциальные данные, лучше используйте собственное шифрование. И не храните ключ на устройстве.

Изменить: Существует множество статей , в которых приводятся исследования Fraunhofer и заверяются в том, что их читатели не беспокоятся, если их устройства не украдены, потому что эта атака может быть выполнена только с физический доступ к устройству.

Я как-то сомневаюсь. Тот факт, что исследователи сделали свои тесты с физическим доступом к телефону, похоже, просто способ упростить проблему, а не ограничивать ее. Это их описание того, что они сделали, чтобы расшифровать записи keychain:

После использования инструмента jailbreaking, чтобы получить доступ к командной оболочке, мы запустите небольшой script, чтобы получить доступ и расшифровать пароли, найденные в Брелок. Дешифрование выполняется с помощью предоставляемых функций самой операционной системой.

Как и любой, кто использовал jailbreak.me, jailbreaking не требует доступа к устройству физического. Теоретически это должно быть тривиально изменить код jailbreak.me и автоматизировать его следующее:

  • Выполните джейлбрейк как обычно (все это требует, чтобы пользователь открыл вредоносный PDF файл).
  • Запустить скрипты Fraunhofer после завершения джейлбрейка
  • Отправлять пароли по сети в местоположение, которое злоумышленник может прочитать из

Итак, будьте осторожны с тем, что вы положили в брелок.

Ответ 2

Обычно ключевое слово было бы рекомендуемым способом хранения такого сертификата. Однако было обнаружено, что джейлбрейкинг может использоваться для обхода безопасности брелка (статья).

Ответ 4

Я могу ответить на часть вашего вопроса, но поскольку другая часть еще неизвестна, я голосую на вопрос, так как я также желаю знать ответ.

Часть, на которую я могу ответить, это: "Может ли приложение получить полный доступ к keychain, если не включен режим блокировки экрана". Нет, каждое приложение имеет свою собственную область брелка на iphone, а это означает, что приложение может получить доступ только к своим собственным секретам. Эти секреты не заблокированы для самого приложения, поэтому нет возможности скрывать записи в файле keychain из самого приложения. Итак, чтобы подвести итог: приложение может читать свои собственные записи и никаких других записей.

Мне интересно узнать, что происходит на устройствах с джейлбрейком. Являются ли брелки всех приложений открытыми после того, как у устройства появился джейлбрейк?