点击「京东金融技术说」可快速关注
「摘要」为了保障用户的信息安全,小金库有一整套加解密机制。加密解密分为:对称加密、非对称加密,如何选择?我们结合场景来解析下它们在小金库中的应用。
为什么要加密信息?
在软件系统间需要传输信息,这些信息里面有敏感数据或中文,需要我们对这些数据进行处理,防止信息外泄或乱码。这时,就需要对信息进行加密,在传输之前将信息进行url或base64编码。
小金库与其他系统的信息交互有两种方式:
https报文
txt自定义文件
通过专线或者公网传输,这个过程中要保证安全性,首先保证不被窃取,其次就算被被窃取,得到也是一段不能看懂的报文或文件,这就需要对信息加密。
小金库系统使用的不同加密算法
针对上述报文和文件两种交互信息,是否可以只选择一种加密算法呢?答案是否定的,加解密不是光加密传过去就完成了,还要关注传过去如何解开,所以我们需要考虑两个方面:加密的难度和解密的难度,加密的复杂度决定了解密的难度,这是安全和效率的矛盾性。因此面对不同的信息我们需采用不同的加密算法,以达到安全和效率的最佳平衡。下面将分别介绍小金库对不同信息所采取的不同加密算法:
一、文件的加密算法
小金库系统的文件(收益文件,申赎文件,结算文件)、监管行(结算文件),每只产品都有单独的文件,而且比较大,综合考虑后,这个场景使用对称加密方式比较合适,因为文件大,如果非对称加密,加解密的过程时间过长。工作原理如图:
二、报文加密的算法
小金库其他系统的交互报文(会员的开户、申购、赎回),这些交互内容量比较小,但是敏感信息多,这时就需要用非对称的加密方式,采用公钥和私钥的方式,ECC比较不错。实践中采用的是RSA算法,证书我们采用openssl(RSA密钥生成工具)。工作原理如图:
三、加签、验签
我们对外提供的接口或调用三方的接口往往有一步生成签名或验签的步骤,这个步骤主要是验证调用方是不是合法以及内容是否被修改。比如:对于某些网上公开下载的软件、视频、或是镜像文件,被修改了可能会导致用不了或者其他的问题。因此发布者镜像算法计算一组数值,让下载的用户进行数值对比。因加密不可逆算,如数值一样,就表示文件没被修改。反之,则被修改。
小金库系统和基金公司交互的时候,也是要进行签名加签,基金公司拿到数据后第一步就是先看下数据是否被篡改,如果篡改,直接丢弃,返回数据异常和报警。
四、小金库系统敏感数据
这些数据在数据库里不能明文存在,为了防止被恶意导出,存储时需要采用摘要存储,如SHA256,mybatis插件加解密是一个不错的切面。每次使用都对来源数据进行加密和数据库已存储信息比对。
但有些时候,数据必须有有一份明文的信息,就需要在做摘要的同时,在加密中心存储一份对称加密的秘钥(随机)和加密后的串,用的时候,过来取回去同时解密。
后 记
信息安全对一个互联网产品至关重要,尤其是金融产品。我们要严守信息安全大门,构建小金库安全保障体系,让用户在享受种种便利的同时提供一个坚实屏障。
京东金融技术说
▼▼▼
原创·实用·技术·专业
不只一技之长
我有N技在手
你看,我写,共成长!