Является ли хорошей идеей использовать только ключ для шифрования всей (небольшой) файловой системы? - PullRequest
2 голосов
/ 10 июня 2010

Этот вопрос является частью моих сомнений, изложенных в более широком вопросе об идеях реализации небольшой зашифрованной файловой системы на мобильных телефонах Java (J2ME, BlackBerry, Android).При условии получения небольшой обратной связи, учитывая плотность вопроса, я решил разделить эти сомнения на небольшие вопросы.

Итак, подведя итог, я планирую «создать» зашифрованную файловую систему для мобильных телефонов (с помощьюBoucyCastle или подмножество JCE), предоставляя API, который обеспечивает прозрачный доступ к ним.Шифрование будет выполняться на файловой основе (а не на блоках).

Мой вопрос такой:

Является ли хорошей идеей использовать для шифрования только симметричный ключ (возможно, AES-256)все файлы (их может быть не так много, может быть, десятки) и хранить этот ключ в хранилище ключей (защищенном булавкой), или вы предпочитаете шифровать каждый файл с помощью сгенерированного на лету ключа, хранящегося рядом с каждым файлом, шифрование этого ключа с помощью «главного» ключа, хранящегося в хранилище ключей?

Каковы преимущества / недостатки каждого подхода?

Ответы [ 2 ]

5 голосов
/ 10 июня 2010

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

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

3 голосов
/ 10 июня 2010

Я работал над проектом, где у нас был точно такой же вопрос, и мы выбрали вариант 2.


Плюсы варианта 1

  • easy

Минусы варианта 1

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

Плюсы варианта 2

  • Если срок действия мастер-ключа истекает, с отдельными ключами все в порядке, нетнеобходимо повторно зашифровать файлы
  • , если раскрыт мастер-ключ, можно создать новый мастер-ключ, и каждый отдельный ключ необходимо будет повторно зашифровать с новым мастер-ключом
  • ,мастер-ключ пользователя может быть создан;дополнительный уровень косвенной поддержки это
  • по соображениям производительности, индивидуальный ключ должен быть симметричным, но главный ключ может быть асимметричным (этот пункт действительно важен)

Минусы опции2

  • немного сложнее
  • накладные расходы на создание одного симметричного ключа на файл

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...