Я подаю заявку на работу, и они попросили меня отправить мой SSN по электронной почте. Назовите меня параноиком, но мне это не нравится.

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

Возможно, что-то вроде этого сайта http://travistidwell.com/jsencrypt/demo/index.html, но на этом сайте шифрование не работает без закрытого ключа (база и модуль ... вероятно, регенерируются)

2 ответа2

1

Какой самый простой способ выполнить шифрование с открытым ключом?

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

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

Давайте посмотрим шаги (детали реализации переплетаются с протоколом):

  1. Создайте на своем сервере два загадочных URL-адреса и отправьте первый URL-адрес сотруднику отдела кадров (отныне получателю). Вы просите получателя позвонить вам после того, как он нажмет URL.

  2. Получатель нажимает на URL, и происходит ряд вещей:

    • Сервер проверяет, был ли этот URL запрошен ранее, и покажет ошибку, если таковая была. В этом случае этот процесс должен быть начат снова.

    • Если это первый раз, когда URL вызывается, JavaScript генерирует пару ключей (открытый + закрытый).

      • Открытый ключ отправляется на сервер и сохраняется там, а закрытый ключ сохраняется в localStorage в браузере получателей.

      • Кроме того, браузер получателей генерирует случайную строку (называемую токеном), сохраняет ее в localStorage и отправляет на сервер, где она хранится.

  3. Теперь получатель звонит вам. В это время вы спрашиваете их, была ли ошибка. Если его не было, вам нужно открыть второй загадочный URL-адрес, созданный на шаге 1. Этот загадочный URL-адрес связан с информацией, полученной от получателя на шаге 2, и содержит форму, в которой вы можете ввести свой SSN.

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

  5. Вы просите получателя снова щелкнуть ссылку и получить страницу с ошибкой, но эта страница с ошибкой быстро скрывается, поскольку в localStorage есть дополнительные значения, что означает, что это допустимый запрос. Браузер получателя делает следующее:

    • Он извлекает токен из localStorage и запрашивает зашифрованный текст.

    • Он извлекает закрытый ключ из localStorage и расшифровывает зашифрованный текст.

    • Он отображает SSN.

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

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


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


Вы не должны использовать JSEncrypt для этого. Было бы трудно интегрировать это здесь. Вы должны либо пойти на forge (предоставляет RSA и все вокруг него), либо sjcl (обеспечивает шифрование ElGamal через KEM, которое должно быть реализовано вместе с AES-GCM; так что это тоже не очень просто).

0

Используйте такой веб-сайт, как https://www.igolder.com/PGP/generate-key/, для создания открытых и закрытых ключей PGP. Пусть сотрудник отдела кадров отправит вам свой открытый ключ. С помощью их открытого ключа зашифруйте ваш SSN, а затем отправьте его сотруднику отдела кадров, который затем сможет расшифровать его с помощью своего личного ключа.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .