iOS Keychain Security - PullRequest
       8

iOS Keychain Security

54 голосов
/ 24 августа 2010

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

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

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

Ответы [ 4 ]

47 голосов
/ 16 июля 2011

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

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

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

  • Начиная сiOS 4, ключи с 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. Запуск сценариев Fraunhofer после завершения джейлбрейка
  3. Отправка паролей по сети в место, откуда злоумышленник может прочитать его из

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

4 голосов
/ 02 марта 2011

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

3 голосов
/ 20 марта 2011

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

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

2 голосов
/ 11 октября 2010

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

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

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

...