跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 问个前端公钥加密防止中间人攻击的问题
未分類
1 11 月 2020

问个前端公钥加密防止中间人攻击的问题

问个前端公钥加密防止中间人攻击的问题

資深大佬 : FreeWong 6

Baidu 的登录页在用户登录前使用了公钥对用户的密钥进行了加密 然后再到服务端进行密码正确的判断 其中登录页本身使用了 https 我的问题是,这样的做法可以在即便中间人攻击的情况下也无法得到明文的密码 但是,如果中间人截获了这个公钥加密后的文本,中间人即使不能看到明文密码,但是中间人一样可以把这个截获的文本向 Baidu 的服务器提交,中间人一样可以正常登录

所以从这个角度来看 似乎不是特别有意义啊 我的理解对吗,多谢多谢

大佬有話說 (26)

  • 資深大佬 : 301

    就算能登录,传回来的数据中间人也没法解密吧

  • 資深大佬 : jybox

    因为响应也是加密的,中间人只能把请求转交过去而看不到响应的内容;同时因为 https 握手的时候会有随机数来避免重放攻击,所以中间人也只能转交一次,或者不转交。

  • 資深大佬 : unixeno

    防中间人还是得靠 https
    这种前端的加密可能增大爬虫难度的作用更大一些

  • 資深大佬 : jim9606

    在防 MITM 这个问题上,JS 自己造轮子不可能比 HTTPS 完备。
    靠谱的做法是使用一次性 key 的 HMAC,这个可以防止重放。

  • 資深大佬 : imjamespond

    https 可以验证证书指纹的合法性, 普通公钥指纹不能验证

  • 資深大佬 : superrichman

    比如我知道你的百度账号的明文密码,那你的 qq,微信或者其它密码可能会和这个密码有关。万一如果全一样,等于所有账号都被盗。
    这道加密就是保护明文用的。

  • 資深大佬 : crab

    你说的这个也不能防止中间人

  • 資深大佬 : jadec0der

    分情况吧,如果中间人没有针对 baidu 的话,这种方式可以保护密码不被中间人记录,但是如果针对 baidu 的话,中间人完全可以替换成自己的公钥,再做一次解密-加密的操作,密码还是暴露了。

    表面上看这样可以进行进一步的防护,多保护一部分用户,但是我觉得从系统设计上看有一个 Web 系统的安全的边界在哪里的问题,在 SSL 里面再套一层自定义的加密好像更安全了,甚至还可以在客户端再做一次自定义的公钥验证,这样下去哪里是个头?我个人认为这样过度了,不够优雅。

  • 主 資深大佬 : FreeWong

    @301 根据我的理解 ,是可以解密 的,因为公钥是公开的

  • 主 資深大佬 : FreeWong

    @unixeno 感谢回复,是在 https 的基础上再使用公钥

  • 主 資深大佬 : FreeWong

    @jim9606 感谢回复 哥们你可能没有仔细 看 是在 https 的基础上再使用公钥加密

  • 資深大佬 : yaphets666

    如果中间人 获取到了 客户端的证书 和 服务端的证书呢?

  • 資深大佬 : geelaw

    如果百度做的只是普通公钥加密则无意义,因为 HTTPS 已经实现了客户端和服务器的安全信道。

  • 資深大佬 : lovecy

    @jadec0der 你说的和主想问的好像没啥关系。另外如果用户没有安装奇怪的证书,密码不可能暴露吧,除非中间人获取百度的解密秘钥。

  • 資深大佬 : qinxi

    前端加密是为了防止 cdn/日志系统等阶段 获取到明文数据

  • 資深大佬 : lovecy

    外部网络传输,在 HTTPS 基础上做这个,确实没有意义。
    我猜是防内鬼?比如所有产品共用账号,账号是一个独立的系统管理,产品服务器获取到密码后(公钥加密的密码),与账号系统连接,由账号系统解密并验证。防止产品服务器获取明文密码

  • 資深大佬 : gefranks

    在 SSL 环境中再次实现一次公钥的加密我觉得没啥意义,在存在中间人的情况下, 再次发过来的密钥我都可以替换掉,然后返回的结果我解密再转发就可以了

  • 資深大佬 : yuningWang8

    我的理解:如果只看传输过程,加密确实没有意义。但是如果考虑数据到达服务端内部流转过程,这种加密还是有意义的。毕竟用户名密码一类的,在各种服务器之间明文传输,还是不太好的。

  • 資深大佬 : kop1989

    中间人攻击,只有 https 能解。
    前端的任何加密都是单向加密,即明文》密文。只是让 hack 的复杂度增加。
    web 前端不可信原则,在当前的 html 标准下( html+js+css )永远存在。

  • 資深大佬 : sujin190

    虽然可以,但是加盐加防重放 token 加时间过期可以防止大部分,只要保证虽然你通过中间人获取到了,但是在很短时间就失效了,基本你拿来也没啥用,相对来说还是毕竟安全的

  • 資深大佬 : jim9606

    @FreeWong
    没看漏,HTTPS 和 HMAC 要同时使用。
    因为在浏览器跑的 JS 代码也是从服务器下载的,如果不用 HTTPS 保护的话就存在 JS 代码被篡改的问题,那浏览器那边会发生什么都不奇怪了。
    用 HMAC 的目的是避免 PIN 被还原出来,对于被动 MITM,这个方法可以避免重放攻击,也不用担心 PIN 泄漏。大厂喜欢用 RSA 估计还是为了获得 PIN,我严重怀疑它们是在数据库直接存 PIN 的,这个方式用来防被动 MITM 是足够的。

  • 資深大佬 : firefox12

    有 https 再加这个,估计是怕 浏览器其实是被控制的,js 再加一层,那么就又麻烦很多。

  • 資深大佬 : webshe11

    有一种刚学完现代密码学胡搞毛搞的感觉

  • 資深大佬 : jadec0der

    @lovecy 我不知道百度工程师的想法,但是我猜就是想在 HTTPS 上加一层防护。用户安装奇怪的证书是很常见的,至少在公司的电脑上很普遍。

  • 資深大佬 : lovecy

    @jadec0der 既然用户都安装了奇怪的证书,那估计也会安装奇怪的插件,直接改你的加密秘钥。
    我觉得主要还是#14#15 这类似的原因

  • 主 資深大佬 : FreeWong

    @all 这里的中间人攻击行为我们假设为 颁发假证书 在这个前提下讨论就不会有理解上的差异了
    感谢大家回复,帮我解除心中的困惑

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具