server 端和 app 客户端采用对称加密安全吗? app 逆向能看出密钥吗?或者没有密钥能暴力破解数据吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
copymaster
V2EX    Java

server 端和 app 客户端采用对称加密安全吗? app 逆向能看出密钥吗?或者没有密钥能暴力破解数据吗?

  •  1
     
  •   copymaster 2020-04-14 21:41:40 +08:00 4114 次点击
    这是一个创建于 2058 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题:

    第 1 条附言    2020-04-15 18:47:07 +08:00
    感谢各位回复,app 是 Android,目前找到的方案是使用 Android Keystore,还没动手做,感觉挺靠谱,server 端和 app 使用对称加密,挺好
    20 条回复    2020-04-15 18:43:57 +08:00
    Mroldx
        1
    Mroldx  
       2020-04-14 21:44:58 +08:00
    看你本事啊
    lcdtyph
        2
    lcdtyph  
       2020-04-14 22:03:31 +08:00
    安不安全看你的密钥是怎么协商 /分发的了
    内置静态密钥肯定是不行的
    没有密钥能不能破解数据,这要看你选择的分组方式,以及有没有设计上的漏洞
    gz911122
        3
    gz911122  
       2020-04-14 22:12:47 +08:00   1
    app 逆向能看出密钥吗? 能,

    或者没有密钥能暴力破解数据吗? 基本不能
    dorothyREN
        4
    dorothyREN  
       2020-04-14 23:43:47 +08:00
    @gz911122 #3 没有密钥能暴力破解数据吗?能,就看你能不能熬到出结果了
    classyk
        5
    classyk  
       2020-04-14 23:46:16 +08:00 via iPhone
    对称将在这种情况下不安全
    justfun
        6
    justfun  
       2020-04-14 23:50:44 +08:00
    @dorothyREN 你是指让孙子看结果的那种吗(狗头)
    EPr2hh6LADQWqRVH
        7
    EPr2hh6LADQWqRVH  
       2020-04-14 23:54:22 +08:00 via Android
    现场协商一个密钥出来就行了,现在所有应用都这么干的。
    liuxu
        8
    liuxu  
       2020-04-15 00:02:10 +08:00
    没看明白需求

    普通连接+对称加密:逆向 app 拿到密钥就能劫持流量解密
    普通连接+非对称加密:逆向 app 拿到密钥劫持流量无法解密
    ssl 连接+对称 /非对称加密:多余的操作,ssl 本身非对称加密
    ssl 连接+无加密数据:自己加密
    wanguorui123
        9
    wanguorui123  
       2020-04-15 00:35:04 +08:00 via iPhone
    客户端集成公钥吧,动态协商出一个随机对称密钥
    atfa
        10
    atfa  
       2020-04-15 00:45:16 +08:00 via Android
    客户端首次启动时生成自己的的公钥私钥,公钥用服务器的公钥来加密,然后发给服务器,服务器用自己的私钥解密后把客户的公钥和客户 id 对应存储起来,服务器未来都通过这个私钥加密数据后再发给客户端,客户端收到数据后用自己的私钥解密,客户端未来都通过服务器的公钥来加密数据发给服务端。
    可是为什么要自己来实现这些呢? https 协议不香么?
    0o0O0o0O0o
        11
    0o0O0o0O0o  
       2020-04-15 00:49:11 +08:00 via iPhone
    只要对方一直能接触到客户端,只要客户端本地有加密解密的操作,那么客户端和服务端的交互的所有数据就一定能得到明文,协商密钥也没用
    webshe11
        12
    webshe11  
       2020-04-15 01:47:32 +08:00
    楼主看了楼上回复,一顿操作,写出了个 TLS
    AX5N
        13
    AX5N  
       2020-04-15 02:05:49 +08:00
    你是想防御哪个环节?
    chinvo
        14
    chinvo  
       2020-04-15 02:33:37 +08:00 via iPhone   2
    类似不知道讨论了多少次,不可能完全杜绝用户自行编写第三方客户端

    如果要防止接口被灰产黑产利用,那么问题就从保护密钥转变为了机器人识别(反爬虫)和安全控制(逻辑安全)
    skypyb
        span class="no">15
    skypyb  
       2020-04-15 06:39:53 +08:00
    只能密钥协商了吧。。
    不过就算是密钥协商也防不了中间人攻击啊= =
    maskerTUI
        16
    maskerTUI  
       2020-04-15 08:51:10 +08:00
    1.相比于不加密肯定时安全得多;
    2.逆向能找出密钥,所以 app 需要用加固防止攻击者对 app 进行调试;
    3.几乎不能。

    安全是相对的,没有绝对。
    liuhan907
        17
    liuhan907  
       2020-04-15 11:26:20 +08:00 via Android
    @liuxu 有个毛病要挑一下,ssl 的数据是对称加密
    locoz
        18
    locoz  
       2020-04-15 11:33:53 +08:00
    安全是相对的,首先有一点很关键, [不管你再怎么加密,对于客户端来说都是明文] ,所以 APP 逆向自然能看出密钥。

    如果攻击方是可以随意操作客户端的(比如爬虫开发者),那自然不管防守方再怎么折腾都能拿到通信内容的明文;
    但如果攻击方不能操作客户端(比如中间人攻击),或者是受限于比防守方可控范围更高级的权限控制(比如无法获取高权限的设备,像没有越狱的 iOS 设备之类的),那你只是一个固定密钥的 AES 之类的加密也没关系,因为人家这种情况也只能暴力破解。

    建议搞清楚自己想要防的到底是什么。
    liuxu
        19
    liuxu  
       2020-04-15 11:46:29 +08:00
    @liuhan907 嗯。。。你我说的都不全面。。
    ssl 前面握手是非对称,nginx 配置证书就有公钥和私钥,数据通信是对称加密,这个是请求时动态分配给的,所以逆向了 app 也拿不到
    copymaster
        20
    copymaster  
    OP
       2020-04-15 18:43:57 +08:00
    感谢各位回复,app 是 Android,目前找到了一些方案,使用 Android Keystore 可以比较安全的存储密钥,还没动手做,应该挺靠谱这个方案,server 端和 app 端使用对称加密,挺安全
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     922 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 20:28 PVG 04:28 LAX 12:28 JFK 15:28
    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