亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于TrustZone的安全應(yīng)用性能優(yōu)化*

        2021-01-05 09:20:46楊保絢張利軍
        關(guān)鍵詞:共享內(nèi)存拷貝調(diào)用

        楊保絢,董 攀,張利軍,丁 滟

        (1.國防科技大學(xué)計(jì)算機(jī)學(xué)院,湖南 長沙 410073;2.中國人民解放軍32228部隊(duì)24分隊(duì),福建 福州 350101)

        1 引言

        隨著信息技術(shù)的快速發(fā)展,智能設(shè)備已經(jīng)廣泛應(yīng)用在軍事、工農(nóng)業(yè)和生產(chǎn)生活的方方面面,幾乎無處不在,改變著人們的生產(chǎn)生活方式[1]。以物聯(lián)網(wǎng)(IoT)設(shè)備為例,根據(jù)國際數(shù)據(jù)公司IDC(International Data Corporation)的最新預(yù)測(cè)估計(jì),到2025年,將有416億臺(tái)聯(lián)網(wǎng)的IoT設(shè)備,產(chǎn)生79.4 ZB的數(shù)據(jù)[2]。然而伴隨智能設(shè)備的快速發(fā)展,安全性受到廣泛重視,如何在不利的環(huán)境中,保護(hù)敏感數(shù)據(jù)及其處理過程成為研究重點(diǎn)。作為ARM平臺(tái)上的可信執(zhí)行環(huán)境TEE(Trusted Execution Environment)擴(kuò)展支持,TrustZone技術(shù)將軟硬件資源劃分為安全世界和非安全世界(即TEE和REE(Rich Execution Environment)),安全世界為應(yīng)用程序提供了可信執(zhí)行環(huán)境,通常用于存儲(chǔ)、處理用戶敏感信息和提供安全服務(wù),2個(gè)世界之間通過硬件方式實(shí)現(xiàn)隔離,保證了安全世界中運(yùn)行程序的安全性。TrustZone技術(shù)[3]已廣泛應(yīng)用于各種智能設(shè)備的安全防護(hù),例如數(shù)據(jù)加解密、指紋登錄、DRM版權(quán)和電子支付等等,目前國產(chǎn)處理器如飛騰和華為鯤鵬等都集成了TrustZone技術(shù)。TrustZone的軟件開發(fā)一般符合GlobalPlatform[4]組織所制定的TEE標(biāo)準(zhǔn)規(guī)范,應(yīng)用程序劃分為TA和CA 2部分,其中TA運(yùn)行在安全世界,包含敏感的數(shù)據(jù)存儲(chǔ)和運(yùn)行過程等內(nèi)容,而CA運(yùn)行在普通世界,通過調(diào)用相關(guān)接口請(qǐng)求TA程序。為了實(shí)現(xiàn)兩者之間的消息和數(shù)據(jù)傳遞,如圖1所示,一般采用數(shù)據(jù)鏈路和消息鏈路2條途徑。消息鏈路是通過兩者世界切換來實(shí)現(xiàn)消息傳遞,數(shù)據(jù)鏈路借助TEE可訪問REE內(nèi)存的特點(diǎn),通過共享REE部分內(nèi)存來傳遞數(shù)據(jù)。數(shù)據(jù)鏈路通過消息鏈路世界切換進(jìn)行消息通知。

        Figure 1 TrustZone application example圖1 TrustZone應(yīng)用程序示例

        較之前單操作系統(tǒng)程序的運(yùn)行過程,基于TrustZone技術(shù)的應(yīng)用程序結(jié)構(gòu)發(fā)生了變化,代碼進(jìn)行了劃分,增加了2個(gè)世界間的通信過程。本文基于TrustZone的安全應(yīng)用運(yùn)行過程詳細(xì)分析,將性能提升的問題定位到以下4個(gè)方面:(1)世界切換導(dǎo)致性能降低。在通信過程中消息鏈路是依靠世界切換完成,世界切換需要經(jīng)歷復(fù)雜的狀態(tài)保存和恢復(fù)過程,頻繁、冗余的世界切換必然導(dǎo)致程序運(yùn)行性能的降低。(2)中斷處理方式對(duì)程序性能的影響?,F(xiàn)代計(jì)算機(jī)設(shè)計(jì)是多用途多任務(wù)的,CPU在TEE執(zhí)行TA程序時(shí),響應(yīng)其他應(yīng)用程序的中斷會(huì)經(jīng)歷狀態(tài)保存、世界切換和等待中斷執(zhí)行等過程,導(dǎo)致程序效率降低;而屏蔽外部中斷,其他應(yīng)用程序?qū)⒚媾RCPU長時(shí)等待而出現(xiàn)“餓死”的情況。(3)注冊(cè)銷毀共享內(nèi)存對(duì)程序的影響。數(shù)據(jù)鏈路依靠共享內(nèi)存完成數(shù)據(jù)交換,對(duì)于需多次重復(fù)調(diào)用執(zhí)行TA服務(wù)的應(yīng)用程序,重復(fù)地注冊(cè)和銷毀共享內(nèi)存,會(huì)引起額外的通信開銷,造成運(yùn)行性能降低。而單次或臨時(shí)調(diào)用執(zhí)行TA服務(wù)的應(yīng)用程序,不應(yīng)該長時(shí)間占用內(nèi)存資源,否則會(huì)造成其他應(yīng)用程序無資源可用。(4)數(shù)據(jù)內(nèi)存拷貝對(duì)程序性能的影響。傳遞數(shù)據(jù)時(shí),CA程序?qū)⒃紨?shù)據(jù)讀取到CA數(shù)據(jù)區(qū),在調(diào)用執(zhí)行TA時(shí),將所需數(shù)據(jù)拷貝進(jìn)共享內(nèi)存,之后將共享內(nèi)存數(shù)據(jù)拷貝進(jìn)TA數(shù)據(jù)區(qū)。整個(gè)過程中面臨多次數(shù)據(jù)內(nèi)存拷貝的情況,降低了程序性能。

        基于以上問題分析,本文認(rèn)為TrustZone 的安全應(yīng)用運(yùn)行過程應(yīng)符合以下原則:(1)盡可能減少世界切換次數(shù);(2)充分考慮中斷處理方式對(duì)程序運(yùn)行的影響;(3)合理分配共享內(nèi)存;(4)減少數(shù)據(jù)的內(nèi)存拷貝次數(shù)。因此,本文提出以下TrustZone的安全應(yīng)用性能優(yōu)化改進(jìn)方法:(1)合理配置參數(shù),盡可能地減少不必要的調(diào)用和冗余執(zhí)行;(2)配置靈活的中斷處理方式,充分考慮不同應(yīng)用程序執(zhí)行過程的需求,在TA執(zhí)行過程中分別提供屏蔽和不屏蔽中斷請(qǐng)求2種中斷處理方式;(3)優(yōu)化共享內(nèi)存分配方式,提供“一次一用”和“一次多用”內(nèi)存分配方式;(4)減少內(nèi)存拷貝,改用指針進(jìn)行數(shù)據(jù)傳遞。

        為了驗(yàn)證問題分析和優(yōu)化方向的正確性,本文借助于TrustZone技術(shù)的開源項(xiàng)目OP-TEE,搭建典型的安全應(yīng)用程序,在實(shí)際開發(fā)板中對(duì)應(yīng)用程序調(diào)用過程分段進(jìn)行測(cè)試,分別提出4個(gè)優(yōu)化方向并進(jìn)行測(cè)試。定量分析了世界切換、中斷、共享內(nèi)存分配和數(shù)據(jù)拷貝對(duì)整個(gè)程序運(yùn)行過程的影響。實(shí)驗(yàn)表明:(1)世界切換會(huì)影響程序執(zhí)行效率,如果參數(shù)設(shè)置不合理,世界切換階段消耗的CPU周期數(shù)最大占整個(gè)執(zhí)行過程的49%,嚴(yán)重影響了程序執(zhí)行效率。通過合理設(shè)置參數(shù),減少世界切換、不必要過程調(diào)用和冗余執(zhí)行,最大可以實(shí)現(xiàn)31%的性能提升。(2)響應(yīng)外部中斷,會(huì)造成程序執(zhí)行過程的不確定性,將會(huì)導(dǎo)致性能降低60%。屏蔽外部中斷,最大可以實(shí)現(xiàn)4.5%的性能提升。(3)注冊(cè)和銷毀共享內(nèi)存包含內(nèi)存分配與回收,以及內(nèi)存數(shù)據(jù)的拷貝,在沒有內(nèi)存復(fù)用的情況下,注冊(cè)、銷毀共享內(nèi)存階段消耗的CPU周期數(shù)最大占整個(gè)執(zhí)行過程的27%,制約了程序性能提升。對(duì)于大計(jì)算量服務(wù),內(nèi)存復(fù)用最大可以實(shí)現(xiàn)37%的性能提升。(4)減少內(nèi)存數(shù)據(jù)拷貝最大可以實(shí)現(xiàn)39%的性能提升。因此,本文的主要貢獻(xiàn)包括以下方面:

        (1) 對(duì)基于TrustZone技術(shù)的應(yīng)用程序調(diào)用過程進(jìn)行了深入分析,將制約程序性能提升的問題定位到世界切換方式、中斷、共享內(nèi)存管理和數(shù)據(jù)內(nèi)存拷貝4個(gè)方面。

        (2) 針對(duì)問題分析,分別從合理配置參數(shù)、配置靈活的中斷處理方式、優(yōu)化共享內(nèi)存分配方式和減少內(nèi)存拷貝4個(gè)方面提出TrustZone應(yīng)用程序性能優(yōu)化改進(jìn)方向。

        (3) 在實(shí)際開發(fā)板上實(shí)現(xiàn)調(diào)用過程和優(yōu)化改進(jìn),定量驗(yàn)證了問題分析和優(yōu)化改進(jìn)方向的正確性。

        2 相關(guān)研究工作

        2.1 TEE系統(tǒng)的發(fā)展

        TEE是一個(gè)與主機(jī)操作系統(tǒng)相互安全隔離的可信執(zhí)行環(huán)境,在此環(huán)境中,安全敏感的應(yīng)用程序可以與主機(jī)操作系統(tǒng)隔離地執(zhí)行。鑒于主機(jī)系統(tǒng)和受信任的執(zhí)行環(huán)境可能由不同制造商開發(fā),為了實(shí)現(xiàn)相互操作,制造商已經(jīng)在推進(jìn)TEE標(biāo)準(zhǔn)化工作。在2009年,開放移動(dòng)終端平臺(tái)OMTP(Open Mobile Terminal Platform)為此邁出了第一步,它規(guī)定了TEE標(biāo)準(zhǔn),該標(biāo)準(zhǔn)定義了與TEE應(yīng)該支持的功能相關(guān)的一系列安全要求[5]。GlobalPlatform組織通過定義標(biāo)準(zhǔn)API使TEE標(biāo)準(zhǔn)更加全面細(xì)致:定義了受信任的應(yīng)用程序可以依賴的內(nèi)部API(例如TEE內(nèi)部API),以及主機(jī)操作系統(tǒng)軟件可以用來與由其維護(hù)的TEE應(yīng)用程序進(jìn)行交互的通信接口。

        典型的基于TrustZone技術(shù)的TEE內(nèi)核系統(tǒng)主要有3種類型:(1)專有且封閉源代碼可信的內(nèi)核。三星Knox[6]是此類系統(tǒng)中最具代表性的項(xiàng)目。Knox是一個(gè)國防級(jí)移動(dòng)安全平臺(tái),旨在為企業(yè)數(shù)據(jù)保護(hù)提供有力的保障。(2)小型可信內(nèi)核系統(tǒng)。包括OP-TEE(Open Portable Trusted Execution Environment)[7,8]、TLK(Trusted Little Kernel)[9]和Open-TEE(Open virtual Trusted Execution Environment)[10]等小型TEE運(yùn)行時(shí)系統(tǒng)。除了TLK之外,這些系統(tǒng)的優(yōu)點(diǎn)是可以作為開放源代碼項(xiàng)目公開提供給研究團(tuán)體使用。(3)其他非常規(guī)可信內(nèi)核。相比于前兩類都只能在安全世界中構(gòu)建可執(zhí)行環(huán)境,而TrustICE[11]技術(shù)可以支持在正常世界中創(chuàng)建隔離計(jì)算環(huán)境ICE(Isolated Computing Environments)。其中OP-TEE完整地實(shí)現(xiàn)了一個(gè)可信執(zhí)行環(huán)境,符合GlobalPlatform標(biāo)準(zhǔn)。項(xiàng)目包括下列幾個(gè)組件:安全世界操作系統(tǒng)(OP-TEE OS)、安全世界客戶端(OP-TEE client)、完整的構(gòu)建工具鏈、測(cè)試工具和其他工具。

        2.2 系統(tǒng)性能優(yōu)化研究

        具體的TrustZone應(yīng)用程序性能優(yōu)化的相關(guān)研究不太多,下面以虛擬機(jī)和雙操作系統(tǒng)性能優(yōu)化為參考:

        (1)虛擬機(jī)系統(tǒng)性能優(yōu)化研究。XenSocket[12]在2個(gè)VM(Virtual Machine)之間提供了基于共享內(nèi)存的單向共存通道,該通道是為大型分布式流處理系統(tǒng)中的應(yīng)用程序設(shè)計(jì)的,并通過繞過TCP/IP網(wǎng)絡(luò)協(xié)議棧進(jìn)行本地通信來提高性能。XenLoop[13]為基于Xen內(nèi)存共享工具的共存VM提供了快速的VM間共享內(nèi)存通道,從而以較少的特權(quán)域干預(yù)即可進(jìn)行VM間的網(wǎng)絡(luò)通信。Pinto等人[14]提出了通過在KVM中共享主機(jī)-客戶內(nèi)存來實(shí)現(xiàn)零拷貝共享內(nèi)存機(jī)制。LTZVisor(Lightweight TrustZone-assisted hypervisor)[15]是一種輕量級(jí)的TrustZone輔助虛擬機(jī)管理程序,通過該管理程序,可以實(shí)現(xiàn)虛擬機(jī)間通信和管理。

        (2)雙操作系統(tǒng)性能優(yōu)化研究。Sangorrín等人[16]針對(duì)實(shí)時(shí)雙操作系統(tǒng)存在的不必要的數(shù)據(jù)拷貝和上下文切換問題,提出了一種新的雙OS通信方法,該方法在不影響實(shí)時(shí)操作系統(tǒng)可靠性的情況下,通過減少不必要的通信開銷來提升系統(tǒng)性能。TZDKS(TrustZone-based Dual-Kernel System)[17]提出了基于TrustZone的雙系統(tǒng)隔離方案,在任務(wù)切換、內(nèi)存訪問、中斷處理和設(shè)備訪問等方面兼顧安全性的同時(shí)提升了效率。在RTRG-RPC(Real-Time RTOS-GPOS Remote Procedure Call)[18]中建立了一種可預(yù)測(cè)時(shí)間且安全的RPC(Remote Procedure Call)機(jī)制。在詳細(xì)分析實(shí)時(shí)雙操作系統(tǒng)RPC每個(gè)階段的時(shí)間延遲的基礎(chǔ)上,通過軟件生成中斷消息轉(zhuǎn)換、中斷處理程序RPC服務(wù)和優(yōu)先級(jí)交換等方法,實(shí)現(xiàn)了實(shí)時(shí)通信過程。

        3 現(xiàn)有TrustZone安全應(yīng)用性能影響問題分析

        根據(jù)GlobalPlatform組織所制定的TEE標(biāo)準(zhǔn)規(guī)范,基于TrustZone技術(shù)的應(yīng)用程序劃分為TA和CA 2部分。應(yīng)用程序之間一般通過數(shù)據(jù)鏈路和消息鏈路2條途徑進(jìn)行消息和數(shù)據(jù)傳遞,其中數(shù)據(jù)鏈路通過注冊(cè)共享內(nèi)存?zhèn)鬟f數(shù)據(jù),消息鏈路通過世界切換傳遞消息。如圖2所示,程序之間會(huì)經(jīng)歷如下調(diào)用過程:首先CA與TA建立連接,CA調(diào)用注冊(cè)共享內(nèi)存接口,由TEE內(nèi)核分配共享內(nèi)存;之后CA將數(shù)據(jù)傳遞給共享內(nèi)存,并調(diào)用執(zhí)行命令接口,TA收到調(diào)用請(qǐng)求并執(zhí)行,執(zhí)行結(jié)束后將結(jié)果保存至共享內(nèi)存并返回CA;最終銷毀共享內(nèi)存,銷毀連接,完成一次調(diào)用。而CA和TA之間建立和銷毀連接是調(diào)用執(zhí)行必不可少的步驟,對(duì)于調(diào)用執(zhí)行影響不大,因此本文重點(diǎn)考慮在兩者之間建立連接后,CA調(diào)用執(zhí)行TA服務(wù)對(duì)程序性能的影響。同時(shí)考慮到OP-TEE是基于TrustZone技術(shù)的開源項(xiàng)目,也遵循GlobalPlatform標(biāo)準(zhǔn),CA和TA之間調(diào)用過程也符合上述規(guī)范,具有TrustZone技術(shù)通信過程的普遍代表性,因此本文使用OP-TEE作為TrustZone安全服務(wù)調(diào)用過程分析對(duì)象。

        Figure 2 Service request process from CA to TA圖2 CA調(diào)用執(zhí)行TA過程

        在程序執(zhí)行過程中,對(duì)CA調(diào)用執(zhí)行TA過程進(jìn)行數(shù)學(xué)建模,考慮到程序執(zhí)行過程中需要經(jīng)歷多次TA調(diào)用過程,調(diào)用次數(shù)跟傳遞數(shù)據(jù)和注冊(cè)分配的共享內(nèi)存大小有關(guān),記Mg是注冊(cè)分配的共享內(nèi)存大小,M是需要傳遞的數(shù)據(jù)大小,n是程序執(zhí)行過程中CA調(diào)用執(zhí)行TA的次數(shù)。三者之間滿足:

        (1)

        對(duì)具體調(diào)用過程進(jìn)行分解,在調(diào)用命令前需要分別為輸入和輸出數(shù)據(jù)注冊(cè)共享內(nèi)存和數(shù)據(jù)拷貝,會(huì)經(jīng)歷世界切換和數(shù)據(jù)拷貝,記tq為執(zhí)行世界切換時(shí)間,tc為數(shù)據(jù)拷貝時(shí)間,2次注冊(cè)共享內(nèi)存和數(shù)據(jù)拷貝過程執(zhí)行時(shí)間分別為Ts1和Ts2,則有:

        Ts1=tq1+tc1

        (2)

        Ts2=tq2+tc2

        (3)

        注冊(cè)共享內(nèi)存并完成數(shù)據(jù)拷貝后,CA調(diào)用執(zhí)行TA程序,會(huì)經(jīng)歷世界切換、執(zhí)行外部中斷和執(zhí)行TA程序。記CA調(diào)用執(zhí)行TA程序時(shí)間為Tc。在TA執(zhí)行外部中斷的時(shí)間記為ti,TA具體執(zhí)行時(shí)間記為ta,則有:

        Tc=tq3+ti+ta

        (4)

        CA調(diào)用執(zhí)行TA程序后,需要數(shù)據(jù)拷貝并銷毀共享內(nèi)存,記Tx1和Tx2分別是第1、2次銷毀共享內(nèi)存執(zhí)行時(shí)間。則有:

        Tx1=tq4+tc3

        (5)

        Tx2=tq5+tc4

        (6)

        因此,程序調(diào)用執(zhí)行TA總時(shí)延T滿足:

        T=n*(Ts1+Ts2+Tc+Tx1+Tx2)

        (7)

        從上述分析中可以看出,為了保證程序執(zhí)行過程的安全性,與程序在單操作系統(tǒng)中的運(yùn)行過程相比,基于TrustZone技術(shù)的應(yīng)用程序額外增加了注冊(cè)和銷毀共享內(nèi)存、數(shù)據(jù)拷貝、中斷執(zhí)行和世界切換等額外過程,從公式上看,為了提高服務(wù)調(diào)用的性能,需要盡可能地保證ta的執(zhí)行時(shí)間,減少Ts1、Ts2、Tx1、Tx2、tq和ti等非TA執(zhí)行時(shí)間,也要降低調(diào)用TA的執(zhí)行次數(shù)n,減少世界切換次數(shù)。

        具體分析得出影響效率提高的因素有以下幾個(gè)方面:

        (1)普通世界和安全世界切換帶來的性能降低。

        根據(jù)對(duì)通信過程的分析,消息鏈路貫穿于注冊(cè)和銷毀共享內(nèi)存、調(diào)用執(zhí)行TA和執(zhí)行中斷響應(yīng)等全過程,而消息鏈路依靠世界切換來完成。在CA調(diào)用執(zhí)行TA時(shí)會(huì)經(jīng)歷如下過程:REE用戶態(tài)CA程序調(diào)用REE端TEE命令接口,進(jìn)入REE內(nèi)核態(tài),REE內(nèi)核態(tài)調(diào)用SMC(Secure Monitor Call)進(jìn)入Monitor模式,Monitor模式保存當(dāng)前REE狀態(tài)和運(yùn)行程序狀態(tài),加載TEE狀態(tài),進(jìn)入TEE內(nèi)核態(tài)。TEE內(nèi)核態(tài)分配線程,加載線程,線程轉(zhuǎn)入TEE用戶態(tài),TEE用戶態(tài)執(zhí)行TA程序。

        因此,世界切換會(huì)經(jīng)歷復(fù)雜的狀態(tài)保存和加載過程,尤其對(duì)于多次調(diào)用執(zhí)行TA的程序則面臨多次世界切換,是程序性能提升不可忽略的影響因素。

        (2)中斷對(duì)程序的影響

        在TrustZone技術(shù)中,建議配置FIQ(Fast Interrupt reQuest)由安全世界進(jìn)行響應(yīng),IRQ(Interrupt ReQuest)由普通世界進(jìn)行響應(yīng),在OP-TEE中,采用了此方式。在TEE執(zhí)行TA程序時(shí),收到來自REE的IRQ中斷請(qǐng)求后會(huì)經(jīng)歷如下執(zhí)行過程:首先保存當(dāng)前運(yùn)行TA程序的狀態(tài),之后保存當(dāng)前TEE狀態(tài),調(diào)用SMC命令,加載REE狀態(tài),引起世界的切換;之后在REE中由REE中斷處理程序響應(yīng)中斷請(qǐng)求,執(zhí)行完后,返回至TEE,加載之前運(yùn)行的程序狀態(tài)繼續(xù)執(zhí)行。因此,在執(zhí)行TA程序過程中響應(yīng)中斷請(qǐng)求,會(huì)引起額外的世界切換、狀態(tài)保存恢復(fù)和執(zhí)行中斷程序,TA程序無法有效利用CPU資源,造成干擾,增加了服務(wù)執(zhí)行時(shí)間的不確定性。

        但與此同時(shí),為了安全性的考慮,在TEE執(zhí)行TA程序時(shí),只是在當(dāng)前CPU核執(zhí)行,不允許核間調(diào)度。而當(dāng)前CPU執(zhí)行都是面向多進(jìn)程多任務(wù)的,在執(zhí)行過程中如果屏蔽來自REE的中斷請(qǐng)求,對(duì)于大計(jì)算量服務(wù),長時(shí)間占用CPU資源,執(zhí)行TA程序,也會(huì)面臨REE程序長時(shí)間等待而“餓死”的情況。因此,應(yīng)該合理配置中斷響應(yīng)方式,滿足多種程序需求。

        (3)注冊(cè)銷毀共享內(nèi)存對(duì)程序的影響。

        出于安全性的考慮,在TrustZone中TEE可以訪問REE中的資源,而REE不能訪問TEE中的資源。注冊(cè)和銷毀共享內(nèi)存都是CA在調(diào)用REE中的相應(yīng)接口,在TEE中的執(zhí)行分配和回收,注冊(cè)和銷毀共享內(nèi)存會(huì)引起世界切換。尤其對(duì)于需要頻繁多次調(diào)用TEE服務(wù)的應(yīng)用程序,多次頻繁注冊(cè)和銷毀共享內(nèi)存,勢(shì)必引起較多冗余的世界切換等過程,造成程序性能的下降,可以通過共享內(nèi)存復(fù)用,減少冗余的注冊(cè)和銷毀共享內(nèi)存調(diào)用次數(shù),有效緩解該問題。

        但也應(yīng)該考慮,對(duì)于只需臨時(shí)調(diào)用執(zhí)行TA服務(wù),和較長時(shí)間范圍內(nèi)單次調(diào)用執(zhí)行TA服務(wù)的應(yīng)用程序,如果內(nèi)存復(fù)用,該程序長時(shí)間占用共享內(nèi)存資源,會(huì)造成其他程序無法得到有效資源。因此,需要結(jié)合程序調(diào)用過程的需求,采用靈活的共享內(nèi)存分配策略。

        (4)數(shù)據(jù)交換帶來的性能開銷。

        2個(gè)世界之間的數(shù)據(jù)交換依靠數(shù)據(jù)鏈路完成,而數(shù)據(jù)鏈路是以共享內(nèi)存為載體。以CA向TA傳遞數(shù)據(jù)為例,會(huì)經(jīng)歷以下過程:從REE系統(tǒng)中讀取原始數(shù)據(jù)至CA程序數(shù)據(jù)區(qū);在CA調(diào)用執(zhí)行TA時(shí),會(huì)將原始數(shù)據(jù)從CA程序數(shù)據(jù)區(qū)拷貝到共享內(nèi)存,之后通過Monitor模式切換到TEE,調(diào)用執(zhí)行TA程序,TA執(zhí)行完畢后又會(huì)將結(jié)果數(shù)據(jù)拷貝到共享內(nèi)存,再通過Monitor模式切換回REE繼續(xù)執(zhí)行CA程序,最后CA程序?qū)墓蚕韮?nèi)存中拷貝將結(jié)果數(shù)據(jù)至CA程序數(shù)據(jù)區(qū),完成整個(gè)數(shù)據(jù)的傳遞。

        傳遞數(shù)據(jù)過程中會(huì)面臨多次數(shù)據(jù)拷貝,內(nèi)存數(shù)據(jù)拷貝的過程必然帶來額外的程序開銷,且拷貝數(shù)據(jù)量越大程序開銷越多,程序執(zhí)行效率越低。

        4 TrustZone安全應(yīng)用性能優(yōu)化設(shè)計(jì)

        針對(duì)上述問題分析,本文認(rèn)為基于TrustZone 應(yīng)用程序調(diào)用過程應(yīng)符合4點(diǎn)原則:(1)盡可能減少世界切換次數(shù);(2)充分考慮中斷處理方式對(duì)程序運(yùn)行的影響;(3)合理分配共享內(nèi)存;(4)減少數(shù)據(jù)的內(nèi)存拷貝次數(shù)。根據(jù)上述原則,本文提出基于TrustZone應(yīng)用程序性能優(yōu)化方法,分別是:通過合理配置參數(shù),減少不必要的過程調(diào)用;配置靈活的中斷處理方式;優(yōu)化共享內(nèi)存分配方式;減少內(nèi)存拷貝。

        4.1 合理配置參數(shù),減少不必要的過程調(diào)用

        參數(shù)設(shè)置不合理,將引入不必要的狀態(tài)切換,或冗余過程調(diào)用和執(zhí)行,給程序性能帶來影響。在參數(shù)配置時(shí),應(yīng)盡可能減少調(diào)用次數(shù),從式(1)表示的程序調(diào)用執(zhí)行TA的次數(shù)看,主要從以下3方面減少調(diào)用次數(shù):(1)增加Mg的值,在需要傳遞的數(shù)據(jù)相同的情況下,申請(qǐng)共享內(nèi)存的大少增加,數(shù)據(jù)傳遞容量提高,則會(huì)相應(yīng)地減少調(diào)用次數(shù)。(2)應(yīng)申請(qǐng)與加密數(shù)據(jù)量等量的共享內(nèi)存,或是所需數(shù)據(jù)大小整數(shù)倍的共享內(nèi)存。即:

        M=n*Mg

        (8)

        這樣一方面減少了共享內(nèi)存空間的浪費(fèi),另一方面也減少了執(zhí)行冗余過程的時(shí)間。(3)盡可能減少其他環(huán)節(jié)調(diào)用次數(shù),可以考慮在注冊(cè)和銷毀共享內(nèi)存時(shí),只進(jìn)行一次注冊(cè)和銷毀,則式(7)中總時(shí)延中CA調(diào)用執(zhí)行TA的時(shí)間Tc不變,2次注冊(cè)共享內(nèi)存時(shí)間Ts1和Ts2變成1次注冊(cè)共享內(nèi)存時(shí)間Ts,2次銷毀共享內(nèi)存時(shí)間Tx1和Tx2,變成1次銷毀共享內(nèi)存時(shí)間Tx,減少了調(diào)用執(zhí)行次數(shù),提升了程序執(zhí)行效率,即總執(zhí)行時(shí)間為:

        T=n*(Ts+Tc+Tx)

        (9)

        4.2 配置靈活的中斷處理方式

        通過問題分析,響應(yīng)中斷請(qǐng)求給程序帶來性能降低和執(zhí)行過程的不確定性,而執(zhí)行TA時(shí)屏蔽中斷也面臨在REE中其他應(yīng)用程序面臨過長等待而“餓死”的情況。本文采用靈活的處理方式來應(yīng)對(duì)不同應(yīng)用程序需求。具體包括如下2種中斷響應(yīng)執(zhí)行方式:

        執(zhí)行方式1:CPU在進(jìn)入TEE系統(tǒng)并加載安全應(yīng)用程序TA線程之前屏蔽來自REE的中斷請(qǐng)求,在開始執(zhí)行安全應(yīng)用程序TA后打開來自REE系統(tǒng)的中斷請(qǐng)求。對(duì)于來自REE系統(tǒng)的中斷請(qǐng)求,CPU暫停執(zhí)行安全應(yīng)用程序TA,將運(yùn)行該安全應(yīng)用程序TA的線程狀態(tài)和TEE系統(tǒng)狀態(tài)進(jìn)行保存,切換到REE系統(tǒng)執(zhí)行中斷請(qǐng)求的響應(yīng),且在執(zhí)行完畢后,重新恢復(fù)TEE系統(tǒng)狀態(tài),加載保存的安全應(yīng)用程序TA線程繼續(xù)運(yùn)行安全應(yīng)用程序TA,待所有安全應(yīng)用程序TA執(zhí)行完畢后,切換至REE系統(tǒng),返回執(zhí)行用戶態(tài)下的普通應(yīng)用程序CA。這種方式對(duì)于TA執(zhí)行過程沒有優(yōu)化,但對(duì)于長時(shí)間執(zhí)行,優(yōu)先級(jí)不高的TA程序,執(zhí)行過程中考慮了REE端應(yīng)用程序的CPU需求,避免了發(fā)生REE程序“餓死”的情況。

        執(zhí)行方式2:CPU在調(diào)用安全應(yīng)用程序TA的整個(gè)過程中,屏蔽來自REE的中斷請(qǐng)求,直至TA執(zhí)行完畢后,切換至REE系統(tǒng),返回執(zhí)行用戶態(tài)下的普通應(yīng)用程序CA,普通應(yīng)用程序CA從共享內(nèi)存中讀取安全應(yīng)用程序TA返回的執(zhí)行結(jié)果。即在TA執(zhí)行過程中去掉響應(yīng)中斷的時(shí)間,提高了程序執(zhí)行效率。該執(zhí)行方式比較適用短時(shí)間執(zhí)行、高優(yōu)先級(jí)的TA程序,如式(10)所示:

        Tc=tq3+ta

        (10)

        4.3 優(yōu)化共享內(nèi)存分配方式

        通過上述問題分析,頻繁調(diào)用TA的應(yīng)用程序,共享內(nèi)存分配和銷毀面臨重復(fù)冗余的世界切換和數(shù)據(jù)拷貝等問題,而不頻繁調(diào)用TA的應(yīng)用程序,又不希望長時(shí)間占用共享內(nèi)存資源,因此可以使用2種共享內(nèi)存分配、回收方式,即一次一用和一次多用。

        一次一用是在普通應(yīng)用程序CA調(diào)用安全應(yīng)用程序TA服務(wù)時(shí),不提前分配共享內(nèi)存,由系統(tǒng)按照程序需求注冊(cè)分配共享內(nèi)存,在執(zhí)行完安全應(yīng)用程序TA后,系統(tǒng)自動(dòng)將結(jié)果數(shù)據(jù)從共享內(nèi)存中拷貝到普通應(yīng)用程序CA數(shù)據(jù)區(qū)中,之后自動(dòng)銷毀該共享內(nèi)存。這種方式減少了普通應(yīng)用程序CA的代碼量,用戶不需要過多關(guān)注共享內(nèi)存的分配和回收,避免了長時(shí)間占用共享內(nèi)存資源的情況,對(duì)于不需要多次調(diào)用安全應(yīng)用程序TA的情況比較有效。

        一次多用方式是在調(diào)用安全應(yīng)用程序TA之前,用戶根據(jù)安全應(yīng)用程序TA需要,提前注冊(cè)共享內(nèi)存,在執(zhí)行完安全應(yīng)用程序TA后,用戶自行選擇是否銷毀該共享內(nèi)存。這種方式減少了調(diào)用多次安全應(yīng)用程序TA中重復(fù)注冊(cè)分配和銷毀共享內(nèi)存的情況,也減少了共享內(nèi)存中數(shù)據(jù)多次拷貝的情況,尤其適合在一個(gè)普通應(yīng)用程序CA中,需要多次重復(fù)調(diào)用安全應(yīng)用程序TA和大數(shù)據(jù)量處理的情況。一次多用內(nèi)存分配使2次調(diào)用之間存在信息泄露的可能,因此會(huì)導(dǎo)致安全性降低。為了保證共享內(nèi)存中數(shù)據(jù)的安全性,在共享內(nèi)存分配和回收的整個(gè)過程中,增加了鎖機(jī)制,在銷毀該共享內(nèi)存前,為調(diào)用TEE和訪問共享內(nèi)存上鎖,使得其他程序無法調(diào)用TEE程序,也無法訪問該共享內(nèi)存,保證了數(shù)據(jù)的私密性和安全性。由式(11)可以說明:

        T=Ts+n*Tc+Tx

        (11)

        4.4 減少內(nèi)存拷貝

        通過問題分析,數(shù)據(jù)通過共享內(nèi)存相互傳遞時(shí),面臨多次數(shù)據(jù)拷貝的情況。通過改進(jìn)調(diào)用過程,將數(shù)據(jù)傳遞改為指針傳遞來提升程序性能。具體來說,在CA注冊(cè)分配共享內(nèi)存后,將原始數(shù)據(jù)直接讀取到共享內(nèi)存,在調(diào)用執(zhí)行TA傳遞參數(shù)時(shí),只傳遞共享內(nèi)存中數(shù)據(jù)塊的指針,在TEE中執(zhí)行加密過程時(shí),直接從共享內(nèi)存中讀取數(shù)據(jù),加密后也將結(jié)果數(shù)據(jù)直接放入共享內(nèi)存中,減少了內(nèi)存數(shù)據(jù)拷貝次數(shù),提升了程序執(zhí)行效率,即將tc1、tc2、tc3和tc4改為一次tc。

        5 實(shí)驗(yàn)驗(yàn)證

        實(shí)驗(yàn)環(huán)境:使用Hikey960開發(fā)板,4核Cortex A73 加 4核Cortex A53處理器,4 GB內(nèi)存,Linux內(nèi)核為4.13.0版本,OP-TEE為3.3.0版本,配置REE和TEE共享內(nèi)存大小為2 MB。主機(jī)使用Ubuntu16.04系統(tǒng),對(duì)測(cè)試過程進(jìn)行記錄和整理。測(cè)試是在實(shí)際Hikey960開發(fā)板中燒錄OP-TEE開源項(xiàng)目,考慮到基于TrustZone的應(yīng)用程序很多,例如身份驗(yàn)證、電子支付等,但運(yùn)行機(jī)制大致相同,本次針對(duì)的問題是TrustZone應(yīng)用程序調(diào)用過程的優(yōu)化,選取其中一種應(yīng)用程序即可說明問題,同時(shí)AES加密程序方便控制數(shù)據(jù)量大小,因此本文在OP-TEE中實(shí)現(xiàn)了AES加密程序,通過對(duì)AES加密程序中CA調(diào)用TA執(zhí)行加密過程中消耗CPU周期數(shù)進(jìn)行測(cè)試,驗(yàn)證問題分析的正確性和改進(jìn)方法的有效性。AES加密過程用C語言編寫,程序共分為TA和CA 2部分,其中TA在TEE中運(yùn)行,為實(shí)際加密過程,CA在REE中運(yùn)行,包含對(duì)TA的調(diào)用接口。借助CPU性能監(jiān)控單元PMU(Performance Monitor Unit)對(duì)AES調(diào)用執(zhí)行過程中消耗的CPU周期數(shù)進(jìn)行詳細(xì)測(cè)試,為了對(duì)調(diào)用過程進(jìn)行準(zhǔn)確的對(duì)比分析,將實(shí)驗(yàn)配置為2組:

        實(shí)驗(yàn)1分別設(shè)置從1 KB~1 MB,步進(jìn)為10 KB的共享內(nèi)存大小,TA程序?qū)Ψ峙涞恼麄€(gè)共享內(nèi)存進(jìn)行加密,按上述運(yùn)行過程分段測(cè)試CPU運(yùn)行周期數(shù),目的是通過測(cè)試在不同共享內(nèi)存大小情況下,加密過程中各個(gè)階段所消耗的CPU周期數(shù),了解調(diào)用過程的性能瓶頸。

        實(shí)驗(yàn)2分別設(shè)置從1 KB~1 MB,步進(jìn)為10 KB的共享內(nèi)存大小,統(tǒng)一加密2 012 KB的數(shù)據(jù),則設(shè)置最大1 MB的共享內(nèi)存,也需要調(diào)用執(zhí)行2次加密過程,通過測(cè)試總的執(zhí)行加密過程的時(shí)間,了解設(shè)置不同共享內(nèi)存大小對(duì)加密過程的影響。

        每組實(shí)驗(yàn)每個(gè)參數(shù)下執(zhí)行20次,取總CPU執(zhí)行周期數(shù)最小值為有效值。

        5.1 參數(shù)設(shè)置對(duì)加密過程的影響

        參數(shù)配置主要指分配的共享內(nèi)存大小,因?yàn)楣蚕韮?nèi)存大小直接關(guān)系到程序調(diào)用次數(shù)。參數(shù)設(shè)置不合理會(huì)引起過多世界切換和其他冗余執(zhí)行過程,對(duì)程序性能產(chǎn)生較大影響。

        通過實(shí)驗(yàn)1的分段測(cè)試,了解一次調(diào)用過程中REE用戶態(tài)調(diào)用REE端TEE命令接口到TEE用戶態(tài)執(zhí)行加密過程、加密結(jié)束后返回至REE用戶態(tài)和整個(gè)加密過程所消耗CPU周期數(shù)及其占總執(zhí)行過程的比重。從圖3中可以看出,從REE用戶態(tài)切換至TEE用戶態(tài)所消耗的CPU周期數(shù)約為50 000~90 000,從TEE用戶態(tài)切換至REE用戶態(tài)所消耗CPU的周期數(shù)約為16 000~40 000,且兩者隨著分配共享內(nèi)存大小不同,呈現(xiàn)緩慢上升趨勢(shì)。而圖4說明,在分配不同共享內(nèi)存大小時(shí),對(duì)分配的共享內(nèi)存進(jìn)行加密,在開頭設(shè)置共享內(nèi)存1 KB情況下,REE用戶態(tài)向TEE用戶態(tài)切換所消耗的CPU周期數(shù)占整個(gè)加密執(zhí)行過程的35%,TEE用戶態(tài)向REE用戶態(tài)切換所消耗的CPU周期數(shù)占整個(gè)加密執(zhí)行過程的14%,之后兩者比重都呈現(xiàn)指數(shù)式下降,最后比重越來越小。因此可以看出,世界切換消耗較多CPU周期數(shù),在整個(gè)執(zhí)行過程占據(jù)較大比重,尤其在共享內(nèi)存設(shè)置較小,需要頻繁進(jìn)行世界切換情況下,對(duì)程序影響較大。

        Figure 3 CPU cycles consumed in world switchs under different shared memory sizes圖3 不同共享內(nèi)存大小下世界切換消耗CPU周期數(shù)

        Figure 4 World switch time ratio to the total execution time under different shared memory sizes圖4 不同共享內(nèi)存大小下世界切換占總執(zhí)行時(shí)間百分比

        通過實(shí)驗(yàn)2,測(cè)試在不同共享內(nèi)存設(shè)置下,加密固定數(shù)據(jù)量,參數(shù)設(shè)置對(duì)總的執(zhí)行過程的影響。從圖5中可以看出,隨共享內(nèi)存大小設(shè)置不同,總的消耗CPU周期數(shù)存在波動(dòng)。以典型的標(biāo)記的位置為例進(jìn)行說明,對(duì)于加密2 012 KB數(shù)據(jù),當(dāng)設(shè)置共享內(nèi)存大小為1 001 KB時(shí),需要調(diào)用執(zhí)行3次加密過程,而設(shè)置1 011 KB時(shí),則只需要調(diào)用執(zhí)行2次加密過程。后者因?yàn)闇p少了調(diào)用執(zhí)行次數(shù),性能提高了31%。

        Figure 5 CPU cycles consumed in 2 012 KB data encrypting operation under different shared memory sizes圖5 不同共享內(nèi)存大小下加密2 012 KB數(shù)據(jù)消耗的CPU周期數(shù)

        因此,合理設(shè)置參數(shù)可以減少不必要的世界切換和其他冗余執(zhí)行過程,是提升程序執(zhí)行效率的有效途徑。

        5.2 中斷配置對(duì)加密過程的影響

        從實(shí)驗(yàn)中發(fā)現(xiàn),在分配不同共享內(nèi)存大小情況下,執(zhí)行外部中斷顯著增加了程序運(yùn)行時(shí)間,造成程序調(diào)用過程消耗CPU周期數(shù)波動(dòng)性較大,因此響應(yīng)中斷會(huì)給程序執(zhí)行帶來不確定性。本文選取并比較其中具有代表性的共享內(nèi)存為21 KB時(shí),對(duì)20次調(diào)用執(zhí)行加密過程進(jìn)行分析

        從圖6中可以看出,在20次調(diào)用執(zhí)行過程中,除第3次調(diào)用執(zhí)行外,其他19次調(diào)用過程消耗的CPU周期數(shù)都在一個(gè)較小范圍內(nèi)波動(dòng),而第3次執(zhí)行CPU的周期數(shù)明顯較多,相比其他19次調(diào)用過程消耗的CPU周期數(shù)增加了60%以上,這是因?yàn)檫@次執(zhí)行過程中,REE中程序觸發(fā)中斷請(qǐng)求,導(dǎo)致程序返回REE時(shí)執(zhí)行中斷響應(yīng),消耗了更多CPU周期數(shù)??梢钥闯?,中斷響應(yīng)對(duì)程序執(zhí)行造成很大不確定性,會(huì)出現(xiàn)響應(yīng)中斷時(shí)間占據(jù)較大執(zhí)行時(shí)間的情況,對(duì)調(diào)用執(zhí)行過程有較大影響。

        通過實(shí)驗(yàn)2對(duì)屏蔽中斷后的程序加密2 012 KB數(shù)據(jù)進(jìn)行了測(cè)試,分別測(cè)試全程屏蔽中斷和在TA正常執(zhí)行后不屏蔽中斷2種情形。從圖7中可以看出,屏蔽中斷可以帶來2%~4.5%的性能提升,在加密數(shù)據(jù)量變大時(shí),屏蔽中斷帶來的性能提升維持在2.4%左右。

        Figure 6 CPU cycles consumed in data encrypting operation under 21 KB shared memory size 圖6 共享內(nèi)存為21 KB時(shí)加密過程消耗的CPU周期數(shù)

        Figure 7 Performance improvement by interrupt mask under different shared memory sizes圖7 不同共享內(nèi)存大小下屏蔽中斷帶來的性能提升

        5.3 共享內(nèi)存分配方式對(duì)執(zhí)行過程的影響

        從圖8中可以看出,注冊(cè)和銷毀共享內(nèi)存所消耗的CPU周期數(shù)隨共享內(nèi)存大小增長而快速增長,從剛開始的400左右增長至100 000左右。而從圖9中可以看出,注冊(cè)和銷毀共享內(nèi)存所占整個(gè)執(zhí)行過程的比重從初期的27%指數(shù)式下降至9%左右,之后穩(wěn)定在9%左右。

        Figure 8 CPU cycles consumed by registering and destroying under different shared memory sizes圖8 不同共享內(nèi)存大小下注冊(cè)、銷毀共享內(nèi)存消耗的CPU周期數(shù)

        通過分析可以得出,注冊(cè)和銷毀共享內(nèi)存一方面增加了世界切換次數(shù),另一方面增加了數(shù)據(jù)內(nèi)存拷貝,在整個(gè)執(zhí)行過程中占有較大比重。對(duì)于需要重復(fù)執(zhí)行注冊(cè)和銷毀共享內(nèi)存的應(yīng)用程序,則面臨更大性能冗余考驗(yàn)。

        Figure 9 Registering and destroying time ratio to the total execution time under different shared memory sizes圖9 不同共享內(nèi)存大小下注冊(cè)、銷毀共享內(nèi)存占總執(zhí)行時(shí)間百分比

        通過實(shí)驗(yàn)2測(cè)試了復(fù)用共享內(nèi)存對(duì)程序性能的影響。從圖10中可以看出,對(duì)于加密2 012 KB數(shù)據(jù),復(fù)用共享內(nèi)存調(diào)用次數(shù)較多,共享內(nèi)存設(shè)置為1 KB的情況下,性能提升比較明顯,達(dá)到37%,之后也能維持在6%左右。

        Figure 10 Performance improvement by reusing under different shared memory sizes圖10 不同共享內(nèi)存大小下內(nèi)存復(fù)用帶來的性能提升

        5.4 內(nèi)存拷貝對(duì)執(zhí)行過程的影響

        注冊(cè)和銷毀共享內(nèi)存過程中面臨冗余的內(nèi)存數(shù)據(jù)拷貝問題,通過實(shí)驗(yàn)2對(duì)減少內(nèi)存拷貝進(jìn)行了性能測(cè)試。從圖11可知,在分配不同共享內(nèi)存大小時(shí),加密2 012 KB數(shù)據(jù),減少了內(nèi)存拷貝次數(shù),共享內(nèi)存設(shè)置為1 KB時(shí),性能提升比較明顯,達(dá)到39%,之后也可以維持在8%左右。因此,減少內(nèi)存拷貝是提升性能的有效途徑之一。

        Figure 11 Performance improvement by reducing memory copy under different shared memory sizes圖11 不同共享內(nèi)存大小下減少內(nèi)存拷貝帶來的性能提升

        6 結(jié)束語

        TrustZone技術(shù)是一種廣泛使用的技術(shù),可為智能設(shè)備提供受信任的執(zhí)行環(huán)境。而受信任的執(zhí)行環(huán)境為應(yīng)用程序的安全性提供了保證,但同時(shí)也帶來了性能降低的負(fù)面影響。本文通過對(duì)程序調(diào)用執(zhí)行過程的詳細(xì)分析,將執(zhí)行過程中影響程序執(zhí)行性能的關(guān)注點(diǎn)聚焦到世界切換、中斷響應(yīng)、注冊(cè)銷毀共享內(nèi)存和數(shù)據(jù)拷貝4個(gè)方面?;谙嚓P(guān)的問題的分析,有針對(duì)性地提出了程序效率提升方法,分別是合理配置參數(shù)、靈活配置中斷處理方式、優(yōu)化共享內(nèi)存分配方式和減少內(nèi)存數(shù)據(jù)拷貝。并在Hikey960實(shí)際開發(fā)板上搭建開源OP-TEE項(xiàng)目,創(chuàng)建了基于TrustZone技術(shù)的AES加密程序,利用CPU性能監(jiān)控單元,對(duì)加密過程中所消耗的周期數(shù)進(jìn)行精細(xì)測(cè)試,并對(duì)優(yōu)化方法進(jìn)行了實(shí)現(xiàn)和測(cè)試,定位到TrustZone安全服務(wù)調(diào)用過程中的性能瓶頸并驗(yàn)證了優(yōu)化方法的有效性。后續(xù)會(huì)重點(diǎn)關(guān)注TrustZone技術(shù)通信過程中的安全性問題。

        猜你喜歡
        共享內(nèi)存拷貝調(diào)用
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        通過QT實(shí)現(xiàn)進(jìn)程間的通信
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        中國生殖健康(2018年1期)2018-11-06 07:14:38
        基于PCI總線的多處理器協(xié)同機(jī)制研究
        基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
        QNX下PEX8311多路實(shí)時(shí)數(shù)據(jù)采集的驅(qū)動(dòng)設(shè)計(jì)
        電子世界(2014年21期)2014-04-29 06:41:36
        一種高效RTAI 共享內(nèi)存管理層的研究與實(shí)現(xiàn)*
        利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
        文件拷貝誰最“給力”
        日韩精品久久久肉伦网站| 国产黄色一区二区三区av| 午夜免费观看日韩一级视频| 国产精品99久久久久久猫咪| 玩弄放荡人妻一区二区三区| 午夜无码国产18禁| 美腿丝袜在线观看视频| 欧美日韩精品久久久久| 无套内谢孕妇毛片免费看看| 超碰性爱| 国产不卡视频在线观看| 久久久久久久97| 中国一级免费毛片| 色婷婷精品国产一区二区三区| 亚洲精品中文字幕一二三区| 欧美大屁股xxxx| 国产福利片无码区在线观看| 少妇人妻在线伊人春色| 日本一本免费一二区| 依依成人精品视频在线观看| 毛片在线啊啊| 国产亚洲中文字幕一区| 亚洲av无码精品国产成人| 成人区人妻精品一区二区不卡网站| 人妻少妇久久精品一区二区 | 人妻少妇精品视频专区vr| 国产美女在线精品免费观看| 亚洲国产A∨无码影院| 久久精品国产亚洲av沈先生| 国产精品永久在线观看| 蜜桃av噜噜一区二区三区| 欧美亚洲日韩国产人成在线播放| 日本一区二区三区四区高清不卡| 又大又粗又爽18禁免费看| 亚洲A∨无码国产精品久久网| 综合久久一区二区三区| 久久精品国产亚洲av久| 乱码一二三入区口| 91蜜桃国产成人精品区在线 | 欧美xxxx做受欧美| 欧美日韩性视频|