CN110442463B - Tee系统中的数据传输方法和装置 - Google Patents

Tee系统中的数据传输方法和装置 Download PDF

Info

Publication number
CN110442463B
CN110442463B CN201910641063.8A CN201910641063A CN110442463B CN 110442463 B CN110442463 B CN 110442463B CN 201910641063 A CN201910641063 A CN 201910641063A CN 110442463 B CN110442463 B CN 110442463B
Authority
CN
China
Prior art keywords
address
data
offset address
writable
tee
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.)
Active
Application number
CN201910641063.8A
Other languages
English (en)
Other versions
CN110442463A (zh
Inventor
刘琦
赵博然
闫莺
魏长征
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201910641063.8A priority Critical patent/CN110442463B/zh
Publication of CN110442463A publication Critical patent/CN110442463A/zh
Priority to PCT/CN2020/071288 priority patent/WO2021008105A1/zh
Priority to TW109104977A priority patent/TWI718000B/zh
Priority to US16/915,585 priority patent/US11042642B2/en
Application granted granted Critical
Publication of CN110442463B publication Critical patent/CN110442463B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Storage Device Security (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本说明书实施例提供了一种TEE系统中的数据传输方法和装置,所述方法由来自TEE侧的第一线程执行,包括:获取第一数据;以所述第一数据作为输入参数调用预定函数,以切换到非TEE侧;通过读取第一地址,获取写偏移地址;通过读取第二地址,获取读偏移地址;判断所述第一数据的字节数是否小于等于可写字节数,其中,所述可写字节数基于所述写偏移地址和所述读偏移地址确定,其中,每个地址对应于一个字节;在所述第一数据的字节数小于等于可写字节数的情况中,将所述第一数据写入从所述写偏移地址开始的第三地址中;更新所述第一地址中的写偏移地址;以及返回TEE侧。

Description

TEE系统中的数据传输方法和装置
技术领域
本说明书实施例涉及TEE技术领域,更具体地,涉及TEE系统中的数据传输方法和装置。
背景技术
可信执行环境(TEE-Trusted Execution Environment)是处理器中的安全可信区域,可以保证放入其中的代码和数据的安全性、机密性和完整性。TEE提供一个隔离的执行环境,代码和数据可以在这个可信区域内运行,运行过程中可以保证不被常规操作系统干扰的计算,这样就可以达到保证代码和数据的机密性和完整性。TEE(EAL2+)与常规操作系统相比,提供更高级别的安全性;与SE(EAL5)相比,提供更多的功能,更好的性能。TEE有很多种实现方式,比如Intel的SGX,AMD的SEV,ARM的TrustZone(可信区)等。因为TEE提供的是一个隔离的执行环境,所以非TEE环境与TEE环境的通信一般都是通过特殊的指令调用,比如smc call(TrustZone)或ecall Ocall(SGX)。例如,在TEE侧通过调用Ocall函数进行日志打印的情况中,在通过调用Ocall函数引起CPU从TEE侧切换到非TEE侧,恢复寄存器等上下文信息之后,通常需要在非TEE侧等待日志打印完成之后再返回TEE侧,带来一定的性能损耗。
因此,需要一种更有效的在TEE系统中进行数据传输的方案。
发明内容
本说明书实施例旨在提供一种更有效的在TEE系统中进行数据传输的方案,以解决现有技术中的不足。
为实现上述目的,本说明书一个方面提供一种TEE系统中的数据传输方法,所述TEE系统包括TEE侧和非TEE侧,在所述非TEE侧包括共享内存,所述共享内存中包括第一地址、第二地址和连续的多个第三地址,其中,所述第一地址用于存储写偏移地址,所述写偏移地址指示所述多个第三地址中可写入的起始地址,所述第二地址用于存储读偏移地址,所述读偏移地址指示所述多个第三地址中可读取的起始地址,所述第三地址用于存储来自TEE侧的数据,所述方法由来自TEE侧的第一线程执行,包括:
获取第一数据;
以所述第一数据作为输入参数调用预定函数,以切换到非TEE侧;
通过读取第一地址,获取写偏移地址;
通过读取第二地址,获取读偏移地址;
判断所述第一数据的字节数是否小于等于可写字节数,其中,所述可写字节数基于所述写偏移地址和所述读偏移地址确定,其中,每个地址对应于一个字节;
在所述第一数据的字节数小于等于可写字节数的情况中,将所述第一数据写入从所述写偏移地址开始的第三地址中;
更新所述第一地址中的写偏移地址;以及
返回TEE侧。
在一个实施例中,所述第一数据为以下任一种数据:日志、监控数据、统计数据。
在一个实施例中,所述方法还包括,在所述第一数据的字节数大于可写字节数的情况中,进行等待。
在一个实施例中,所述共享内存中还包括第四地址,用于存储丢弃数据数目,所述方法还包括,在所述第一数据的字节数大于可写字节数的情况中,丢弃所述第一数据,并将第四地址中存储的丢弃数据数目加一。
在一个实施例中,所述丢弃数据数目为原子变量。
在一个实施例中,所述写偏移地址在所述读偏移地址之前,所述可写字节数等于所述读偏移地址减去所述写偏移地址之差。
在一个实施例中,所述写偏移地址在所述读偏移地址之后,所述可写字节数等于第三地址的数目减去不可写字节数之差,其中,所述不可写字节数等于所述写偏移地址减去所述读偏移地址之差。
在一个实施例中,所述写偏移地址与所述读偏移地址相同,所述可写字节数等于全部第三地址的数目。
在一个实施例中,所述TEE系统为SGX系统,其中,所述预定函数为Ocall函数。
本说明书另一方面提供一种TEE系统中的数据传输装置,所述TEE系统包括TEE侧和非TEE侧,在所述非TEE侧包括共享内存,所述共享内存中包括第一地址、第二地址和连续的多个第三地址,其中,所述第一地址用于存储写偏移地址,所述写偏移地址指示所述多个第三地址中可写入的起始地址,所述第二地址用于存储读偏移地址,所述读偏移地址指示所述多个第三地址中可读取的起始地址,所述第三地址用于存储来自TEE侧的数据,所述装置部署于来自TEE侧的第一线程中,包括:
第一获取单元,配置为,获取第一数据;
调用单元,配置为,以所述第一数据作为输入参数调用预定函数,以切换到非TEE侧;
第二获取单元,配置为,通过读取第一地址,获取写偏移地址;
第三获取单元,配置为,通过读取第二地址,获取读偏移地址;
判断单元,配置为,判断所述第一数据的字节数是否小于等于可写字节数,其中,所述可写字节数基于所述写偏移地址和所述读偏移地址确定,其中,每个地址对应于一个字节;
写入单元,配置为,在所述第一数据的字节数小于等于可写字节数的情况中,将所述第一数据写入从所述写偏移地址开始的第三地址中;
更新单元,配置为,更新所述第一地址中的写偏移地址;以及
返回单元,配置为,返回TEE侧。
在一个实施例中,所述装置还包括等待单元,配置为,在所述第一数据的字节数大于可写字节数的情况中,进行等待。
在一个实施例中,所述共享内存中还包括第四地址,用于存储丢弃数据数目,所述装置还包括丢弃单元,配置为,在所述第一数据的字节数大于可写字节数的情况中,丢弃所述第一数据,并将第四地址中存储的丢弃数据数目加一。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过根据本说明书实施例的TEE系统中的数据传输方案,为TEE环境提供一种高性能的异步数据传输系统,例如异步日志打印系统,减少了TEE系统打印日志的开销,提高了TEE系统的运行速度,同时满足了对日志系统的一些基本要求。
附图说明
通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:
图1示出根据本说明书实施例的TEE系统100及其中的数据流向示意图;
图2示出根据本说明书实施例的一种TEE系统中的数据传输方法流程图;
图3示意示出根据本说明书实施例的共享内存中数据结构的示意图;
图4-图8分别示出了通过所述共享内存传输数据过程中的写偏移地址和读偏移地址;
图9示出了根据本说明书另一实施例的共享内存数据结构;
图10示出根据本说明书实施例的一种TEE系统中的数据传输方法流程图;
图11示出根据本说明书实施例的一种TEE系统中的数据传输装置1100。
具体实施方式
下面将结合附图描述本说明书实施例。
图1示出根据本说明书实施例的TEE系统100及其中的数据流向示意图。如图中所示,系统100包括TEE侧11和非TEE侧12。其中,在非TEE侧12预设有专用的缓冲寄存器121作为共享内存,用于缓存从TEE侧传输出的特定数据(例如日志)。在TEE侧11运行有第一线程,该第一线程可获取第一数据(例如,日志数据),其通过调用例如打印函数(_pringf),而将第一数据存入所述缓冲寄存器121中。具体是,例如,所述TEE系统为SGX系统,则_pringf函数可通过调用Ocall函数切换为非TEE侧线程。在非TEE侧12,第一线程将日志写入缓冲寄存器121,之后,第一线程返回到TEE侧,以进行后续步骤。在非TEE侧12运行有第二线程,该第二线程例如通过轮询的方式通过定期调用pop函数从缓冲寄存器121中读取存入的数据,例如在一次读取中读取第二数据。该第二线程在读取到第二数据之后,将该第二数据发送给非TEE侧的特定程序(例如日志系统log4cplus)进行数据打印。
在上述示意图中,为了保证第一线程和第二线程同时访问共享内存的数据安全性,设计了特定的数据结构以允许进行上述过程,下文将对此进行详细描述。
图2示出根据本说明书实施例的一种TEE系统中的数据传输方法流程图,所述TEE系统包括TEE侧和非TEE侧,在所述非TEE侧包括共享内存,所述共享内存中包括第一地址、第二地址和连续的多个第三地址,其中,所述第一地址用于存储写偏移地址,所述写偏移地址指示所述多个第三地址中可写入的起始地址,所述第二地址用于存储读偏移地址,所述读偏移地址指示所述多个第三地址中可读取的起始地址,所述第三地址用于存储来自TEE侧的数据,所述方法由来自TEE侧的第一线程执行,包括:
步骤S202,获取第一数据;
步骤S204,以所述第一数据作为输入参数调用预定函数,以切换到非TEE侧;
步骤S206,通过读取第一地址,获取写偏移地址;
步骤S208,通过读取第二地址,获取读偏移地址;
步骤S210,判断所述第一数据的字节数是否小于等于可写字节数,其中,所述可写字节数基于所述写偏移地址和所述读偏移地址确定,其中,每个地址对应于一个字节;
步骤S212,在所述第一数据的字节数小于等于可写字节数的情况中,将所述第一数据写入从所述写偏移地址开始的第三地址中;
步骤S214,更新所述第一地址中的写偏移地址;以及
步骤S216,返回TEE侧。
图3示意示出根据本说明书实施例的共享内存中数据结构的示意图。如图3中所示,所述共享内存中包括第一地址、第二地址和连续的多个第三地址。图中示意示出10个第三地址,该10个连续的第三地址例如可分别标识为“1,2,…,10”。该内存中的每个地址可写入一个字节,其中,第一地址用于存储写偏移地址,该写偏移地址指示第三地址中可写入的起始地址;第二地址用于存储读偏移地址,该读偏移地址指示第三地址中可读取的起始地址;第三地址用于存储希望从TEE侧传输到非TEE侧的数据。例如,在初始还未从TEE侧向该共享内存存入数据的情况中,第三地址中可写入的起始地址为第1个地址,即地址“1”,因此,第一地址中存储的写偏移地址为“1”。在该情况中,在读取数据时,由于最多只能读到写偏移地址前一个地址,因此此时的第二地址中的读偏移地址也为地址“1”,图中示意示出了读偏移地址(图中以R表示)和写偏移地址(图中以W表示)分别对应的第三地址(即地址“1”)。可以理解,在该共享内存中,只限定了多个第三地址是连续的地址,对于第一地址、第二地址和第三地址的位置关系并没有特别限定,例如,第一地址、第二地址可以分别位于第三地址的两头,或者第一地址、第二地址可位于第三地址之后等等。另外,图3中虽然示意示出该共享内存中包括10个连续第三地址,在实际应用中,可根据待传输数据的具体字节数确定共享内存中包括的第三地址的数目。例如,待传输数据为TEE侧的日志,例如,该日志通常有几十个字节,从而,可将该共享内存设置为包括几百个连续的第三地址。
当TEE侧希望向非TEE侧传输特定数据时,通过运行TEE侧的第一线程执行该方法而向共享内存的第三地址中写入数据,该第一线程例如属于用于从TEE侧向非TEE侧传输数据的进程。由于在通过该方法向共享内存中写入数据之后,在非TEE侧将通过另外的线程将该数据传送至目标程序,因此,该方法对数据的传输方式为异步传输方式,因此,该方法适用于对实时性要求不高、传输量较大、且对性能要求较高的数据。从而,所述特定数据例如为日志、监控数据、统计数据等等。
首先,在步骤S202,获取第一数据。
所述第一数据例如为TEE中生成的日志。TEE侧在生成日志之后例如将其存储到TEE侧的预定内存位置。所述第一线程可预设为定期从所述预定内存位置读取日志,从而可定期获取待传输的数据,以定期执行该方法。
步骤S204,以所述第一数据作为输入参数调用预定函数,以切换到非TEE侧。
所述TEE系统例如为SGX系统,在该SGX系统中包括围圈(enclave)作为可信执行环境(TEE),在该围圈中,第一线程可通过调用Ocall函数切换到非围圈侧(即非TEE侧)。Ocall函数是SGX系统中提供的一种数据传输方式,围圈侧的线程调用Ocall函数之后,使得cpu切换到非围圈侧。具体是,在以第一数据作为输入参数调用Ocall函数之后,在围圈侧备份围圈侧的寄存器,通过以第一数据作为输入参数从而将该第一数据传输到非TEE侧,然后在非围圈侧恢复非围圈侧的寄存器信息,其中包括,将作为输入参数的第一数据存储到寄存器中。第一线程切换到非TEE侧之后,然后可通过调用其它函数进行后续步骤。
在步骤S206,通过读取第一地址,获取写偏移地址。在步骤S208,通过读取第二地址,获取读偏移地址。
除了上述图3示出的写偏移地址和读偏移地址分别指示第三地址中的地址“1”的情况之外,图4-图8分别示出了通过所述共享内存传输数据过程中的写偏移地址和读偏移地址。在图4-图8中,每个方框对应于一个地址,方框内部的数据为其中存储一个字节的数据,方框下方的数字为其地址标识,“R”和“W”如上文指示分别对应于读偏移地址和写偏移地址。
在图4中,已经通过该方法从地址1开始向第三地址中顺序写入了四个字节”ab\n\0”,并且在非TEE侧还未对该共享内存进行数据读取,在该情况中,第一地址中存储的写偏移地址(W)指向存储“\0”之后的地址,即,地址5,第二地址中存储的读偏移地址(R)仍指向地址1。
在图5中,已经又通过该方法从地址5开始顺序写入了四个字节”cd\n\0”,并且在非TEE侧仍未对该共享内存进行数据读取,在该情况中,写偏移地址(W)指向存储第二个“\0”之后的地址,即,地址9,读偏移地址(R)仍指向地址1。
在图6中,已经在非TEE侧通过下文将描述的方法从读偏移地址开始进行数据读取,该读取最多只能读到所述写偏移地址之前的一个地址,即该读取过程读取了共享内存中已经写入的八个字节”ab\n\0cd\n\0”。在该情况中,在第一地址中存储的写偏移地址仍指向地址9,在第二地址中存储的读偏移地址指向第二个“\0”之后的地址,即,也是地址9。
在图7中,已经又通过图2所示方法从地址9开始向第三地址中顺序写入”ef\n\0”四个字节。在该情况中,读偏移地址未发生变化,仍为地址9,在写入数据的过程中,当10个地址都写满了之后,由于在读偏移地址之前的数据都是经过读取的数据,从而,从地址1到读偏移地址(在该情况中为地址9)之前的地址(即地址8)的每个地址都是可以写入的,因此从地址10跳到地址1继续进行写入,在写完之后,写偏移地址指向地址3。
在图8中,已经又在非TEE侧进行对该共享内存的读取。具体是,从读偏移地址(地址9)开始一直读取到写偏移地址的前一个地址(地址2),在进行该读取之后,第一地址中的写偏移地址仍指向地址3,第二地址中的读偏移地址也指向地址3。
在步骤S210,判断所述第一数据的字节数是否小于等于可写字节数,其中,所述可写字节数基于所述写偏移地址和所述读偏移地址确定,其中,每个地址对应于一个字节。
本领域技术人员根据写偏移地址和读偏移地址可容易地确定多个第三地址中的可写地址,由于一个地址对应于一个字节,从而可确定可写字节数。
例如,在图3、图6和图8所示的情况中,读偏移地址和写偏移地址指向同一个地址,则可写字节数为全部第三地址的数目,即10个。
在图4、5所示的情况中,写偏移地址在读偏移地址之后,可写字节数是第三地址的数目减去不可写字节数,所述不可写字节数为写偏移地址减去读偏移地址的差。例如,在图4中,写偏移地址为5,读偏移地址为1,从而,不可写字节数为5-1=4,可写字节数为10-4=6,其分别对应于地址5到地址10共六个地址。
在图7所示的情况中,写偏移地址在读偏移地址之前,在该情况中,可写字节数为读偏移地址减去写偏移地址之差。例如,在图7中,写偏移地址为3,读偏移地址为9,从而,可写字节数为9-3=6,其分别对应于地址3到地址8共六个地址。
在步骤S212,在所述第一数据的字节数小于等于可写字节数的情况中,将所述第一数据写入从所述写偏移地址开始的第三地址中。
例如,在所述共享内存中已存储的数据如图4所示的情况中,如上文所述,可写字节数为6个,当将要写入的第一数据为”ef\n\0”4个字节的情况中,由于4<6,因此,可将”ef\n\0”4个字节写入5、6、7、8四个地址中。
在所述共享内存中已存储的数据如图7所示的情况中,如上文所述,可写字节数为6个,当将要写入的第一数据为“ghi jkl\n\0”8个字节的情况中,即第一数据的字节数大于可写字节数,从而,将不能向共享内存中写入该数据。在该情况中,该写入线程或者进行等待,直到共享内存中有足够的可写字节数,或者可丢弃该第一数据并返回。图9示出了根据本说明书另一实施例的共享内存数据结构。在该数据结构中,除了包括图3所述的第一地址、第二地址和第三地址之外,还包括第四地址,第四地址中存储丢弃数据数目。在如上文所述丢弃第一数据之后,在第四地址中将该丢弃数据数目加1。在一个实施例中,该丢弃数据数目为原子变量,从而在TEE侧和非TEE侧双线程同时操作的情况下,可保证数据安全性。
在步骤S214,更新所述第一地址中的写偏移地址。
例如,在对图3中的第三地址写入“ab\n\0”之后,将初始的写偏移地址“1”更新为写偏移地址“5”,从而以便于下次写入或读取时对写偏移地址的读取。例如,在对图4所示的第三地址写入时,可读取到最新的写偏移地址“5”,从而进行可写字节数的计算。
在步骤S216,返回TEE侧。
所述第一线程可预设为在进行完步骤S214之后返回TEE侧,从而,第一线程在进行步骤S214之后将自动返回到TEE侧,以进行TEE侧的后续步骤,例如再次重复该方法。
图10示出根据本说明书实施例的一种TEE系统中的数据传输方法流程图,所述TEE系统包括TEE侧和非TEE侧,在所述非TEE侧包括共享内存,所述共享内存中包括第一地址、第二地址和连续的多个第三地址,其中,所述第一地址用于存储写偏移地址,所述写偏移地址指示所述多个第三地址中可写入的起始地址,所述第二地址用于存储读偏移地址,所述读偏移地址指示所述多个第三地址中可读取的起始地址,所述第三地址用于存储来自TEE侧的数据,所述方法由非TEE侧执行,包括:
步骤S1002,通过读取第一地址,获取写偏移地址;
步骤S1004,通过读取第二地址,获取读偏移地址;
步骤S1006,读取所述第三地址中的写入数据中的未读取字节作为第二数据,所述未读取字节基于所述写偏移地址和所述读偏移地址确定,其中,每个地址对应于一个字节;以及
步骤S1008,更新所述第二地址中的读偏移地址。
该方法可通过非TEE侧运行的第二线程执行,该第二线程可同样属于上述用于从TEE侧向非TEE侧传输数据的进程。
其中,步骤S1002和步骤S1004可参考上述对步骤S206和步骤S208的描述,在此不再赘述。
在步骤S1006,读取所述第三地址中的写入数据中的未读取字节作为第二数据,所述未读取字节基于所述写偏移地址和所述读偏移地址确定,其中,每个地址对应于一个字节。
本领域技术人员根据写偏移地址和读偏移地址可容易地确定第三地址中的未读取字节。
例如,在图3、图6和图8所示的情况中,读偏移地址和写偏移地址指向同一个地址,则第三地址中不包括未读取字节。
在图4、5所示的情况中,写偏移地址在读偏移地址之后,所述第三地址中的全部未读取字节包括从所述读偏移地址开始到所述写偏移地址的前一个地址中的各个字节。例如,在图4中,写偏移地址为5,读偏移地址为1,从而,全部未读取字节为地址1到4中各个字节。
在图7所示的情况中,写偏移地址在读偏移地址之前,在该情况中,所述全部未读取字节为所述第三地址中除已读取字节之外的字节,所述已读取字节包括从所述写偏移地址开始到所述读偏移地址的前一个地址中的各个字节。例如,在图7中,写偏移地址为3,读偏移地址为9,从而,已读取字节为地址3到地址8中各个地址中的字节,从而,全部未读取字节为地址1-2和地址9-10中的各个字节。可以理解,在该步骤中,不一定读取所述第三地址中的全部未读取字节,而可以仅读取部分未读取字节。例如,可预设为一次仅读取3个字节,从而,在一次读取中可读取全部未读取字节中的前三个字节,剩余的一个未读取字节可留到下一次读取时读取。
在步骤S1008,更新所述第二地址中的读偏移地址。
例如,在从图5所示的第三地址读取八个字节“ab\n\0cd\n\0”之后,将读偏移地址从“1”更新为“9”,从而便于下次写入或读取时对读偏移地址的读取。
在一个实施例中,所述第二数据为日志数据,所述方法还包括,在更新所述第二地址中的读偏移地址之后,将所述第二数据发送给在非TEE侧的日志打印程序,以用于打印该第二数据。该打印例如包括在显示器上显示,或者存入硬盘中等。
图11示出根据本说明书实施例的一种TEE系统中的数据传输装置1100,所述TEE系统包括TEE侧和非TEE侧,在所述非TEE侧包括共享内存,所述共享内存中包括第一地址、第二地址和连续的多个第三地址,其中,所述第一地址用于存储写偏移地址,所述写偏移地址指示所述多个第三地址中可写入的起始地址,所述第二地址用于存储读偏移地址,所述读偏移地址指示所述多个第三地址中可读取的起始地址,所述第三地址用于存储来自TEE侧的数据,所述装置部署于来自TEE侧的第一线程中,包括:
第一获取单元1101,配置为,获取第一数据;
调用单元1102,配置为,以所述第一数据作为输入参数调用预定函数,以切换到非TEE侧;
第二获取单元1103,配置为,通过读取第一地址,获取写偏移地址;
第三获取单元1104,配置为,通过读取第二地址,获取读偏移地址;
判断单元1105,配置为,判断所述第一数据的字节数是否小于等于可写字节数,其中,所述可写字节数基于所述写偏移地址和所述读偏移地址确定,其中,每个地址对应于一个字节;
写入单元1106,配置为,在所述第一数据的字节数小于等于可写字节数的情况中,将所述第一数据写入从所述写偏移地址开始的第三地址中;
更新单元1107,配置为,更新所述第一地址中的写偏移地址;以及
返回单元1108,配置为,返回TEE侧。
在一个实施例中,所述装置还包括等待单元1109,配置为,在所述第一数据的字节数大于可写字节数的情况中,进行等待。
在一个实施例中,所述共享内存中还包括第四地址,用于存储丢弃数据数目,所述装置还包括丢弃单元1110,配置为,在所述第一数据的字节数大于可写字节数的情况中,丢弃所述第一数据,并将第四地址中存储的丢弃数据数目加一。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
在本说明书实施例中,因为所述共享内存会被TEE和非TEE环境同时使用,TEE的特殊性使得无法使用锁来保证线程安全,所以在本方案中,使用了无锁数据结构,并通过特殊设计保证线程安全。具体是,在共享内存中包括上述第一地址-第四地址,其中,对于第一地址和第二地址,只会单侧写,另一侧只会读,所以没有同时写的问题。另外,针对一边读另一边在写的情况,因为写的时候是在写完了更新写偏地址,读的时候是在读完了更新读偏移地址,因此不存在偏移地址更新了,但是数据还没处理的情况,所以不会读到未写完的数据,也不会写数据覆盖掉未读的数据。第三地址中存储的数据虽然是双侧读写,但是通过由写偏移地址和读偏移地址控制读写的范围,所以其实是分开的区域,互不干扰。另外,对于第四地址中的丢弃数据数目,虽然也是同时读写,但是通过将其设置为原子变量而保证了数据安全性。
通过上述无锁数据结构的设计,为TEE环境提供一种高性能的异步数据传输系统,例如异步日志打印系统,减少了TEE系统打印日志的开销,提高了TEE系统的运行速度,同时满足了对日志系统的一些基本要求。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执轨道,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执轨道的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (14)

1.一种TEE系统中的数据传输方法,所述TEE系统包括TEE侧和非TEE侧,在所述非TEE侧包括共享内存,所述共享内存中包括第一地址、第二地址和连续的多个第三地址,其中,所述第一地址用于存储写偏移地址,所述写偏移地址指示所述多个第三地址中可写入的起始地址,所述第二地址用于存储读偏移地址,所述读偏移地址指示所述多个第三地址中可读取的起始地址,所述第三地址用于存储来自TEE侧的数据,所述方法由来自TEE侧的第一线程执行,包括:
获取第一数据;
以所述第一数据作为输入参数调用预定函数,以切换到非TEE侧;
通过读取第一地址,获取写偏移地址;
通过读取第二地址,获取读偏移地址;
判断所述第一数据的字节数是否小于等于可写字节数,其中,所述可写字节数基于所述写偏移地址和所述读偏移地址确定,其中,每个地址对应于一个字节;
在所述第一数据的字节数小于等于可写字节数的情况中,将所述第一数据写入从所述写偏移地址开始的第三地址中;
更新所述第一地址中的写偏移地址;以及
返回TEE侧;
其中,所述可写字节数采用以下方式确定:
当所述写偏移地址在所述读偏移地址之前时,所述可写字节数等于所述读偏移地址减去所述写偏移地址之差;
当所述写偏移地址在所述读偏移地址之后时,所述可写字节数等于第三地址的数目减去不可写字节数之差,所述不可写字节数等于所述写偏移地址减去所述读偏移地址之差;
当所述写偏移地址与所述读偏移地址相同时,所述可写字节数等于全部第三地址的数目。
2.根据权利要求1所述的方法,其中,所述第一数据为以下任一种数据:日志、监控数据、统计数据。
3.根据权利要求1所述的方法,还包括,在所述第一数据的字节数大于可写字节数的情况中,进行等待。
4.根据权利要求1所述的方法,所述共享内存中还包括第四地址,用于存储丢弃数据数目,所述方法还包括,在所述第一数据的字节数大于可写字节数的情况中,丢弃所述第一数据,并将第四地址中存储的丢弃数据数目加一。
5.根据权利要求4所述的方法,其中,所述丢弃数据数目为原子变量。
6.根据权利要求1所述的方法,其中,所述TEE系统为SGX系统,其中,所述预定函数为Ocall函数。
7.一种TEE系统中的数据传输装置,所述TEE系统包括TEE侧和非TEE侧,在所述非TEE侧包括共享内存,所述共享内存中包括第一地址、第二地址和连续的多个第三地址,其中,所述第一地址用于存储写偏移地址,所述写偏移地址指示所述多个第三地址中可写入的起始地址,所述第二地址用于存储读偏移地址,所述读偏移地址指示所述多个第三地址中可读取的起始地址,所述第三地址用于存储来自TEE侧的数据,所述装置部署于来自TEE侧的第一线程中,包括:
第一获取单元,配置为,获取第一数据;
调用单元,配置为,以所述第一数据作为输入参数调用预定函数,以切换到非TEE侧;
第二获取单元,配置为,通过读取第一地址,获取写偏移地址;
第三获取单元,配置为,通过读取第二地址,获取读偏移地址;
判断单元,配置为,判断所述第一数据的字节数是否小于等于可写字节数,其中,所述可写字节数基于所述写偏移地址和所述读偏移地址确定,其中,每个地址对应于一个字节;
写入单元,配置为,在所述第一数据的字节数小于等于可写字节数的情况中,将所述第一数据写入从所述写偏移地址开始的第三地址中;
更新单元,配置为,更新所述第一地址中的写偏移地址;以及
返回单元,配置为,返回TEE侧;
其中,所述判断单元还配置为采用以下方式确定所述可写字节数:
当所述写偏移地址在所述读偏移地址之前时,所述可写字节数等于所述读偏移地址减去所述写偏移地址之差;
当所述写偏移地址在所述读偏移地址之后时,所述可写字节数等于第三地址的数目减去不可写字节数之差,所述不可写字节数等于所述写偏移地址减去所述读偏移地址之差;
当所述写偏移地址与所述读偏移地址相同时,所述可写字节数等于全部第三地址的数目。
8.根据权利要求7所述的装置,其中,所述第一数据为以下任一种数据:日志、监控数据、统计数据。
9.根据权利要求7所述的装置,还包括等待单元,配置为,在所述第一数据的字节数大于可写字节数的情况中,进行等待。
10.根据权利要求7所述的装置,所述共享内存中还包括第四地址,用于存储丢弃数据数目,所述装置还包括丢弃单元,配置为,在所述第一数据的字节数大于可写字节数的情况中,丢弃所述第一数据,并将第四地址中存储的丢弃数据数目加一。
11.根据权利要求10所述的装置,其中,所述丢弃数据数目为原子变量。
12.根据权利要求7所述的装置,其中,所述TEE系统为SGX系统,其中,所述预定函数为Ocall函数。
13.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-6中任一项的所述的方法。
14.一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-6中任一项所述的方法。
CN201910641063.8A 2019-07-16 2019-07-16 Tee系统中的数据传输方法和装置 Active CN110442463B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201910641063.8A CN110442463B (zh) 2019-07-16 2019-07-16 Tee系统中的数据传输方法和装置
PCT/CN2020/071288 WO2021008105A1 (zh) 2019-07-16 2020-01-10 Tee系统中的数据传输方法和装置
TW109104977A TWI718000B (zh) 2019-07-16 2020-02-17 Tee系統中的資料傳輸方法和裝置
US16/915,585 US11042642B2 (en) 2019-07-16 2020-06-29 Method and apparatus for data transmission in a TEE system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910641063.8A CN110442463B (zh) 2019-07-16 2019-07-16 Tee系统中的数据传输方法和装置

Publications (2)

Publication Number Publication Date
CN110442463A CN110442463A (zh) 2019-11-12
CN110442463B true CN110442463B (zh) 2020-07-07

Family

ID=68430519

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910641063.8A Active CN110442463B (zh) 2019-07-16 2019-07-16 Tee系统中的数据传输方法和装置

Country Status (3)

Country Link
CN (1) CN110442463B (zh)
TW (1) TWI718000B (zh)
WO (1) WO2021008105A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110427274B (zh) * 2019-07-16 2020-07-17 阿里巴巴集团控股有限公司 Tee系统中的数据传输方法和装置
CN110442463B (zh) * 2019-07-16 2020-07-07 阿里巴巴集团控股有限公司 Tee系统中的数据传输方法和装置
CN110442462B (zh) 2019-07-16 2020-07-28 阿里巴巴集团控股有限公司 Tee系统中的多线程数据传输方法和装置
US10699015B1 (en) 2020-01-10 2020-06-30 Alibaba Group Holding Limited Method and apparatus for data transmission in a tee system
US11003785B2 (en) 2019-07-16 2021-05-11 Advanced New Technologies Co., Ltd. Data transmission method and apparatus in tee systems
CN110399235B (zh) * 2019-07-16 2020-07-28 阿里巴巴集团控股有限公司 Tee系统中的多线程数据传输方法和装置
TWI774277B (zh) * 2021-03-18 2022-08-11 慧榮科技股份有限公司 主機命令的執行方法及裝置
CN115113799A (zh) 2021-03-18 2022-09-27 慧荣科技股份有限公司 主机命令的执行方法及装置
CN114372260B (zh) * 2022-03-22 2022-07-22 荣耀终端有限公司 一种多线程处理方法及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108022613A (zh) * 2016-11-01 2018-05-11 三星电子株式会社 非易失性存储器器件及其操作方法
CN109086100A (zh) * 2018-07-26 2018-12-25 中国科学院信息工程研究所 一种高安全可信移动终端安全体系架构及安全服务方法
CN109460373A (zh) * 2017-09-06 2019-03-12 阿里巴巴集团控股有限公司 一种数据共享方法、终端设备和存储介质
CN109840436A (zh) * 2017-11-29 2019-06-04 阿里巴巴集团控股有限公司 数据处理方法、可信用户界面资源数据的应用方法及装置
CN109871717A (zh) * 2016-02-29 2019-06-11 华为技术有限公司 一种数据安全传输装置及方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103150220B (zh) * 2011-12-07 2016-08-31 腾讯科技(深圳)有限公司 进程间的通信方法和通信系统
US9292712B2 (en) * 2012-09-28 2016-03-22 St-Ericsson Sa Method and apparatus for maintaining secure time
TWI463320B (zh) * 2012-11-29 2014-12-01 Mstar Semiconductor Inc 記憶體存取權限控制方法與相關記憶體管理系統
CN103645863B (zh) * 2013-12-12 2017-12-08 北京奇安信科技有限公司 共享内存的数据读取方法和系统、写入方法和系统
CN105183665B (zh) * 2015-09-08 2018-02-13 福州瑞芯微电子股份有限公司 一种数据缓存访问方法和数据缓存控制器
TWI575402B (zh) * 2016-03-25 2017-03-21 晨星半導體股份有限公司 計算裝置與資料處理方法
CN106354687B (zh) * 2016-08-29 2020-01-03 珠海市魅族科技有限公司 一种数据传输方法及系统
KR20180043451A (ko) * 2016-10-19 2018-04-30 삼성전자주식회사 컴퓨팅 시스템 및 그것의 동작 방법
US10204229B2 (en) * 2017-03-21 2019-02-12 Nxp B.V. Method and system for operating a cache in a trusted execution environment
CN110427274B (zh) * 2019-07-16 2020-07-17 阿里巴巴集团控股有限公司 Tee系统中的数据传输方法和装置
CN110442462B (zh) * 2019-07-16 2020-07-28 阿里巴巴集团控股有限公司 Tee系统中的多线程数据传输方法和装置
CN110399235B (zh) * 2019-07-16 2020-07-28 阿里巴巴集团控股有限公司 Tee系统中的多线程数据传输方法和装置
CN110442463B (zh) * 2019-07-16 2020-07-07 阿里巴巴集团控股有限公司 Tee系统中的数据传输方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109871717A (zh) * 2016-02-29 2019-06-11 华为技术有限公司 一种数据安全传输装置及方法
CN108022613A (zh) * 2016-11-01 2018-05-11 三星电子株式会社 非易失性存储器器件及其操作方法
CN109460373A (zh) * 2017-09-06 2019-03-12 阿里巴巴集团控股有限公司 一种数据共享方法、终端设备和存储介质
CN109840436A (zh) * 2017-11-29 2019-06-04 阿里巴巴集团控股有限公司 数据处理方法、可信用户界面资源数据的应用方法及装置
CN109086100A (zh) * 2018-07-26 2018-12-25 中国科学院信息工程研究所 一种高安全可信移动终端安全体系架构及安全服务方法

Also Published As

Publication number Publication date
CN110442463A (zh) 2019-11-12
TWI718000B (zh) 2021-02-01
WO2021008105A1 (zh) 2021-01-21
TW202105219A (zh) 2021-02-01

Similar Documents

Publication Publication Date Title
CN110442463B (zh) Tee系统中的数据传输方法和装置
CN110399235B (zh) Tee系统中的多线程数据传输方法和装置
CN110427274B (zh) Tee系统中的数据传输方法和装置
CN110442462B (zh) Tee系统中的多线程数据传输方法和装置
US6145061A (en) Method of management of a circular queue for asynchronous access
CN109597818A (zh) 数据更新方法、装置、存储介质和设备
US11042642B2 (en) Method and apparatus for data transmission in a TEE system
CN109582590B (zh) 存储器管理的系统中的指针
EP2565786A1 (en) Information processing device and task switching method
US11803490B2 (en) Apparatus and method for data transmission and readable storage medium
KR100678930B1 (ko) 디지털 시그널 프로세서를 위한 실시간 제어 시스템
KR100426038B1 (ko) 디지털버퍼메모리내의디지털버퍼를처리하는장치및액세스하는방법
US20110271060A1 (en) Method And System For Lockless Interprocessor Communication
CN112817516A (zh) 数据读写控制方法、装置、设备和存储介质
CN110825652B (zh) 淘汰磁盘块上的缓存数据的方法、装置及设备
US11250145B2 (en) Data transmission method and apparatus in tee systems
CN112231290A (zh) 一种本地日志的处理方法、装置、设备及存储介质
CN110727405A (zh) 数据处理方法、装置、电子设备及计算机可读介质
CN117056363B (zh) 数据缓存方法、系统、设备以及存储介质
JPS6051947A (ja) 仮想記憶計算機における命令先取方式
CN114356834A (zh) 一种无锁的处理器间通信的方法和系统
CN1584855A (zh) 用于在多处理器系统中保持一致性的方法和设备
CN116010036A (zh) 一种数据迁移方法、装置及其介质
CN113778712A (zh) 嵌入式系统
CN115357526A (zh) 数据处理方法、装置、电子设备及计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20201010

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20201010

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Patentee before: Alibaba Group Holding Ltd.