2012-02-01 3 views
1

Моя программа просит пользователя создать четырехзначный код доступа (как и экран разблокировки, встроенный в iPhone). Программа сохранит код доступа и проверит его на введенный позднее пароль и откажется или предоставит доступ к представлению таблиц документов. Мне также нужно сохранить код доступа в iCloud, если другое устройство хочет использовать одну и ту же базу данных документов. I не нужно необходимо сохранить информацию о пользователе.Методы шифрования документов, хранящихся в iCloud

Я читал об использовании брелка, но это кажется немного излишним для моей цели. Я новичок в безопасности и понятия не имею, что делать и что НЕ делать. Может ли кто-нибудь указать мне в правильном направлении, какие документы или учебники я мог бы прочитать, которые были бы подходящими для моего приложения? Спасибо за помощь.

UPDATE

примечание об использовании брелка в ответ на ответы ниже:

Если бы я должен был использовать связку ключей, я нахожусь под впечатлением от яблока документы, которые я не был бы в состоянии и я не должен хранить код доступа в iCloud. Это представляет интересную проблему, поскольку хранение документов в iCloud является важным поведением моего приложения, поскольку пользователям необходимо получить доступ к тому же набору документов, который защищен паролем на нескольких устройствах. Как мне подойти к этой проблеме? Есть ли известный безопасный способ обойти это, или мне придется полностью отказаться от использования брелка вместе?

ответ

2

Вы намерены сделать простое сравнение строк как делают вид меры безопасности или вы на самом деле шифрования личные данные и только с помощью ключа, который намеренно слаб?

Оба подхода действительны, но я предполагаю, что ваши пользователи ожидают последнего. (Будут ли они upset if someone read their data in plain text right out of the phone backup dumps?)

Если вы на самом деле шифрования своих данных с преднамеренно слабым ключом, то вы определенно должны использовать внутреннюю связку ключей и, возможно, использовать PBKDF2, чтобы сделать ключ полезным основывается на очень короткий промежуток доступных вам секретных данных. Любой другой подход, вероятно, приведет вас к смущающим ситуациям или прямым враждебным пользователям. Пусть Apple управляет как можно больше. (Не храните ключ в ICloud.)

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

+0

Благодарим за информацию! Я определенно хочу зашифровать закрытый ключ. Как я уже упоминал, я хотел бы подражать поведению функции ввода пароля, доступной пользователям iPhone/iPod touch, чтобы разблокировать их устройство. Apple, казалось, полагала, что 4-значный ключ был достаточным, но, возможно, за кулисами они добавили дополнительную защиту. Во всяком случае, что касается не использования iCloud - я согласен - это может привести к катастрофе. См. Мой обновленный вопрос об использовании keychain. –

+0

Я не удивлюсь, если 4-значный ключ замедляется с дальнейшими неправильными догадками или полностью блокирует телефон после определенного количества неправильных догадок. Обе эти опции доступны и вам. – sarnold

+0

Отличное предложение - я бы определенно заблокировал программу на минуту или около того после неправильных догадок. Проблема, которая меня превзошла, - это полный доступ к группе документов на нескольких устройствах, blah ... –

2

Я думаю, SHA1 хорошо для вашей цели только не забудьте добавить «соль» в вашу сырую строку Я сделал это на iPhone App Obj-C 2 года назад, должно быть просто этот пост может помочь Objective C: SHA1 :) надеюсь, что это поможет

+0

спасибо Теду - я рассмотрю это еще немного. Я думаю, что это намного сложнее проблемы, чем я предполагал. –

+0

Вы должны использовать SHA ** 2 ** – SLaks