拒绝 API 在公网裸奔之实现过程 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jss
V2EX    PHP

拒绝 API 在公网裸奔之实现过程

  •  
  •   jss 2019-01-13 17:51:31 +08:00 via iPhone 6483 次点击
    这是一个创建于 2512 天前的主题,其中的信息可能已经有所发展或是发生改变。
    (先忽略 Https )不想让 API 数据在公网中裸奔于是查了一些方案,比如:jwt des aes rsa 等,最终组合一个理想解决方案:Rsa+Aes; 客户端生成 Aes 密钥 将请求参数进行 Aes 加密,然后,Aes 密钥通过 Rsa 加密一并提交给服务器,服务器通过 Rsa 解密获得 Aes 密钥,进行 Aes 参数解密处理,最后通过解密后的 Aes 密钥加密返回给客户端,实现,公网传输加密。
    22 条回复    2019-01-14 09:04:46 +08:00
    alvin666
        1
    alvin666  
       2019-01-13 17:54:32 +08:00 via Android
    这不就是自己实现了 https ?
    chendy
        2
    chendy  
       2019-01-13 17:56:26 +08:00   2
    所以为啥不用 https 呢
    tomczhen
        3
    tomczhen  
       2019-01-13 17:56:32 +08:00
    有种技术叫 HTTP 双向认证,了解一下?
    ayase252
        4
    ayase252  
       2019-01-13 17:59:32 +08:00 via iPhone
    加上证书验证差不多就是 HTTPS 了啊
    yuikns
        5
    yuikns  
       2019-01-13 18:01:27 +08:00 via iPad
    jwt 和此处有什么关系……?
    des
        6
    des  
       2019-01-13 18:02:05 +08:00 via Android
    所以为什么不用 https ???
    weizhen199
        7
    weizhen199  
       2019-01-13 18:02:49 +08:00
    https api 除了抗重放以外还差什么吗
    Immortal
        8
    Immortal  
       2019-01-13 18:03:18 +08:00
    所以为什么不用 https+jwt
    yuikns
        9
    yuikns  
       2019-01-13 18:03:23 +08:00 via iPad
    现在还有人分不清 Password 和 Encryption ?
    honeycomb
        10
    honeycomb  
       2019-01-13 18:42:26 +08:00 via Android   3
    @des
    @Immortal
    这个人自称宁可发明一遍 HTTPS 也不要用 HTTPS
    chinvo
        11
    chinvo  
       2019-01-13 18:43:15 +08:00 via iPhone
    你这和 HTTPS 有啥区别
    xiangyuecn
        12
    xiangyuecn  
       2019-01-13 18:52:46 +08:00
    @weizhen199 #7 你的意思 https 包能重放? https 原生抗重放吧
    masker
        13
    masker  
       2019-01-13 19:02:31 +08:00
    重定义 HTTPS ?
    lhx2008
        14
    lhx2008  
       2019-01-13 19:04:28 +08:00 via Android
    有鬼用,没有证书验证是否服务器是服务器发出的公钥,第三人半路拦截就可以发一个他自己的公钥了。完全不可靠。
    lhx2008
        15
    lhx2008  
       2019-01-13 19:08:33 +08:00 via Android
    @xiangyuecn https 应该不能抗重放吧,还是可以重发加密包的
    xiangyuecn
        16
    xiangyuecn  
       2019-01-13 19:46:45 +08:00   1
    @lhx2008 我觉得除了明文外,重放是最恶劣的底层协议缺陷。如果 https 能重放,那比 http 优越不到哪去,还不如回滚到大家都用 http 的时代,轻快省力,就是裸奔了点。重发≠重放,服务器收到这种包直接丢弃好像。
    yzwduck
        17
    yzwduck  
       2019-01-13 19:57:16 +08:00   2
    @lhx2008 在正常密钥交换的情况下,HTTPS ( TLS 本身)就抗重放。重发的包不会影响上层应用数据内容,最多服务器认为协议异常而终止连接。
    https://security.stackexchange.com/q/20105
    lhx2008
        18
    lhx2008  
       2019-01-13 20:04:28 +08:00 via Android
    @xiangyuecn
    @yzwduck

    谢谢,确实,中间人无法重发 TCP 包来做重放攻击,但是业务上还是得做随机数来防止在客户端上的重发。还有一种比较高成本的第三人攻击是可以通过中断 TCP 回程,迫使客户端重发。
    dawniii
        19
    dawniii  
       2019-01-13 20:20:42 +08:00   2
    @lhx2008 感觉您说的不是重放,而是业务上的幂等。
    jimrok
        20
    jimrok  
       2019-01-13 21:09:43 +08:00   2
    @lhx2008 https 无法重放,https 的握手建立过程中,server 决定每次的交换密钥,所以,无法回放加密的包来建立握手。另外 https 还有前向安全性,及时偷走了服务器上的主密钥,你也破解不了历史的加密包。
    xuanbg
        21
    xuanbg  
       2019-01-14 01:00:53 +08:00
    @chinvo 不一样,HTTPS 使用的是 SSL 隧道,他这个是一次性密钥加密。效果一样,但开销比较大,每次都要用 RSA 加密和解密。
    zwh2698
        22
    zwh2698  
       2019-01-14 09:04:46 +08:00 via Android
    你的安全性不如 https,这种安全设计没法拿出手,即便模拟,建议先看看 https 握手都干了啥,为啥要 pre/master key, 等机制。建议不要自己造安全性不高的轮子,会让自己陷入误区的。检验思考的全面性要借助工具 STRIDE 模型。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2637 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 14:33 PVG 22:33 LAX 06:33 JFK 09:33
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86