2016-05-10 4 views
0

позволяет говорить, что я хочу шифровать данные в браузере (через JavaScript, используя PGP). Поскольку это не сохранение для хранения ключей в браузере (LocalStorage), я хочу иметь их на внешнем устройстве, например YubiKey, который обеспечивает шифрование/дешифрование PGP.Javascript/Browser enryption: используйте Yubikey

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

ли что-то подобное, что технически возможно? Если нет, где еще я держу ключи для шифрования?

ответ

0

в настоящее время не существует никакого способа доступа к такому устройству с помощью браузера. есть некоторые plans, чтобы добавить такую ​​функцию, но она все еще находится в черновике редактора, поэтому может потребоваться некоторое время, пока она не будет выпущена в качестве стандарта. Конечно, не каждый браузер может не быть su Скрыть эту функцию, когда она станет стандартной.

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

В первый раз, когда генерируется ключ, пользователь может создать своего рода учетную запись с паролем и случайным GUID, сгенерированным сервером (чтобы убедиться, что на сервере не будет двойных идентификаторов GUID - я знаю, что там практически нет шансов на такую ​​ситуацию, но это также хороший уровень дополнительной защиты). Вы можете сохранить GUID на стороне клиента (например, в localStorage), чтобы пользователь не запрашивал его каждый раз. Пользователь должен быть замечен, хотя ключ должен быть сохранен где-то на диске, если локальная хранилища будет очищена. Затем, когда создается учетная запись, ключ будет передаваться безопасно (через https) на сервер, имя ключа будет сгенерированным GUID.

После создания учетной записи и вы хотите получить ключ от сервера браузер должен будет выполнить запрос ajax - пользователь должен указать свой пароль и ключID (GUID), если он не существует в localStorage. Как только сервер будет соответствовать идентификатору keyID с паролем, он вернет ключ. Вы можете расшифровать текст, используя пароль и полученный ключ.

Смежные вопросы