Springboot 项目,请教一个 HTTPS 与 AES 的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
dumbbell5kg
V2EX    程序员

Springboot 项目,请教一个 HTTPS 与 AES 的问题

  •  
  •   dumbbell5kg 2024-07-15 18:14:37 +08:00 2552 次点击
    这是一个创建于 482 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 我现在有两个 Springboot 项目,一个客户端项目 C ,一个服务端项目 S
    • 在 S 提供的是 HTTPS 接口的情况下,项目 C 使用 RestTemplate 发请求,此时还需要用加密算法(比如 AES256 )将报文加密后通过 RestTemplate 发送吗?
    15 条回复    2024-07-16 14:53:45 +08:00
    sagaxu
        1
    sagaxu  
       2024-07-15 18:38:47 +08:00   1
    HTTPS 防的是接触不到两端机器的中间人的攻击,防不了本机有人做手脚。
    Java 写的项目,如果不做防护,反编译后一目了然,能接触到两端就能破解。
    这两个加密方法功能上有点儿重叠,摸不到机器都没辙,摸到机器都很好破解。
    peanut0105
        2
    peanut0105  
       2024-07-15 19:00:34 +08:00
    问题的关键还是你要防止哪种攻击,另外就是如果你要用 AES 的话你 AES 的密钥要怎么交换呢?
    cJ8SxGOWRH0LSelC
        3
    cJ8SxGOWRH0LSelC  
       2024-07-15 19:05:54 +08:00
    同 1 楼, 如果客户端 C 是 java 写的, 那再加密一次意义不大, 反编译随便看代码。
    seers
        4
    seers  
       2024-07-15 19:20:10 +08:00 via iPhone
    当然要做,每多一道防护都能抵挡掉不少攻击,首先 ssl 证书抓包是一道,然后有 aes 攻击者反编译又是一道,或者逻辑放 native 然后 jni 调用再混淆 so ,这也是目前很多大厂 app 做法
    orangie
        5
    orangie  
       2024-07-15 19:43:07 +08:00
    客户端考虑用 graalvm 编译成机器码试试,大大增加反编译难度
    0xsui
        6
    0xsui  
       2024-07-15 21:06:47 +08:00 via Android
    通过 HTTPS 接口,发送签名的数据,服务端校验签名,具体可以参考钉钉机器人的接口调用方式
    xaxb
        7
    xaxb  
       2024-07-15 21:38:51 +08:00 via iPhone
    典型的前端加密需求,如果中间用 cdn 加速了,又不想让 cdn 看到数据的话就要加密了。用非对称加密
    rekulas
        8
    rekulas  
       2024-07-15 23:18:25 +08:00
    @alex8 https 已经非对称一次了,防中间 cdn 用对称加密就行了吧, 2 层非对称有什么用
    xaxb
        9
    xaxb  
       2024-07-16 00:15:18 +08:00
    @rekulas CDN 就是中间人
    ask GTP '经过 CDN 加速的 https 网站,post 的数据还需要加密么'
    如果需要加密,请问加密用的密钥你怎么分发管理?
    lovelylain
        10
    lovelylain  
       2024-07-16 08:12:23 +08:00 via Android
    是否需要再加密看安全要求,加密了更安全,但是客户端抓包不方便,会给问题定位带来不便。加密方式可以考虑客户端内置 rsa 公钥,随机生成 aes 密钥,rsa 加密 aes 密钥,aes 加密实际内容。
    rekulas
        11
    rekulas  
       2024-07-16 08:32:39 +08:00
    @alex8 秘钥当然是开发编译的时候就交换好了, cdn 又拿不到,你在 cdn 上用非对称,那不相当于把秘钥拱手给 cdn,欺骗自己么
    Goooooos
        12
    Goooooos  
       2024-07-16 08:57:08 +08:00
    我一般只用 md5 等做个摘要验证参数的完整性
    zscself
        13
    zscself  
       2024-07-16 10:11:12 +08:00
    看你需求了吧。
    1. 防中间人: https 就够了。客户端能顺利访问 https 接口获取和发送数据,说明 https 协议的一整套流程客户端和服务端是可以完整走下来的。https 是非对称加密算法加密对称加密算法的密钥,现在的 https 都是 TLS 1.1 往上了吧,大部分都是 TLS 1.2 了。再往深了说,TLS 是在 TCP 之上,HTTP 之下,相当于给 HTTP 套了一层加密的壳,非对称加密只在握手阶段使用,后面传输数据都是对称加密( RC4 ,AES 之类的流式加密)。
    2. 防客户拦截查看数据:对 Java 不熟,没有发言权。不过我觉得程序在客户端侧,本身的运行环境就是不可信/不可控环境,防御措施或者说你愿意付出的防御成本和你数据的重要性成正比。往极端点说,数据总归是要解密到内存中的,防是防不住的。
    zscself
        14
    zscself  
       2024-07-16 10:14:17 +08:00
    @zscself “防中间人”就是说,防止服务端和客户端之间的数据交换被别有用心的第三方窃听和篡改。客户自己想要窃听和篡改在这个语境下不算“中间人”,放在( 2.)中讨论
    Chigusa
        15
    Chigusa  
       2024-07-16 14:53:45 +08:00
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1109 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 17:25 PVG 01:25 LAX 09:25 JFK 12:25
    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