基于国密算法的数据库敏感字段加密设计

admin 2024年2月15日18:23:44评论16 views字数 4348阅读14分29秒阅读模式

点击蓝字关注我们

申请加入数据安全共同体计划,请在本公众号回复“申请表”获取下载链接

0 引言

随着《数据安全法》《个人信息保护法》的正式出台,为数据安全及个人信息保护提供更加有力的法律保障。数据已成为继土地、劳动力、资本、技术等传统要素之后的第5生产要素,是国家基础性战略资源,数据的竞争已成为国际竞争的重要领域,因此数据要素的安全涉及国家主权、安全和发展利益。新法的密集出台加上近年来用户信息数据泄漏、数据非法交易等安全事件频发,导致敏感数据保护受到广泛的关注。如何加强敏感数据管理、保障敏感数据安全,成为企业信息安全管理工作的重中之重。

近几年公司围绕着数据合规开展了数据合规治理工作,科技部门将数据库中敏感数据加密作为推进数据合规治理的重点项目。项目最终目标是涉敏明文100%加密存储。围绕着这一目标,最终实现了本文介绍的数据库敏感数据加解密平台。

1 系统总体设计

1.1 系统整体框架

本系统由加解密基础服务平台(KMS密码机、加解密SDK、历史数据加密清洗平台、加解密服务平台)、敏感数据管理平台、加密数据查询系统3部分构成。

加解密基础服务平台,主要由KMS密码机、加解密SDK、历史数据加密清洗平台、加解密服务平台组成。加解密服务平台的主要功能是存储了所有敏感数据的加密策略和密钥信息。KMS密码机,指的是密钥管理系统(Key Management System)及其硬件组成。加解密SDK(Software Development Kit),则是指加解密服务提供的软件工具包。应用可通过SDK提供的相关接口函数完成数据的加/解密操作。

敏感数据管理平台,通过扫描数据库的方式发现敏感数据,形成敏感数据地图(包含敏感数据类型、所在库表列等信息),最终将敏感数据地图相关信息同步给加解密服务平台。

加密数据查询系统,是在原有DB查询系统的基础上扩展了加密后敏感字段查询的功能,可以有效解决定位系统故障需要密文转明文的突发情况。

1.2  系统流程设计

整个系统业务流程如图1所示。通过敏感数据管理平台扫描发现敏感数据,形成敏感数据地图,并将结果同步至加解密服务平台中。加解密服务平台则自动分配适当的加密策略,并通过KMS申请密钥。申请成功后,密钥信息存储在KMS密码机,密钥索引值则存储在加解密服务平台。应用则需通过加解密SDK调用加解密服务平台的API接口,才能获取数据库敏感字段明文内容。而历史数据加密清洗工作和DB数据查询系统则额外提供存量敏感字段加密以及加密后敏感字段数据的查询功能。

基于国密算法的数据库敏感字段加密设计
图1 系统总体结构图

2 关键模块设计

2.1  加解密SDK及加解密服务平台

加解密SDK的主要功能有两个。一是提供加解密的基础服务,即包括SM21、SM32、SM43在内的国密算法的加密函数和解密函数。通过SDK,应用可以直接调用函数完成信息的加密和解密。二是SDK对以下共性功能进行了整合,提供了统一解决方案。即只需要在加密的Bean属性上配置annotation,然后采用AOP的方式,拦截SqlMapClient的数据库操作,对包含相应annotation的属性进行加解密操作。

2.2 敏感数据管理平台

敏感数据管理平台,主要通过对数据表的字段进行自动化采用扫描完成涉敏地图分析。可以针对身份证、手机号、银行卡、住址等通用敏感数据和部分定制化(例如:保单号,可进一步按需扩展)敏感数据进行字段识别,输出敏感数据地图,减少人工识别工作。系统的工作流程很简单,只要配置好相应的数据库只读账号后,便可以发起自动扫描任务,扫描任务会检测数据库中每个表的结构信息,下一步会对每个自动进行数据采样,根据采用内容判断该自动是否包含敏感信息以及敏感信息的类型。每张表会抽取10条数据作为采样验证的依据,采用正则匹配和字段关键字和字段描述信息等多种匹配规则进行综合判断,降低误报的风险。最终结果会输出到敏感地图中。

通过敏感数据管理平台,建立一个清晰的涉敏数据分布视图。安全部门可以实时掌握敏感数据加密的改造进度,杜绝了敏感数据明文落地情况的瞒报、漏报,同时也方便研发人员快速评估改造工作量和范围以及改造的无死角。同时也给加密数据查询系统、加解密服务系统等提供了基础数据支撑。

2.3  历史数据加密清洗平台

历史数据加密清洗平台,主要用于对存量数据的密文和摘要字段的写入功能。平台兼容Oracle,Mysql,TiDB等多种数据库。可以根据自增ID或者更新日期等字段实现批量初始化功能。需要初始化的库表信息则来自于敏感数据管理平台扫描获取,对应库表字段的密钥则通过加解密服务平台及KMS密钥机获取。

2.4  加密数据查询系统

加密数据查询系统(DBSearch)的目标用户是运维和研发,当运维和研发遇到生成故障需要进行排查时使用。隐藏分为2种查询权限,脱敏查询和明文查询,在两种权限模式下,会根据数据库内不同的数据有不同的处理策略。

DBSearch判断何种情况下要对数据进行脱敏,依赖的是敏感数据管理平台对于敏感数据的识别结果和检测能力,判断哪些数据要进行解密,依赖的是加解密平台的加密策略(哪些库表列有配置是加密的)以及密文的标准识别策略。

3 关键技术应用

3.1 敏感数据加密字段及密钥替换机制设计

3.1.1 加密字段的设计

针对每个待加密的表敏感字段,都会新增2列密文字段。分别是摘要索引字段,用于存储SM3(敏感信息+盐),密文字段,用于存储SM4(敏感数据)字段,密钥的最小颗粒度到列级。其中密文是用密钥进行对称加密的部分,未来在业务需要使用明文的时候(例如业务场景需要再前端给用户展示这个手机号),就需要利用加解密SDK完成解密成明文。而摘要索引是通过杂凑算法(也就是我们通常理解的不可逆哈希值)对明文+盐进行计算得出,这个值主要是为了在关联计算和对比值是否相等的时候可以直接使用。最常用的场景就是多表的关联查询。因为不同的业务表即便同一类型敏感数据字段也可能采取不同密钥。如果只有密文字段,就无法实现多表关联查询。而通过新增摘要索引字段,通过采用统一的盐进行摘要信息。在抵御彩虹表攻击的同时,也完美的解决了无法关联查询的弊端。

有意思的是在系统上线后,公司也启动了国密改造(密评)项目。在差距分析中,发现密评有2项分值占比非常高的测评项,分别是敏感数据国密算法加密存储和数据完整性校验。我们的加解密解决方案中已实现了这2个基本功能。只是在完整性校验上,需要略作调整,即把SM3加密的摘要字段,作为校验值比对,即可完成完整性校验功能。

3.1.2 密钥替换机制的设计

按照信息安全技术相关标准规范,密钥的有效期一般在3年左右。所以加密方案也要能支持密钥的更替。而密钥的更替,也直接导致了密文和摘要信息的重新生成。通过在密文和摘要字段的前5个字节设置版本信息,我们可以很好的解决这一个难题。

这5个字段分别是1~3位标识的加密方案,通过这3位,加解密SDK可以识别数据采用第几套加密方案,做到新老方案的兼容。第4位是加密算法标识位,可以区分数据加密是通过何种加密算法加密的,保证未来可以可以对算法进行识别和更换。而第5位则是密钥版本标识。当数据切换密钥的情况下,用于区分采用那个密钥进行解密,如图2所示。

最后,在新老密钥共存期间,可以继续利用历史数据加密清洗平台,对老版本密钥的对应的密文字段和摘要字段采用新密钥重新加密。完成密钥升级过程。

基于国密算法的数据库敏感字段加密设计
图2 加密字段设计

3.2 基于5步放量法的加解密SDK放量开关设计

由于改造目标存在上下游依赖关系,同时整个系统中是存在有大量历史数据的,因此在改造顺序上需要考虑几个点:第一,改造应该从源头开始,这样能够保证下游填了不存在涉敏明文数据,但要考虑过渡;第二,改造优先处理增量数据,再处理历史数据。

整个过程可分为5个阶段,以处理增量明文数据为最优先,为的是确保整个体系中涉敏明文数量不再持续增加,最终的目标是在确认从数据源头开始向后的所有系统都已经在使用了密文后,使涉敏明文存在无意义后,再清除掉所有的明文信息。对此,特地设计了一套放量开关置于加解密SDK,通过对3个放量开关逐步打开,顺利完成整个敏感数据加密的过程。这3个开关分别是开关1、开关2和开关3。开关1,三写开关,即打开后明文,密文,摘要索引字段都写入。读取时仍读取明文字段提供给应用使用。开关2,密文读取开关。当打开第2个开关后,仍然对明文、密文、摘要索引三个字段进行写入,但是读取时候不读取明文字段,而是通过读取密文字段后,通过解密算法还原成明文后,返回给应用使用。开关3,明文不保存开关。打开最后一个强制覆盖开关后。读取方式不变,同开关2一致,但是写入时候,会对明文字段置空,起到清理明文敏感数据的作用。

本文所设计的基于国密算法的数据库敏感字段加密系统,可以快速实现全库敏感字段100%加密存储,有效降低了数据库被拖库后代理的数据泄漏风险。同时也很好兼顾了加密后敏感数据的查询以及后续的密钥可替换。

4 结语

本文所设计的基于国密算法的数据库敏感字段加密方案,实现了敏感数据的识别、敏感数据加解密基础服务的提供以及加密后敏感数据的查询功能。其创新设计的hash摘要字段和密文字段版本前缀,使其数据加密和数据查询之间找到了平衡,同时也对未来密钥的更替提供了便捷性,增加了敏感数据的安全保障。

参考文献

[1] GB/T 32918.1-2016,信息安全技术 SM2椭圆曲线公钥密码算法 第1部分:总则[S]

[2] GB/T 32905-2016,信息安全技术 SM3密码杂凑算法[S]

[3] GB/T 32907-2016,信息安全技术 SM4分组密码算法[S]

作者简介:

蔡卓炜,复旦大学软件工程硕士,高级工程师(信息安全),九三学社社员,中国计算机学会高级会员、系统软件专委会执行委员等,中南财经政法大学法律专业硕导。

推荐阅读
基于关键信息的双向匿名共享
企业实践 | 汽车数据安全管理体系建设
《人脸识别技术应用安全管理规定(试行)》公开征求意见,探索中国治理方案
动态数据安全监管体系探索
API数据安全管理浅析
新技术新业务评估的初步探索
多措并举,扎实推进数据安全服务迈上新台阶

基于国密算法的数据库敏感字段加密设计

数据安全共同体计划

(data security community)

“数据安全共同体计划”为了促进《数据安全法》《个人信息保护法》落地实施,推动数据开发利用和数据安全领域的技术推广和产业创新,致力于促进数据安全产业链各环节的交流与合作,推动数据安全政策、技术、人才多要素良性互动,构建数据安全产业生态共同体。

咨询电话:

      曹京 (010) 5884 6840

      解伯延 18631643906

联系人邮箱:[email protected]

基于国密算法的数据库敏感字段加密设计

基于国密算法的数据库敏感字段加密设计

原文始发于微信公众号(数据安全共同体计划):基于国密算法的数据库敏感字段加密设计

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月15日18:23:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   基于国密算法的数据库敏感字段加密设计http://cn-sec.com/archives/2193070.html

发表评论

匿名网友 填写信息