所以,我正在寻求一些帮助,大多数都是在理解代码签名和加密的过程,因为我对这两个主题仍然不满意。
我认为我理解:
然后,除了中间CA之外,还可以使用此证书来签署一个文件,以便它基本上有你的名字,收件人可以放心,这就是你想要的接收。
Versus :
问题:当我使用证书签署代码时,有效负载是否也会被加密?这与网站的SSL安全性有何不同,确保连接的安全性和隐私性?看起来他们都使用相同的技术来完成许多不同的任务。
答案 0 :(得分:1)
我将在这里逐点回复一些关于误解的摘要/注释:
首先需要的是KEY,它是使用一些加密算法(RSA / SHA1 / etc)生成的
是的,关键是开始。实际上,如果签署密钥对,您就会生成公钥/私钥对。你保留私人部分,每个人都可能知道公共部分。算法的小校正 - Sha1用于散列,不用于加密。因此,对于证书,通常是RSA / DSA / ECDSA。
使用此密钥,我们可以创建证书签名请求或CSR(与X509有关吗?),其中包含我们在证书上的所有信息(名称,位置,电子邮件,域名)
是的,要获得典型的网站证书(x509标准),您需要签名请求/ CSR / PKCS#11(同样的事情)。
KEY和CSR都会被发送到根CA,后者然后以.pem或.p12文件的形式发布证书(使用CSR和密钥生成)。
不,只有密钥的公共部分(已包含在CSR中)才会发送给颁发证书的CA.除了你之外,没有人需要私钥。
关于中间CA和更多证书的内容
根CA不会签署您的证书(出于与更好的安全性相关的各种原因并使其保持脱机状态)。中间CA执行,并且它们由根CA签名。这意味着如果您要使用证书来保护浏览器的流量,则通常需要包含中间证书。您可以通过查看https://www.ssllabs.com/ssltest/来验证是否所有内容都已到位 - 它会告诉您链中是否缺少某些证书。
除了中间CA之外,还可以使用此证书对文件进行签名,使其基本上具有您的名称,并且收件人可以确信它是您希望他们接收的内容。
是。它可用于签署文件(S / MIME格式),但也可用于协商安全的互联网连接。
证书内的公钥用于使用aes加密文件内容,因此在安装加密文件之前必须在目标上安装证书。 (这看似安全,但不是人们想要的,人们无法读取或解码但仍具有功能的密码)
您所描述的更像是DRM。只有拥有密钥的人才能阅读文件,但从安全的角度来看,这并没有多大意义,因为你需要首先给他们密钥。您可以使程序更复杂和混乱,但最终他们必须知道密钥的其他部分。
此外,即使在这种情况下,您也应该分发公钥,而不是私钥。您可以从私钥生成公钥,但不能相反。
我认为你不能完全加密文件是有道理的,因为它需要被解码才能在目标上执行。我不在这吗?
你是对的。安全执行加密软件的唯一方法是将执行引擎/密钥保持在软件不可及的范围内 - 例如嵌入硬件中。对于纯软件解决方案而言,这是不现实的。
当我使用证书签署代码时,有效负载是否也会被加密?
有效载荷是什么意思?
这与网站的SSL安全性有何不同,确保连接的安全性和隐私性?
完全不同。 TLS是关于同意用于加密飞行中数据的密钥。代码签名是为了证明代码未被修改,并来自您(可能)信任的同一实体。
似乎他们都使用相同的技术来完成许多不同的任务。
是。它全部基于私钥/公钥对。它可以用于许多不同的目的。 X509证书实际上包含了可用于它们的目的列表。清单是: