煤矿安全监控系统数据防篡改研究_许金.pdf
第 51 卷第 2 期 2020 年 2 月 Safety in Coal Mines Vol.51No.2 Feb. 2020 煤矿安全监控系统数据防篡改研究 许金 (中煤科工集团重庆研究院有限公司, 重庆 400039) 摘要 现有的煤矿安全监控系统数据加密多采用数据库加密存储和文件加密方式, 存在性能 开销大, 无法追踪数据变动记录等问题, 降低了安全监控系统的稳定性和安全性。根据煤矿安全 监控系统数据防篡改的要求, 提出一种利用变动数据捕获机制和消息摘要加密相结合的对篡改 行为进行识别、 跟踪与记录的方法。该方法在安全、 性能与存储方面取得了较好的平衡, 同时具 备良好的兼容性。 关键词 煤矿安全监控系统; 监控系统数据防篡改; 数据加密; 消息摘要加密; 数据变动捕获 中图分类号 TD76文献标志码 B文章编号 1003-496X (2020 ) 02-0116-04 Research on Data Tampering Prevention of Coal Mine Safety Monitoring System XU Jin (China Coal Technology and Engineering Group Chongqing Research Institute, Chongqing 400039, China) Abstract The existing data encryption of coal mine safety monitoring system is mostly in the of database encrypted storage or file encryption, there are some problems such as the high perance overhead and unable to track data change records, which reduce the stability and safety of the safety monitoring system. According to the data tampering proofing requirements of coal mine safety monitoring system, a is proposed that can identify, track and record tampering behaviors based on the combination of variable data capture mechanism and message digest encryption. This achieves a good balance between safety, perance and storage, and has good compatibility. Key words coal mine safety monitoring system; monitoring system data tampering proofing; data encryption; message digest en- cryption; data change capture 煤矿安全监控系统是防范煤矿瓦斯事故的重要 手段。安全监控系统数据是日常监管、事故调查分 析最重要、 客观、 真实的资料, 确保监控数据不被篡 改意义重大。为此,国家煤矿安全监察局将“假数 据” 等“五假五超三瞒三不” 列为重点打击对象[1]。 煤矿安全监控系统升级改造技术方案 的通知煤 安监函 〔2016〕 5 号和 AQ 62012019 煤矿安全监 控系统通用技术要求均明确要求对“采掘工作面瓦 斯超限报警、断电、 馈电异常,局部通风机停风等数 据应进行加密存储, 防止篡改” [2-4]。 1安全监控系统数据安全现状 目前行业主流煤矿安全监控系统软件,均运行 在微软 Windows 系统上,数据库多采用大型关系数 据库。系统部署在煤矿企业, 日常维护由矿方负责。 矿方拥有操作系统、 监控软件、 数据库的最高权限, 对数据有充分控制权, 给数据防篡改带来了较大挑战。 煤矿安全监控系统数据防篡改关注的核心是对 数据非法修改、 删除与添加, 而对不影响数据真实性 的查询操作一般不作过多关注。针对这种情况, IT 行业一般采用数据加密、 日志审计, 同时建立完备的 “数据管理、 安全管理、 审计管理” 三权分立的管理 模式, 从技术与管理 2 个层面来保障数据安全, 但这 DOI10.13347/j.cnki.mkaq.2020.02.026 许金.煤矿安全监控系统数据防篡改研究 [J] .煤矿安全, 2020, 51 (2) 116-119. XU Jin. Research on Data Tampering Prevention of Coal Mine Safety Monitoring System [J] . Safety in Coal Mines, 2020, 51 (2) 116-119. 基金项目 国家重点研发计划资助项目 (2018YFC0808300) ; 重庆 市 2019 煤炭发展专项资金资助项目 (112020119) 移动扫码阅读 116 ChaoXing Vol.51No.2 Feb. 2020 第 51 卷第 2 期 2020 年 2 月 Safety in Coal Mines 图 1CDC 机制 Fig.1The Mechanism of CDC 种方式专业性强、 人员要求高、 资金与设备投入多, 在煤矿难以大面积推广。 监控系统厂家为防止数据被非法篡改,目前主 要采用如下 2 种方法 1) 数据库加密存储[5-8]。采用监控软件前端加密 或利用数据库内置加密机制,多采用可逆加密方 式,利用对称或非对称加密算法,对数据进行加密 存储。加密算法与秘钥均由厂家掌握,可对数据修 改操作进行有效防范,具备易管理、编程实现方便 等优点。但该方式对数据非法添加、删除操作无法 识别; 加密导致索引失效, 查询性能大幅下降; 无法 直接使用数据库内置函数,统计分析困难;数据共 享融合困难, 需要对三方接口进行大量改造。 2) 文件加密, 数据库明文存储。为了克服数据库 加密存储方法的缺点, 充分利用数据库提供的强大检 索与统计分析能力, 采用文件加密、 数据库明文存储 的方式。但该方法数据存储冗余量大, 数据篡改识别 高度依赖文件与数据库关联对比分析规则, 识别过程 复杂且性能较低。 为此, 亟需一种能充分利用数据库能力, 并能对 数据篡改行为进行有效识别、 捕获跟踪的方法。 2安全监控系统数据防篡改基本思路 2.1安全监控系统防篡改的基本要求 为满足实际需要, 安全监控系统数据防篡改的设 计, 既要对数据修改操作进行捕获、 跟踪、 识别, 也要 在性能、 存储方面取得有效平衡。鉴于系统实际应用 情况, 防篡改的设计应满足如下 6 项基本要求 1) 应能对数据库添加、 删除、 更新操作实时识别 与记录。 2) 应能记录修改 (Update) 前后的原始数据。 3) 应能自动记录被删除的数据。 4) 应能对数据库中数据进行合法性识别。 5 ) 兼容已有数据库架构, 能与已有软件功能或 接口完全适配。 6) 加密后数据库所有功能全部可用, 存储容量 不能大幅增加, 性能不能出现明显下降。 为满足上述 6 条要求,为此主要采用变动数据 捕获和消息摘要加密来实现。 2.2变动数据捕获 (CDC) 对数据库添加、 删除、 更新操作的捕获, 多采用 触发器,但其性能开销大、触发器自身安全机制可 控性差,不适合安全监控系统需要。随着商业数据 库技术的发展, Oracle、Sql Server 在其最新版本中 均提供了变动数据捕获 (Change Data Capture) 组件, 对数据库数据变化进行捕获。CDC 组件性能开销 小,可对源表进行 INSERT、 UPDATE 和 DELETE 等 操作实时捕获,并将变化的数据同步记录到系统表 中, 并提供接口供第三方程序访问。 利用 CDC 组件, 可以较好的满足防篡改前 3 项基本要求[9]。 CDC 机制如图 1, 变更数据捕获的更改数据源为 Sqlserver 事务日志,当对表启用变更数据捕获时, 系 统将生成 1 个与该表结构相似的副本。 当对捕获表进 行 DDL 操作时, 在事务日记会记录相关操作信息。 变 更数据捕获代理使用异步进程读取事务日记并记录 到副本中, 以完成对源表的跟踪。Sqlserver 提供相应 的查询函数, 供外部调用查看捕获记录。 安全监控系统运行在 Windows 平台, 数据库多选 用 SQL Server,故以 SQL Server2014 对 CDC 的使用 进行介绍。首先利用系统存储过程 sys.sp_cdc_en- able_db 启用数据库 CDC 捕获功能;再利用 sys. sp_cdc_enable_table 启动指定表数据变化捕获功能, 最后执行 sys.sp_cdc_start_job 存储过程, 启动数据捕 获作业。通过查询指定对象的捕获实例系统表, 即可 获取变动的数据。为了减少数据存储量, 针对不同的 表, 可以指定需要捕获的数据列。 2.3数据加密存储 为了满足防篡改第 4 项~第 6 项要求, 拟完全保 留已有数据库结构设计,确保数据库所有功能和接 口可用, 在每个数据表增加 1 个消息摘要校验列, 从 而既可大幅减少密文长度, 又可验证数据合法性。 消息摘要 (Message Digest) 又称为数字摘要 Digital Digest。 它由 1 个单向 Hash 加密函数对待加 密的“明文消息”进行作用,而生成固定长度的密 文,该密文即为数字指纹。数字指纹具备固定的长 度,且不同的明文消息摘要成密文,其结果总是不 117 ChaoXing 第 51 卷第 2 期 2020 年 2 月 Safety in Coal Mines Vol.51No.2 Feb. 2020 表 2数据表结构 Table 2Data table structure 同的, 而同样的明文其摘要必定一致。本方案中, 每 个表明文记录与相应消息摘要同时存在,导致极易 被破解,故需对消息摘要进行二次加密。因摘要数 据与明文是一一对应,综合考虑速度、安全性与便 捷性, 摘要的加密宜采用可逆加密算法。 消 息 摘 要 算 法 常 见 的 主 要 有 MD5、 SHA、 RIPEMD、 PANAMA、 TIGER 等[10-11]。MD5 具备安全性 高、 速度快等优点, 产生的摘要长度固定为 16 字节 (128 位) ,故选择 MD5 生产相应记录的消息摘要。 对摘要数据的加密,根据性能与数据还原的需要, 采用 DES 对称加密算法。 煤矿安全监控系统防篡改算法见表 1。 3试验验证 安全监控系统密采数据真实、客观的反映了传 感器周期采样原始值,所有统计分析均以此为基 础。密采数据具备数据量大, 读写极为频繁, 在本文 中以它为典型对象进行试验,测试其存储、安全和 性能等指标。 1) 测试环境。采用 Windows10 专业版, 微软SQL Server2014 开发版进行测试。 2) 测试表建立。密采数据表主要包括 ID、 监测 点、 监测地址、 监测值、 采集时间、 校验值等, 数据表 结构见表 2。 3) 启用 CDC 跟踪。在查询分析器中执行如下 T-SQL 语句, 启用数据变动捕获功能。 USE CDC //打开测试数据库 CDC GO C sys.sp_cdc_enable_db //启用测试数据库 CDC 跟踪 GO //启用对应表捕获功能 C sys.sp_cdc_enable_table source_schema 'dbo', source_name 'RunRecord', capture_instance'RunRecord_Check', role_name NULL GO //启动对应的捕获作业 c sys.sp_cdc_start_job N'capture' go 4 ) 数据操作行为测试。通过在数据库操作界面, 人为添加、 修改和删除数据 1 条记录, 通过 CDC 查 询函数在追踪记录表中查询, 根据查询记录即可清 楚的看到对数据的所有增删改操作。假定插入的数 据为真实数据, 通过对比更新前后的消息摘要密文, 即可发现更新后的密文与更新前的密文一致,但监 测值不一致,根据本文消息摘要生成原理可知不同 的明文生成的消息摘要不一致,可知更新后的数据 为人为添加的非法数据。 表 1基于 CDC 与消息摘要加密的监控系统数据防篡改算法 Table 1Data tampering proofing algorithm of monitoring system based on CDC and message digest encryption 列名数据类型备注 IDInt行 ID PointVarchar监测点 AddrVarchar监测地址 IOValueFloat监测值 IOTimeDatetime采集时间 CheckVarchar摘要校验 基于 CDC 与消息摘要加密的监控系统数据防篡改算法 Step1 开启 CDC 变动数据捕获 c sys.sp_cdc_enable_db //启用数据库跟踪 c sys.sp_cdc_enable_table //启用对应表捕获功能, 并设置捕获列 c sys.sp_cdc_start_job N'capture' //启用捕获作业 Step2明文消息摘要生成与校验 byte[] data md5.ComputeHash (Encoding.UTF8.GetBytes (RecordContent ) ) ;//生成消息摘要, GetMD5Hash (RecordContent ) //摘要校验 Step3消息摘要 DES 加密 CryptoStream csEncrypt new CryptoStream (msEncrypt, desEncrypt.CreateEncryptor (bytesDESKey, bytesDESIV ) , CryptoStreamMode.Write; Step4写入数据库 118 ChaoXing Vol.51No.2 Feb. 2020 第 51 卷第 2 期 2020 年 2 月 Safety in Coal Mines 表 3性能测试结果 Table 3Perance test results 5) 数据合法性测试。数据合法性可以通过对记 录明文进行 MD5 HASH 摘要计算后, 调用校验字段 Check 的解密方法, 进行对比, 若值不等即为非法数 据。其可以有效识别非法添加或更改特定字段的假 数据。 6) 数据读写性能测试。采用 C编写简单的 Win 程序, 结合监控系统实际情况, 以每 5 s 写 入 10 000 条记录, 每 3 s 读取 10 000 条记录, 持续 运行 30 min, 观察启用本方案前后数据库读取与写 入性能变化情况。采用 Sql Server Profiler 监测数据 库性能。运行测试结果见表3。 从表 3 可知, 数据库启用 CDC 组件, 密采数据 采用消息摘要加密后, 在读写速度、 CPU 占用、 内存 占用有一定影响, 但影响有限, 几乎可以忽略。由于 变动数据捕获机制, 使得数据库每新增 1 条记录, 会 自动记录到捕获表中,导致了数据库存储空间的增 加。而在监控系统数据防篡改中,当人为添加伪数 据时,可以通过密钥识别,因此无需对插入数据进 行捕获,只需对更新数据和删除数据进行记录。去 掉插入数据捕获时, 数据库存储空间变为 1.08 GB, 没 有大幅度增加数据库存储容量。因此本方案, 在数据 存储、 安全和读写性能方面取得了较好的平衡。 4结语 安全监控系统数据防篡改是保障监控有效的重 要手段,利用数据库的变动数据捕获机制与记录摘 要加密的方式,可有效的对数据库操作行为进行识 别、 跟踪和记录, 在安全、 性能、 存储三方面取得了 较好的平衡, 同时具备良好的兼容性, 避免了大面积 的接口适配工作。该方案经过多个矿井现场检验运 行效果良好, 该方法可推广到人员定位、 电力监测等 其他系统。 参考文献 [1] 王世雅.严打 “五假五超三瞒三不” 等行为 [N] .中国应 急管理报, 2019-05-29 (002) . [2] 国家煤矿安监局关于印发煤矿安全监控系统升级 改造技术方案 的通知 [J] .煤质技术, 2017 (1) 71. [3] AQ 62012019 煤矿安全监控系统通用技术要求 [S] . [4] 孙继平.AQ 6201煤矿安全监控系统通用技术要求 修订意见 [J] .工矿自动化, 2016, 42 (2) 1-7. [5] 王正飞.数据库加密技术及其应用研究 [D] .上海 复 旦大学, 2005. [6] 朱勤, 骆轶姝, 乐嘉锦.数据库加密与密文数据查询技 术综述 [J] .东华大学学报 (自然科学版) , 2007 (4) 543-548. [7] 马汝超, 赵亮.煤矿安全监控系统数据加密技术 [J] .工 矿自动化, 2017, 43 (2) 15-18. [8] 陈运启, 张翼.煤矿瓦斯监控系统关键数据加密算法 的研究与实现 [J] .工矿自动化, 2012, 38 (7) 7-10. [9] Rothja, Olprod, Saisang.关于变更数据捕获 (SQL Serv- er) [EB/OL] . (2019-01-02) . https//docs.microsoft.com/ zh-cn/sql/relational-databases/track-changes/about- change-data-capture-sql-serverviewsql-server. [10] 杨怀,宋俊芳,王聪华.浅谈 MD5 加密算法在网络安 全中的应用 [J] .网络安全技术与应用,2018 (9) 40. [11] 李夏梦, 潘广贞.基于消息摘要算法第五版和 IDEA 的混合加密算法 [J] .科学技术与工程, 2017, 17 (9) 233-238. 指标 启用 CDC 与消息 摘要加密 不启用 CDC 与消息 摘要加密 平均写入速度/s0.2370.107 平均读取速度/s0.3150.313 CPU 占用/23.7 (峰值 ) 5平均19.8 (峰值 ) , 3 (平均 ) 内存占用/M728720 数据库占用/GB0.952.08 作者简介 许 金1980, 四川射洪人, 副研究员, 硕士, 2011 年毕业于重庆大学, 中煤科工集团重庆研究院有限公司 测控技术研究分院软件所所长, 主要从事煤矿综合自动化与 信息化、 矿山物联网等方面的研究, 发表学术论文 10 篇。 (收稿日期 2019-10-18;责任编辑李力欣) 119 ChaoXing