不用 https 自己实现对 http请求的内容的 rsa 加密,这样足够安全吗?
设想的方案如下:
服务端生成一对 RSA 的公钥和私钥,在前端第一次请求的时候,将公钥返回给前端。
前端保存这个公钥,每次向服务端发起请求的时候,请求的内容体使用这个公钥加密。
并且前端在发起请求前,也生成一对 RSA 公私钥,请求内容附上公钥,这样服务端返回的内容就可以用这个公钥加密了。
(可能防篡改、防重放还有些问题,但是再加上验证的步骤应该也能实现。)
如此,不使用 https,直接在http的之上做这样一套,这样能实现 https 一样的安全程度吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
HTTP===不安全
不要试图要去自己实现或模拟HTTPS。那是本质上的区别。
前端的页面和数据打开firebug是随便可以修改的 从firebug把数据修改了,然后用你的公钥加密 ,你会判断出这是属于纂改吗?
答案是不能,一个关键的点在于,自己实现只能对请求体进行加密,并不能对整个请求进行加密。而HTTPS是对整个请求进行加密,包括请求头,而包括请求地址、请求方法在内的很多信息,是存放在请求头里的。另外,HTTPS实现是在与HTTP在同一层的,也就是说,服务器可以识别TCP连接并配对密钥进行解密,而自己实现过程中,服务器无法识别客户端正在使用的公钥是哪个,所以还必须携带能够识别公钥的ID在请求头里。
1.可以自己利用http实现rsa,只不过门槛高,难度大。
2.从题主你这句话【在前端第一次请求的时候,将公钥返回给前端】来看,我觉得你的信息安全还没过关。因此,对于你来说,我觉得你无法实现自己利用http来实现rsa。
你这样做的话在第一次把公钥传给前端的时候怎么保证能安全转交呢,有被篡改、监听的风险。
任何在前端实现所谓的安全都是不安全的