王朝阳 汪颢懿 左 敏 张青川
(北京工商大学农产品质量安全追溯技术及应用国家工程实验室 北京 100048)
随着人民生活水平的不断提高,消费者对食品品质以及安全的要求也越来越高,大众对食品的关注点已经转变为食材的源头,食品加工过程、仓储、运输等。同时近年来食品安全问题频发,从最早的三聚氰胺、地沟油到现如今的台湾“塑化剂”风波、湖南大米镉元素超标、天津独流调料造假等事件,当前食品安全隐患愈发严重。另一方面,大多数食品对于加工、运输、仓储等环节中的温度、湿度、光强等环境因素有较高要求,一旦这些因素未达标,食品变质的可能性增大,若这样的食品流向市场,将会严重危害公众的健康。因此,亟需采用安全、可信、透明的食品安全溯源系统来加强对食品产业链的监管与效率,提高食品安全水平,保障国民饮食健康。随着信息科学的飞速发展,在食品安全溯源系统中融入智能技术、物联网技术,极大地促进了我国食品安全溯源体系的发展,使得公众能参与到食品安全监管中。在服务器端,以去中心化的分布式结构应用、不可篡改的时间戳、安全信任机制为核心的区块链技术成为了信息技术的研究热点。区块链具有去中心化、唯一性、自治性、不可篡改性、匿名性等特性[1],是目前搭建食品安全追溯系统的不二之选,在实现追溯透明化的同时可以有效地保证服务器端的数据安全性。
但是,区块链等技术并不能保证追溯信息在上“链”前的数据安全,若追溯信息在上传至服务器端前就遭到篡改,后续的追溯过程将毫无意义。为此,如何杜绝企业上传虚假或被篡改的追溯信息已经是目前亟需解决的问题。针对这一问题,本文设计实现了一种TrustZone[2-3]架构下基于优化RSA的食品追溯可信采集方法,利用可信执行环境、时间戳、非对称加密算法等技术,并设计加密机制,可部署在养殖场、运输车辆、销售货柜等嵌入式环境,对上传至服务器端前的追溯数据提供安全保障。此外,由于食品安全追溯数据量极大,且嵌入式环境硬件计算能力有限,运算速度较慢,为了防止出现数据堆积的问题,本文对RSA算法进行优化,在保证安全性的同时提高运算速度。
针对攻击者在数据采集端的窃取、篡改、破坏等恶意行为,国内外已有研究者基于国产密码算法、ARMA的无线传感器网络、数字水印等技术,展开研究并提出了可行的防护方案。冯云等[4]提出了基于国产密码算法的可信计算体系,将基于国产密码算法的可信技术应用于采集终端的安全加固。王海元等[5]提出了基于ARMA的无线传感器网络可信数据采集方法,在保证采集数据的高度可信的同时显著提高了网络的整体性能。李红涛等[6]提出了一种全新的数字水印嵌入方法,保障涉密图像在传输过程中的安全性、可靠性和完整性。Zhao等[7]利用静态随机存取存储器在不添加安全硬件的前提下生成可信根,来得到加密数据的安全密钥,通过将加密后的数据存储在系统硬件上来保证数据安全。Hein等[8]设计实现了一种基于安全密钥和Merkle-Tree认证加密的安全设备,可有效防止攻击者对数据的篡改、窃取、破坏。
非对称加密算法中包含公开密钥(Public Key,PK)和私有密钥(Private Key,SK)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密,非对称加密算法强度复杂,安全性主要由算法和密钥管理决定。对称密码体制则是单一密钥,并且是非公开的,所以保证其安全性就是保证密钥的安全,但在解密时必须将密钥向对方公开,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样将密钥传输给对方,确保了密钥对的安全性,因此非对称加密算法安全性更好。本文列出了RSA、DSA、ECC、RABIN这4种目前应用最多的非对称加密算法[9-13],并从成熟度、安全性、运算速度、资源消耗等特点进行对比,对比结果如表1所示。
表1 算法对比结果
本文设计的TrustZone架构下的食品追溯可信采集方法主要包括数据采集层、加密层、存储三部分。通过设计基于非对称加密算法和时间戳的加密机制,在可信执行环境中对追溯信息进行加密,以确保追溯信息的可信性。
追溯数据采集,是指从传感器和其他待测设备等模拟和数字被测单元中自动采集追溯信息(非电量或者电信号),送到上位机中进行分析、处理。由于传统的采集系统存在响应慢、精度低、可靠性差、效率低、操作繁琐等弊端,已经不能完全适应当前追溯领域的需求。如今嵌入式技术已经相对成熟,因此,基于嵌入式的追溯信息采集设备是目前最优的选择方案。经过对现有的食品安全追溯领域的调研,本文对追溯环节以及数据类型进行了总结,并确定了本文方法所采集的数据类型;食品安全追溯可以分为生产环节、仓储环节、运输环节三部分,具体追溯对象以及追溯信息如表2所示。
表2 追溯对象与追溯信息
本文方法所需的硬件设备主要包括:电源、ARM核心控制模块、传感器、存储设备等模块,系统框架如图1所示。通过调用温度传感器、湿度传感器、位置传感器、光强传感器、气压传感器等传感器对食品追溯环境中的环境信息进行数据采集。采集到的追溯数据在ARM核心控制模块中由CA端传入TA端,在TrustZone技术构建的可信执行环境中,通过基于时间戳和优化后的非对称加密算法的加密机制,对数据加密,最后将追溯信息与密文共同存储。在上传至服务器前,可通过公钥对数据进行解密验证,进一步确保数据的可信性。由于全部加密过程均在可信执行环境中进行,不仅可以确保私钥的可信性,由于私钥存放在安全的永久存储器中,还可以防止遭受来自外界攻击者的窃取与篡改。
在追溯过程中,追溯信息通常由数据、采集时间两部分构成。对于传统的追溯系统,不法分子可以在数据上传服务器或区块链之前,在本地对追溯数据以及采集时间进行篡改,以此来欺骗公众及监管部门,对此文章将通过加密机制来保证追溯信息的可信性以及时效性(时间的递推)。加密机制如图2所示。
图2 加密机制设计
(1) 在可信执行环境内生成公钥私钥对(PK,SK),私钥将永久存储在可信执行环境中。
(2) 将传感器采集到的追溯信息(m)传输至可信执行环境。
(3) 在可信执行环境内对追溯信息加盖时间戳(time),以确保追溯信息中时间参数的单一性。
(4) 加盖时间戳的若干条追溯信息将在内存中组成数据块,等待处理。
(5) 使用非对称加密算法,通过私钥对追溯信息进行加密。
(6) 将原始追溯信息、时间戳、密文组成新的追溯信息(M),并进行存储。
(7) 在上传至区块链或服务器前,需要用公钥(PK)对密文(C)进行验证,以确保追溯信息上链前的可信性。
TrustZone是ARM提出的一种提供基于硬件的隔离机制,为需要高安全性的代码构建安全可靠的环境[14-15]。它将系统的硬件和软件资源分为两部分,一个是可信执行环境,另一个是普通环境。所有的敏感操作都应该在可信执行环境中被保护,其余安全性要求较低的操作在普通执行环境中执行,例如Rich OS和大多数应用程序。核心状态由安全配置寄存器(SCR)中的NS位区分,NS位只能由安全核心修改。通过安全监控呼叫(SMC),无论在何种环境中,它都可以进入监控模式并切换到其他环境。
2.3.1可信执行环境
可信执行环境(Trusted Execution Environment,TEE)[16-17]首先由Global Platform(GP)提出,并制定技术规范,它是与设备上的Rich OS(通常是Android等)并存的运行环境,并且给Rich OS提供安全服务。可信执行环境可分为硬件层与软件层两部分,其中软件层包括系统层、接口层、应用层,如图3所示。TEE所需的软硬件资源通过TrustZone技术与Rich OS分离,为了保护TA的资源和数据的保密性,完整性和访问权限,安全性需求较高的应用(可信应用,TA)需要在TEE中得到授权后才能通过客户端应用(CA)端进行调用,每个TA是相互独立的,而且不能在未授权的情况下互相访问。为了保证TEE本身的可信根,TEE在安全启动过程中是要通过验证并且与Rich OS隔离[18]。
图3 可信执行环境框架
TEE内部API主要包含了密钥管理、密码算法、安全存储、安全时钟资源和服务,还有扩展的可信UI等API。可信UI是指当有关涉密或关键信息需要显示或输入时,显示器和键盘等硬件资源将全部由TEE接管,Rich OS中的应用不能对其进行访问。在进行TA程序开发时,TEE内部API是提供给TA的编程接口,而TEE外部API则是让运行在Rich OS中的CA访问TA服务和数据的底层通信接口。
2.3.2时间戳认证
在传统的食品安全追溯领域中存在这样一种现象,有一些不法分子在篡改食品安全追溯信息时,通过伪造数据中的时间信息等方法,使用篡改后的数据对真实信息进行覆盖,来欺骗数据库以及数据认证。针对这一问题,本文将根据TrustZone的内置时钟,对追溯信息加盖无法篡改的时间戳,进一步确保追溯信息的可信性。
时间戳是指一个能表示一份数据在某个特定时间之前已经存在的、完整的、可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。基于TrustZone技术的可信执行环境具有自己独特的时间机制,该时钟具有唯一且连贯性。在可信执行环境中,当可信时钟源产生中断或某些受监控的系统行为发生时都将会触发安全指令,任何对时间信息的篡改、插入或删除都将被系统拒绝,以保证系统内全部数据时间的真实性以及时序单一性,因此即使攻击者侵入可信执行环境或破解了密钥对,也无法对已经加盖时间戳的追溯数据进行篡改。本文将使用绝对时间戳,以便用户以及监管部门在服务器端的食品安全追溯系统中通过时间信息对系统中的数据进行检索。
2.3.3加密机制的实现
在OP-TEE中进行TA程序的编写,实现追溯信息加密。
(1) 在TA中使用Privkey Generator生成密钥对,并将私钥永久存储在TA中。
(2) 创建CA-TA通话,将追溯信息传入TA端,并使用command ID调用TA端的加密程序。
(3) 应用TrustZone技术中可信执行环境时间不可篡改这一特点,为追溯信息加盖时间戳。
(4) 加盖时间戳的追溯信息将在内存中暂时存储,每当数据累计至256 KB时将组成一个数据块。
(5) 使用优化后的加密算法对追溯信息进行加密。
(6) 将原始追溯信息、时间戳、密文组成新的追溯信息,并传回CA端进行存储。
(7) 将公钥存入数据库或区块链的智能合约中,在数据传入服务器前进行验证。
在嵌入式环境下,开发难度较高,因此需要选择安全性高且更加成熟的非对称加密算法,便于根据具体的应用需求做进一步优化。另一方面,嵌入式环境下硬件水平较低,而且由于非对称加密算法较为复杂,使得其运算速度较慢,系统负载过大,资源消耗问题比较严重。因此需要针运算效率、密文大小、资源需求等方面对算法进行优化。通过对比表1中RSA、DSA、ECC、RABIN四种算法,根据成熟度、安全性、运算速度、资源消耗等特点,最终选择RSA算法。
针对嵌入式环境下运算能力较差,食品安全追溯信息量较大,追溯平台负载较重等问题,本文中将引入Rabin算法、霍夫曼编码和随机分量s,对RSA算法进行优化。
3.2.1霍夫曼编码
为了提高加密速度,可以使用霍夫曼编码[19]来对数据进行压缩,它是一种用于无损数据压缩的算法,可以从压缩数据中精确恢复原始数据。该算法用于压缩数据(符号或字母)以生成可变长度代码而不是每个符号的固定长度代码。该算法通过对内容中符号或字母的统计分析以构造频率表,并通过频率表来构建霍夫曼树,用于每个符号分配其适当的代码长度。在数据文件上应用霍夫曼编码将生成两个文件:二进制文件(B)和头文件(H)。二进制文件取决于用于检索原始数据的头文件,因此,如果头文件丢失,则无法检索真实数据。头文件包含原始数据文件的所有符号或其相应的ASCII代码。头文件包含为其出现分配的唯一符号,其中没有符号重复两次,二进制文件包含每个符号的代码。例如原文:Beijing Technology and Business University,e表示为110,t表示为010等。
头文件为:
u00bdu00b4u00d1u00e7u00efu00e0u00e2u00b2u00a9u0082u00d1u0088u0094u00d3u0091u00c48
二进制文件为:
0000100110111101101101000000001011010001111
00111000010111110111111100000111000101011001010
10100100000110100000101101000110001000100101001
101001110010001110001000101110000111000
要解压缩消息,通过头文件来构建霍夫曼树,从树的根开始逐位读取二进制文件,找到0位时,向左移动到树上;找到1位时,在树上向右移动,直到找到叶节点,然后对所有剩余位重复该过程,直到检索到所有消息字符。
3.2.2随机分量s
通过引入随机分量s,每次加密消息时都会获得不同的密文,因此攻击者很难从关于原始消息的密文中进行破解。本文使用字母s来表示随机分量,其中s是通过使用加密安全伪随机数生成器生成的随机数,并且对于每个消息(随机数)使用一次。本文使用s来隐藏头文件的密文并使二进制文件失效。在s小于密文的情况下,多s进行多次叠加来作为密文的长度,如果s大于密文,则把s的个位数除去后为密文的相同长度,在使二进制文件失效时应用相同的方法。为了使加密过程在语义上安全,本文选择随机分量s并计算新的密文C′=C×s。同样,为了使二进制文件B在语义上安全,使用s对B进行盲化,例如B′=B×s。另一方面,随机分量s应该受到保护,本次本文将使用Rabin加密算法对s进行加密。
3.2.3优化实现
要解压缩消息,通过头文件来构建霍夫曼树,从树的根开始逐位读取二进制文件,找到0位时,向左移动到树上;找到1位时,在树上向右移动,直到找到叶节点,然后对所有剩余位重复该过程,直到检索到所有消息字符。
优化后的RSA算法依靠霍夫曼编码来增强安全性并加速加密和解密过程。为了增强执行速度,加密算法仅加密头文件并使二进制文件保密,而不是加密整个消息。通过s参数对二进制文件进行盲化使得加密消息在语义上是安全的,具体优化算法如下:
步骤1在接收端生成公钥/私钥对。
1) 计算RSA算法公钥/私钥对。
2) 计算Rabin算法公钥/私钥对。
步骤2发送端的加密准备。
1) 为每一条加密信息生成随机分量s。
2) 使用霍夫曼代码压缩信息。输出:二进制文件(B)和头文件(H)。
步骤3发送端加密过程。
1) 使用RSA算法对H进行加密,任取大整数N和e,加密结果为:C=HemodN,0 2) 使用s对C进行盲化,生成C′=C×s。 3) 使用s对B进行盲化,生成B′=B×s。 4) 使用Rabin算法对s进行加密,得到s′=s2modN。 步骤4接收端的解密过程。 1) 使用Rabin算法对s解密。 2) 计算C=C′×s。 3) 计算B′=B×s。 4) 使用RSA算法对C进行解密,任取大整数d,生成H=CdmodN。 步骤5在接收端解压缩信息。 1) 将H、B传入霍夫曼代码获得解密结果。 原型系统试点部署在北京市农业农村局与北京市畜牧总站合作建立的智能禽舍中,位于北京市顺义区。禽舍环境监测系统将数据监测节点分为前部节点、中部节点和尾部节点三个区域,每个区域独立采集、传输数据,实现了不同分区不同情况的差异化处理,可以针对性地对禽舍中环境信息进行监控,为后续的追溯提供数据支持。 实验环境主要分为硬件与软件两部分。 (1) 硬件部分:系统硬件部分采用基于ARM的树莓派3B作为主控板,数据采集端使用XL51智能温湿度传感器,该设备支持温湿度、TVOC、大气压力,以及二氧化碳、氨气、硫化氢、甲醛等气体浓度的数据采集。 (2) 系统部分:树莓派使用Linux操作系统, 基于此环境搭建Python语言、C语言、OP-TEE的软件环境,数据采集中使用Python语言操作GPIO。使用OP-TEE作为trust OS,C语言作为开发语言,进行CA-TA程序的开发,并部署在树莓派3B上,安全操作系统以及开发环境均遵循GP TEE系统开发架构规范,追溯系统使用基于Truffle框架和Ganache可视化应用的北京市畜牧总站智能鸡舍监控管理平台。 实验数据通过在四个禽舍部署的各不同分区的传感器设备采集,传感器均安置在鸡舍中的百叶窗中,实验环境如图4所示。每个鸡舍安装6个传感器,传感器数据采集频率为每30 s一次,每个鸡舍单日产生约1.7万条数据样本。实验数据通过CA端传入TA端,加盖时间戳后进行加密操作,随后由实验数据、时间戳(Time)、密文(Ciphertext)组成追溯信息,由TA端传回CA端并进行存储。嵌入式环境最终输出的追溯信息如表3所示。 图4 实验环境 表3 数据加密结果 加密后的数据将上传至基于联盟区块链的北京市畜牧总站智能鸡舍监控管理平台,通过智能合约中的公钥对密文进行检验,由于数据量巨大,系统将对一小时内采集到的验证无误的数据取平均值上传至联盟区块链追溯系统供应用查询使用,通过Ganache可视化应用观察到追溯数据成功上传到系统后,区块数正常增加且交易记录增长。在该系统中输入追溯目标的追溯ID,即可对数据进行查询,如图5所示。 图5 追溯数据查询结果 在测试中,本文将分别使用RSA算法以及优化后的RSA算法对10个不同尺寸的文件进行加密,每个文件加密三次,并对单位时间运算次数取均值,测试文件大小从1 MB到10 MB。图6显示了RSA算法优化前后对不同尺寸的文件的加密过程。此外,由图7可以看出,对于相同的明文,优化后的RSA算法所生成的密文大小明显小于优化前。 图6 运算效率对比 图7 密文大小对比 由原型系统的试点效果可知,TrustZone架构下基于优化RSA的食品追溯可信采集方法可以有效地确保智能禽舍所采集的追溯信息在上传服务器前的信息安全,实现追溯数据可信采集同时在嵌入式环境下也可以高效工作,并部署在更多的工作环境中。加密后的追溯数据可以通过北京市畜牧总站智能鸡舍监控管理平台进行数据验证,从而确保追溯数据从采集端到存储端的全过程数据安全。在优化后的算法中使用随机分量s可以保证加密过程中的语义安全,每次加密消息时都会获得不同的密文,同时二进制文件也通过随机分量s进行了盲化,攻击者无法逆向破解密钥对于密文,进一步提了RSA算法的安全性。图6显示加密速度与两个密码系统加密的文件大小成正比,但优化后的RSA算法明显更快,较优化前平均提高了94.9%,这是由于优化后的RSA算法并不加密全部信息,而是通过霍夫曼编码对数据进行压缩后再运行加密算法,这在确保信息安全的同时提高了运算速度。另一方面,在追溯过程中信息量极大,由图7可以看出改进后的RSA算法生成的密文的大小较优化前平均减少55.5%,这将有利于减轻本地以及服务器端的存储压力,降低追溯成本。 本文提出并实现一种TrustZone架构下基于优化RSA的食品追溯可信采集方法,对TrustZone技术进行研究并首次将其应用在食品安全追溯领域,有效地解决了追溯数据在上传至服务器端之前的数据安全隐患,填补了当前的行业空白。本文根据嵌入式环境以及应用需求设计了基于优化RSA算法的追溯信息加密机制,在可信执行环境中对追溯数据进行加盖时间戳和加密保护,加密后的追溯数据可以在服务器端通过公钥进行验证。通过原型系统试点测试以及分析可以看出,本文方法可以高效、安全地对食品追溯数据进行加密,防止攻击者对数据进行篡改,并适合应用在数据量大且硬件计算能力有限的嵌入式环境中,同时该方法可以与区块链等新兴技术相结合,实现食品生产全流程数据的可信追溯,未来可根据不同种类食品的生产业务逻辑,进一步丰富食品的可信追溯种类。4 方法的实现与分析
4.1 原型系统部署
4.2 数据采集与加密
4.3 数据追溯
4.4 RSA算法优化性能测试
4.5 结果分析
5 结 语