暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

国密在开源数据库的应用

基础技术研究 2023-02-20
243

点击上方蓝字,发现更多精彩


近年从国家层面相继出台《网络安全法》、《密码法》、《数据安全法》、《个人信息保护法》,使网络安全、数据安全的重要性提升到了国家安全的层面。《金融和重要领域密码应用与创新发展工作规划(2018-2022年)》规划2022年要完成国密改造等工作,强调国密改造的重要性与必要性,增强金融领域密码应用支撑能力,提升信息安全保障水平。
但是加密这个话题可能比较宽泛,本文主要聚焦在数据库层面的应用。



国密介绍


国密是中国国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。
SM1 为对称加密,其加密强度与AES相当,该算法不公开且需要加密芯片调用所以不做讨论。
SM2为非对称加密,算法公开,基于椭圆曲线加密算法,这里不做过多介绍,感兴趣的可以搜一下相关资料,它的使用场景和我们熟悉的RSA算法类似,用于签名和秘钥生成。
SM3摘要算法,是公开算法,对标的是MD5、SHA-256等,后续文章将介绍该算法目前在数据库密码加密验证、加密连接方面的应用。
SM4为对称加密算法,加密和解密共用一套秘钥,对标的是AES算法,后续将介绍其在数据库层做数据加密方面的使用。


国密使用现状


目前国密SM3、SM4在云厂商提供的RDS服务已经广泛使用。
SM3在翰高、高斯数据库中用作密码加密验证,在开源数据库MySQL方面也可以作为TLS连接加密,这方面可以参考线上文章。
SM4用数据内容加密则广泛应用,以阿里云、腾讯云和华为云为代表的国内公有云厂商提供的关系型数据库服务(RDS)都提供SM4 透明数据加密(TDE)服务。
当然还有一部分国产数据库也支持数据加密功能,这方面公开资料不多。也有一些具有开发实力的大厂开发了MySQL的加密插件来实现加密需求。
接下来,我将介绍两种基于开源的国密解决方案。
分别是华为开源的openGauss数据库自带的国密加密功能和MySQL+Shardingproxy实现的数据加密功能。sharding-proxy是开源的数据库中间件,主要提供分库分表功能,其中也提供数据加密功能。


国密开源解决方案



【 openGauss 提供国密功能 


openGauss是华为开源的一款企业级的数据库,在使用习惯上保持了PG风格。openGauss开源社区提供了丰富的资料可以很容易学习和了解该数据库的特点。为了体验数据库功能,使用容器化部署,并且尝试了基于国密的加密功能,下面是测试内容:

可通过配置文件设置参数实现数据库密码SM3加密,如下:


在数据库中查询时,密码加密方式已经是sm3。



【 MySQL + Shardingproxy提供基于国密数据加密功能 】
MySQL社区开源版本身不带有加密插件,只有对MySQL内核有开发能力的厂商或者有的公司使用的商业版是提供加密插件的,但也有开源解决方式方案的。我们可以通过sharding-proxy中间件实现这个功能。sharding-proxy将实现对写入数据进行加密,查询数据进行解密的功能,数据库里面存储是密文,这样就算备份的数据文件被拖走也无需担心敏感数据泄露。以下为测试内容:






配置好sharding-proxy,启动后就可以连接到后端MySQL数据库。





总结



国密在数据库领域已经使用广泛。如果您使用国产商业数据库,这方面的功能比较容易获取。如果需要开源免费的解决方案,目前也是有相应解决方式,上面介绍的openGauss 和 MySQL + sharding-proxy都可以满足需求,加密的key可以通过注册中心保存,比如consul、ZK之类的。希望上面内容对您有所帮助。


参考资料:

[1] https://openGauss.org/zh/

[2] https://shardingsphere.apache.org/pdf/shardingsphere_docs_en.pdf

[3]https://medium.com/codex/how-to-use-shardingsphere-proxy-in-real-scenarios-your-quick-start-guide-33d6e2595593

[4] https://blog.csdn.net/n88Lpo/article/details/127543651



 
 

关注我获得

 

更多精彩




文章转载自基础技术研究,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论