http 加密的正确方法

2022-10-25 15:35:58 +08:00
 senx0000
如果不上 https 的话,直接生成一对密钥,前端应用预置对应的公钥来加密,后端直接用私钥来解密,这样一来是不是中间人就无法知道请求的具体内容了?
除了性能问题,暂时没想到有啥其他问题,不知道大家有没有建议?
不考虑伪造或者篡改请求的情况,需求只是实现中间人无法得知请求内容。
6209 次点击
所在节点    程序员
68 条回复
gam2046
2022-10-25 15:43:26 +08:00
http 加密的正确方法 就在你的如果里了,TLS 就是正确方式。

不管你采用对称算法还是非对称算法,由于客户端环境不可信,所以密钥都是明文的。

再如果客户端、服务端运行环境都是可信的。

由于密钥是固定的,仍然存在统计学意义上的破解可能。

无论如何,放弃 TLS ,自己造轮子,都是工作量更多,且效果更差。
moshiyeap100
2022-10-25 15:44:19 +08:00
https 不就是这样干的?
Noicdi
2022-10-25 15:46:04 +08:00
https 不也是用密钥吗
mxT52CRuqR6o5
2022-10-25 15:46:33 +08:00
我的建议是你怎么开心怎么来
senx0000
2022-10-25 15:48:37 +08:00
已经上 https ,主要是客户还不满意,非要国密,https 现在还没有普遍支持,不得已求其次,无奈。
RRyo
2022-10-25 15:49:05 +08:00
1+1 的正确答案 首先排除 2 是吧
如果是出于学习密码学目的, 你照着 TLS 早期版本自己造一遍轮子倒是无所谓, 实际使用上来先排除正确答案是啥意思...
RRyo
2022-10-25 15:50:06 +08:00
@senx0000 #5 国密有 SM2 的证书
xiqishow
2022-10-25 15:50:09 +08:00
https 更多是一种端到端的认证,比如在 app 中使用 ssl pinning ,锁定认可的证书。
加密应用协议很多银行类的 app 都在使用,但选择如何加密,比如密钥等加密参数如何下放,如何保护客户端的加密方法,比如代码混淆,应用加固,防止反编译,被动态调试都是需要解决的问题。
而在 web 端,保护加密资产感觉更困难一些,毕竟就是 js 被混淆了一下,只是读起来恶心但不是完全不能解(成本问题),可能会通过 wasm 等把加密资产二进制化更好一些
senx0000
2022-10-25 15:53:12 +08:00
至少看看能不能找到个不安全的理由给客户,让他放弃。
Fule
2022-10-25 15:53:14 +08:00
实现安全性 Rule No.1:不要自己造轮子。
julyclyde
2022-10-25 15:53:17 +08:00
@senx0000 用国密证书就行了
对付 sb 要用 sb 自己的方法
tool2d
2022-10-25 15:53:25 +08:00
早期网游不都没上 HTTPS ,走的都是自由加密协议,又不是不能用。

后来苹果强制开 HTTPS ,你不开加密,APP 都没办法上线,很大程度推动了加密协议的标准化流程。
senx0000
2022-10-25 15:54:05 +08:00
不解决其他问题,只解决中间人能看明文的问题
moshiyeap100
2022-10-25 15:58:27 +08:00
@senx0000 那就用国密算法自己对请求内容再进行一边加密,同时保留 https 。
senx0000
2022-10-25 16:01:29 +08:00
@RRyo @julyclyde 国密证书只有国产的一些浏览器支持吧
Leonard
2022-10-25 16:02:05 +08:00
@tool2d #12 苹果强制的 HTTPS 好多年前就在说,到现在还没落实
heiher
2022-10-25 16:02:40 +08:00
能说服客户认可的加密就是好加密 :P
XiLingHost
2022-10-25 16:04:58 +08:00
@senx0000 只解决中间人看明文的问题,建议 base64“加密”
leaves615
2022-10-25 16:06:23 +08:00
http 要求加密,无非是解决中间人攻击的问题,用非对称加密就好了。https 也是用来解决中间人攻击的问题。

客户端的明文或者密钥泄漏,是客户端的本地安全问题,应在客户端层解决。而不是通过链接层的安全策略来解决客户端安全。
huangsijun17
2022-10-25 16:17:10 +08:00
国密也还是 HTTPS ,还是 SSL 证书,只是使用了 SM2 、SM3 协议。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/889726

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX