Устройство хранения данных симметричного ключа

Collection<Integer> l = new ArrayList<Integer>();//Do the collection thing...

l.removeIf(i -> i == 5);      //iterates through the collection and removes every occurence of 5

Лямбда-выражения и методы сбора в Jdk 8 входят в Handy и добавляют некоторый синтаксический сахар

21
задан Daniel Schaffer 1 May 2011 в 16:56
поделиться

9 ответов

Там только два действительных решения для (технический аспект) эта проблема. Принятие это - только само приложение, которое должно получить доступ к ключу...

  1. Модуль аппаратной защиты (HSM) - обычно довольно дорогой, и не простой реализовать. Может быть выделенное устройство (например, nCipher) или определенный маркер (например, Alladin eToken). И затем все еще необходимо определить, как обработать те аппаратные средства...

  2. DPAPI (Windows Data Protection API). Существуют классы для этого в Системе. Безопасность. Криптография (ProtectedMemory, ProtectedStorage, и т.д.). Это руки прочь от управления ключами к ОС - и это обрабатывает его хорошо. Используемый в "USER_MODE", DPAPI заблокирует дешифрование ключа к отдельному пользователю, который зашифровал его. (Без того, чтобы быть слишком детализированным пароль пользователя является частью схемы шифрования/дешифрования - и не, изменение пароля не портит его.)

ДОБАВИЛ: Лучше всего использовать DPAPI для защиты Вашего главного ключа и не шифрования данных Вашего приложения непосредственно. И не забывайте устанавливать сильный ACLs на своем зашифрованном ключе...

9
ответ дан 29 November 2019 в 22:09
поделиться

В ответ на № 3 этого ответ от OP

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

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

1
ответ дан 29 November 2019 в 22:09
поделиться

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

Мы в настоящее время полагаем, что лучшая практика была бы:

  • Оператор вручную запускает процесс на клиентском ПК.
  • Клиентский ПК запрашивает оператор его персональные данные для входа в систему.
  • Оператор вводит его учетные данные.
  • Клиентский ПК использует их для входа в систему к серверу базы данных.
  • Клиентский ПК запрашивает свои собственные данные для входа в систему от сервера базы данных.
  • Сервер базы данных проверяет, что данные для входа в систему оператора разрешены получить учетные данные клиентского процесса, и возвращает их клиентскому ПК.
  • Клиентский ПК выходит из datbase сервера.
  • Клиентский ПК входит в сервер базы данных с помощью его собственных учетных данных.

Эффективно, пароль входа в систему оператора является ключом, но он не хранится нигде.

1
ответ дан 29 November 2019 в 22:09
поделиться

Microsoft Rights Management Server (RMS) имеет подобную проблему. Это просто решает его путем шифрования его конфигурации с основным паролем.... Пароль на пароле, если Вы будете.

0
ответ дан 29 November 2019 в 22:09
поделиться

Ваш лучший выбор является к физически безопасному аппаратными средствами, ключ идет. Кроме того, никогда не пишите, что это к диску - находит некоторый способ препятствовать тому, чтобы тот раздел памяти был разбит на страницы к диску. Когда шифрование/дешифрование ключа должно быть загружено в память, и с небезопасными аппаратными средствами всегда существует это место проведения нападения.

существуют, как Вы сказал, устройства аппаратного шифрования, но они не масштабируются - все шифрование/дешифрование проходит через микросхему.

0
ответ дан 29 November 2019 в 22:09
поделиться

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

В этом случае, у Вас есть два очевидного выбора:

  • Физический: Запишите в Карту памяти, запись к CD, и т.д. Хранилище в физически безопасном месте. Но Вы сталкиваетесь с рекурсивной проблемой: где Вы храните ключ к хранилищу? Как правило, Вы делегируете 2 или больше человек (или команда) для удержания клавиш.

  • программное обеспечение: Киберковчег Частный Ковчег что мое использование компании хранить ее секретную цифровую информацию. Мы храним все наши пароли администратора, лицензионные ключи, закрытые ключи, и т.д. Это работает путем выполнения сервера "хранилища" Windows, который не соединен с доменом, брандмауэры все порты кроме его собственного, и хранит все его данные, зашифрованные на диске. Пользовательский доступ через веб-интерфейс, который сначала аутентифицирует пользователя, тогда надежно связывается с сервером хранилища через подобный проводнику интерфейс. Все изменения и версии зарегистрированы. Но, это также имеет ту же рекурсивную проблему... основной CD доступа администратора. Это хранится в нашем физическом хранилище с ограниченным доступом.

0
ответ дан 29 November 2019 в 22:09
поделиться

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

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

0
ответ дан 29 November 2019 в 22:09
поделиться

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

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

Это не столь безопасно как использование аппаратного ключа, но это могло бы все еще быть достаточно хорошо и довольно просто в использовании.

0
ответ дан 29 November 2019 в 22:09
поделиться

В зависимости от Вашего приложения Вы могли использовать Diffie-Hellman метод для двух сторон для безопасного достижения соглашения о симметричном ключе.

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

0
ответ дан 29 November 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: