【问题标题】:Cryptography: Securing Digital Signature and Key Pair密码学:保护数字签名和密钥对
【发布时间】:2020-07-26 06:06:12
【问题描述】:

我开发了一个基于混合加密的加密解决方案:

发件人端:

  1. 将计算消息哈希。
  2. 哈希将使用发件人的私钥签名。
  3. 哈希将使用发件人的私钥进行加密。
  4. 将生成一个对称密钥。
  5. 对称密钥将加密消息。
  6. 对称密钥随后将使用接收方的公钥进行加密。

接收端:

  1. 用发件人的公钥解密散列。
  2. 使用发件人的公钥验证签名。
  3. 使用接收者的私钥解密对称密钥。
  4. 使用对称密钥解密消息。

现在我想将哈希值保存在文件中,将数字签名保存在文件中,密钥加密保存在文件中,实际消息加密保存在文件中以及密钥对。

我应该以什么文件类型保存所有这些? 是 CSV、TXT 文件还是其他文件?

我必须确保密钥和数字签名的安全..

请指导!

【问题讨论】:

    标签: encryption


    【解决方案1】:

    对于发送者:步骤 1、2 和 3 通常组合成一个签名生成操作。你不要分开做。对于签名验证的接收者的第 1 步和第 2 步也是如此(顺便说一下,您错过了消息的哈希步骤)。

    现代密码学是基于字节的,所以通常你定义一个single二进制容器格式,这样你就不必不必要地扩展密文(与明文相比)。这样的容器可以包含多个值:加密密钥和由消息和签名组成的加密内容。通常还有一个标题,其中包含版本字符串和所需键的 ID 等等。

    当然,已经为您当前使用的混合密码术定义了许多容器格式,其中CMS(带有分层 PKI)和(Open)PGP(带有基于信任网络的 PKI)是最多的众所周知的。

    否则由您决定。如果您需要基于文本的存储,通常您会使用 base 64 对密文/签名进行编码。请在标题中的某处包含版本字符串并创建一个文档来描述您的协议。

    【讨论】:

    • 感谢您的回答伙伴。但我的查询是我有数字签名字符串。那么,我是否应该将它保存在一个txt文件中并发送给接收者进行验证?还是首选任何其他安全文件格式?
    • 通常您会使用单个文件,这样您就不会创建错误的消息/签名对。没有它,生活已经够艰难了。默认情况下,签名是二进制的,它不是字符串(当然,除非你计算位/八位字节字符串,它们通常只是字节数组)。无需将哈希值与签名分开存储。
    • 如果我不存储,接收方将如何验证?
    • 通过验证签名。比较是在签名验证过程本身内执行的。使用 RSA / PKCS#1,哈希在解密后直接进行比较。但其他签名方案在计算中使用哈希,只有正确的哈希作为输入才能验证签名。
    猜你喜欢
    • 2019-02-04
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    相关资源
    最近更新 更多