迫于个保法,需要对 api 数据加密。想开发一套加密网关,有什么好的轮子推荐吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
deep89381
0D
V2EX    问与答

迫于个保法,需要对 api 数据加密。想开发一套加密网关,有什么好的轮子推荐吗?

  •  
  •   deep89381 2021-11-16 08:00:38 +08:00 4265 次点击
    这是一个创建于 1496 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前定的加密规则是: 数据 body 整体用 AES 加密, 数据摘要用 RSA 签名。
    实在不想自己造轮子,跪求各位大佬推荐下好用的框架或现成组件
    第 1 条附言    2021-11-16 08:44:25 +08:00
    补充一下:API 已经是 https 传输了,只是数据内容是隐私数据,还需要自行做加密处理。开发环境 ava 或 Golang 都可
    25 条回复    2021-11-16 16:21:34 +08:00
    iBugOne
        1
    iBugOne  
       2021-11-16 08:05:46 +08:00 via Android
    TLS
    eason1874
        2
    eason1874  
       2021-11-16 08:08:43 +08:00
    这样没办法给建议

    应该说清楚客户端和服务端的开发语言和软件环境
    swulling
        3
    swulling  
       2021-11-16 08:38:32 +08:00 via iPhone
    https 这个是满足需求的
    whwlsfb
        4
    whwlsfb  
       2021-11-16 08:46:26 +08:00 via Android
    防爬虫的话用什么加密算法也只是加长破解时间,建议从访问频率和客户端特征入手,防中间人的话 HTTPS 足够了
    yEhwG10ZJa83067x
        5
    yEhwG10ZJa83067x  
       2021-11-16 08:54:13 +08:00
    不是很理解已经 TLS 了还要加密处理是出于什么考虑?
    timethinker
        6
    timethinker  
       2021-11-16 09:06:38 +08:00
    我也没太明白,只要你的终端能解密,那加密除了防止中间人还有什么其他的意义吗?还是说加密后的数据在终端是无法解密的?
    cominghome
        7
    cominghome  
       2021-11-16 09:12:21 +08:00
    @justrand
    @qwe520liao

    终端通过 js 解密,开启后访问 api 拿回来的 response body 是编码 /加密后的,我司网关有类似的功能。可以过滤掉很多脚本 boy
    datoujiejie221
        8
    datoujiejie221  
       2021-11-16 09:16:20 +08:00
    实现起来也很简单,golang 的话 gin 写个 middleware 也很快,java 拦截器里实现也快
    研究过客户端的逆向,现在除了 flutter 不好逆向外,其他很快就可以逆向出密钥了,就像 4 楼所说,加密只是增加破解时间。
    timethinker
        9
    timethinker  
       2021-11-16 09:20:04 +08:00
    我记得三级等保有一条是要对入库的敏感数据进行加密,目的是为了防止被拖库以后泄漏关键数据,毕竟应用和数据库一般不在一台服务器上,同时被攻破的可能性要小得多。

    不过前端加密如果不是为了防止中间人的话,那我也只能是往增加难度或者过滤掉一部分自动化探测这方面去想了,属于应用层级别的要求,不过话说回来,与其增加的复杂度相比,带来的收益微乎其微吧。
    swulling
        10
    swulling  
       2021-11-16 09:21:04 +08:00 via iPhone
    https 符合个保法要求,只要你后台数据存储加密,最好权限和访问控制。

    没必要在 api 层面进行数据加密。
    deep89381
        11
    deep89381  
    OP
       2021-11-16 09:46:39 +08:00
    没有爬虫的考虑。针对 B 端业务的 API, 客户会上传 AES 密码和 RSA 公钥。主要目的就是 API 取到的数据是加密的,需要客户拿自己的 AES 密码解密
    wolfie
        12
    wolfie  
       2021-11-16 10:07:58 +08:00
    将整个 body AES 加密,使用表单提交。form_key:AES(json)

    Java 后端
    Filter 解密,
    创建一个 HttpServletRequestWrapper 实现。重写 getContentType 、getHeader 、getHeaders 、getInputStream 。把 Content-Type 修改为 application/json
    weiwenhao
        13
    weiwenhao  
       2021-11-16 10:28:17 +08:00
    密码都已经通过 https 传输了,为啥还要加密?
    ch2
        14
    ch2  
       2021-11-16 10:36:09 +08:00
    直接 RSA 省事
    cxe2v
        15
    cxe2v  
       2021-11-16 10:36:13 +08:00
    看起来是一个提供第三方服务的 API ,每个接入你 API 的客户都有自己的一套密钥,通过这个密钥给每个客户单独加密,这样可以防止一个客户伪造请求获取另外客户的信息,类似于各大平台的 Open API
    icyalala
        16
    icyalala  
       2021-11-16 10:42:02 +08:00
    数据内容是隐私,有 SSL 就没必要再加密吧?
    是不是被抓到敏感字段不允许传输的? 那样被发现的话,就会说是是通过技术对抗。
    jones2000
        17
    jones2000  
       2021-11-16 12:20:40 +08:00
    个保法跟加密有什么关系, 不明白。
    skinny
        18
    skinny  
       2021-11-16 12:52:51 +08:00
    你肯定是理解错了要求……
    deep89381
        19
    deep89381  
    OP
       2021-11-16 13:42:11 +08:00
    简单点说吧,客户传输数据中包含手机号, 姓名等个人敏感信息。除了 https 之外,还需要和客户协商敏感信息的加密算法。就想做个通用一点的加解密网关
    deep89381
        20
    deep89381  
    OP
       2021-11-16 13:43:15 +08:00
    @cxe2v 说的很对,很这个需求类似
    powerkai
        21
    powerkai  
       2021-11-16 13:54:52 +08:00
    @cxe2v 我之前的项目对接的第三方支付是这样处理的。
    abeholder
        22
    abeholder  
       2021-11-16 14:15:07 +08:00
    我们之前也想找来着 ,后来基于 SpringCloud Gateway 做了一套通用的 ,用的国密的对称和非对称配合来做的,其实和 https 原理差不多了
    james2013
        23
    james2013  
       2021-11-16 14:16:24 +08:00
    java Spring boot 中实现这个需求短时间内就能实现
    首先在网关服务中自定义 GlobalFilter 实现类,先使用 hutool 的 SecureUtil.aes 进行解密,再验证签名,签名通过后,再包装成 1 个请求转发给对应的服务
    可参考:https://github.com/ciweigg2/blog/blob/8f2487dbcaa1e60b7df742e4e253adcfeb1020bf/source/_posts/%E3%80%90SpringCloud%E5%AD%A6%E4%B9%A0%E3%80%91Spring%20Cloud%20Gateway%E4%BF%AE%E6%94%B9%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0%E5%80%BC(Greenwich%E7%89%88).md
    daliu
        24
    daliu  
       2021-11-16 16:18:24 +08:00
    nginx 的 njs,最新版本支持 WebCrypto API.可以直接撸 rsa
    deep89381
        25
    deep89381  
    OP
       2021-11-16 16:21:34 +08:00
    @james2013 感谢大佬指教, 简单实用赞
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2520 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 15:11 PVG 23:11 LAX 07:11 JFK 10:11
    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