我试图理解数字签名和数字认证之间的区别,以及它们是如何在高层次的视角下作为一个整体一起工作的。我希望这里的大师能指点我,如果我的理解是错误的。
发布于 2015-08-29 20:32:47
首先,我认为你混淆了一些术语。术语是“数字证书”、“证书”或简单的“证书”。不是“数字认证”。如果你真的是指“数字认证”,那么这个答案很可能是错误的。
7最好用“然后由客户端验证签名”来表示。一般来说,这将意味着哈希和非对称加密,但并不总是如此。2中所讨论的)。关于你的问题。
我的理解正确吗?
基本上-我在上面做了修正。
对于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代理,则可能需要向客户端的信任库添加新的证书。服务器的私钥存储在密钥存储库中。为了方便起见,证书通常也存储在那里。
发布于 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)签名。只要链的结果是可信的根证书,一切都是好的。例如:
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签名。作为私钥拥有的证明,客户端还签署了可由服务器通过公钥验证的握手消息。
https://security.stackexchange.com/questions/98055
复制相似问题