iOS Keychain Security

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

например, можно ли получить "полный" доступ к связке ключей на iPhone, если не включена блокировка экрана? (или с взломанным iPhone).

У кого-нибудь есть ссылки по этому поводу?

4 ответа

Исследование Фраунгофера о безопасности брелка для iOS:

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

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

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

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

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

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

Редактировать: Есть многочисленные новостные статьи, в которых цитируется исследование Фраунгофера и заверяются их читатели, чтобы не беспокоиться, если их устройства не будут украдены, потому что эта атака может быть осуществлена ​​только с физическим доступом к устройству.

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

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

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

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

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

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

Франхофер провел исследование по безопасности брелка для iPhone:

http://www.sit.fraunhofer.de/Images/sc_iPhone%20Passwords_tcm501-80443.pdf

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

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

Что мне интересно знать, так это то, что происходит на взломанных устройствах. Открыты ли брелки всех приложений после джейлбрейка устройства?

Другие вопросы по тегам