專利名稱:基于Cache時間特性的防御攻擊方法
技術領域:
本發(fā)明涉及的是一種信息安全技術領域的方法,具體是一種利用動態(tài)二進制翻譯 技術的基于Cache時間特性的防御攻擊方法。
背景技術:
動態(tài)二進制翻譯是虛擬執(zhí)行技術中應用最為廣泛的方法,是為遺留代碼提供移植 可能性和提高軟件的平臺適應性的一種有效手段,它在不需要可執(zhí)行程序的源代碼的情況 下,可以動態(tài)地將源機器平臺上的二進制程序經(jīng)過轉(zhuǎn)換,運行于其他目標機器平臺上。同 時,動態(tài)二進制翻譯技術提供了探測程序行為的可能性,也提供了對源程序進行修改的方 法,使程序執(zhí)行變得可知、可控。正是動態(tài)二進制翻譯技術的這種功能特性,使之可以運用 于旁路攻擊的防御。在密碼學中,旁路攻擊指這樣一種攻擊方式它不以通過暴力破解或針對加密方 法中所采用的數(shù)學模型的漏洞為攻擊手段,而是通過分析加密程序的執(zhí)行平臺在加密運算 中所泄漏的一種或多種旁路信息來獲取密鑰的物理攻擊方法。所述的旁路信息包括時間信 息、電能開銷、電磁峰值甚至噪音等信息。簡言之,旁路攻擊不攻擊密鑰本身,而是攻擊那些 運行于不安全系統(tǒng)上的加密程序,正是這類不安全的 系統(tǒng)導致了旁路信息的產(chǎn)生。系統(tǒng)的 不安全主要是由于體系結構設計的不合理所導致的,本發(fā)明所防御的旁路攻擊就是利用了 系統(tǒng)在硬件實現(xiàn)上采用了 Cache-Memory存儲結構。為了緩解CPU與主存儲器之間的存取速 度差,在現(xiàn)代計算機系統(tǒng)中一般都采用了 Cache技術。Cache是位于CPU和DRAM主存之間的 小規(guī)模高速緩沖存儲器。它保存著CPU最常用的數(shù)據(jù)或指令。CPU直接訪問Cache時稱為 “命中”(Cache hit),否則稱為“缺失”(Cache miss)。當前很多加密方法如AES (Advanced Encryption Standard),出于性能的考慮,在實現(xiàn)過程中都采用了查找表。這種做法雖然 大大降低了方法的時間復雜度,但也導致在加密過程中Cache信息的泄露。由于Cache容 量的性質(zhì),加密過程中使用到的查找表無法完全放入Cache中,這必然引起加密過程中“命 中,,和“缺失”兩種情況皆會出現(xiàn),其中宏觀的一種表現(xiàn)形式就是程序在執(zhí)行過程中時間的 變化,稱為Cache的時間特性?;跍y量加密程序執(zhí)行時間的旁路攻擊稱為時間特性旁路 攻擊(Timing attack),這是目前使用最多的旁路攻擊方式,也是本發(fā)明所針對的旁路攻擊 方式。1992年,Kocher指出使用查找表的加密程序會由于Cache的存在而引起執(zhí)行時間 上的特性,后來Page從理論上論證了 Cache能被用于旁路攻擊。2005年,Bernstein首次 成功實現(xiàn)了針對AES加密方法的旁路攻擊。Bormeau基于Bernstein的工作,提出針對AES 更加有效的旁路攻擊方法。雖然在采用了不同的策略,但是他們都基于這樣一個事實,即方 法的執(zhí)行時間直接受Cache缺失次數(shù)的影響?;贑ache時間特性的旁路攻擊已被證明是 一種有效的且在現(xiàn)實中是可行的攻擊手段。從這個意義上說,任何采用Cache-Memory這種 存儲結構的設備都有被攻擊的可能。因此,針對此類攻擊的防御方法有很強的現(xiàn)實需求。經(jīng)過對現(xiàn)有技術的檢索發(fā)現(xiàn),現(xiàn)有技術手段主要是從硬件與軟件這兩方面提出防御措施。從硬件方面來看,大多數(shù)研究都是提議修改Cache的設計,希望能從根本 上解決Cache可被用作旁路泄露加密程序的運算信息這一問題。Page提出動態(tài)劃分 Cache (Partitioned CacheArchitecture),為特定的應用程序指定特定的分區(qū),并對該分 區(qū)加鎖,以防止敏感數(shù)據(jù)的泄露。而另外一些研究者則認為Cache沖突是導致加密方法 運算信息泄露的根本原因,并提出PLCache (Partition-Locked Cache,分區(qū)加鎖緩存)與 RPCache (Random Permutation Cache,隨機排列緩存)。此外,還有人提出重新設計體系架 構,重新設計導致執(zhí)行時間不可預測的部件,如Cache、硬件流水、分支預測等,以達到程序 執(zhí)行時間恒定的目標。從軟件方面來看,提出的觀點一般集中在對加密方法實現(xiàn)的修改,目 的是通過提高攻擊者的負擔來降低旁路攻擊的成功率。加密方法實現(xiàn)時采用查找表是出于 保證方法的時間復雜度,就目前而言還很難找到不以犧牲方法性能為代價的替代方法。一 種可選的方案是采用小壓縮查找表的規(guī)模,譬如說,當查找表的元素首次被訪問,整個查找 表都可以被加載到內(nèi)存中,但這只是增加了攻擊者的分析難度,并沒從根本上解決問題。
發(fā)明內(nèi)容
本發(fā)明針對現(xiàn)有技術存在的上述不足,提供一種基于Cache時間特性的防御攻擊 方法,通過動態(tài)二進制翻譯器運行加密程序的二進制代碼,使整個加密方法的執(zhí)行過程變 得可知,可控,且可改,從而隱藏掉旁路攻擊所需要的信息來進行防御。利用動態(tài)二進制翻 譯技術創(chuàng)建沙盒(Sandbox),以沙盒作為加密程序運行和添加冗余指令的場所,使程序運行 于一個安全的運行環(huán)境中。換言之,沙盒在旁路攻擊與加密程序之間建立起一道屏障,使攻 擊者無法獲得旁路攻擊需要的信息。
本發(fā)明是通過以下技術方案實現(xiàn)的,本發(fā)明包括以下步驟第一步、使防御系統(tǒng)運行支持AES加密算法的實現(xiàn)程序;所述的實現(xiàn)程序是指支持AES加密算法的二進制文件,該實現(xiàn)程序?qū)崿F(xiàn)了基本 的傳輸層資料加密功能。第二步、防御系統(tǒng)對加密程序進行代碼解析逐條解釋加密程序并進行中間表示 轉(zhuǎn)換處理,以基本塊為單位提交給翻譯器處理;所述的逐條解釋加密程序是指當一個二進制程序運行于動態(tài)二進制翻譯器時, 動態(tài)二進制翻譯器的解釋器根據(jù)程序執(zhí)行順序逐條對程序的二進制碼進行解析,即解釋器 根據(jù)讀取的二進制碼分析出該二進制碼表示的操作符和操作數(shù)信息;當該二進制程序是 Intel ia32架構上的程序則解釋器能夠?qū)⒍M制碼還原為ia32架構的指令。所述的中間表示轉(zhuǎn)化處理是指通過一對多的翻譯模式,使用若干條中間語言進 行等效表示解釋器解析出的指令。所述的以基本塊為單位提交給翻譯器處理是指以動態(tài)基本塊為單位,該動態(tài)基 本塊位于兩條分支或跳轉(zhuǎn)指令之間,當防御系統(tǒng)轉(zhuǎn)化一條分支或跳轉(zhuǎn)指令后得到的中間表 示構成了一個動態(tài)基本塊時將該動態(tài)基本塊提交給翻譯器進行構造處理,防御系統(tǒng)依次轉(zhuǎn) 化所有分支或跳轉(zhuǎn)指令直至加密程序執(zhí)行結束。第三步、當基本塊中包含訪問內(nèi)存指令時,則在該基本塊中注入冗余指令后執(zhí)行 第四步;否則直接執(zhí)行第四步;所述的訪問內(nèi)存指令是指對內(nèi)存的某塊地址空間進行讀操作或?qū)懖僮鞯闹噶?,該指令根?jù)生成的隨機數(shù)來確定被訪問內(nèi)存的地址。所述的注入冗余指令是指在防御系統(tǒng)初始化階段,預先分配出內(nèi)存空間并記錄 這塊內(nèi)存空間的地址,當基本塊中包含訪問內(nèi)存指令時,根據(jù)隨機數(shù)設置每條訪問內(nèi)存指 令中的內(nèi)存地址。所述的隨機數(shù)是指采用Intel指令集中的RDTSC(Read Time-Stamp Counter讀 取時間戳計數(shù)器)指令的返回值生成隨機數(shù)。第四步、對第三步或第二步得到的基本塊進行翻譯處理,得到可執(zhí)行指令并發(fā)送 至硬件進行執(zhí)行。所述的翻譯處理是指以基本塊為單位對中間表示數(shù)據(jù)逐條進行譯碼,每完成一 個基本塊的譯碼后即將得到的目標代碼保存到內(nèi)存中并提交執(zhí)行,直至基本塊的執(zhí)行結束 后回到第一步處理下一個基本塊,直至加密程序運行完畢。與現(xiàn)有技術相比,本發(fā)明具有以下優(yōu)點采取邊執(zhí)行,邊修改的動態(tài)策略,大大提 高了執(zhí)行效率;可以直接應用于現(xiàn)有的加密程序,用戶無需對源程序進行更改即可直接進 行應用。
圖1為防御系統(tǒng)的抽象邏輯模塊示意圖。圖2為實施例流程圖。
具體實施例方式下面對本發(fā)明的實施例作詳細說明,本實施例在以本發(fā)明技術方案為前提下進行 實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施 例。如圖1所示,本實施例包括以下步驟第一步、選定加密算法的實現(xiàn)程序,并將其運行于防御系統(tǒng)之上選擇使用 OpenSSL提供的AES加密程序,如OpenSSL 0. 9. 7a。OpenSSL是套開放源代碼的SSL套件, 實現(xiàn)了基本的傳輸層資料加密功能,包括AES加密算法。確定加密程序后,通過防御系統(tǒng)來 運行該加密程序。第二步、防御系統(tǒng)對加密程序進行代碼解析逐條解釋加密程序并進行中間表示 轉(zhuǎn)換處理,以基本塊為單位提交給翻譯器處理;所述的逐條解釋加密程序是指當一個二進制程序運行于動態(tài)二進制翻譯器時, 動態(tài)二進制翻譯器的解釋器會根據(jù)程序執(zhí)行順序逐條對程序的二進制碼進行解析。解釋器 能夠根據(jù)讀入的二進制碼,分析出該二進制碼表示的操作符,操作數(shù)信息。如果該二進制程 序是Intel ia32架構上的程序,則解釋器能夠?qū)⒍M制碼還原為ia32架構的指令。所述的中間表示轉(zhuǎn)化處理是指通過一對多的翻譯模式,使用多條中間語言來表 示解釋器解析出的指令,使二者在語義上等效。由于中間語言是低層次的虛擬精簡機器指 令,所以用中間語言表示后方便了后續(xù)翻譯器的訪問內(nèi)存指令分析,且語義上的等效保證 了程序的正確指令。以動態(tài)二進制翻譯器Crossbit的中間語言VInst為例,MIPS的Ib指 令
lb rt, offset (rs)可用如下兩條中間語言進行表示LD (rs, offset), BYTE, rtSEXT rt, BYTE, rt所述的以基本塊為單位提交給翻譯器處理是指動態(tài)二進制翻譯器的一個特性就 是以基本塊為單位進行翻譯執(zhí)行。此處的基本塊為動態(tài)基本塊,一個動態(tài)基本塊在一條分 支或跳轉(zhuǎn)指令后開始,跟隨程序執(zhí)行流,在下一個分支或跳轉(zhuǎn)指令時結束。當轉(zhuǎn)化得到的中 間表示構成了一個基本塊時,系統(tǒng)就會將該部分中間表示提交給翻譯器進行下一步處理, 解釋器轉(zhuǎn)入下一個基本塊的構造過程,如此循環(huán),直至加密程序執(zhí)行結束。第三步、當中間表示數(shù)據(jù)中包含訪問內(nèi)存指令時,則在該中間表示數(shù)據(jù)的基本塊 的中間表示中注入冗余指令后執(zhí)行第四步;否則直接執(zhí)行第四步;
所述的訪問內(nèi)存指令是指對內(nèi)存的某塊地址空間進行讀操作或?qū)懖僮鞯闹噶睿?該指令根據(jù)生成的隨機數(shù)來確定被訪問內(nèi)存的地址。所述的冗余指令包括隨機數(shù)生成指令和系列訪問內(nèi)存指令,其中隨機數(shù)生成指令的唯一目的在于生成隨機數(shù)。隨機數(shù)生成有多種方法,從本專利 所述防御系統(tǒng)的角度來說,希望所采用的隨機數(shù)生成方案盡量簡單。因此,本實施例采用 Intel指令集中的RDTSC指令的返回值來決定生成的隨機數(shù)。RDTSC 指令全稱為 Read Time-Stamp Counter,其中 Time-Stamp Counter 是一個 64位的MSR寄存器,在每個時鐘信號到來時計數(shù)加一,該寄存器是x86架構上最精確的計數(shù) 器之一。RDTSC指令讀取TSC的計數(shù)值到EDX: :EAX寄存器,其中EDX寄存器存放高32位 值,EAX寄存器存放低32位值。如果要生成0 1023之間的隨機數(shù),只需每次使用RDTSC 指令后讀取EAX寄存器的后10位的值。因此在某一時刻,使用RDTSC指令后EAX寄存器的 后10位數(shù)值總是處于0 1023某個值,理論上等同于生成一個0到1023范圍內(nèi)的隨機數(shù)。所插入的冗余指令,會與源程序的指令一起被執(zhí)行,所以冗余指令在設計上必須 滿足以下兩個要求1.冗余指令在執(zhí)行邏輯上要獨立于源指令。這樣才能保證運行結果的正確性,程 序邏輯不被冗余指令影響,即必須保證添加冗余指令后的執(zhí)行結果與未添加時的執(zhí)行結果
保持一致。2.冗余指令的執(zhí)行時間需要具備隨機性的特點。隨機性的特性破壞了 Cache時 間特性與加密算法執(zhí)行之間的關聯(lián)性,使Cache的時間特性不再直接反映出加密算法的規(guī) 律,達到防御攻擊的目的。通過生成隨機數(shù)來保證隨機性?;谏鲜鰞蓚€要求,采用如下方法首先,在防御系統(tǒng)初始化階段,預先分配出一塊內(nèi)存空間,記錄這塊內(nèi)存空間的地址。接著,插入系列訪問內(nèi)存指令。根據(jù)生成的隨機數(shù)來設置每條訪問內(nèi)存指令中的 內(nèi)存地址。下面通過例子對上述方法進行說明在防御系統(tǒng)初始化階段,在堆區(qū)分配了一塊內(nèi)存空間,地址從OxAOOOOOOO到 0xA00003FF。以RDTSC指令生成的隨機數(shù)作為偏移量來確定訪問內(nèi)存指令中的地址,該數(shù)范圍在O至1023之間。如果生成的隨機數(shù)為255,則訪問內(nèi)存指令中的內(nèi)存地址就為 OxAOOOOFF,可以插入如下訪問內(nèi)存指令LD r,0xA00000FF上式意為讀取OxAOOOOOFF地址的內(nèi)容到寄存器r。第四步、對第三步或第二步中得到的中間表示數(shù)據(jù)進行翻譯處理,得到可執(zhí)行指 令并發(fā)送至硬件進行執(zhí)行。所述的翻譯處理是指以基本塊為單位對中間表示數(shù)據(jù)逐條進行譯碼,每完成一 個基本塊的譯碼后即將得到的目標代碼保存到內(nèi)存中并提交執(zhí)行,直至基本塊的執(zhí)行結束 后回到第一步處理下一個基本塊,直至加密程序運行完畢。如圖2所示,上述實施方法具體通過在動態(tài)二進制翻譯器Crossbit上實現(xiàn)CrossBit是一個動態(tài)二進制翻譯系統(tǒng),它可以為執(zhí)行在多種不同體系結構的源程 序, 通過翻譯和優(yōu)化的方法,提供異構架構下的執(zhí)行環(huán)境。為了實現(xiàn)多源多目標,CrossBit 使用了中間代碼層,這樣能減少翻譯路徑。只需要把前端二進制映像程序(前端)翻譯成 中間代碼塊,然后再把中間代碼塊翻譯成對應的目標平臺代碼(后端),就能形成一種二進 制翻譯器。具體選用何種前端和后端根據(jù)實際情況進行選擇。同時,好的中間語言的設計 能方便訪問內(nèi)存指令的識別,例如Crossbit的中間語言指令集VInst。本實施例在具體實 施中采用了前端為IA32,后端為x86版本的Crossbit,通過在Crossbit應用本實施例,使 之成為適合于加密程序運行的沙盒。Crossbit初始化時,在Crossbit程序自身的4G內(nèi)存空間的未使用區(qū)域預分配了 一塊足夠大的內(nèi)存,這部分被保留的內(nèi)存區(qū)域用于冗余指令涉及的訪問內(nèi)存操作。注入的 冗余指令中涉及的訪問內(nèi)存操作只針對這部分已被分配的內(nèi)存區(qū)域。這樣就可以保證注入 的冗余指令不會影響到源指令,保持程序運行的正確性。Crossbit以基本塊為單位執(zhí)行加 密程序。對于每一個基本塊,Crossbit按如下流程進行操作DCrossbit逐條把一個基本塊的二進制代碼解釋成中間代碼,當結束一個基本塊 的解釋后,保存為一個VBlock數(shù)據(jù)結構。此時Crossbit充當了解釋器的角色。2)判斷VBlock中是否有訪問內(nèi)存指令。Crossbit的中間語言指令集VInst在設 計上保持了一些特性,其中一個重要特性就是只有LD和ST兩條指令可以讀寫內(nèi)存。只需 設置一個過濾器用于識別LD和ST指令,就能確定該VBlock是否包含了訪問內(nèi)存指令。從 第二步開始Crossbit進入翻譯器的角色。根據(jù)判斷的結果有如下兩種處理方式①如果VBlock中不含訪問內(nèi)存指令,不作處理跳到步驟4);②如果VBlock中含有訪問內(nèi)存指令,執(zhí)行步驟3)。3)添加冗余指令。冗余指令包含兩個部分隨機數(shù)生成指令和訪問內(nèi)存指令。利 用Intel指令集中的RDTSC指令的返回值來決定生成的隨機數(shù)。RDTSC指令返回x86結構 中的時間計數(shù)器(Time-Stamp Counter)的值,它是x86結構上最精確的計數(shù)器之一。根據(jù) 生成的隨機數(shù)來確定訪問內(nèi)存指令訪問內(nèi)存的目的地址,這部分內(nèi)存地址被限制在初始化 時分配的內(nèi)存空間里。4)把中間語言翻譯成目標代碼。Crossbit在翻譯完一個VBlock對象后會生成一 個TBlock對象,用于存放翻譯后的目標代碼,提交目標平臺運行。每個TBlock都對應一個 加密程序中的基本塊。
Crossbit以基本塊為單位按以上流程動態(tài)翻譯直至加密程序運行結束。實施例證 明以此種方式運行的加密程序可以有效的防御基于Cache時間特性的旁路攻擊。實施例采用OpenSSLO. 9. 7a版本的AES加密程序,分別采用兩種方案運行加密程 序,第一種為直接運行加密程序,第二種通過Crossbit實現(xiàn)的防御系統(tǒng)再運行加密程序。 同時采用Bormeu提出的旁路攻擊方法嘗試對加密程序的破解。實施例比對了三組密鑰在 兩種方案下的破解情況,結果顯示,Bonneu的旁路攻擊方法能夠破解出直接運行是AES加 密程序的密鑰,而對運行于防御系統(tǒng)上的AES加密程序失效。實施例結果證明,本實施例所 述的防御方法能夠在不修改加密程序代碼的情況下,成功實現(xiàn)對基于Cache時間特性旁路 攻擊的防御。
權利要求
一種基于Cache時間特性的防御攻擊方法,其特征在于,包括以下步驟第一步、通過防御系統(tǒng)運行支持AES加密算法的實現(xiàn)程序;第二步、防御系統(tǒng)對加密程序進行代碼解析逐條解釋加密程序并進行中間表示轉(zhuǎn)換處理,以基本塊為單位提交給翻譯器處理;第三步、當基本塊中包含訪問內(nèi)存指令時,則在該基本塊中注入冗余指令后執(zhí)行第四步;否則直接執(zhí)行第四步;第四步、對第三步或第二步得到的基本塊進行翻譯處理,得到可執(zhí)行指令并發(fā)送至硬件進行執(zhí)行。
2.根據(jù)權利要求1所述的基于Cache時間特性的防御攻擊方法,其特征是,所述的實現(xiàn) 程序是指支持AES加密算法的二進制文件,該實現(xiàn)程序?qū)崿F(xiàn)了基本的傳輸層資料加密功 能。
3.根據(jù)權利要求1所述的基于Cache時間特性的防御攻擊方法,其特征是,所述的逐條 解釋加密程序是指當一個二進制程序運行于動態(tài)二進制翻譯器時,動態(tài)二進制翻譯器的 解釋器根據(jù)程序執(zhí)行順序逐條對程序的二進制碼進行解析,即解釋器根據(jù)讀取的二進制碼 分析出該二進制碼表示的操作符和操作數(shù)信息;當該二進制程序是Intel ia32架構上的 程序則解釋器能夠?qū)⒍M制碼還原為ia32架構的指令。
4.根據(jù)權利要求1所述的基于Cache時間特性的防御攻擊方法,其特征是,所述的中間 表示轉(zhuǎn)化處理是指通過一對多的翻譯模式,使用若干條中間語言進行等效表示解釋器解 析出的指令。
5.根據(jù)權利要求1所述的基于Cache時間特性的防御攻擊方法,其特征是,所述的以基 本塊為單位提交給翻譯器處理是指以動態(tài)基本塊為單位,該動態(tài)基本塊位于兩條分支或 跳轉(zhuǎn)指令之間,當防御系統(tǒng)轉(zhuǎn)化一條分支或跳轉(zhuǎn)指令后得到的中間表示構成了一個動態(tài)基 本塊時將該動態(tài)基本塊提交給翻譯器進行構造處理,防御系統(tǒng)依次轉(zhuǎn)化所有分支或跳轉(zhuǎn)指 令直至加密程序執(zhí)行結束。
6.根據(jù)權利要求1所述的基于Cache時間特性的防御攻擊方法,其特征是,所述的訪問 內(nèi)存指令是指對內(nèi)存的某塊地址空間進行讀操作或?qū)懖僮鞯闹噶?,該指令根?jù)生成的隨 機數(shù)來確定被訪問內(nèi)存的地址。
7.根據(jù)權利要求1所述的基于Cache時間特性的防御攻擊方法,其特征是,所述的注入 冗余指令是指在防御系統(tǒng)初始化階段,預先分配出內(nèi)存空間并記錄這塊內(nèi)存空間的地址, 當基本塊中包含訪問內(nèi)存指令時,根據(jù)隨機數(shù)設置每條訪問內(nèi)存指令中的內(nèi)存地址。
8.根據(jù)權利要求7所述的基于Cache時間特性的防御攻擊方法,其特征是,所述的隨機 數(shù)是指采用Intel指令集中的讀取時間戳計數(shù)器指令的返回值生成隨機數(shù)。
9.根據(jù)權利要求1所述的基于Cache時間特性的防御攻擊方法,其特征是,所述的翻譯 處理是指以基本塊為單位對中間表示數(shù)據(jù)逐條進行譯碼,每完成一個基本塊的譯碼后即 將得到的目標代碼保存到內(nèi)存中并提交執(zhí)行,直至基本塊的執(zhí)行結束后回到第一步處理下 一個基本塊,直至加密程序運行完畢。
全文摘要
一種信息安全技術領域的基于Cache時間特性的防御攻擊方法,通過對二進制代碼進行加密,得到加密程序;然后以基本塊為單位逐條解釋加密程序并依次提交進行中間表示轉(zhuǎn)化處理,得到中間表示數(shù)據(jù);當中間表示數(shù)據(jù)中包含訪問內(nèi)存指令時,則在該中間表示數(shù)據(jù)的基本塊的中間表示中注入冗余指令后進行翻譯處理,得到可執(zhí)行指令并發(fā)送至硬件進行執(zhí)行。本發(fā)明采取邊執(zhí)行,邊修改的動態(tài)策略,大大提高了執(zhí)行效率;可以直接應用于現(xiàn)有的加密程序,用戶無需對源程序進行更改即可直接進行應用。
文檔編號G06F21/22GK101847195SQ20101021024
公開日2010年9月29日 申請日期2010年6月26日 優(yōu)先權日2010年6月26日
發(fā)明者何悅美, 梁阿磊, 管海兵, 董國星, 陳凱 申請人:上海交通大學