执行公钥加密的最简单方法是什么?

执行公钥加密的最简单方法是什么?

我正在申请一份工作,他们要求我通过电子邮件向他们发送我的社会保险号。你可以说我多疑,但这让我很不舒服。

因此,我正在寻找一种简单形式的公钥加密,以便非技术人力资源人员可以生成公钥,将其发送给我,我可以加密我的 SSN,发送它,然后人力资源人员可以使用他们的私钥解密。

也许像这个网站http://travistidwell.com/jsencrypt/demo/index.html但在这个网站中,没有私钥,加密就无法进行(基数和模数......可能需要重新生成)

答案1

执行公钥加密的最简单方法是什么?

对谁来说最简单?我想你是指人力资源部门的人。我认为最简单的协议可以实现,这样他们只需要访问网站两次,而无需采取任何额外行动。

您需要在您的个人服务器上建立一个非静态站点,并且您可以确信服务器提供商不会查看服务器的硬盘。

让我们看看这些步骤(实现细节与协议交织在一起):

  1. 在您的服务器上生成两个加密 URL,并将第一个 URL 发送给人力资源人员(从现在起为收件人)。您要求收件人在点击该 URL 后给您打电话。

  2. 收件人点击该 URL,然后会发生一些事情:

    • 服务器会检查此 URL 是否之前被请求过,如果是,则会显示错误。在这种情况下,必须再次启动此过程。

    • 如果这是第一次调用该 URL,JavaScript 会生成一个密钥对(public+private)。

      • 公钥被发送到服务器并存储在那里,私钥存储在收件人浏览器中的 localStorage 中。

      • 此外,收件人的浏览器会生成一个随机字符串(称为 token),将其存储在 localStorage 中并将其发送到存储它的服务器。

  3. 现在,收件人给您打电话。那时,您问他们是否有错误。如果没有错误,您需要打开在步骤 1 中生成的第二个加密 URL。此加密 URL 链接到在步骤 2 中从收件人收到的信息,并包含一个表格,您可以在其中输入您的 SSN。

  4. 使用存储的公钥对 SSN 进行加密,并将密文发布到基于步骤 2 中的令牌的第三个加密 URL。

  5. 你要求收件人再次点击链接,并收到一个错误页面,但这个错误页面很快就被隐藏了,因为 localStorage 中还有其他值,这意味着这是一个合法的请求。收件人的浏览器执行以下操作:

    • 它从 localStorage 获取令牌并查询密文。

    • 它从 localStorage 获取私钥并解密密文。

    • 它显示 SSN。

此协议解决了 SSN 从未以明文形式存储在服务器上的问题,如果有人在目标收件人之前或之后点击该链接,他们将看不到任何内容。不过,这可能仍然容易受到恶意托管商的 SSL 拦截,并且存在社会工程的切入点。

如果您不希望收件人再次单击该 URL,则可以通过使用长轮询或 Web 套接字来稍微改进一下。


如果你的意思是最簡單对于您来说,那么您要么需要危及安全,要么亲自前往他们的办公室。


您不应该为此使用 JSEncrypt。在这里集成它会很困难。您应该选择锻造(提供 RSA 及其相关一切)或陳文(通过 KEM 提供 ElGamal 加密,需要与 AES-GCM 一起实现;所以也不太容易)。

答案2

使用类似的网站https://www.igolder.com/PGP/generate-key/生成 PGP 公钥和私钥。让人力资源部人员将他们的公钥发送给您。使用他们的公钥加密您的 SSN,然后将其发送给人力资源部人员,然后人力资源部人员可以使用他们的私钥对其进行解密。

相关内容