首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从正常的http请求开始,全面理解数字认证

从正常的http请求开始,全面理解数字认证
EN

Security用户
提问于 2015-08-29 06:51:51
回答 2查看 374关注 0票数 6

我试图理解数字签名和数字认证之间的区别,以及它们是如何在高层次的视角下作为一个整体一起工作的。我希望这里的大师能指点我,如果我的理解是错误的。

  1. 当用户访问网站时,为了加密用户与网站之间的通信,将使用对称密钥。
  2. *为了使客户端和服务器同时使用对称密钥,必须使用非对称密钥加密有关创建对称密钥的信息。
  3. 但是首先,必须确认But服务器的真实性。因此,user服务器向用户/客户端发送其数字证书。在数字认证内部,它包含key服务器用于非对称加密的公钥( 2)。
  4. 这个数字证书是由证书机构颁发的,它检查并验证whom服务器/域确实属于它应该属于的人。
  5. *不过,我们如何证明数码证书的真实性和完整性?为了完整性,数字证书被散列并与原始证书一起发送。为保证真实性,哈希数字证书将使用CA的私钥签名。
  6. *如果数码证书是由核证机关的私钥签署的,我们如何取得核证机关的公钥?我的总体想法是,CA中的公钥在许多浏览器中都是预先安装的。
  7. 使用CA的公钥,对数字签名的哈希/证书进行解密并生成原始哈希。然后,客户端对接收到的证书进行散列,并将其与原始哈希进行比较。如果2个哈希结果匹配,则不会篡改证书。
  8. 使用数字证书,key服务器使用的公钥由webclient/用户检索。然后,webclient/用户使用此公钥将构建对称密钥的信息加密到key服务器。
  9. 在双方都知道和创建对称密钥的情况下,可以开始加密通信。

问题:

  • 我的理解正确吗?
  • 对于2*,会话密钥是由web客户端创建并发送到web服务器直接使用(加密),还是通过交换信息来设置,最终使双方具有相同的会话密钥(Diffie Hellman算法?)
  • 5,*我从来没有申请过数字证书。当CA签发数字证书时,它真的会颁发数字证书吗?或者它只是发出证书的数字签名散列。
  • 否则,如何在没有CA私钥的情况下发送数字证书(原件)及其数字签名散列版本?
  • 对于6*,我的理解是否正确,CA的公钥是与浏览器一起预装的?
  • 客户端需要使用with服务器进行身份验证吗?(我也读过让客户端向well服务器发送证书的文章)。
  • 什么将放在webclient上的信任库中,什么将放在webserver上的keystore中?
EN

回答 2

Security用户

发布于 2015-08-29 20:32:47

首先,我认为你混淆了一些术语。术语是“数字证书”、“证书”或简单的“证书”。不是“数字认证”。如果你真的是指“数字认证”,那么这个答案很可能是错误的。

  1. 是。对称密钥用于批量加密,因为对称加密算法比非对称加密算法快得多。
  2. 不是的。这不是保证。所需要的是服务器和客户端就共享秘密达成一致。通过使用Diffie-Hellman密钥交换,他们可以在共享秘密上达成一致,而不需要任何加密。您可以阅读有关算法的详细信息,或者只需相信DH密钥交换允许共享秘密被同意,而不需要任何密码。DH经常(可能大部分是,但我没有统计数据)用来同意共享的秘密。
  3. 是。证书链用来证明所有的证书都是不被篡改的。
  4. Windows中安装了可信的CA证书。IE使用Windows系统,而Chrome和Mozilla则安装自己的一套可信CA证书。
  5. 好的。你在这里基本上是对的。一些数字签名算法通过使用私钥加密消息的哈希来工作。其他算法也有其他的窍门(我对细节不熟悉),但这不是完全相同的事情。因此,数字7最好用“然后由客户端验证签名”来表示。一般来说,这将意味着哈希和非对称加密,但并不总是如此。
  6. 再说一次,不。Diffie-Hellman密钥交换通常被使用(如上文2中所讨论的)。
  7. 是!

关于你的问题。

我的理解正确吗?

基本上-我在上面做了修正。

对于2*会话密钥是由web客户端创建并发送到web服务器直接使用(加密的),还是通过交换信息来设置,最终具有相同的会话密钥(Diff hellman算法)?

如上文所述,迪夫·赫尔曼。

5*我从来没有申请过数字证书。当CA签发数字证书时,它真的会颁发数字证书吗?或者它只是发出证书的数字签名散列。

CA不像签名请求那么多地颁发证书。这通常是通过向CA发送证书签名请求或企业社会责任来完成的。大多数生成证书或键的工具都有生成CSR的选项。

否则,如何在没有CA私钥的情况下发送数字证书(原件)及其数字签名散列版本?

我不知道你在这里是什么意思。也许是我在上面回答的?

对于6*我的理解正确吗?CA的公钥是与浏览器一起预装的吗?

上面的回答是,它们是随浏览器或操作系统而来的。我认为Java也有自己的列表。也许其他一些常见的应用程序也会这样做。

客户端需要使用with服务器进行身份验证吗?(我也读过让客户端向well服务器发送证书的文章)。

这是一个可选的步骤。对于大多数应用程序(例如: Amazon和您的银行),您,客户端,通过建立一个安全的HTTPS连接,然后给它您的名称和密码进行身份验证。一些站点也允许双因素身份验证。SSL的相互认证(AKA:双向认证)是SSL的一部分,它允许客户端在SSL握手期间对服务器进行身份验证。要做到这一点,客户端必须具有证书和私钥,并且该证书必须在服务器上预先注册。(请注意,这些证书没有CA,浏览器信任证书,因为它们得到了证书的副本,并被告知要信任它。)它的方便之处在于它是通过魔法发生的。没有令人讨厌的密码要记住或键入。(真正)不方便的地方是,必须在所有浏览器(认为是移动的)中管理证书和私钥集合是一件痛苦的事。有时,客户证书(即:2 2way auth)也用作2因素auth过程中的第二个因素。我的经验是,在高度安全的环境中,用户(几乎)总是使用同一台计算机。

什么将放在webclient上的信任库中,什么将放在webserver上的keystore中?

您的意思是当使用2way auth时,信任库/密钥库中会放什么?客户的信任库中没有任何东西是双向的。证书及其密钥通常保存在密钥存储库或其他安全的、通常是加密的数据存储中。任何东西都不会进入服务器的密钥存储库,用于双向存储。服务器所需要做的就是保存证书的副本,并将其与适当的用户关联。这通常是在数据库中完成的。

也许您是在问标准SSL连接的信任库/密钥库中会出现什么情况?根CA证书进入客户端的信任库。这通常是由browser/OS提供程序完成的,用户不需要对此进行更改。如果您正在部署自签名证书(即无CA)或运行web代理,则可能需要向客户端的信任库添加新的证书。服务器的私钥存储在密钥存储库中。为了方便起见,证书通常也存储在那里。

票数 5
EN

Security用户

发布于 2015-08-30 17:43:24

当用户访问网站时,为了加密用户与网站之间的通信,将使用对称密钥。

是。

*为了使客户端和服务器同时使用对称密钥,必须使用非对称密钥加密有关创建对称密钥的信息

是的,除非是迪夫-赫尔曼。

但首先,必须确认1st服务器的真实性。因此,user服务器向用户/客户端发送其数字证书。在数字认证内部,它包含key服务器用于非对称加密的公钥( 2)。

是。

这个数字认证是由证书管理机构颁发的,它将进行检查和验证,以证明whom服务器/域确实属于它应该很长的时间。

是的-这取决于证书的级别。所请求的证书是域验证(DV)、组织验证(OV)还是扩展验证(EV)证书,这决定了执行了哪些检查。

*不过,我们如何证明数码证书的真实性和完整性?为了完整性,数字证书被散列并与原始证书一起发送。为保证真实性,哈希数字证书将使用CA私钥签名。

是的,证书包括浏览器下载的签名。

*如果数字证书是由CA私钥签署的,我们如何获得CA的公钥?我的总体想法是,CA中的公钥在许多浏览器中都是预先安装的。

要使浏览器信任证书,CA的公钥必须位于操作系统或浏览器的证书根存储区中。its和Chrome使用OS的商店,而Firefox有自己的商店。

使用CA的公钥,对数字签名的哈希/证书进行解密并生成原始哈希。然后,客户端对接收到的证书进行散列,并将其与原始哈希进行比较。如果2个哈希结果匹配,则不会篡改证书。

不完全是。不要混淆散列、加密和签名。网站的公开证书由CA的私钥(或中介CA)签名。只要链的结果是可信的根证书,一切都是好的。例如:

代码语言:javascript
复制
Site CA --signed-by-> Intermediary CA --signed-by-> Root CA

任何人都可以使用CA的公钥验证签名是否与散列证书匹配。公钥密码学利用数学方程中的“陷阱门函数”。很容易验证签名是由私钥使用公钥生成的,但是如果没有CA的私钥,则生成签名在计算上是不可行的。

使用数字证书,key服务器使用的公钥由webclient/用户检索。然后,webclient/用户使用此公钥将构建对称密钥的信息加密到key服务器。

是的,掌握前的秘密是用公钥加密的。在Diffie-Hellman的情况下,公钥被用来签署共享的秘密。

5*我从来没有申请过数字证书。当CA签发数字证书时,它真的会颁发数字证书吗?或者它只是发出证书的数字签名散列。

是的,您将收到证书和签名,该签名是根据证书的散列计算的。

否则,如何在没有CA私钥的情况下发送数字证书(原件)及其数字签名散列版本?

你可以保留私钥。要获得证书签名,需要生成要发送到CA的证书签名请求(CSR)。一旦他们签署了您的证书,您就可以在您的服务器上安装已签名的版本,以便与以前生成的私钥配对。

有些CA会为您生成私钥,但是,为了安全起见,我建议您生成自己的私钥,只需发送CSR即可。

客户端需要使用with服务器进行身份验证吗?(我也读过让客户端向well服务器发送证书的文章)。

是的,可以使用客户端证书使用web服务器对客户端进行身份验证。不过,这只是用于身份验证,而不是加密。

什么将放在webclient上的信任库中,什么将放在webserver上的keystore中?

web客户端将发送其证书,web服务器可以验证其公钥并检查其是否由可信CA签名。作为私钥拥有的证明,客户端还签署了可由服务器通过公钥验证的握手消息。

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

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

复制
相关文章

相似问题

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