CN115664711A - 数据传送的方法、装置和电子设备 - Google Patents
数据传送的方法、装置和电子设备 Download PDFInfo
- Publication number
- CN115664711A CN115664711A CN202211141834.5A CN202211141834A CN115664711A CN 115664711 A CN115664711 A CN 115664711A CN 202211141834 A CN202211141834 A CN 202211141834A CN 115664711 A CN115664711 A CN 115664711A
- Authority
- CN
- China
- Prior art keywords
- data
- operating system
- cache region
- shared memory
- entry
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000005540 biological transmission Effects 0.000 title claims abstract description 14
- 238000012546 transfer Methods 0.000 claims description 25
- 238000012545 processing Methods 0.000 claims description 14
- 230000008569 process Effects 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000013507 mapping Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
- G06F21/126—Interacting with the operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
本公开关于一种数据传送的方法、装置和电子设备,所述数据传送的方法包括:响应客户端应用程序CA调用可信任应用程序TA入口向TA传送数据,安全操作系统向所述数据分配可信执行环境TEE中的缓存区域;安全操作系统将所述数据从预先分配的共享内存拷贝到所述缓存区域;安全操作系统运行TA入口以使得TA从所述缓存区域获取所述数据。
Description
技术领域
本公开涉及数据安全领域,尤其涉及一种安全传送数据的方法、装置和电子设备。
背景技术
ARM TrustZone技术将程序执行环境划分为可信执行环境(Trusted ExecutionEnvironment,TEE)与非可信执行环境(Rich Execution Environment,REE),并从硬件上确保了非可信执行环境无法访问到可信执行环境的资源,从而保护了可信执行环境中的代码与数据不被恶意篡改和窃取。在REE中运行的应用程序可被称为客户端应用程序(ClientApplication,CA),在TEE中运行的应用程序可被称为安全应用程序(Trust Application,TA)。如图1中所示,为了让CA和TA可以彼此传送数据,CA在调用TA之前会在REE中分配一块内存区域作为共享内存分享给TA使用。此外,在CA调用TA入口时,CA通过调用参数(比如GlobalPlatform(GP)规范定义的Param和ParamType)将数据在共享内存中的地址、大小以及参数类型传给TA,然后TA根据从CA接收到的这些信息访问共享内存,读取和使用共享内存中的数据。
虽然以上的共享内存机制避免了数据在CA与TA之间的拷贝,有利于提高性能,但是这也引入了安全隐患。具体地,正因为共享内存的共享特性,在TA读取共享内存的时候,恶意的CA可以同时篡改共享内存(例如通过多核处理器多线程并发)。此外,如果攻击者通过精心设计让篡改发生在TA检查数据的过程和使用数据的过程之间,就可以绕过TA的数据检查,将恶意数据传入TA内部,从而达到控制TA运行甚至操控整个TEE的目的。这种攻击称为双取回(Double Fetch)攻击(也被称为TOCTOU、Time-of-Check或Time-of-Use)。
鉴于此,从REE中的CA向TEE中的TA传送数据时,需要考虑如何有效地使得所有TA免于Double Fetch攻击。
发明内容
本公开提供一种数据传送的方法、装置和电子设备,以至少解决相关技术中的以上多个问题。
根据本公开实施例的第一方面,提供了一种数据传送的方法,包括:响应客户端应用程序CA调用可信任应用程序TA入口向TA传送数据,安全操作系统向所述数据分配可信执行环境TEE中的缓存区域;安全操作系统将所述数据从预先分配的共享内存拷贝到所述缓存区域;安全操作系统运行TA入口以使得TA从所述缓存区域获取所述数据。
可选地,所述CA调用TA入口的调用参数携带所述数据在所述共享内存的地址和所述数据的大小;所述安全操作系统运行TA入口的步骤包括:安全操作系统将所述调用参数携带的所述共享内存的地址更新为所述缓存区域的地址;安全操作系统运行TA入口,所述TA入口的调用参数携带所述数据在所述缓存区域的地址和所述数据的大小,以使得所述TA从所述缓存区域获取所述数据。
可选地,所述安全操作系统向所述数据分配可信执行环境TEE中的缓存区域的步骤还包括:安全操作系统确定所述数据的大小是否超过预设值;若所述数据的大小超过所述预设值,则向所述CA返回错误;若所述数据的大小未超过所述预设值,则分配所述缓存区域。
可选地,所述方法还包括:确定所述CA调用TA入口的调用参数是否携带有指示信息,所述指示信息用于指示所述TA从所述共享内存获取所述数据;若携带有所述指示信息,则安全操作系统运行TA入口以使得TA从所述共享内存获取所述数据;若没有携带所述指示信息,则安全操作系统向所述数据分配所述缓存区域。
可选地,所述指示信息被携带在调用参数的参数类型ParamType中,所述指示信息还被所述TA用于进行混淆攻击检验。
根据本公开实施例的第二方面,提供了一种数据传送的装置,包括:缓存管理单元,被配置为:响应于客户端应用程序CA调用可信任应用程序TA向TA传送数据,通过安全操作系统向所述数据分配可信执行环境TEE中的缓存区域,并将所述数据从预先分配的共享内存拷贝到所述缓存区域;以及处理单元,被配置为通过安全操作系统运行TA入口以使得TA从所述缓存区域获取所述数据。
可选地,所述CA调用TA入口的调用参数携带所述数据在所述共享内存的地址和所述数据的大小;处理单元被配置为通过以下操作运行TA入口:通过安全操作系统将所述调用参数携带的所述共享内存的地址更新为所述缓存区域的地址;通过安全操作系统运行TA入口,所述TA入口的调用参数携带所述数据在所述缓存区域的地址和所述数据的大小,以使得所述TA从所述缓存区域获取所述数据。
可选地,缓存管理单元通过以下操作向所述数据分配可信执行环境TEE中的缓存区域:通过安全操作系统确定所述数据的大小是否超过预设值;若所述数据的大小超过所述预设值,则向所述CA返回错误;若所述数据的大小未超过所述预设值,则分配所述缓存区域。
可选地,处理单元还被配置为:确定所述CA调用TA入口的调用参数是否携带有指示信息,所述指示信息用于指示所述TA从所述共享内存获取所述数据;若携带有所述指示信息,通过安全操作系统运行TA入口以使得TA从所述共享内存获取所述数据;若没有携带所述指示信息,通过安全操作系统向所述数据分配可所述缓存区域。
可选地,所述指示信息被携带在调用参数的参数类型ParamType中,所述指示信息还被所述TA用于进行混淆攻击检验。
根据本公开实施例的第三方面,提供了一种电子设备,包括:至少一个处理器;至少一个存储计算机可执行指令的存储器,其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行如上所述的数据传送的方法。
根据本公开实施例的第四方面,提供了一种存储指令的计算机可读存储介质,当所述指令被至少一个处理器运行时,促使所述至少一个处理器执行如上所述的数据传送的方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
本申请通过由安全操作系统分配缓存区域(即影子缓存)并在进入TA之前将CA要传送给TA的数据从共享内存拷贝到该缓存区域,如此一来,TA在访问共享内存时,访问的实际是其对应的缓存区域。这样TA检查的数据和最终获取的数据(Double Fetch),都是来自于拷贝到缓存区域的数据,缓存区域的数据位于TEE中,是可信任的环境,不会出现如现有技术中TA从共享内存中的双取回的数据不一致而被攻击的问题,因此攻击者即使在REE中篡改了共享内存中的数据,TA在检查阶段就可以识别数据被篡改,使得TA免受攻击。
本申请把将共享内存的数据提前拷贝到TEE区域的工作交给安全操作系统而不是每个TA来实现,让安全操作系统来构建屏障以保护上层运行的各种TA,进而可以有效避免TA中的Double Fetch漏洞被攻克。
此外,本申请在提供通过缓存区域(即影子缓存)实现数据传送的安全共享内存机制的同时,还兼容了现有的零拷贝共享内存机制,兼具安全与性能。本申请默认对所有CA和TA采用安全共享内存机制(即在TEE中分配缓存区域缓存来自于共享内存的数据),当需要使用零拷贝共享内存机制时,必须对程序做额外的设置(例如,可以对ParamType标记ZEROCOPY掩码)。因此,本申请提出的技术方案可方便快捷的应用到现实产品中,特别是对符合GP规范的应用程序非常友好,即,对于常规TA业务,无需修改任何代码,即可获得安全保护;对于有高性能要求的大数据量业务(即需要传送大量数据并对处理时延敏感的业务,例如DRM业务中解密数字媒体流),只需将对应CA和TA中的共享内存类型做特殊标记(即增加ZEROCOPY掩码),使其沿用零拷贝方式,即直接映射给TA。在这种业务场景中,传输给TA的数据通常仅用来做计算,数据的取值不会左右TA的流程,即使遭到篡改也不会构成威胁。虽然攻击者可能会刻意设置该特殊标记企图绕开上述缓存区域(即影子缓存),但本申请提出的以上方法可确保这种攻击不会成功。
此外,本申请提供的以上技术方案不会引入新的安全威胁。即使攻击者企图频繁调用TA入口让安全操作系统大量分配缓存区域(即影子缓存),以耗尽安全操作系统的内存空间,但是鉴于GP规范规定(详见TEE Internal Core API Specification Version1.1.2.50chapter 2.1.3)一个TA的入口必须执行完成才可以执行下一个,因此在进入一个TA入口时,先前分配的影子缓存已经释放,不存在资源耗尽的问题。同时,安全操作系统也会检查调用的TA入口携带的共享内存的数据的大小,若数据的大小超过预设值,安全操作系统会向CA返回错误,以此来避免可能的攻击。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的示例实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是示出现有技术的共享内存机制的示图;
图2是示出根据本公开示例性实施例的数据传送的方法的流程图;
图3是示出根据本公开示例性实施例的利用缓存区域实现CA向TA传送数据的过程的流程图;
图4是示出根据本公开示例性实施例的直接利用共享内存实现CA向TA传送数据的过程的流程图;
图5是示出根据本公开的示例性实施例的数据传送的装置的框图;
图6是示出根据本公开示例性实施例的电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在此需要说明的是,在本公开中出现的“若干项之中的至少一项”均表示包含“该若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若干项的全体”这三类并列的情况。例如“包括A和B之中的至少一个”即包括如下三种并列的情况:(1)包括A;(2)包括B;(3)包括A和B。又例如“执行步骤一和步骤二之中的至少一个”,即表示如下三种并列的情况:(1)执行步骤一;(2)执行步骤二;(3)执行步骤一和步骤二。
图2是根据本公开示例性实施例的数据传送的方法的流程图。
参照图2,在步骤S210,响应于客户端应用程序CA调用可信任应用程序TA入口向TA传送数据,安全操作系统向所述数据分配可信执行环境TEE中的缓存区域。
在本公开的示例性实施例中,CA在向TA传送数据之前,会在REE中针对该TA分配一块内存区域作为共享内存,以用于向TA传送数据。在CA调用TA入口时,CA将其要传送给TA的数据传送到该共享内存中。作为一种示例,安全操作系统可以确定CA调用TA入口的调用参数中是否携带了用于指示TA从共享内存获取数据的指示信息,如果携带了该指示信息,则根据该指示信息运行TA入口使得TA直接从该共享内存中获取该数据,如果CA调用TA入口的调用参数中没有携带上述指示信息,则安全操作系统会如步骤S210中向所述数据分配可信执行环境TEE中的缓存区域,使得TA可利用该缓存区域获得所述数据。
具体地讲,CA调用TA入口的调用参数可以携带所述数据在共享内存的地址和所述数据的大小,此外,调用参数还可携带参数类型,即,CA将数据在共享内存的物理地址paddr和数据的大小size存储在参数Param中,并对参数类型ParamType进行配置,然后利用参数Param和参数类型ParamType调用TA入口,也就是,调用参数可包括参数Param和参数类型ParamType。其中,参数类型ParamType可以是GP规范为CA调用TA所定义的一系列参数,示例地包括输入Input、输出Output、参考Reference、值Value等。此外,本申请提出了一种新的共享内存类型,新的共享内存类型在ParamType中增加了指示信息,该指示信息可与GP规范已定义的内存共享类型叠加组合,可以用于进行混淆攻击校验,同时也可以用于指示TA从共享内存获取数据。
例如,如果需要直接利用共享内存向TA传送数据,则CA可根据以下等式(1)通过按位或运算为ParamType标记指示信息,可以称之为ZEROCOPY掩码,即,上述指示信息被携带在调用参数的参数类型ParamType中:
ParamType=INPUT_SHM|ZEROCOPY (1)
INPUT_SHM对应于GP规范中的TEEC_MEMREF_PARTIAL_INPUT。
另外,如果需要利用安全操作系统分配的缓存区域向TA传送数据,则CA可按照以下等式(2)向ParamType赋值:
ParamType=INPUT_SHM (2)
此时,ParamType不携带上述指示信息。
也就是说,在步骤S210之前,所述数据传送的方法还可以包括:确定CA调用TA入口的调用参数是否携带有上述的用于指示TA从共享内存获取数据的指示信息。具体地讲,安全操作系统可根据参数类型ParamType来确定调用参数是否携带有上述指示信息(即参数类型ParamType是否携带有上述指示信息),即,安全操作系统可通过对参数类型ParamType与ZEROCOPY进行按位与运算来判断ParamType中是否含有ZEROCOPY掩码,即确定是否携带有上述指示信息。详细地,如果ParamType&ZEROCOPY等于ZEROCOPY,则表明ParamType中含有ZEROCOPY掩码,即携带有上述指示信息,否则表明ParamType中不含有ZEROCOPY掩码,即不携带上述指示信息。
若CA调用TA入口的调用参数没有携带上述指示信息,则安全操作系统可如步骤S210所述分配TEE中的缓存区域。
此后,在步骤S220,安全操作系统将数据从预先分配的共享内存拷贝到所述缓存区域,并在步骤S230,安全操作系统运行TA入口以使得TA从所述缓存区域获取所述数据。下面将参照图3所示的实施例对步骤S210至S230进行详细描述。
图3是示出根据本公开示例性实施例的利用缓存区域实现CA向TA传送数据的过程的流程图。
在图3的步骤1中,CA利用以上的等式(2)将ParamType设置为INPU_SHM,而不是利用等式(1)对ParamType进行设置,也就是说,ParamType不携带上述指示信息。由于图3的步骤1中的其他操作已在以上参照图2描述进行了描述,因此这里不对此进行赘述。
对于步骤S210,安全操作系统向数据分配TEE中的缓存区域的步骤可包括:安全操作系统确定所述数据的大小是否超过预设值;若所述数据的大小超过所述预设值,则向CA返回错误;若所述数据的大小未超过所述预设值,则分配所述缓存区域。
具体地讲,如图3中所示,在步骤2,安全操作系统从参数Param中获取数据的大小Param.size,然后确定Param.size是否超过了预设值SHADOW_SIZE_MAX,其中,该预设值SHADOW_SIZE_MAX可由例如安全操作系统或开发人员配置。当所述数据的大小Param.size超过预设值SHADOW_SIZE_MAX时,安全操作系统直接向CA返回错误,结束当前流程。当所述数据的大小Param.size未超过预设值SHADOW_SIZE_MAX时,在步骤3,安全操作系统根据所述数据的大小Param.size分配缓存区域,该缓存区域可被称为影子缓存,其中,分配的缓存区域的大小可等于所述数据的大小Param.size。
在分配了缓存区域以后,安全操作系统将所述数据从共享内存拷贝到缓存区域。在该过程中,首先需要将共享内存的地址映射到安全操作系统的第一虚拟地址空间,然后将所述数据从共享内存拷贝到所述缓存区域。
具体地讲,由于安全操作系统从CA获得的所述数据在共享内存的地址是物理地址paddr,而安全操作系统运行于虚拟地址空间,因此为了从共享内存中读取数据,安全操作系统需要将共享内存的物理地址映射到该虚拟地址空间,因此在图3的步骤4,安全操作系统将共享内存的地址映射到安全操作系统的第一虚拟地址空间,以得到所述数据在所述第一虚拟地址空间的第一虚拟地址。然后,在步骤5,安全操作系统根据得到的所述数据在所述第一虚拟地址空间的第一虚拟地址从所述共享内存读取数据,并将读取的数据拷贝到所述缓存区域。虽然在安全操作系统中增加缓存区域(即影子缓存)的分配与映射以及数据的拷贝操作导致了在CA调用TA入口时产生一些额外开销,但这些额外开销的主要因素通常不会是内存分配和映射,而是数据拷贝,本申请通过系统可配置的参数SHADOW_SIZE_MAX限制了从共享内存到缓存区域的数据拷贝的规模,这可使引入的开销被控制在可接受的程度内,相较于由此带来的安全收益是划算的。
在将数据从共享内存拷贝到缓存区域以后,安全操作系统将运行TA入口,具体地讲,安全操作系统运行TA入口的步骤可包括:安全操作系统将所述调用参数携带的所述共享内存的地址更新为所述缓存区域的地址;安全操作系统运行TA入口,所述TA入口的调用参数携带所述数据在所述缓存区域的地址和所述数据的大小,以使得所述TA从所述缓存区域获取所述数据。
具体地讲,虽然TA运行在安全操作系统所在的可信执行环境下,但是该TA与安全操作系统使用不同的虚拟地址空间,因此,需要对这两者所使用的存储空间进行映射,如图3中所示,在步骤6,安全操作系统将所述缓存区域映射到TA所使用的第二虚拟地址空间,以得到所述缓存区域在所述第二虚拟地址空间的虚拟地址,进而得到所述数据在所述第二虚拟地址空间的虚拟地址。然后在步骤7,安全操作系统将所述调用参数携带的所述数据在共享内存的地址Param.paddr更新为所述数据在所述第二虚拟地址空间的虚拟地址,此后,在步骤8,安全操作系统利用更新后的参数Param以及所述参数类型ParamType来运行TA入口,即将Param和ParamType传入TA。此后,如图3中所示,在将TA入口的参数Param以及所述参数类型ParamType传入TA入口以后,在步骤9,由TA对所述参数类型ParamType进行例行校验,如果发现ParamType异常,则终止当前流程,向CA返回错误。如果发现ParamType正常,则在步骤10,由TA根据更新后的参数Param从所述缓存区域获取数据,即,根据更新后的Param.paddr确定需要读取数据的存储空间,然后从该空间读取数据。
所述数据传送的方法还包括:当TA入口的运行结束时,由安全操作系统解除所述缓存区域到所述第二虚拟地址空间的映射,并释放所述缓存区域。
具体地讲,如图3中所示,在步骤11,TA入口程序的运行结束,并返回安全操作系统。然后在步骤12,由安全操作系统解除所述缓存区域到所述第二虚拟地址空间的映射,并释放所述缓存区域,然后在步骤13返回CA。
在以上过程中,本申请通过由安全操作系统分配缓存区域(即影子缓存)并在进入TA之前将CA要传送给TA的数据从共享内存拷贝到该缓存区域,如此一来,TA在访问共享内存时,访问的实际是其对应的缓存区域,此时攻击者在REE中篡改共享内存中的数据,这样TA检查的数据和最终获取的数据(Double Fetch),都是来自于拷贝到缓存区域的数据,缓存区域的数据位于TEE中,是可信任的环境,不会出现如现有技术中TA从共享内存中的双取回的数据不一致而被攻击的问题,因此攻击者即使在REE中篡改了共享内存中的数据,TA在检查阶段就可以识别数据被篡改,使得TA免受攻击。本申请把将共享内存的数据提前拷贝到TEE区域的工作交给安全操作系统而不是TA来实现,让安全操作系统来构建屏障以保护上层运行的各种TA,进而可以有效避免TA中的Double Fetch漏洞被攻克。
此外,本申请在提供以上安全共享内存机制的同时,还兼容了现有的零拷贝共享内存机制,兼具安全与性能。下面对此进行详细描述。
也就是说,在步骤S210之前,若确定CA调用TA入口的调用参数携带了上述用于指示TA从共享内存获取数据的指示信息,则安全操作系统运行TA入口以使得TA从共享内存获取所述数据。下面参照图4对此进行详细描述。
图4是示出根据本公开示例性实施例的直接利用共享内存实现CA向TA传送数据的过程的流程图。
在图4的步骤1、步骤2和步骤4与以上参照图3所描述的步骤1中的对应操作相同,因此这里不进行赘述。在图4的步骤3,CA利用以上的等式(1)将ParamType设置为INPU_SHM|ZEROCOPY,而不是利用等式(2)对ParamType进行设置。在步骤5,将所述共享内存的地址映射到TA所使用的第二虚拟地址空间,以得到所述数据在所述第二虚拟地址空间的虚拟地址,并将参数Param中的所述数据在共享内存的地址paddr更新为所述数据在第二虚拟地址空间的所述虚拟地址。然后在步骤6,利用更新后的参数Param以及所述参数类型ParamType来运行TA入口,即将更新后的Param和ParamType传入TA。
此后,在步骤7,由TA对参数类型ParamType进行校验,即,在原有的ParamType校验的基础上,增加ZEROCOPY掩码的校验,即进行混淆攻击校验,如果校验失败,则TA终止流程并返回CA,从而防止混淆攻击。如果校验成功,则在步骤8,TA根据所述数据在第二虚拟地址空间的所述虚拟地址从所述共享内存获取所述数据。然后在步骤9,TA入口的运行结束并返回安全操作系统,并在步骤10返回CA。
本申请提出的以上方案可以用于需要向TA传送大量数据并对TA处理时延敏感的业务(例如DRM业务中解密数字媒体流)的共享内存做特殊标记,使其沿用零拷贝方式,即直接映射给TA。在这种业务场景中,传输给TA的数据通常仅用来做计算,数据的取值不会左右TA的流程,即使遭到篡改也不会构成威胁。虽然攻击者可能会刻意设置该特殊标记企图绕开上述缓存区域(即影子缓存),但本申请提供出以上方法可确保了这种攻击不会成功。
图5是示出根据本公开的示例性实施例的数据传送的装置500的框图。
参照图5,装置500可包括缓存管理单元510和处理单元520。具体而言,缓存管理单元510可被配置为响应于CA调用TA入口向TA传送数据,通过安全操作系统向所述数据分配TEE中的缓存区域,并将所述数据从预先分配的共享内存拷贝到所述缓存区域,处理单元520通过安全操作系统运行TA入口以使得TA从所述缓存区域获取所述数据。
所述CA调用TA入口的调用参数携带所述数据在所述共享内存的地址和所述数据的大小。处理单元520可被配置为通过以下操作运行TA入口:通过安全操作系统将所述调用参数携带的所述共享内存的地址更新为所述缓存区域的地址;通过安全操作系统运行TA入口,所述TA入口的调用参数携带所述数据在所述缓存区域的地址和所述数据的大小,以使得所述TA从所述缓存区域获取所述数据。
缓存管理单元510可通过以下操作向所述数据分配TEE中的缓存区域:通过安全操作系统确定所述数据的大小是否超过预设值;若所述数据的大小超过所述预设值,则向所述CA返回错误;若所述数据的大小未超过所述预设值,则分配所述缓存区域。
处理单元520还被配置为:确定所述CA调用TA入口的调用参数是否携带有指示信息,所述指示信息用于指示所述TA从所述共享内存获取所述数据;若携带有所述指示信息,通过安全操作系统运行TA入口以使得TA从所述共享内存获取所述数据;若没有携带所述指示信息,通过安全操作系统向所述数据分配可所述缓存区域。
所述指示信息被携带在调用参数的参数类型ParamType中,所述指示信息还被所述TA用于进行混淆攻击检验。
由于图2所示的数据传送的方法可由图5所示的数据传送的装置500来执行,因此,关于图5中的各单元所执行的操作中涉及的任何相关细节均可参见上文的相应描述,这里都不再赘述。
图6是根据本公开示例性实施例的电子设备600的框图。
参照图6,电子设备600可包括至少一个存储器610和至少一个处理器620,所述至少一个存储器610存储计算机可执行指令,计算机可执行指令在被至少一个处理器620执行时,促使至少一个处理器620执行根据本公开实施例的数据传送的方法。
处理器可以包括一个或多个处理器。此时,一个或多个处理器可以是通用处理器,例如中央处理器(CPU)、应用处理器(AP)等,仅用于图形的处理器例如图形处理器(GPU)、视觉处理器(VPU)和/或AI专用处理器。
作为示例,电子设备可以是PC计算机、平板装置、个人数字助理、智能手机、或其他能够执行上述指令集合的装置。这里,电子设备并非必须是单个的电子设备,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。电子设备还可以是集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的便携式电子设备。
在电子设备中,处理器可包括中央处理器(CPU)、图形处理器(GPU)、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例而非限制,处理器还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。
处理器可运行存储在存储器中的指令或代码,其中,存储器还可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,网络接口装置可采用任何已知的传输协议。
存储器可与处理器集成为一体,例如,将RAM或闪存布置在集成电路微处理器等之内。此外,存储器可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储器和处理器可在操作上进行耦合,或者可例如通过I/O端口、网络连接等互相通信,使得处理器能够读取存储在存储器中的文件。
此外,电子设备还可包括视频显示器(诸如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。电子设备的所有组件可经由总线和/或网络而彼此连接。
根据本公开的实施例,还可提供一种存储指令的计算机可读存储介质,其中,当所述指令由至少一个处理器执行时,促使所述至少一个处理器执行根据本公开示例性实施例的数据传送的方法。这里的计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态硬盘(SSD)、卡式存储器(诸如,多媒体卡、安全数字(SD)卡或极速数字(XD)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的指令或计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求限定。
Claims (10)
1.一种数据传送的方法,包括:
响应于客户端应用程序CA调用可信任应用程序TA入口向TA传送数据,安全操作系统向所述数据分配可信执行环境TEE中的缓存区域;
安全操作系统将所述数据从预先分配的共享内存拷贝到所述缓存区域;
安全操作系统运行TA入口以使得TA从所述缓存区域获取所述数据。
2.如权利要求1所述的数据传送的方法,其中,所述CA调用TA入口的调用参数携带所述数据在所述共享内存的地址和所述数据的大小;
所述安全操作系统运行TA入口的步骤包括:
安全操作系统将所述调用参数携带的所述共享内存的地址更新为所述缓存区域的地址;
安全操作系统运行TA入口,所述TA入口的调用参数携带所述数据在所述缓存区域的地址和所述数据的大小,以使得所述TA从所述缓存区域获取所述数据。
3.如权利要求2所述的数据传送的方法,其中,所述安全操作系统向所述数据分配可信执行环境TEE中的缓存区域的步骤还包括:
安全操作系统确定所述数据的大小是否超过预设值;
若所述数据的大小超过所述预设值,则向所述CA返回错误;
若所述数据的大小未超过所述预设值,则分配所述缓存区域。
4.如权利要求2所述的数据传送的方法,其中,所述方法还包括:
确定所述CA调用TA入口的调用参数是否携带有指示信息,所述指示信息用于指示所述TA从所述共享内存获取所述数据;
若携带有所述指示信息,则安全操作系统运行TA入口以使得TA从所述共享内存获取所述数据;
若没有携带所述指示信息,则安全操作系统向所述数据分配所述缓存区域。
5.如权利要求4所述的数据传送的方法,其中,所述指示信息被携带在调用参数的参数类型ParamType中,所述指示信息还被所述TA用于进行混淆攻击检验。
6.一种数据传送的装置,包括:
缓存管理单元,被配置为:响应于客户端应用程序CA调用可信任应用程序TA入口向TA传送数据,通过安全操作系统向所述数据分配可信执行环境TEE中的缓存区域,并将所述数据从预先分配的共享内存拷贝到所述缓存区域;以及
处理单元,被配置为通过安全操作系统运行TA入口以使得TA从所述缓存区域获取所述数据。
7.如权利要求6所述的数据传送的装置,其中,所述CA调用TA入口的调用参数携带所述数据在所述共享内存的地址和所述数据的大小;
处理单元被配置为通过以下操作运行TA入口:
通过安全操作系统将所述调用参数携带的所述共享内存的地址更新为所述缓存区域的地址;
通过安全操作系统运行TA入口,所述TA入口的调用参数携带所述数据在所述缓存区域的地址和所述数据的大小,以使得所述TA从所述缓存区域获取所述数据。
8.如权利要求7所述的数据传送的装置,其中,缓存管理单元通过以下操作向所述数据分配可信执行环境TEE中的缓存区域:
通过安全操作系统确定所述数据的大小是否超过预设值;
若所述数据的大小超过所述预设值,则向所述CA返回错误;
若所述数据的大小未超过所述预设值,则分配所述缓存区域。
9.一种电子设备,包括:
至少一个处理器;
至少一个存储计算机可执行指令的存储器,
其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行如权利要求1到5中的任一权利要求所述的数据传送的方法。
10.一种存储指令的计算机可读存储介质,其中,当所述指令被至少一个处理器运行时,促使所述至少一个处理器执行如权利要求1到5中的任一权利要求所述的数据传送的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211141834.5A CN115664711A (zh) | 2022-09-20 | 2022-09-20 | 数据传送的方法、装置和电子设备 |
US18/310,366 US20240095363A1 (en) | 2022-09-20 | 2023-05-01 | Method, device, and electronic apparatus for securely passing data |
KR1020230065819A KR20240040006A (ko) | 2022-09-20 | 2023-05-22 | 데이터를 안전하게 전달하기 위한 방법, 장치, 및 전자 장치 |
EP23190148.9A EP4343593A1 (en) | 2022-09-20 | 2023-08-07 | Method, device, and electronic apparatus for securely passing data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211141834.5A CN115664711A (zh) | 2022-09-20 | 2022-09-20 | 数据传送的方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115664711A true CN115664711A (zh) | 2023-01-31 |
Family
ID=84983242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211141834.5A Pending CN115664711A (zh) | 2022-09-20 | 2022-09-20 | 数据传送的方法、装置和电子设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240095363A1 (zh) |
KR (1) | KR20240040006A (zh) |
CN (1) | CN115664711A (zh) |
-
2022
- 2022-09-20 CN CN202211141834.5A patent/CN115664711A/zh active Pending
-
2023
- 2023-05-01 US US18/310,366 patent/US20240095363A1/en active Pending
- 2023-05-22 KR KR1020230065819A patent/KR20240040006A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
US20240095363A1 (en) | 2024-03-21 |
KR20240040006A (ko) | 2024-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11321452B2 (en) | Execution environment virtualization method and apparatus and virtual execution environment access method and apparatus | |
US7836299B2 (en) | Virtualization of software configuration registers of the TPM cryptographic processor | |
EP2385479B1 (en) | Information flow tracking and protection | |
US20190034628A1 (en) | Secure memory implementation for secure execution of virtual machines | |
US10958687B2 (en) | Generating false data for suspicious users | |
US9881142B2 (en) | Method and apparatus for preventing and investigating software piracy | |
JP2022100217A (ja) | 信頼できる実行環境におけるメモリの隔離 | |
US20150341371A1 (en) | Systems and methods to provide secure storage | |
US11042636B2 (en) | Using trap storage units to detect malicious processes | |
EP3178032B1 (en) | Embedding secret data in code | |
CN107851032B (zh) | 用于在容器中执行服务的计算装置、系统及方法 | |
US9398019B2 (en) | Verifying caller authorization using secret data embedded in code | |
CN110352411B (zh) | 用于控制对安全计算资源的访问的方法和装置 | |
US20110145596A1 (en) | Secure Data Handling In A Computer System | |
CN115664711A (zh) | 数据传送的方法、装置和电子设备 | |
EP4343593A1 (en) | Method, device, and electronic apparatus for securely passing data | |
CN117321594A (zh) | 用于处理储藏事务的装置和方法 | |
US20210019264A1 (en) | Memory tagging for sensitive data redaction in memory dump | |
US20240045933A1 (en) | Method and apparatus for preventing and investigating software piracy | |
WO2019148447A1 (zh) | 数据保护方法和数据保护装置 | |
US8689329B2 (en) | Scoping scripts in a page |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |