TW201544955A - 用於對安全區域的呼叫之物件導向封送處理方案 - Google Patents
用於對安全區域的呼叫之物件導向封送處理方案 Download PDFInfo
- Publication number
- TW201544955A TW201544955A TW104103471A TW104103471A TW201544955A TW 201544955 A TW201544955 A TW 201544955A TW 104103471 A TW104103471 A TW 104103471A TW 104103471 A TW104103471 A TW 104103471A TW 201544955 A TW201544955 A TW 201544955A
- Authority
- TW
- Taiwan
- Prior art keywords
- bridge
- proxy server
- independent
- code
- area
- Prior art date
Links
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/60—Protecting data
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
Abstract
本發明揭示一種系統,且其包括一處理器以在一主機應用程式之運行時間自動地執行該主機應用程式內之獨立區域初始化程式碼。該獨立區域初始化程式碼包括封送處理程式碼以建立與該主機應用程式分開的一安全獨立區域。該封送處理程式碼係在該主機應用程式之建置時間產生。該系統亦包括一動態隨機存取記憶體(DRAM),其包括一專用DRAM部分以儲存該安全獨立區域。本發明描述且主張其他實施例。
Description
諸實施例係關於用於對安全區域的呼叫之物件導向封送處理。
建立安全獨立區域(secure enclave,SE)係為處理機密資料的應用提供安全且隔離的執行環境(獨立區域)之技術。獨立區域歸因於其隔離而不可單獨地為完整應用程式,此係由於其不可直接地存取任何系統應用程式設計介面(API)。替代地,為了利用SE技術,通常將應用程式進行分割,機密資料處理邏輯代管於獨立區域內,而非機密資料處理邏輯代管於獨立區域外。
行動作業系統之出現隨之帶來如何使SE技術可用於在開發人員中風行的物件導向規劃(OOP)語言(例如,Java®)中的問題。
依據本發明之一實施例,係特地提出一種系統,其包含:一處理器,其在一主機應用程式之運行時間自動
地執行該主機應用程式內之獨立區域初始化程式碼,其中該獨立區域初始化程式碼包括封送處理程式碼以建立與該主機應用程式分開的一安全獨立區域,該封送處理程式碼係在該主機應用程式之建置時間產生;以及一動態隨機存取記憶體(DRAM),其包括一專用DRAM部分以儲存該安全獨立區域。
100、500、700‧‧‧系統
110、220、310、410、510‧‧‧應用程式
112‧‧‧獨立區域建立者
114、134、318、342、412、414、432、452、512、516、544、566‧‧‧頻道
116‧‧‧暫存器
118、314、352、416、418、542、546‧‧‧代理伺服器
122‧‧‧點線
130、240、340、430、450‧‧‧獨立區域
132‧‧‧啟動類別
136‧‧‧根物件
138‧‧‧陣列
140、344、436、456、514、564‧‧‧橋接器
210‧‧‧編譯器邏輯
222‧‧‧源程式碼
224‧‧‧獨立區域包裝函式類別
226‧‧‧代理伺服器類別
242‧‧‧類別
244‧‧‧橋接器類別
250‧‧‧注解處理器
300‧‧‧系統
312‧‧‧Someclass方法
316‧‧‧介面A
320‧‧‧物件
322‧‧‧物件A
326‧‧‧橋接器2
346‧‧‧獨立區域物件
350‧‧‧物件複本A
420、548‧‧‧緊急呼叫者
434、454‧‧‧類別物件
530‧‧‧第一獨立區域
560‧‧‧第二獨立區域
562‧‧‧物件
600‧‧‧方法
602~620‧‧‧區塊
710‧‧‧應用處理器
715‧‧‧系統記憶體
718、833、835‧‧‧獨立區域頁快取記憶體
720‧‧‧輸入/輸出系統
725‧‧‧可再充電電源供應器
730‧‧‧基頻處理器
740‧‧‧收發器
750‧‧‧天線
760‧‧‧整合式感測器集線器
770‧‧‧感測器
800‧‧‧多處理器系統
814‧‧‧輸入/輸出(I/O)裝置
816‧‧‧第一匯流排
818‧‧‧匯流排橋接器
820‧‧‧第二匯流排
822‧‧‧鍵盤/滑鼠
824‧‧‧音訊輸入/輸出
826‧‧‧通訊裝置
828‧‧‧資料儲存單元
830‧‧‧程式碼
832、834‧‧‧記憶體
838‧‧‧高效能圖形引擎
839、862‧‧‧P-P互連體
850‧‧‧點對點互連體
870、880‧‧‧處理器
872、882‧‧‧記憶體控制器集線器
874a、874b‧‧‧處理器核心
876、878‧‧‧點對點(P-P)介面
884‧‧‧P-P互連體
884a、884b‧‧‧處理器核心
886、888、894、898‧‧‧P-P介面
890‧‧‧晶片組
892、896‧‧‧介面
圖1為根據本發明之一實施例之用於存取安全資料的系統之方塊圖。
圖2為根據本發明之另一實施例之調用注解處理器的系統之方塊圖。
圖3為根據本發明之一實施例之用於資料及介面封送處理的系統之方塊圖。
圖4為根據本發明之一實施例之包括兩個由單一應用程式代管之獨立區域的系統之方塊圖。
圖5為根據本發明之一實施例之包括可堆疊頻道組態的系統之方塊圖。
圖6為根據本發明之實施例之用於實例化應用程式與獨立區域之間的介面的方法之流程圖。
圖7為根據本發明之另一實施例之系統的方塊圖。
圖8為根據本發明之另一實施例之系統的方塊圖。
提議介面定義語言(IDL)在實例化可與非安全主機應用程式通訊之一或多個安全獨立區域時支援OOP語言,例如java®及其他OOP語言。IDL意欲最小化軟體廠商的現有程式碼之改變,且利用相對簡單的實施(例如,邏輯上簡單且程式碼大小係小的)具有低潛時/高效能特性。額外優勢為IDL允許產生黏合程式碼以將安全類別(例如,待於獨立區域中代管的類別)拼接至應用程式之其他部分,以實現與不具SE功能的平台之相容性。安全類別至應用程式之其他部分的拼接可使軟體廠商(SV)免於針對不同平台維護其應用程式之多個版本。此外,在一些實施例中,不存在使用者可見介面,且因此使用者程式碼可有效地自基礎封送處理/輸送及其相關聯程式碼去耦。
根據本發明之實施例,可產生且靜態地調用封送處理程式碼。靜態地產生及調用封送處理程式碼之優勢可包括與其他寫碼技術相比之減小的靜態封送處理程式碼潛時、與在遠端位點動態地建立物件相比之減小的引起在遠端位點的非預期程式碼執行的惡意用戶端攻擊機會、與其他寫碼方法相比之減小的靜態封送處理程式碼大小,及製得可進行封送處理(「可封送處理」)的遠端介面之下階(descendent)的能力。本發明之實施例支援介面繼承。
根物件及根介面之概念引入至IDL中,其允許藉由主機應用程式(例如,用戶端)在例如記憶體之專用部分中建立(例如,被動地)獨立區域(本文中亦稱為「伺服器」,例
如,記憶體之安全部分)。另外,「包裝函式」類別可由注解處理器自動地產生(例如,注解處理器可由編譯器調用)以略過封送處理,其可允許具SE功能的應用程式在不具SE功能的硬體上運行而不修改應用程式源程式碼。
在本發明之實施例中,獨立區域抽象為單一物件,例如公開對應介面(例如根介面)之根物件。根物件充當獨立區域之進入點。根物件連同根介面之代理伺服器/橋接器對可由獨立區域初始化程式碼例如在應用程式之運行時間自動地建立。取決於組態,根介面可直接傳遞至呼叫者而不實例化代理伺服器-橋接器對。包裝函式類別可實例化根物件,其實施根介面以使得SE應用程式能夠存取無代理伺服器/橋接器對的不具SE功能的硬體上之安全獨立區域。
一旦根物件被實例化,即可將更多物件/介面傳遞至/自獨立區域,例如,藉由作為任何方法之引數傳遞根介面之物件/介面,或藉由經由任何方法返回根介面之物件/介面。為了對介面進行封送處理(例如,允許呼叫者處於應用程式空間中且被呼叫者處於獨立區域空間中,或反之亦然),例如在注解處理器的建置時間建立封送處理程式碼。在一實施例中,注解處理器可為編譯器插入模組。
舉例而言,開發人員可使用源內注解指定待進行封送處理的介面,其可由注解處理器處理以產生用於所注解介面的代理伺服器/橋接器類別。代理伺服器為所注解介面之實施。代理伺服器可在每當呼叫一方法時封裝輸送參數。橋接器為代理伺服器之對應物。橋接器拆包自輸送層
接收的參數且調用所注解介面之實施。
代理伺服器/橋接器物件之建立/解構可由輸送層管理。輸送層可抽象為頻道介面。輸送層可負責傳遞資料封包並且負責使代理伺服器與橋接器匹配。頻道亦「可封送處理」,例如,頻道之不同實施可透明地堆疊。堆疊頻道可適用於獨立區域間程序呼叫。
本文中使用的技術包括以下各者:介面-包括實際方法但不包括資料成員之類別。
代理伺服器-實施對應介面之所產生類別。所有方法實施為「封送處理程式碼」,例如,用以將輸入參數封裝為將由橋接器「非封送處理(unmarshal)」的資料封包的程式碼。若方法具有返回值,則代理伺服器實施亦在返回至其呼叫者之前對返回值(已由橋接器進行封送處理)進行「非封送處理」。
橋接器-代理伺服器之對應物。橋接器拆包輸入參數、調用介面實施,且重新將返回值封送處理為資料封包。
根物件-在對獨立區域進行初始化時將實例化的物件。根物件實施至少一個可封送處理介面(例如,根介面),對於該至少一個可封送處理介面,代理伺服器及橋接器亦將藉由獨立區域初始化程式碼而實例化且配對。
根類別-根物件之資料類型
根介面-由根類別實施之可封送處理介面。其代理伺服器及橋接器藉由獨立區域初始化程式碼而實例化/配對。
頻道-傳送層抽象。頻道為實施頻道介面以使封包在代
理伺服器與橋接器之間移動的類別。頻道介面自身亦可封送處理,例如,可經由另一頻道建立頻道之代理伺服器。換言之,頻道可堆疊,其可適用於獨立區域間呼叫。
圖1為根據本發明之一實施例之用於存取安全資料的系統之方塊圖。系統100包括經由頻道114/134耦合之應用程式110及獨立區域130。在一實施例中,應用程式110為不受信任空間,且獨立區域130為受信任空間。
在一實施例中,獨立區域130抽象為實施根介面之根物件136(例如,藉由使與根介面相關聯的代理伺服器118向上轉型)。應用程式110在利用獨立區域130公開之任何能力之前實例化獨立區域130且建立用於根介面之代理伺服器118。在獨立區域的實例化期間,根物件136及其橋接器140兩者建立於獨立區域130內,以使得應用程式110可開始經由根介面與獨立區域130互動。
在操作中,應用程式110藉由呼叫獨立區域建立者112來產生獨立區域130。獨立區域建立者112為自動產生之函式(例如,在應用程式110之建置時間建立),其囊封指令以載入並初始化獨立區域130。獨立區域建立者112返回代理伺服器118,其為根介面之實施。
為了允許將多個獨立區域載入至相同應用程式內,每一獨立區域將具有唯一名稱。舉例而言,准許開發人員藉由字符串命名一獨立區域,自該字符串產生獨立區域建立者112及獨立區域影像檔案名稱兩者之名稱。在一實施例中(例如,對於一些語言,諸如java®),不准許獨立函
式,且因此獨立區域建立者112產生為具有單一靜態函式之類別。舉例而言,給出命名為SomeEnclave之獨立區域,獨立區域建立者112可為SomeEnclave_Creator.createEnclave( )。在其他實施例中(例如,其他語言,諸如C++),准許獨立函式。
獨立區域建立者112可載入並調用獨立區域130之初始化程式碼。舉例而言,在使用java®之實例中,啟動類別可藉由類別載入器初始化為獨立區域全域初始化之部分。點線122將獨立區域建立者112連接至啟動類別132。在使用C++之實例中,啟動類別132包括作為初始化過程之部分而調用其建構者的靜態物件。
在完成獨立區域130之初始化時,獨立區域建立者112實例化用於應用程式110之頻道物件114。頻道物件114例如藉由在資料成員中儲存例如由不受信任運行時間服務(uRTS)返回的獨立區域識別(EID)或其他獨立區域處置/識別符而記住其系結至之獨立區域。
頻道物件114可在暫存器116中維護可由獨立區域130參考之橋接器之清單。舉例而言,橋接器140可由如代理伺服器118中所見的對應識別符(例如,對於橋接器140,識別符可為1)參考。識別符參考儲存在頻道134之陣列138中的橋接器140之位址。(在一實施例中,索引0(零)例如在新建立的頻道中保留為空(NULL)參考,且對應暫存器項目為空。)
獨立區域建立者112產生用於根介面之代理伺服
器118。代理伺服器118與獨立區域130中之橋接器140匹配。代理伺服器118之建立藉由在獨立區域側建立橋接器140而匹配。在完成應用程式側(例如,應用程式110)上的初始化時,代理伺服器118可在根介面返回至呼叫者之前使其向上轉型。應用程式110可接著呼叫根介面之方法以與獨立區域130互動。
在獨立區域側(例如,獨立區域130),獨立區域啟動類別132為自動產生的類別,其建立三個物件:頻道物件134、根物件136,及橋接器140。
調用啟動類別132之方式取決於受信任運行時間服務(tRTS)實施。為了允許自動產生的程式碼建立根物件136之執行個體,根類別可具有預設建構者。
類似於應用程式110中之頻道物件114,獨立區域130亦維護初始化為空之橋接器陣列138。接著建立用於根物件136之橋接器140。橋接器140維護對基礎頻道物件134之參考,該參考將用以在返回值時對介面進行封送處理。橋接器140參考於頻道之橋接器陣列138中。橋接器140(在陣列138中)之識別符將與應用程式110所採用(例如,在代理伺服器118中)的識別符相同。在圖1中展示的實例中,識別符1指派至橋接器140,以使得橋接器140由其對應代理伺服器118正確地參考。
在基礎硬體不支援安全獨立區域(SE)的情況下,獨立區域130可藉由經修改之獨立區域建立者嵌入至應用程式110中以直接實例化根類別。亦即,替代建立頻道物
件114及代理伺服器118,建立根物件136且使其向上轉型為根介面,且接著返回。此經修改之獨立區域建立者亦可藉由下文論述之注解處理器自動地產生。
典型遠端程序呼叫(RPC)平台包括用於定義介面之IDL文法、用以將介面定義編譯為語言特定定義之IDL編譯器,及封送處理程式碼。通常,實施介面之組件將使用IDL編譯器之輸出來將該組件系結至介面。
在本發明之實施例(例如,包括圖1之實施例)中,替代定義可用以在單獨檔案中定義介面之新文法,可在建置時間使用一組注解來例如直接地在java®源檔案中標記在遠端可存取之介面。接著,可將IDL編譯器實施為注解處理器,其可在每當編譯器遇到特定注解時由編譯器(例如,java®編譯器)調用。
在某些物件導向式語言(例如,java®)中,注解處理器可利用「鏡像」能力來分析類別並產生恰當封送處理程式碼。實施遠端可存取介面之類別不需要與封送處理程式碼互動。
下文呈現對用於判定給定類型之封送處理能力的方法之描述,隨後為如何產生及組織封送處理程式碼之描述,及注解及其目的之清單。
對於本發明之實施例,用於判定封送處理能力之規則包括以下規則:
1.所有基元資料類型(例如,整數、浮點,等)可封送處理。
2.若複合資料類型(亦即,陣列/結構)之所有分量可封送處理,則其可封送處理。若方法/函式之返回類型及其所有參數類型可封送處理,則認為其可封送處理。若介面之所有方法可封送處理,則該介面可封送處理。
可藉由根據以下類型遞歸地應用以上規則來產生封送處理程式碼:
1.基元類型具有固定大小,且因此可藉由取決於實施例而將一基元類型之值儲存在記憶體緩衝器、串流等中而實現對其之封送處理。
2.用於複合類型之封送處理程式碼為針對每一分量包括封送處理操作之有序清單的函式。封送處理函式可按其封送處理之類型來命名。在分量為複合類型時,用於該分量之封送處理操作可為對該分量類型之封送處理函式的呼叫。
3.用於方法/函式之封送處理程式碼可為與正進行封送處理之方法/函式具有相同簽名之封送處理函式。封送處理函式為用於其參數中之每一者的封送處理操作之清單,繼之以對真實函式之呼叫,及用於返回類型之非封送處理操作。注意,一類別內之實例方法亦可視為習知函式,其中第一參數為至另一變數(例如,標記為「此」之指標)的記憶體位址之參考(例如,指標)。通常,此指標為介面指標。
4.介面可封送處理為實施該介面之代理伺服器類別。
代理伺服器類別之每一方法可為用於該介面中之方法的封送處理程式碼。代理伺服器類別亦含有將該代
理伺服器系結至介面在遠端側上之實際實施的識別符。
本發明之實施例支援介面以及諸如陣列及結構之複合類型。本發明之實施例歸因於多型(polymorphism)而可能通常不支援類別,例如,所導出類別之執行個體可能被錯誤地封送處理為其上級類別,且不能在建置時間進行錯誤檢查。
本發明之一些實施例可應用至給定應用程式(例如,java®應用程式)之每一介面及類別以判定該給定介面/類別是否可封送處理,且以此方式產生封送處理程式碼。
在一些實施例中,注解用以觸發對開發人員所選之特定介面/類別之處理。注解可包括以下各者(請注意,注解之名稱僅用於演示目的,且注解之實際名稱/簽名可能實質上不同於下文列出者):
@Interface此注解將介面標記為可封送處理的且向注解處理器指示應針對該介面產生代理伺服器類別。對該介面之方法中的任一者之呼叫將進行封送處理且在遠端位點上進行。
@Structure(enforceFinalCheck=真||假)此注解將一類別標記為可封送處理資料結構且向注解處理器指示應針對此類別產生封送處理函式。對方法中的任一者之呼叫並不進行封送處理,且因此將在本端進行。(此注解並非必需的,此係因為注解過程在任何情況下皆產生用於出現於方法的原型中之所有類別的封送處理程式碼。)實務上,使用@Structure可避免封送處理程式碼之重複,且可簡化注解處
理器。此外,使用@Structure可防止含有機密資料之類別被錯誤地傳遞,此係因為在此情況下,開發人員明確地注解任何可封送處理類別。
為了避免多型引起的錯誤及混淆,在一實施例中,可宣稱經注解的類別為「最終類別」以消除子類別之任何可能性。另一實施例可接著藉由在每當由@Structure注解非最終類別時報告警告而非錯誤來根據開發人員的請求放鬆對最終性之宣稱。此類放鬆可由可選引數enforceFinalCheck來指定,該引數預設為真且可被開發人員超覆。
@Out此注解適用於方法之參數。經注解參數將具有由@Structure注解之類型,且向注解處理器指示可藉由被呼叫者更新經注解參數且經更新複本將在被封送處理後返回呼叫者。
@RootClass(RootInterface=「InterfaceName」)此注解指定根類別及其實施之根介面。此注解為指定用於一獨立區域之根類別及根介面的若干可能方式中的一者,且可(或不)經由注解進行。舉例而言,一實施例可選擇在連結器之命令行中指定根類別及根介面。
@SEClass(trusted=真|假)此注解不為介面定義之部分。而是,其用以促進錯誤檢查(例如,藉由諸如java®連結器之連結器)。在一實施例中,標記有「受信任=真」之類別應僅出現於獨立區域中,而標記有「受信任=假」的類別不出現於任何獨立區域中。
圖2為根據本發明之另一實施例的調用注解處理器之系統的方塊圖200。注解處理器250(例如,以軟體實施)可在編譯經注解之源程式碼222以產生物件程式碼時由編譯器邏輯210(本文中亦稱為「編譯器」)調用。經注解之源程式碼222可包括經注解介面(例如,SomeInterface)。編譯器邏輯210可以硬體、軟體、韌體或其組合來實施。
在編譯器210遇到注解(例如,任何注解,諸如@Interface)時,編譯器210可調用注解處理器250。注解處理器250可判定經注解介面之封送處理能力,且可產生封送處理程式碼。
在獨立區域240內部之類別242(例如,表示待完成之任務)可能已實施SomeInterface且希望將SomeInterface公開給主機應用程式220。因為SomeInterface之實施駐留於獨立區域中(儘管其用戶端駐留在(不受信任)應用程式220中),因此連結器(未圖示)可將代理伺服器類別226置於應用程式220中以對方法呼叫進行封送處理,且亦可將橋接器類別244置於獨立區域240中以對方法呼叫進行非封送處理。
獨立區域包裝函式類別224為用以略過封送處理/輸送層之一段黏合程式碼,且經包括以實現與不具SE功能的平台之相容性。在一些實施例中,僅針對根類別產生獨立區域包裝函式類別224。
代理伺服器(例如,代理伺服器類別226)可實施可封送處理介面,其允許呼叫者呼叫代理伺服器,如同呼叫者直接呼叫與該代理伺服器相關聯之物件一般。代理伺
服器方法對參數進行封送處理,且接著使用頻道來經由藉由channel/bridge ID對所識別的對應橋接器(例如,Someinterface橋接器類別244)在遠端調用方法,其中channel為對頻道物件之參考,且bridge ID為頻道特定的。
橋接器(例如,SomeInterface橋接器類別244)可將每一可封送處理介面橋接至實施該介面之實際類別及方法。每當經由頻道對新介面進行封送處理時,對應於特定代理伺服器之橋接器經實例化。橋接器可具有用於經封送處理介面中之每一方法的橋接器方法。
代理伺服器及橋接器可動態地建立/毀損,惟用於根介面之代理伺服器及橋接器除外,該代理伺服器及橋接器係建立為初始化序列之部分。通常,每一代理伺服器之生命週期可由廢棄項目收集器控制,且在代理伺服器被毀損時,頻道釋放對應橋接器。
在一實施例中,參考計數方案可用於橋接器上。亦即,每當對給定介面進行封送處理時,建立新的代理伺服器執行個體。然而,相同遠端物件之多個代理伺服器執行個體可共用相同的橋接器執行個體,其可經參考計數且將在所有代理伺服器執行個體毀損之後毀損。
在另一實施例中,可藉由頻道對代理伺服器進行追蹤及參考計數。在此實施例中,將無關於相同遠端物件經封送處理之次數而返回相同代理伺服器執行個體。注意,在此實施例中,頻道對代理伺服器之參考係「弱」的或代理伺服器將不進行廢棄項目收集,例如,頻道對代理
伺服器之參考將防止代理伺服器被進行廢棄項目收集。
因為代理伺服器類別與橋接器類別之間的一一對應,橋接器可具有如何對用於每一方法呼叫的參數進行非封送處理的先驗知識。因此,代理伺服器僅需要對參數中的資料而無需對其他資訊(例如,參數類型資訊)進行封送處理。僅對參數中的資料進行封送處理可導致低運行時間額外負荷。
代理伺服器及橋接器兩者可自使用者定義之介面定義及工具(例如,上述注解處理器)自動產生。所得程式碼可能夠對介面及複雜物件兩者進行封送處理,且使用者(例如,開發人員)可避免手動地寫入在代理伺服器及橋接器中提供的封送處理及非封送處理程式碼。
此外,每一介面之定義准許使用者在如何對參數進行封送處理方面的靈活性。舉例而言,使用者可定義介面,使得介面略過對不需要的物件成員的封送處理。
頻道可經實施以調用遠端方法、管理橋接器物件,且管理本端用戶端與遠端服務之間的傳送機構。應注意,在一些實施例中,遠端服務不需要在遠端處理中運行。實情為,遠端服務可為藉由諸如獨立區域之規劃構造隔離的本端實體。
可針對每一用戶端/伺服器介面來實例化頻道物件對。儘管每一用戶端/伺服器系結暗示用戶端上之主要代理伺服器(例如,用於根介面之代理伺服器)及伺服器(獨立區域)中之主要橋接器(例如,用於根物件之橋接器),但可
經由將參考傳遞至用戶端與伺服器之間的介面而建立其他代理伺服器/橋接器對。因此,介面可在任何方向上操作,例如,用戶端至伺服器(例如,應用程式至獨立區域)或伺服器至用戶端(例如,獨立區域至應用程式)。介面可包括頻道介面自身,因為至一個伺服器之頻道介面可封送處理至另一伺服器,從而建立可堆疊輸送層。
頻道類別使用傳送機構來在用戶端與伺服器之間通訊,其暗示對於每一類型之頻道在本端與遠端處理之間的頻道介面之唯一實施。傳送機構負責用戶端與伺服器之間的通訊且可為平台特定的。在一個實施例中,傳送層使用黏合程式碼(例如,C/C++黏合程式碼),其使用經由例如原生介面(例如,java®介面)存取之共用記憶體及直接呼叫機構。
在內部,在本端橋接器向頻道註冊時,頻道實施藉由維護對於本端橋接器之參考及建立用於每一本端橋接器之唯一識別符(ID)來追蹤任何經封送處理介面。此允許頻道將由遠端側傳遞之本端橋接器識別轉譯至相關聯橋接器物件及其在本端側上的相關聯真實物件。
圖3為根據本發明之一實施例之用於資料封送處理及/或介面封送處理之系統300的方塊圖。系統300包括應用程式310(例如,Android®應用程式)及作為遠端處理(例如與應用程式碼隔離)之獨立區域340(例如,以java®撰寫之安全獨立區域)。
系統300包括包括代理伺服器314之應用程式
310、頻道318/342及包括橋接器344之獨立區域340。系統300可准許資訊在應用程式至獨立區域之方向上流動,且亦准許在獨立區域至應用程式之相反方向上流動。
Someclass方法312為試圖經由介面A 316存取獨立區域物件346之呼叫者。代理伺服器314實例化(獨立區域)橋接器2 326且使橋接器2 326向頻道318註冊(例如,頻道318指派橋接器2 326之索引且將該索引返回至代理伺服器314)。介面A 316具有將(不受信任)物件320取為第一參數且將物件A 322取為第二參數之方法A1。物件A 322藉由@Structure注解。來自物件A 322之資料連同橋接器2 326之索引一起藉由代理伺服器314封裝至連續緩衝器中,例如,橋接器2 326為(不受信任)物件320之橋接器(例如,物件320可經由橋接器2 326存取)且經封裝資料遞送至頻道318,包括識別補充性橋接器344之索引(由代理伺服器314供應)。頻道342接收該經封裝資料且使用所提供之索引來定位獨立區域橋接器344。此外,獨立區域橋接器344被通知正使用方法A1。獨立區域橋接器344自所接收之經封裝資料建立物件複本A 350。獨立區域橋接器344調用獨立區域物件346之方法A1,且方法A1操作,物件複本A 350作為一參數且代理伺服器352作為另一參數。獨立區域橋接器344藉由將頻道342及與獨立區域橋接器2 326相關聯的索引提供至代理伺服器352之建構者而建立(實例化)代理伺服器352。
代理伺服器314封包兩條資訊,第一為物件A 322之內容,且第二為獨立區域橋接器2 326之識別符,例如,
識別儲存在頻道318內的陣列中之獨立區域橋接器2 326之位址。識別符可使得能夠在應用程式310中追蹤獨立區域物件346之資料處理進展。
代理伺服器314實例化獨立區域橋接器2 326且使獨立區域橋接器2 326之位址向頻道318註冊。代理伺服器314可將獨立區域橋接器2 326之識別符傳遞至獨立區域橋接器344。因此,獨立區域橋接器344接收儲存於物件A 322中之資料及與獨立區域橋接器2 326之位址相關聯的識別符。
獨立區域物件346實施介面A 316(例如,一組虛擬函式),呼叫者可呼叫介面A 316以監視獨立區域物件346對物件A之資料的處理。326之識別符連同對頻道342之參考用以實例化不受信任代理伺服器352。
獨立區域物件346可藉由呼叫代理伺服器352及提供百分比完成度(例如,來自封送處理緩衝器(未圖示))來將處理進展報告給代理伺服器352。代理伺服器352將接著發送兩條資料,例如,獨立區域橋接器2326之橋接器識別符及封送處理緩衝器之內容,例如正由獨立區域物件346執行之處理的百分比完成度。獨立區域橋接器2 326提取(非封送處理)該百分比,呼叫(不受信任)物件320,且提供經非封送處理之資料的內容(例如,正由獨立區域物件346執行之處理的百分比完成度)。
圖4為根據本發明之一實施例之包括兩個獨立區域之系統的方塊圖。獨立區域430及450可經由獨立區域載
入器載入,獨立區域載入器可在建置時間由例如注解處理器回應於源程式碼應用程式之源程式碼中的一或多個注解而產生。應用程式410與兩個遠端處理通訊。應用程式410具有至獨立區域430及獨立區域450之介面。對於獨立區域430、450中之每一者,存在在應用程式中實例化的對應頻道412、414以及在獨立區域430、450中之每一者中實例化的對應頻道432、452。獨立區域430包括類別物件434。代理伺服器416及橋接器436存在以代理伺服器至物件434之介面。獨立區域450包括類別物件454。代理伺服器418及橋接器類別456存在以代理伺服器至物件454之介面。一段程式碼(「緊急呼叫者(ecaller)」)420可藉由經由對應代理伺服器(416、418)呼叫而呼叫任一物件(434、452)。根據本發明之實施例,代理伺服器416及橋接器436及/或代理伺服器418及橋接器456可藉由例如獨立區域初始化程式碼而建立,該獨立區域初始化程式碼係經由使用由編譯器調用之注解處理器而由編譯器輸出。
圖5為根據本發明之一實施例之包括可堆疊頻道組態之系統的方塊圖。系統500包括應用程式510、第一獨立區域530及第二獨立區域560。該系統特徵在於可堆疊頻道,其涉及經由另一頻道封送處理一個頻道且允許遠端實體經由兩個頻道有效地呼叫以到達另一處理。經由使用緊急呼叫者548,獨立區域530可堆疊頻道介面進行呼叫以到達獨立區域560中之物件。在一些實施例中,獨立區域530、560中的一者或兩者可藉由在應用程式510之建置時間產生
的自動產生的獨立區域建立者建立。
對於每一獨立區域,存在在應用程式510及獨立區域中實例化的對應頻道。亦即,頻道512在獨立區域530中具有對應頻道544,且頻道516在獨立區域560中具有對應頻道566。獨立區域560包括物件562。
代理伺服器542在獨立區域530中實例化,且使用應用程式510與獨立區域530之間的頻道512/544來將資料封送處理至位於應用程式510中之橋接器514。
代理伺服器546建立於獨立區域530中。經由代理伺服器546,可經由頻道516/566進行頻道呼叫,該呼叫如下傳達至獨立區域560且接著傳達至物件562:位於獨立區域530中之緊急呼叫者548起始對物件562之呼叫。該呼叫前進至代理伺服器546、代理伺服器542,經由頻道對544/512到達橋接器514,經由頻道對516/566到達獨立區域560中之橋接器564,且最終自橋接器564到達物件562。
應注意,因為頻道介面512/544及516/566係堆疊的,因此方法呼叫之參數在發起呼叫之處理的代理伺服器(例如,代理伺服器546)中經封送處理且接著在終止呼叫之橋接器(例如,橋接器564)中經非封送處理。歸因於頻道介面之堆疊,在參數之重新封送處理中的額外負荷可為可忽略的。
應注意,前述實施例中的任一者中呈現的技術可用以將應用程式橋接至一或多個其他應用程式而非橋接應用程式與獨立區域。
圖6為根據本發明之實施例之實例化應用程式與獨立區域之間的介面之方法600的流程圖。在區塊602處,應用程式呼叫(自動產生的)獨立區域建立者。在一些實施例中(例如,使用java®程式碼),獨立區域建立者可例如在應用程式之建置時間用靜態函式產生為類別。
繼續進行至區塊604,獨立區域建立者載入並調用獨立區域(例如,應用程式中)之初始化程式碼,其初始化獨立區域中之啟動類別。前進至區塊606,藉由獨立區域啟動類別實例化獨立區域頻道物件。移至區塊608,獨立區域啟動類別建立根物件。進行至區塊610,獨立區域啟動類別建立初始化為空之橋接器陣列。
繼續進行到區塊612,獨立區域啟動類別建立用於根物件之橋接器。橋接器向獨立區域頻道註冊(例如,被指派用於根物件之採用值,其在獨立區域頻道之陣列中參考)以使得橋接器出現於頻道之橋接器陣列中。前進至區塊614,獨立區域建立者實例化用於應用程式之應用程式頻道物件。應用程式頻道物件儲存獨立區域識別。移至區塊616,應用程式頻道物件維護初始化為空之橋接器清單。進行至區塊618,獨立區域建立者在應用程式中建立用於(單一)根介面之代理伺服器。頻道索引對匹配獨立區域側中之介面。在一實施例中,第一頻道索引可硬寫碼為一。繼續進行至區塊620,使代理伺服器向上轉型為根介面類型且返回至呼叫者。
實施例可併入於其他類型之系統中,包括諸如蜂
巢式電話之行動裝置。現參閱圖7,示出根據本發明之一實施例之系統的方塊圖。如圖7中所示,系統700可為行動器件,且可包括各種組件。如圖7之高階視圖中所示,可為裝置之中央處理單元的應用處理器710與包括系統記憶體715之各種組件通訊。在各種實施例中,系統記憶體715可包括程式及資料儲存部分兩者且可經映射以提供安全儲存。根據本發明之實施例,「獨立區域頁快取記憶體」(EPC)718為儲存器715之專用部分,其可例如經由使用加密而為專用的且可容納待藉由例如應用程式建立之一或多個安全獨立區域。在一實施例中,EPC 718可在通電時且在建立一或多個安全獨立區域之前加以組配。
應用處理器710可進一步耦合至輸入/輸出系統720,輸入/輸出系統720在各種實施例中可包括顯示器及自身在執行時可出現在顯示器上的諸如觸控小鍵盤之一或多個輸入裝置。系統700亦可包括可自一或多個感測器770接收資料之整合式感測器集線器(ISH)760。
根據本發明之實施例,應用處理器710可操作以執行應用程式以實例化用於應用程式可存取之安全獨立區域的根物件。根據本發明之實施例,應用處理器710可操作以建立封送處理程式碼以對應用程式與獨立區域之間的介面進行封送處理。根據本發明之實施例,可產生且靜態地調用封送處理程式碼。根據本發明之實施例,源內注解可用以在應用程式之建置時間定義遠端(例如,可封送處理)介面。根據本發明之實施例,可支援介面繼承。
在一些實施例中,根據本發明之實施例,可藉由注解處理器自動地產生包裝函式類別以略過封送處理,例如以便在不修改獨立區域啟動源程式碼的情況下在不具有安全獨立區域(SE)功能的硬體上運行具有SE功能的應用程式。根據本發明之實施例,可支援可堆疊頻道,包括經由至第一獨立區域之第一頻道對至第二獨立區域之第二頻道進行封送處理,以允許遠端實體有效地經由兩個頻道進行呼叫以到達另一處理。
應用處理器710亦可耦合至基頻處理器730,基頻處理器730可調節諸如語音及資料通訊之信號以供輸出,並且調節傳入電話及其他信號。如圖所見,基頻處理器730耦合至收發器740,收發器740可致能接收及傳輸能力兩者。收發器740又可與天線750通訊,例如能夠經由一或多個通訊協定(諸如經由無線廣域網路(例如,3G或4G網路)及/或無線區域網路,諸如BLUETOOTHTM或所謂的WI-FITM網路,根據電機及電子工程師學會802.11標準)傳輸及接收語音及資料信號之任何類型天線。如圖所見,系統700可進一步包括具有可再充電電池以使得能夠在行動環境中操作的可再充電電源供應器725。儘管在圖7之實施例中以此特定實施示出,但是本發明之範疇並不限於此方面。
實施例可實行於許多不同系統類型中。現參閱圖8,示出根據本發明之一實施例之系統的方塊圖。如圖8中所示,多處理器系統800為點對點互連體系統,且包括經由點對點互連體850耦合之第一處理器870及第二處理器
880。如圖8中所示,處理器870及處理器880中每一者皆可為多核心處理器,包括第一及第二處理器核心(亦即,處理器核心874a及874b以及處理器核心884a及884b),然而可於處理器中潛在地存在更多核心。
仍參閱圖8,第一處理器870進一步包括記憶體控制器集線器(MCH)872以及點對點(P-P)介面876及878。類似地,第二處理器880包括MCH 882及P-P介面886及888。如圖8中所示,MCH 872及882將處理器耦合至個別記憶體,即記憶體832及記憶體834,該等記憶體可為以局部附接至個別處理器之系統記憶體(例如,DRAM)之部分。記憶體832可包括獨立區域頁快取記憶體(EPC)833,且記憶體834可包括EPC 835。EPC 833及835係個別記憶體832、834之部分。EPC 833及835可專用(例如,經由加密技術)於儲存一或多個安全獨立區域。每一EPC 833、835可在通電時例如由個別處理器870、880運行之基本輸入輸出系統(BIOS)建立。根據本發明之實施例,一或多個安全獨立區域可由獨立區域載入器回應於來自在處理器870或處理器880上運行的應用程式的請求而建立。根據本發明之實施例,可在對應EPC中建立安全獨立區域。根據本發明之實施例,每一安全獨立區域可抽象為藉由應用程式之獨立區域初始化程式碼在運行時間自動地實例化之根物件。根據本發明之實施例,獨立區域初始化程式碼可在應用程式之建置時間產生。
第一處理器870及第二處理器880可分別經由P-P互連體862及884耦合至晶片組890。如圖8中所示,晶片組
890包括P-P介面894及898。
此外,晶片組890包括介面892以藉由P-P互連體839使晶片組890與高效能圖形引擎838耦合。又,晶片組890可經由介面896耦合至第一匯流排816。如圖8中所示,各種輸入/輸出(I/O)裝置814可與匯流排橋接器818一起耦合至第一匯流排816,該匯流排橋接器將第一匯流排816耦合至第二匯流排820。各種裝置可耦合至第二匯流排820,該等裝置包括例如鍵盤/滑鼠822、通訊裝置826及諸如磁碟驅動器或其他大量儲存裝置之資料儲存單元828,在一實施例中,該資料儲存單元可包括程式碼830。此外,音訊輸入/輸出(I/O)824可耦合至第二匯流排820。實施例可併入至其他類型之系統中,該等系統包括諸如智慧型蜂巢式電話、平板電腦、隨身型網易機(netbook)、UltrabookTM等之行動裝置。
下文描述其他實施例。
在一個實例中,一種系統包括處理器以在主機應用程式之運行時間自動地執行該主機應用程式內之獨立區域初始化程式碼。該獨立區域初始化程式碼包括封送處理程式碼以建立與該主機應用程式分開的安全獨立區域,該封送處理程式碼係在該主機應用程式之建置時間產生。該系統亦包括一動態隨機存取記憶體(DRAM),其包括一專用DRAM部分以儲存該安全獨立區域。
在一實例中,該獨立區域初始化程式碼在該主機應用程式與該安全獨立區域之間定義一遠端介面。
在一實例中,該處理器經由一代理伺服器/橋接器對而對該主機應用程式與該安全獨立區域之間的資料進行封送處理。
在一實例中,該處理器經由執行該獨立區域初始化程式碼而自動地實例化一代理伺服器。該代理伺服器使得該主機應用程式能夠與該安全獨立區域通訊。
在一實例中,該代理伺服器可操作以回應於呼叫之一方法而封裝一或多個參數以用於輸送至該安全獨立區域。
在一實例中,該處理器進一步實例化一橋接器,該橋接器可操作以拆包在該安全獨立區域處接收的該一或多個參數。在一實例中,該處理器進一步將一輸送層抽象為一第一頻道介面。該輸送層可操作以使該代理伺服器與該橋接器匹配。
在一實例中,該處理器實例化該主機應用程式與一第二安全獨立區域之間的一第二頻道介面,且堆疊該第一頻道介面與該第二頻道介面以致能該安全獨立區域與該第二安全獨立區域之間的一獨立區域間程序呼叫。在一實例中,該獨立區域初始化程式碼之執行實例化充當該安全獨立區域之一進入點的一根物件。
在併有以上實例中的任一者的一實例中,該獨立區域初始化程式碼係基於源程式碼,該源程式碼包括一源內注解以指示一或多個可封送處理資料結構。
在另一實例中,一種方法包括藉由編譯器邏輯編
譯源程式碼,該源程式碼包括一或多個注解以在主機應用程式之建置時間產生獨立區域初始化程式碼。該獨立區域初始化程式碼包括封送處理程式碼以在該主機應用程式之運行時間建立與該主機應用程式分開的安全獨立區域。
在一實例中,該方法包括,在該編譯器邏輯遇到一注解時,藉由該編譯器邏輯調用一注解處理器以判定與該注解相關聯之一經注解介面的封送處理能力。
在一實例中,該方法包括在該注解處理器判定該經注解介面可封送處理時藉由該編譯器邏輯所調用之該注解處理器產生該封送處理程式碼。
在一實例中,在運行時間,該封送處理程式碼將一代理伺服器類別置入該主機應用程式中以對一方法呼叫進行封送處理,且該封送處理程式碼將一橋接器類別置入該安全獨立區域中以對該方法呼叫進行非封送處理。
在一實例中,一種設備可執行上述方法中的任一者。
在一實例中,至少一個機器可讀媒體包括指令,該等指令回應於在計算裝置上執行而使得該計算裝置進行上述方法中的任一者。
一實例包括用於執行上述方法中的任一者之構件。
在另一實例中,一種系統包括一處理器以致能經由一主機應用程式與一第一安全獨立區域之間的一第一頻道介面且隨後經由該主機應用程式與一第二安全獨立區域
之間的一第二頻道介面自該第一安全獨立區域至該第二安全獨立區域之一根物件的一呼叫。該系統亦包括一動態隨機存取(DRAM)記憶體以儲存該第一安全獨立區域。
在一實例中,該處理器實例化對應於該第一頻道介面之一第一代理伺服器/橋接器對及對應於該第二頻道介面之一第二代理伺服器/橋接器對。
在一實例中,該第一代理伺服器/橋接器對及該第二代理伺服器/橋接器對中之每一者係在該主機應用程式之運行時間實例化。
在一實例中,該處理器經由包括一第一代理伺服器及一第一橋接器之該第一代理伺服器/橋接器對而對該第一安全獨立區域與該主機應用程式之間的資料進行封送處理。該主機進一步經由包括一第二代理伺服器及一第二橋接器之該第二代理伺服器/橋接器對對該主機應用程式與該第二安全獨立區域之間的該資料進行封送處理。
在一實例中,該資料在該第一代理伺服器中封送處理,且在不對該第一橋接器中之資料進行非封送處理的情況下在該第二橋接器中非封送處理。
在一實例中,該處理器進一步在該主機應用程式之運行時間期間實例化該第二安全獨立區域之該根物件。
在另一實例中,至少一個電腦可讀儲存媒體上儲存有指令,該等指令用於使得一系統實例化一根物件以藉由執行一獨立區域建立者而致能一具有安全獨立區域(SE)功能的應用程式在不具SE功能的硬體上運行,該獨立區域
建立者係響應於源程式碼中之至少一個注解而自該源程式碼之編譯自動地產生。該根物件係在該具SE功能的應用程式之運行時間實例化。
在一實例中,使得該具SE功能的應用程式能夠在不具安全功能的硬體上運行准許存取該安全獨立區域而不使用一橋接器來對與該具SE功能的應用程式相關聯的參數進行封送處理。
在一實例中,該至少一個電腦可讀儲存媒體包括指令,該等指令在該根物件之實例化之後即刻將一根介面返回至該具SE功能的應用程式之一呼叫者而無需一代理伺服器之實例化或一橋接器之實例化。
在一實例中,該至少一個電腦可讀儲存媒體包括指令以藉由一編譯器在物件程式碼之建置時間期間偵測藉由該編譯器解譯之源程式碼中之一第一注解,且調用一注解處理器以基於該第一注解在建置時間產生封送處理程式碼。
在另一實例中,至少一個電腦可讀儲存媒體上儲存有指令,該等指令用於使得一系統執行已自包括一或多個注解之源程式碼在一主機應用程式之建置時間建立的獨立區域初始化程式碼。該獨立區域初始化程式碼包括封送處理程式碼以在該主機應用程式之運行時間建立與該主機應用程式分開的安全獨立區域。
在一實例中,在運行時間,該封送處理程式碼將一代理伺服器類別置入該主機應用程式中以對一方法呼叫
進行封送處理,且該封送處理程式碼將一橋接器類別置入該安全獨立區域中以對該方法呼叫進行非封送處理。
實施例可用於許多不同類型的系統中。舉例而言,在一個實施例中,通訊裝置可經配置以執行本文中描述的各種方法及技術。當然,本發明之範疇並不限於通訊裝置,而實際上,其他實施例可針對用於處理指令之其他類型之設備或包括指令之一或多個機器可讀媒體,該等指令回應於在計算裝置上執行而使得該裝置進行本文中描述的方法及技術中的一或多者。
實施例可以碼來實行,且可儲存在非暫時儲存媒體上,該非暫時媒體上儲存有指令,該等指令可被用以規劃系統以執行指令。儲存媒體可包括但不限於:任何類型之磁碟,包括軟碟、光碟、固態驅動機(SSD)、壓縮碟唯讀記憶體(CD-ROM)、可重壓縮碟(CD-RW)及磁光碟;半導體元件,諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可規劃唯讀記憶體(EEPROM);磁卡或光卡,或適合於儲存電子指令之任何其他類型之媒體。
雖然已就有限數目之實施例描述本發明,但是熟習此項技術者將瞭解基於該等實施例之許多修改及變化。隨附申請專利範圍意欲涵蓋如屬於本發明之真實精神及範疇內之所有此等修改及變化。
100‧‧‧系統
110‧‧‧應用程式
112‧‧‧獨立區域建立者
114‧‧‧頻道
116‧‧‧暫存器
118‧‧‧代理伺服器
122‧‧‧點線
130‧‧‧獨立區域
132‧‧‧啟動類別
134‧‧‧頻道
136‧‧‧根物件
138‧‧‧陣列
140‧‧‧橋接器
Claims (20)
- 一種系統,其包含:一處理器,其在一主機應用程式之運行時間自動地執行該主機應用程式內之獨立區域初始化程式碼,其中該獨立區域初始化程式碼包括封送處理程式碼以建立與該主機應用程式分開的一安全獨立區域,該封送處理程式碼係在該主機應用程式之建置時間產生;以及一動態隨機存取記憶體(DRAM),其包括用以儲存該安全獨立區域的一專用DRAM部分。
- 如請求項1之系統,其中該獨立區域初始化程式碼在該主機應用程式與該安全獨立區域之間定義一遠端介面。
- 如請求項1之系統,其中該處理器用以經由一代理伺服器/橋接器對來對該主機應用程式與該安全獨立區域之間的資料進行封送處理。
- 如請求項1之系統,其中該處理器經由執行該獨立區域初始化程式碼而自動地實例化一代理伺服器,該代理伺服器使得該主機應用程式能夠與該安全獨立區域通訊。
- 如請求項4之系統,其中該代理伺服器可操作以回應於被呼叫的一方法來封裝一或多個參數以用於輸送至該安全獨立區域。
- 如請求項5之系統,其中該處理器進一步實例化一橋接器,該橋接器可操作以拆包在該安全獨立區域處接收的該一或多個參數。
- 如請求項6之系統,其中該處理器進一步將一輸送層抽象為一第一頻道介面,其中該輸送層可操作以使該代理伺服器與該橋接器匹配。
- 如請求項7之系統,其中該處理器進一步:實例化該主機應用程式與一第二安全獨立區域之間的一第二頻道介面;以及堆疊該第一頻道介面與該第二頻道介面以致能該安全獨立區域與該第二安全獨立區域之間的一獨立區域間程序呼叫。
- 如請求項1之系統,其中該獨立區域初始化程式碼係基於源程式碼,該源程式碼包括源內注解以指示一或多個可封送處理資料結構。
- 如請求項1之系統,其中該獨立區域初始化程式碼之執行實例化充當該安全獨立區域之一進入點的一根物件。
- 一種方法,其包含:藉由一處理器執行已在一主機應用程式之建置時間自源程式碼建立的獨立區域初始化程式碼,該源程式碼包括一或多個注解;其中該獨立區域初始化程式碼包括封送處理程式碼,用以在該主機應用程式之運行時間建立與該主機應用程式分開的一安全獨立區域。
- 如請求項11之方法,其中在運行時間,該封送處理程式碼將一代理伺服器類別置入該主機應用程式中以對一方法呼叫進行封送處理,且該封送處理程式碼將一橋接 器類別置入該安全獨立區域中以對該方法呼叫進行非封送處理。
- 一種系統,其包含:一處理器,其用以致能經由一主機應用程式與一第一安全獨立區域之間的一第一頻道介面且隨後經由該主機應用程式與一第二安全獨立區域之間的一第二頻道介面自該第一安全獨立區域至該第二安全獨立區域之一根物件的一呼叫;以及一動態隨機存取(DRAM)記憶體,其用以儲存該第一安全獨立區域。
- 如請求項13之系統,其中該處理器係用以實例化對應於該第一頻道介面的一第一代理伺服器/橋接器對、及對應於該第二頻道介面的一第二代理伺服器/橋接器對。
- 如請求項14之系統,其中該第一代理伺服器/橋接器對及該第二代理伺服器/橋接器對中之每一者係在該主機應用程式之運行時間被實例化。
- 如請求項14之系統,其中該處理器係用以:經由包含一第一代理伺服器及一第一橋接器的該第一代理伺服器/橋接器對而對該第一安全獨立區域與該主機應用程式之間的資料進行封送處理;以及經由包含一第二代理伺服器及一第二橋接器的該第二代理伺服器/橋接器對而對該主機應用程式與該第二安全獨立區域之間的該資料進行封送處理。
- 如請求項16之系統,其中該資料在該第一代理伺服器中 封送處理,且在沒有對該第一橋接器中之資料進行非封送處理的情況下在該第二橋接器中進行非封送處理。
- 如請求項13之系統,其中該處理器進一步在該主機應用程式之運行時間期間來實例化該第二安全獨立區域之該根物件。
- 至少一種電腦可讀儲存媒體,其上儲存有用於使得一系統執行以下操作的指令:執行已在一主機應用程式之建置時間自源程式碼建立的獨立區域初始化程式碼,該源程式碼包括一或多個注解;其中該獨立區域初始化程式碼包括封送處理程式碼,用以在該主機應用程式之運行時間建立與該主機應用程式分開的一安全獨立區域。
- 如請求項19之至少一種電腦可讀儲存媒體,其中在運行時間,該封送處理程式碼將一代理伺服器類別置入該主機應用程式中以對一方法呼叫進行封送處理,且該封送處理程式碼將一橋接器類別置入該安全獨立區域中以對該方法呼叫進行非封送處理。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/227,411 US9864861B2 (en) | 2014-03-27 | 2014-03-27 | Object oriented marshaling scheme for calls to a secure region |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201544955A true TW201544955A (zh) | 2015-12-01 |
TWI563385B TWI563385B (en) | 2016-12-21 |
Family
ID=54190800
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104103471A TWI563385B (en) | 2014-03-27 | 2015-02-02 | Object oriented marshaling scheme for calls to a secure region |
Country Status (6)
Country | Link |
---|---|
US (1) | US9864861B2 (zh) |
EP (2) | EP3754510A1 (zh) |
KR (1) | KR101833341B1 (zh) |
CN (1) | CN106415506B (zh) |
TW (1) | TWI563385B (zh) |
WO (1) | WO2015148881A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9864861B2 (en) * | 2014-03-27 | 2018-01-09 | Intel Corporation | Object oriented marshaling scheme for calls to a secure region |
US10044695B1 (en) | 2014-09-02 | 2018-08-07 | Amazon Technologies, Inc. | Application instances authenticated by secure measurements |
US9584517B1 (en) * | 2014-09-03 | 2017-02-28 | Amazon Technologies, Inc. | Transforms within secure execution environments |
US10079681B1 (en) | 2014-09-03 | 2018-09-18 | Amazon Technologies, Inc. | Securing service layer on third party hardware |
US10061915B1 (en) | 2014-09-03 | 2018-08-28 | Amazon Technologies, Inc. | Posture assessment in a secure execution environment |
US9491111B1 (en) | 2014-09-03 | 2016-11-08 | Amazon Technologies, Inc. | Securing service control on third party hardware |
US9754116B1 (en) | 2014-09-03 | 2017-09-05 | Amazon Technologies, Inc. | Web services in secure execution environments |
US9577829B1 (en) | 2014-09-03 | 2017-02-21 | Amazon Technologies, Inc. | Multi-party computation services |
US9246690B1 (en) | 2014-09-03 | 2016-01-26 | Amazon Technologies, Inc. | Secure execution environment services |
US9710622B2 (en) * | 2015-02-23 | 2017-07-18 | Intel Corporation | Instructions and logic to fork processes of secure enclaves and establish child enclaves in a secure enclave page cache |
US10353831B2 (en) * | 2015-12-24 | 2019-07-16 | Intel Corporation | Trusted launch of secure enclaves in virtualized environments |
US10055577B2 (en) | 2016-03-29 | 2018-08-21 | Intel Corporation | Technologies for mutual application isolation with processor-enforced secure enclaves |
GB2555961B (en) | 2016-11-14 | 2019-08-28 | Google Llc | System of enclaves |
US10311217B2 (en) * | 2016-12-09 | 2019-06-04 | Microsoft Technology Licensing, Llc | Application piracy prevention with secure enclave protection of automatically modularized functions |
CN108388524A (zh) * | 2016-12-21 | 2018-08-10 | 伊姆西Ip控股有限责任公司 | 用于缓存数据的方法和设备 |
US10372945B2 (en) * | 2017-01-24 | 2019-08-06 | Microsoft Technology Licensing, Llc | Cross-platform enclave identity |
US11061703B2 (en) | 2019-01-10 | 2021-07-13 | International Business Machines Corporation | Managed runtime data marshaling for native code access using a thread local native buffer |
US11714895B2 (en) * | 2019-07-18 | 2023-08-01 | Anjuna Security, Inc. | Secure runtime systems and methods |
CN111414194B (zh) * | 2020-03-19 | 2023-08-11 | 政采云有限公司 | 一种接口信息生成方法、系统、电子设备及存储介质 |
Family Cites Families (76)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6941556B1 (en) * | 1995-03-24 | 2005-09-06 | Sun Microsystems, Inc. | Method and system for type identification for multiple object interfaces in a distributed object environment |
US7930340B2 (en) * | 1995-11-13 | 2011-04-19 | Lakshmi Arunachalam | Network transaction portal to control multi-service provider transactions |
US6272538B1 (en) * | 1996-07-30 | 2001-08-07 | Micron Technology, Inc. | Method and system for establishing a security perimeter in computer networks |
US5857197A (en) * | 1997-03-20 | 1999-01-05 | Thought Inc. | System and method for accessing data stores as objects |
US6446116B1 (en) * | 1997-06-30 | 2002-09-03 | Sun Microsystems, Inc. | Method and apparatus for dynamic loading of a transport mechanism in a multipoint data delivery system |
US6128774A (en) * | 1997-10-28 | 2000-10-03 | Necula; George C. | Safe to execute verification of software |
US6167565A (en) * | 1998-01-08 | 2000-12-26 | Microsoft Corporation | Method and system of custom marshaling of inter-language parameters |
US6330677B1 (en) * | 1998-10-27 | 2001-12-11 | Sprint Communications Company, L. P. | Object-based security system |
US6594671B1 (en) * | 1999-06-14 | 2003-07-15 | International Business Machines Corporation | Separating privileged functions from non-privileged functions in a server instance |
US6519568B1 (en) * | 1999-06-15 | 2003-02-11 | Schlumberger Technology Corporation | System and method for electronic data delivery |
EP1117033A1 (en) * | 2000-01-14 | 2001-07-18 | Sun Microsystems, Inc. | Dynamic dispatch function |
US9785140B2 (en) * | 2000-02-01 | 2017-10-10 | Peer Intellectual Property Inc. | Multi-protocol multi-client equipment server |
US20020019843A1 (en) * | 2000-04-26 | 2002-02-14 | Killian Robert T. | Multiprocessor object control |
US6898710B1 (en) * | 2000-06-09 | 2005-05-24 | Northop Grumman Corporation | System and method for secure legacy enclaves in a public key infrastructure |
US6865607B1 (en) * | 2001-06-28 | 2005-03-08 | Microsoft Corp. | Pluggable channels |
US20030126079A1 (en) * | 2001-11-12 | 2003-07-03 | Roberson James A. | System and method for implementing frictionless micropayments for consumable services |
US7213236B2 (en) * | 2001-11-30 | 2007-05-01 | Intrinsyc Software International, Inc. | Method of bridging between .Net and Java |
US7007142B2 (en) | 2002-02-19 | 2006-02-28 | Intel Corporation | Network data storage-related operations |
US8275910B1 (en) * | 2003-07-02 | 2012-09-25 | Apple Inc. | Source packet bridge |
US7831693B2 (en) * | 2003-08-18 | 2010-11-09 | Oracle America, Inc. | Structured methodology and design patterns for web services |
US7694328B2 (en) * | 2003-10-21 | 2010-04-06 | Google Inc. | Systems and methods for secure client applications |
JP4257235B2 (ja) * | 2004-03-05 | 2009-04-22 | 株式会社東芝 | 情報処理装置および情報処理方法 |
US7444408B2 (en) * | 2004-06-30 | 2008-10-28 | Intel Corporation (A Delaware Corporation) | Network data analysis and characterization model for implementation of secure enclaves within large corporate networks |
GB0422750D0 (en) * | 2004-10-13 | 2004-11-17 | Ciphergrid Ltd | Remote database technique |
US20060101412A1 (en) * | 2004-11-10 | 2006-05-11 | Microsoft Corporation | Method to bridge between unmanaged code and managed code |
US7730522B2 (en) * | 2005-05-16 | 2010-06-01 | Microsoft Corporation | Self-registering objects for an IPC mechanism |
US7680800B2 (en) * | 2005-05-20 | 2010-03-16 | International Business Machines Corporation | Algorithm to marshal/unmarshal XML schema annotations to SDO dataobjects |
BRPI0618725A2 (pt) | 2005-11-18 | 2011-09-06 | Rick L Orsini | método analisador de dados seguro e sistema |
US20070234412A1 (en) * | 2006-03-29 | 2007-10-04 | Smith Ned M | Using a proxy for endpoint access control |
US7873071B2 (en) * | 2006-05-15 | 2011-01-18 | The Boeing Company | Multiple level security adapter |
US8756616B2 (en) * | 2006-12-29 | 2014-06-17 | Core Wireless Licensing S.A.R.L. | System and method for reducing the static footprint of mixed-language JAVA classes |
US20100031342A1 (en) * | 2007-04-12 | 2010-02-04 | Honeywell International, Inc | Method and system for providing secure video data transmission and processing |
US8180901B2 (en) * | 2007-08-28 | 2012-05-15 | Cisco Technology, Inc. | Layers 4-7 service gateway for converged datacenter fabric |
US20090168758A1 (en) * | 2007-12-31 | 2009-07-02 | Sony Ericsson Mobile Communications Ab | Methods for facilitating communication between internet protocol multimedia subsystem (ims) devices and non-ims devices and between ims devices on different ims networks and related electronic devices and computer program products |
EP2286335A1 (en) * | 2008-05-20 | 2011-02-23 | Citrix Systems, Inc. | Systems and methods for remoting calls issued to embedded or linked object interfaces |
US8250666B2 (en) * | 2008-07-03 | 2012-08-21 | Sap Ag | Method and apparatus for improving security in an application level virtual machine environment |
US9262628B2 (en) | 2009-09-11 | 2016-02-16 | Empire Technology Development Llc | Operating system sandbox |
US8255607B2 (en) * | 2009-11-05 | 2012-08-28 | Emulex Design & Manufacturing Corporation | SAS expander-based SAS/SATA bridging |
US9087200B2 (en) * | 2009-12-22 | 2015-07-21 | Intel Corporation | Method and apparatus to provide secure application execution |
WO2011078855A1 (en) * | 2009-12-22 | 2011-06-30 | Intel Corporation | Method and apparatus to provide secure application execution |
US20110202740A1 (en) * | 2010-02-17 | 2011-08-18 | Arm Limited | Storing secure page table data in secure and non-secure regions of memory |
KR101661201B1 (ko) * | 2010-03-02 | 2016-09-30 | 삼성전자주식회사 | 휴대용 단말기에서 줌 마이크 기능을 지원하기 위한 장치 및 방법 |
US8353013B2 (en) * | 2010-04-28 | 2013-01-08 | Bmc Software, Inc. | Authorized application services via an XML message protocol |
US8312258B2 (en) | 2010-07-22 | 2012-11-13 | Intel Corporation | Providing platform independent memory logic |
US20120020374A1 (en) * | 2010-07-26 | 2012-01-26 | Kenneth Jonsson | Method and System for Merging Network Stacks |
GB2484717B (en) * | 2010-10-21 | 2018-06-13 | Advanced Risc Mach Ltd | Security provision for a subject image displayed in a non-secure domain |
US8972746B2 (en) * | 2010-12-17 | 2015-03-03 | Intel Corporation | Technique for supporting multiple secure enclaves |
US8832452B2 (en) * | 2010-12-22 | 2014-09-09 | Intel Corporation | System and method for implementing a trusted dynamic launch and trusted platform module (TPM) using secure enclaves |
EP2482220A1 (en) * | 2011-01-27 | 2012-08-01 | SafeNet, Inc. | Multi-enclave token |
US8914876B2 (en) * | 2011-05-05 | 2014-12-16 | Ebay Inc. | System and method for transaction security enhancement |
US20120303854A1 (en) * | 2011-05-24 | 2012-11-29 | Raidundant LLC | Modular interface-independent storage solution system |
US8590005B2 (en) | 2011-06-08 | 2013-11-19 | Adventium Enterprises, Llc | Multi-domain information sharing |
US20130031454A1 (en) * | 2011-07-28 | 2013-01-31 | Peter Griffiths | System for Programmatically Accessing Document Annotations |
US8695021B2 (en) | 2011-08-31 | 2014-04-08 | Microsoft Corporation | Projecting native application programming interfaces of an operating system into other programming languages |
US9047476B2 (en) * | 2011-11-07 | 2015-06-02 | At&T Intellectual Property I, L.P. | Browser-based secure desktop applications for open computing platforms |
US20130152153A1 (en) * | 2011-12-07 | 2013-06-13 | Reginald Weiser | Systems and methods for providing security for sip and pbx communications |
US9183064B2 (en) * | 2011-12-30 | 2015-11-10 | General Electric Company | Intelligent mediation of messages in a healthcare product integration platform |
WO2013147891A1 (en) * | 2012-03-30 | 2013-10-03 | Intel Corporation | Client security scoring |
EP2850552B1 (en) * | 2012-05-16 | 2019-05-08 | Okta, Inc. | Systems and methods for providing and managing distributed enclaves |
US20140006919A1 (en) * | 2012-06-29 | 2014-01-02 | 3S International, Llc. | Method and apparatus for annotation content conversions |
US20140040973A1 (en) * | 2012-08-02 | 2014-02-06 | Samsung Electronics Co., Ltd. | Method for controlling initial access rights to open mobile alliance device management servers |
US9747102B2 (en) * | 2012-12-28 | 2017-08-29 | Intel Corporation | Memory management in secure enclaves |
US20140189246A1 (en) * | 2012-12-31 | 2014-07-03 | Bin Xing | Measuring applications loaded in secure enclaves at runtime |
US9176712B2 (en) * | 2013-03-14 | 2015-11-03 | Oracle International Corporation | Node Grouped Data Marshalling |
US9086966B2 (en) * | 2013-03-15 | 2015-07-21 | Intel Corporation | Systems, apparatuses, and methods for handling timeouts |
US9087202B2 (en) * | 2013-05-10 | 2015-07-21 | Intel Corporation | Entry/exit architecture for protected device modules |
US20150033034A1 (en) * | 2013-07-23 | 2015-01-29 | Gideon Gerzon | Measuring a secure enclave |
US9276750B2 (en) * | 2013-07-23 | 2016-03-01 | Intel Corporation | Secure processing environment measurement and attestation |
CN105531709B (zh) * | 2013-09-27 | 2019-08-20 | 迈克菲股份有限公司 | 可执行对象在本地设备上的受信任的执行 |
US9536063B2 (en) * | 2013-10-24 | 2017-01-03 | Intel Corporation | Methods and apparatus for protecting software from unauthorized copying |
WO2015094176A1 (en) * | 2013-12-17 | 2015-06-25 | Intel Corporation | Secure enclaves for use by kernel mode applications |
US9448950B2 (en) * | 2013-12-24 | 2016-09-20 | Intel Corporation | Using authenticated manifests to enable external certification of multi-processor platforms |
US20150188710A1 (en) * | 2013-12-28 | 2015-07-02 | Simon Johnson | Offloading functionality from a secure processing environment |
US9934216B2 (en) * | 2014-03-24 | 2018-04-03 | Ca, Inc. | Schema validation for metadata builder |
US9436825B2 (en) * | 2014-03-25 | 2016-09-06 | Owl Computing Technologies, Inc. | System and method for integrity assurance of partial data |
US9864861B2 (en) * | 2014-03-27 | 2018-01-09 | Intel Corporation | Object oriented marshaling scheme for calls to a secure region |
-
2014
- 2014-03-27 US US14/227,411 patent/US9864861B2/en not_active Expired - Fee Related
-
2015
- 2015-02-02 TW TW104103471A patent/TWI563385B/zh not_active IP Right Cessation
- 2015-03-27 EP EP20188593.6A patent/EP3754510A1/en not_active Withdrawn
- 2015-03-27 KR KR1020167023359A patent/KR101833341B1/ko active IP Right Grant
- 2015-03-27 EP EP15768625.4A patent/EP3123340B1/en active Active
- 2015-03-27 CN CN201580010990.XA patent/CN106415506B/zh not_active Expired - Fee Related
- 2015-03-27 WO PCT/US2015/022911 patent/WO2015148881A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
CN106415506B (zh) | 2019-08-13 |
EP3754510A1 (en) | 2020-12-23 |
CN106415506A (zh) | 2017-02-15 |
US20150278528A1 (en) | 2015-10-01 |
EP3123340A4 (en) | 2017-11-01 |
US9864861B2 (en) | 2018-01-09 |
KR20160113254A (ko) | 2016-09-28 |
KR101833341B1 (ko) | 2018-02-28 |
EP3123340B1 (en) | 2020-10-28 |
WO2015148881A1 (en) | 2015-10-01 |
TWI563385B (en) | 2016-12-21 |
EP3123340A1 (en) | 2017-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201544955A (zh) | 用於對安全區域的呼叫之物件導向封送處理方案 | |
US10862982B2 (en) | Cloud-scale heterogeneous datacenter management infrastructure | |
JP6083097B2 (ja) | ハードウェア保護アプリケーションのシステム・サービス要求相互作用を容易化する方法 | |
US9183032B2 (en) | Method and system for migration of multi-tier virtual application across different clouds hypervisor platforms | |
JP6099760B2 (ja) | プロセスをマイグレートするためのコンピュータ実装方法、コンピュータベースのシステム、およびコンピュータプログラム | |
JP2020509443A (ja) | ブロックチェーン上のネイティブ契約を実施するためのシステムおよび方法 | |
KR101823888B1 (ko) | 신뢰 컴퓨팅을 위한 다중노드 허브 | |
US8505029B1 (en) | Virtual machine communication | |
US7840964B2 (en) | Mechanism to transition control between components in a virtual machine environment | |
JP6458959B2 (ja) | 協調設計されたプロセッサ用動的言語アクセラレータ | |
WO2024045382A1 (zh) | 区块链中实现反射机制 | |
US20210042138A1 (en) | Computing devices | |
TWI525546B (zh) | 用於藉由把來自實體裝置控制器之中斷重新導向來提供多重虛擬裝置控制器之裝置及方法 | |
KR101691063B1 (ko) | 콜백을 이용하는 isa 브리징 | |
US9990216B2 (en) | Providing hypercall interface for virtual machines | |
US20170286140A1 (en) | Java-based offload service in a mainframe environment | |
US7350193B2 (en) | Procedure invocation in an integrated computing environment having both compiled and interpreted code segments | |
US20240202036A1 (en) | Unloading interdependent shared libraries | |
US11061703B2 (en) | Managed runtime data marshaling for native code access using a thread local native buffer | |
Morris | Emulating Multiple Inheritance in Fortran 2003/2008 | |
Yao et al. | White Paper A Tour Beyond BIOS Launching Standalone SMM Drivers in the PEI Phase using the EFI Developer Kit II | |
Lameed et al. | Separating program semantics from deployment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |