中间攻击预防的数字签名人

问题描述 投票:1回答:1

我有客户端生成的数字签名(JavaScript)。然后在Java后端验证签名。验证我传递给后端的签名 - (签名值,公钥和验证消息)。到目前为止一切顺利,但问题出现了 - 如果有人在中间攻击中表现出什么?他可以轻松生成签名并发送他的 - (签名值,公钥和消息)。所以从某种意义上说,这使我当前的实现不够安全。

我怎么能避免这个?据我研究,我必须验证发送的公钥是否来自相应的客户端,这是通过CA(证书颁发机构)完成的。但是,在我的情况下,我这样做是大学的最后一个项目,我不知道如何处理这个问题。

我应该在客户端生成公钥证书并将其与公钥一起发送吗?是否可以在客户端生成自签名证书,然后在后端验证它?

cryptography certificate digital-signature client-certificates man-in-the-middle
1个回答
2
投票

如果有人在中间攻击中表现出一个人怎么办?

MITM可以替换签名和公钥

我怎么能避免这个?

主要使用SSL / TLS和/或......

据我研究,我必须验证发送的公钥是否来自相应的客户端,这是通过CA(证书颁发机构)完成的

如果使用证书颁发机构,则每个证书都使用根CA证书(或子CA)的私钥进行签名,因此MITM无法创建有效证书,因为他不拥有根私钥。

在服务器端,您可以使用与CA颁发的证书对应的私钥来验证签名是否已执行。请注意,在这种情况下,您使用的是证书,而不仅仅是公钥(证书包含公钥)。

我这样做是大学的最后一个项目,我不知道如何解决这个问题。

您已解释了您的解决方案,但没有解释背景。我的意思是你为什么决定需要数字签名?没有这些信息我不能告诉你。

我应该在客户端生成公钥证书并将其与公钥一起发送吗?

阅读我以前的评论

是否可以在客户端生成自签名证书,然后在后端验证它?

当然是。您可以在客户端生成密钥对,并在注册过程中将公钥与用户的帐户相关联(使用安全通道)

这样你甚至不需要密码。具有私钥的数字签名是认证证明。使用CA是可选的。 CA可以颁发包含公钥的证书,但不需要此方案

© www.soinside.com 2019 - 2024. All rights reserved.