首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用X509证书进行加密

如何使用X509证书进行加密
EN

Security用户
提问于 2013-02-19 13:22:32
回答 2查看 42.1K关注 0票数 15

我对X509的过程有点怀疑。我知道OpenPGP加密/解密,在这里我们生成公钥和私钥。我们可以将公钥共享给供应商,他们可以用密钥加密数据,我们可以使用out私钥解密数据。对我来说这是简单而直接的。

谈到X509,我有点困惑。我的客户希望使用X509证书在两个人客户和他的供应商之间之间传输敏感信息已经使用对称加密(如AES )加密的。如果我们只使用公钥生成证书,那么X509是如何工作的。

假设,如果我用一个随机生成的密钥使用AES加密数据。如何将这些数据连同密钥一起传输给使用X509的供应商,这样任何第三方都不会在网络传输期间截取。

有谁能解释一下吗?顺便说一句,我们在SOAP消息中传输数据,包括证书信息。

EN

回答 2

Security用户

回答已采纳

发布于 2013-02-19 13:43:28

X.509是证书的格式:证书是一个字节序列,其中包含特定格式的名称和公钥,其中计算并嵌入了证书中的数字签名。签名者是一个验证局,它断言公钥确实是由该名称下已知的实体拥有的。通过验证签名,您可以确保证书是真实的,即确实是CA颁发的证书;通过这种方式,您可以获得对名称与公钥绑定的信任(只要您信任CA诚实且不太容易受骗,并且您知道用于签名验证的CA密钥,这可能需要获得CA的证书,以及验证该证书,等等,直到信任锚(也就是根证书))。

因此,X.509是分发公钥的一种方式,我的意思是:允许各种行为者(例如,您)知道,恶意第三方(即“攻击者”)在一定程度上保证不更改其他行为者的公钥。

OpenPGP是许多事情的标准格式。OpenPGP定义的一种方法是将公钥与“名称”(电子邮件地址)以及这两个地址上的签名一起编码。实际上,这本身就是一个证书(尽管其格式与X.509不兼容)。但是OpenPGP还定义了如何使用给定个人的公钥(让我们称他为Butch),以便加密一组字节,这些字节只有Butch使用他的私钥才能解密。从技术上讲,这使用了一个随机生成的会话密钥,它与AES (或类似的)一起使用来加密原始数据,而该会话密钥是用接收者的公钥加密的(通常是RSA或ElGamal类型)。

因此,对于您的问题,您不希望“使用X.509加密”。509没有定义任何关于加密的内容。您想要的是使用一种标准格式来描述用接收者的公钥进行加密,并在X.509证书上构建公钥分发。这个标准格式,加上X.509,将类似于OpenPGP。这种标准格式存在并被称为CMS (以前称为"PKCS#7")。当CMS对象通过电子邮件发送时,这将成为另一层标准,称为S/哑剧

CMS (或S/MIME)是异步通信所需要的:准备一个blob,稍后发送给收件人,就像您使用OpenPGP所做的一样。如果您可以进行同步通信(发送方和收件人同时处于“联机”状态),则可以使用SSL/TLS (或其对应的HTTPS)。在SSL中,服务器有一个公钥,作为X.509证书发送给客户端。客户端验证证书,然后使用其中包含的公钥与服务器建立会话密钥,并使用该会话密钥加密数据。

在任何情况下,众所周知,将密码算法组装到协议中是很难做到的,几乎不可能对安全性进行测试,而且充满了危险。因此,不要想象您可能会构建自己的组合;您确实应该依赖现有的标准,比如CMS或SSL。

票数 33
EN

Security用户

发布于 2013-02-19 15:00:22

X509证书是交换公钥的一种方法。听起来,供应商可能希望您继续进行AES加密,然后使用他们的公钥对AES密钥进行加密,这样您就可以传输AES密钥而不容易被截获。到目前为止,非对称(公钥/私钥)密码学最常见的用途是签名和对称密钥交换。

我主要关心的是,您提到在SOAP请求中获得证书,这使我怀疑验证是如何发生的。这个步骤对我来说没有多大意义,因为如果您事先不知道证书(因此没有必要发送它),那么我不知道您将如何验证它对于应该访问数据并没有受到中间人攻击的适当用户来说是怎样的。

最好的方法是让X509证书成为您已经签名的证书,这样您的系统就可以知道证书是有效的,并且对发送证书的用户也是如此。然后,即使处于中间的人提出请求,只要他们没有证书的私钥,他们就无法解密AES密钥,而且数据对他们来说也是无用的。

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/31139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档