有什么标准格式可以加密作为数字签名的内容?

时间:2019-03-14 10:20:11

标签: encryption cryptography digital-signature public-key-encryption encryption-asymmetric

例如,使用非对称加密加密的邮件发送时

  

很长很长的信息在这里。 // encrypted with recipents public key

     

由John Doe // encrypted with own private key签名

是否要与自己的数字签名保持一致?签名部分是否有标准格式或广泛使用的约定?甚至还有任何约定,还是每个人想要放在那里的东西完全是随机的?

编辑:

我想我的问题并不是要针对标准本身。与其说约定,不如说是在即时通讯工具或电子邮件中发送示例格式消息。

2 个答案:

答案 0 :(得分:2)

首先-用户使用其私钥签名,而不进行加密。

现在进入主题:

有几种协议可以传递加密和签名的数据。

如果您正在使用(网络)服务,则可以查看WS-Security或XML signature

如果您正在寻找更通用的标准,则可以搜索“ CMS加密消息语法”或PKCS#7

还有一些工具特定的协议,例如使用openssl,文档内签名(pdf,word,.....),它们本身并不是标准的,而是常用的。

答案 1 :(得分:1)

您在comment中提及:

  

首先-用户使用其私钥进行签名,而不是加密。。是的,但这并不意味着使用您的私钥对签名进行加密(以便任何人都可以使用您的公钥对其进行检查)。 ?

此评论的答案通常是:

可以用很多不同的方式来构造密码签名。在RSA中,签名操作类似于加密的某些元素,但这是一个巧合。

例如,对椭圆曲线采用一些Schnorr签名方案:

(In this example, G is a base point for some secure elliptic curve E.
 All variables between brackets are scalars modulo the order of E.)


Setup:
  Alice has a private key x (random).
  Bob has Alice's public key P_A = [x]G.

Alice signs a message m:
  k := random()
  Q := [k]G
  c := H(Q||P_A||m)
  r := k + c*x
  Alice outputs s := (Q, r)

Bob verifies s over m:
  c := H(Q||P_A||m)
  Check if [r]G == Q + [c]P_A

如您所见,这里没有真正的“加密”概念。这只是一个协议。