專利名稱:防止電子存儲器被竄改的系統(tǒng)的制作方法
背景本發(fā)明是關(guān)于防止電子存儲器被操縱的系統(tǒng),特別是防止對電子裝置中希望安全的存儲器內(nèi)容進行未授權(quán)操縱的方法和裝置。
這里披露的發(fā)明是關(guān)于任何電子裝置,它的存儲器內(nèi)容要被保持在安全的或最好是不被更改的狀態(tài)。這種要求可能是安全原因所必須的,例如防止對蜂窩電話存儲器進行欺騙性操縱,或者為了在要害性應(yīng)用中保持電子裝置操作的完整性,例如飛機控制或醫(yī)療儀器操作。如這里所披露和描述的那樣,在保證蜂窩電話內(nèi)一個或多個電子存儲器安全的系統(tǒng)和方法這一范圍內(nèi)提出了本發(fā)明的示例性的若干方面。這里還描述了一個系統(tǒng),它通過使用一個數(shù)據(jù)傳送裝置,該裝置在被允許訪問一個電子裝置之前要受到鑒別處理,然后才允許訪問和操縱該電子裝置中的一個或多個電子存儲器。也是在蜂窩電話應(yīng)用的范圍內(nèi)描述了這后一個系統(tǒng)。雖然這里披露的本發(fā)明實施例是針對安全的蜂窩電話存儲器以及用于安全地訪問和更改蜂窩電話中存儲器內(nèi)容的裝置進行描述的,但熟悉本門技術(shù)的人員會容易地理解,根據(jù)本發(fā)明構(gòu)成的系統(tǒng)能被應(yīng)用于具有一個或多個其內(nèi)容保持不變的存儲器的任何系統(tǒng),或者其存儲器只能被授權(quán)裝置訪問的任何系統(tǒng)。因此,本發(fā)明的范圍不限于這些示例性的實施例,而是由這里所附的權(quán)利要求及其等同物所限定。
在美國,1995年中由于蜂窩電話欺詐造成的損失預(yù)計有6億美元。作為對此的反應(yīng),制造商、服務(wù)提供商、聯(lián)邦通信委員會(FCC)以及工業(yè)貿(mào)易集團已經(jīng)在研究大量的打擊這種欺詐的技術(shù)。在美國進行的蜂窩電話欺詐絕大多數(shù)涉及某種形式的存儲器操縱,以便更改蜂窩電話電子序列號(ESN),該序列號是蜂窩電話為建立通信所必須提供的號碼。其結(jié)果是,考慮到作為FCC的一種規(guī)定,一種防止欺詐技術(shù)是要求蜂窩電話制造商使所有微處理機代碼和ESN都不可更改。下面將提供關(guān)于基本的蜂窩通信的一些背景情況,以幫助說明蜂窩遠程通信的運行環(huán)境和包含本發(fā)明的系統(tǒng)所要解決的相關(guān)問題。
圖1中描述了一種蜂窩通信系統(tǒng)的簡化示意圖。移動電話M1-M10通過向蜂窩基站B1-B10發(fā)送無線電信號和從基站B1-B10接收無線電信號來實現(xiàn)與公共交換網(wǎng)的固定部分進行通信。蜂窩基站B1-B10依次通過移動交換中心(MSC)與公共交換網(wǎng)相連。每個基站B1-B10在相應(yīng)的區(qū)域(或稱“小區(qū)(cell)”)C1-C10范圍內(nèi)發(fā)送信號。如圖1中所示,基站的理想安排是要以最小重疊量使這些小區(qū)基本上復(fù)蓋移動電話通信通常發(fā)生的區(qū)域(例如城市區(qū)域)。
當用戶啟動一個小區(qū)內(nèi)的一部移動電話時,該移動電話向小區(qū)基站發(fā)送一個信號,指出該移動電話的存在。移動電話在一指定的建立(set-up)信道(它由每個基站連續(xù)監(jiān)測)中發(fā)送該信號,信號中可能包括ESN。當基站收到該移動電話信號時,它對該移動電話在該小區(qū)內(nèi)的存在進行登錄。這一過程能被周期性地重復(fù)進行,從而使移動電話移動到另一小區(qū)時能被適當?shù)氐卿洝?br>
當撥打一個移動電話號碼時,電話公司中心局識別出這個號碼為移動電話,并把這一呼叫送到MSC。MSC根據(jù)所撥打的移動電話號碼和當前的登錄信息,向某些基站發(fā)出尋呼消息(paging message)。一個或多個基站在它的建立信道上發(fā)送一個尋呼信號(page)。該被撥打的移動電話在該建立信道上識別出它的標識碼并響應(yīng)該基站的尋呼。該移動電話還遵循一個指令調(diào)諧到一個指定的聲音信道,然后啟動振鈴。當一移動電話用戶終止一次通信時,一個信令音調(diào)被傳送到基站,于是雙方釋放該聲音信道。
在前面描述的操作中,移動電話不是永久性地連于固定網(wǎng)絡(luò),而是通過所謂的“空中接口(air interface)”與一基站相連,當然,這樣做提供了蜂窩通信系統(tǒng)的靈活性,因為用戶能容易地遷移移動電話而不受物理連接于一通信系統(tǒng)的限制。然而,這同一特性也造成了在保證蜂窩電話系統(tǒng)上傳送信息安全性方面的困難。
例如,在通常的有線電話系統(tǒng)中,中心交換局能借助一電話機物理上連接的通信線識別特定用戶以收取該電話機的使用費。這樣,要欺詐性使用一用戶的帳戶便需要與該用戶的線路進行物理連接。這存在著發(fā)現(xiàn)欺詐性使用者的危險。
與此相反,蜂窩通信系統(tǒng)對于會是欺詐性使用者的人而言不存在這種問題,因為這些系統(tǒng)是通過空中接口進行通信的。由于缺乏保護措施,欺詐性使用者能通過訪問另一用戶的電子序列號(ESN)來使用該用戶的帳戶,而該ESN是由移動電話在各種時刻傳送給電話網(wǎng)的,借以建立和維持通信。
在建立標準的蜂窩連接時,兩個標識代碼被移動電話傳送給系統(tǒng)。這些代碼是移動標識號(MIN)和ESN。MIN標識一個用戶,而ESN標識該用戶使用的實際硬件。因此,由于用戶會購買新的設(shè)備,故對應(yīng)于特定ESN的MIN會隨時改變。MIN是從10位電話簿電話號碼中導(dǎo)出的34位二進制數(shù),而ESN是唯一標識一部移動電話的32位二進制數(shù)。ESN通常由移動電話制造商設(shè)定。
圖2中的流程圖說明了例如在高級移動電話系統(tǒng)(AMPS)中建立通信時利用的傳統(tǒng)認證方法。根據(jù)這種方法,在方框200一基站從移動電話接收ESN和MIN。這些標識代碼表示為ESNm和MINm,以指明它們是從移動電話收到的。接下來,在方框202,基站從系統(tǒng)存儲器中提取出與MINm對應(yīng)的ESNsys。然后在方框204把ESNsys與ESNm進行比較。如果這兩個序列號相同,則流程進入方框206,系統(tǒng)被允許訪問。否則,在方框208系統(tǒng)訪問被拒絕。
該系統(tǒng)的一個缺點是,一個欺詐性使用者能通過在空中接口上竊聽或從其他來源較容易地合成有效的MIN/ESN組合。如果從移動電話收到的MIN和ESN對應(yīng)于系統(tǒng)存儲器中存儲的那些,則根據(jù)這一傳統(tǒng)系統(tǒng)進行的訪問便認為有效,由于這一情況,欺詐性訪問所必要的全部信息能通過電子竊聽獲取。
在歐洲GMS標準(移動通信全球系統(tǒng))、美國TIA/EIA/IS-136標準以及日本個人數(shù)字蜂窩標準無線電通信系統(tǒng)下操作的系統(tǒng)中,利用查詢-響應(yīng)(challenge-respones)方法防止由竊聽造成的欺詐。根據(jù)該查詢-響應(yīng)方法,每個移動電話伴隨一個唯一的密鑰,它存儲于該移動電話中和網(wǎng)絡(luò)中的一個基站中。對于該系統(tǒng)為唯一的一種算法存儲于每個移動電話中和所希望的一些網(wǎng)絡(luò)節(jié)點中。當建立一個呼叫時,需要進行認證,做法是由網(wǎng)絡(luò)向該移動電話發(fā)出一個查詢(隨機數(shù))。根據(jù)收到的查詢和所存儲的密鑰,該移動電話使用該算法計算出一個響應(yīng)并把該響應(yīng)發(fā)送到網(wǎng)絡(luò)。與此同時,網(wǎng)絡(luò)根據(jù)這同一個查詢和網(wǎng)絡(luò)存儲的密鑰計算出“期望的”響應(yīng)。然后網(wǎng)絡(luò)接收移動電話計算出的響應(yīng)并把移動電話計算出的響應(yīng)與網(wǎng)絡(luò)計算出的響應(yīng)進行比較。如果發(fā)生了不匹配,則產(chǎn)生適當?shù)膭幼?,例如拒絕訪問或設(shè)置警告標志。在授予P.Dent等人的美國專利5,282,250中提出了一種方法,用于實現(xiàn)在移動無線電系統(tǒng)中-基站和-移動電話之間鑒別檢驗的方法。
在傳統(tǒng)的模擬系統(tǒng)(例如AMPS)中,大多數(shù)欺詐是由這樣一些欺詐性使用者搞出的,他們通過獲取有效的MIN/ESN對和使用這一對去對一蜂窩電話重新編程來“克隆”出有效用戶。在更復(fù)雜的克隆方法中,將蜂窩電話的軟件重新編程,從而使它在稱作“翻滾(tumbling)”的實踐中使用多個MIN/ESN對。以翻滾程序編程的蜂窩電話隨機地滾動和選擇一個MIN/ESN對以啟動一次呼叫。當試圖進行一次呼叫但遇到無效MIN/ESN對時,翻滾程序只是簡單地消掉那個MIN/ESN對并繼續(xù)滾動,直到找到有效的MIN/ESN對為止。當編程到蜂窩電話中的所有MIN/ESN對都變?yōu)闊o效之后,該電話的使用者通常是返回到克隆者那里去使一組新的MIN/ESN對編程到該蜂窩電話中。
大多數(shù)蜂窩欺詐涉及某種程度的存儲器操縱。這將參考圖3進行描述,該圖描述了傳統(tǒng)蜂窩電話存儲器和處理器結(jié)構(gòu)的方框圖??刂破?00使用一存儲器總線308與ROM或快速程序存儲器320、EEPROM310以及隨機存取存儲器(RAM)330通信。程序存儲器320是一個非易失讀/寫存儲器,它存儲用于蜂窩電話一般操作的大部分代碼。EEPROM310用于存儲MIN/ESN對314和316,以及用戶輪廓(profile)信息312(例如加速撥號),而RAM用于讀/寫暫時(scrachpad)存儲器??寺≌咭阎廊ケO(jiān)視各存儲器和控制器300之間的消息傳送,以收集用于旁路或修改快速存儲器320或EEPROM310中所存信息的信息。
電話欺詐的最常用方法是非法使用測試命令(這些命令是用于電話服務(wù)和維修),以改變ESM。然而,較新近生產(chǎn)的電話是抗這種行為的,而且已有效地消除了這種攻擊的渠道。因此,克隆者們已經(jīng)在重新尋找更復(fù)雜的攻擊方式。
一種這類技術(shù)是去掉含有ESN314的原有EEPROM310并替換它。在把它去掉之后,對這個EEPROM進行研究以解密它的內(nèi)容。然后把解密的內(nèi)容用于以來自有效用戶帳戶的不適當?shù)囊粚SN/MIN對一個替代的EEPROM進行編程。這個技術(shù)可能對這樣的克隆者有吸引力,如果他或她只想一次改變一個ESN的話。但是,這種技術(shù)是很費力的,而且如果不是特別小心的話,那些技術(shù)差的克隆者可能會損壞印刷電路。
在克隆復(fù)雜性方面的一個大步驟是分析電話的微處理器程序代碼并重寫該代碼的一部分或多個部分,以把一個欺詐性標識(ESN/MIN對)傳送到一個蜂窩基站。這往往涉及改變電話硬件設(shè)計的工程部分,并需要深入理解所嵌入的軟件設(shè)計。然而,這種方法的明顯優(yōu)點是一旦完成了修改,該電話能按需要隨時以新的標識進行重新編程。
最復(fù)雜的攻擊是把前述對蜂窩電話微處理器代碼的修改與硬件的修改結(jié)合起來。這種技術(shù)的一個實例是使用所謂“影子存儲器(shadoumemory)”,以避免被傳統(tǒng)的存儲器有效性檢驗程序的監(jiān)測,這個程序只是當蜂窩電話第一次打開電源時在啟動(boot-up)過程中才執(zhí)行。該啟動過程的執(zhí)行根據(jù)控制器300(見圖3)中包含的啟動代碼304的一小部分。該啟動過程把該蜂窩電話配置成一種在服務(wù)狀態(tài),并把微處理器301中的程序計數(shù)器設(shè)置到快速存儲器320中的適當位置。當完成這一過程時,控制器300會點亮LED 318(或其他等效信號),以向用戶指明該電話處于狀態(tài)。克隆者能監(jiān)測控制器300和LED 318之間和連線306,以破壞正常操作代碼的執(zhí)行,如下文中更詳細描述的那樣。
在典型的現(xiàn)代蜂窩電話中含有的快速存儲器320有512K可尋址能力??寺≌呖赡苋サ暨@個快速存儲器320,并在把這個原有快速存儲器320的內(nèi)容復(fù)制到1024K影子存儲器322的第一個512K中之后,以這個1024K影子存儲器322替代快速存儲器320。在啟動過程中,對程序存儲器的任何訪問都被成功地指向快速存儲器320(*)的第一個512K中。然后克隆者可以監(jiān)測在電話中能得到的一個信號,它指示啟動過程已經(jīng)完成(例如LED信號306),以便把所有后來的程序存儲器訪問切換到影子存儲器322。其后該蜂窩電話根據(jù)在影子存儲器322中找到的指令進行操作,這個存儲器能被編程以包含翻滾例程代碼和相應(yīng)的各MIN/ESN對。
因為大多數(shù)蜂窩欺詐是基于某種程度的存儲器操縱,所以聯(lián)邦通信委員會(FCC)當前正在考慮針對蜂窩電話欺詐的這一方面的解決辦法。這一解決辦法被包含在所提議的FCC規(guī)劃(在§22.219(*)中指定的)。按照當前的寫法,§22.919(*)禁止移動電話操作軟件為可更改的;要求ESN為工廠設(shè)定的而且不能以任何方式被更改、傳送和去掉;而且要求在任何人(包括制造商)試圖去掉、竄改或改變蜂窩電話的ESN、系統(tǒng)邏輯、或固件時該移動發(fā)射機便變成不能操作。
從消費者的角度看,制造商或其工廠授權(quán)的服務(wù)代表有能力對蜂窩電話編程,會使替換不正常工作的蜂窩電話容易實現(xiàn)。例如,如果一個用戶的蜂窩電話不正常工作,該用戶能從工廠授權(quán)代表那里得到一個新的單元并對它編程,使其包含與舊單元相同的電子“個性(porsonality)”。一個蜂窩電話的電子個性不只包括ESN,而且還包括用戶輪廓和由用戶編程到該單元中的大量信息,如個人的和/或業(yè)務(wù)的電話號碼。在不希望他們的用戶因失效終端而造成不便的那些蜂窩服務(wù)提供者們的堅持下,已經(jīng)發(fā)展了修理/替換程序和技術(shù),以能快速和容易地對蜂窩電話改變ESN及其他存儲器內(nèi)容。
在FCC§22.919下,在上述場合的用戶仍能得到一個新的移動單元,如果他們的舊單元失效的話。然而,因為該新單元將伴有新的固定的ESN,這新的ESN信息得要通告給該蜂窩運行者,它得要把這信息編程到他們的數(shù)據(jù)庫。這將造成在很長一段時間內(nèi)該用戶不能得到服務(wù)。用戶還得要把任何個人的或業(yè)務(wù)的電話號碼重新編程到他們的蜂窩電話號?!?2.919的一個更顯著得多的問題是對蜂窩服務(wù)提供者通過對用戶蜂窩電話進行編程或重新編程來向用戶提供系統(tǒng)更新的這種能力的負面沖擊。
§22.919可能對蜂窩工業(yè)的系統(tǒng)更新能力的實際沖擊將在下文中說明。如在TIA/EIA/IS-136標準中指定的數(shù)字控制信道的使用,使蜂窩運行者能提供新的擴展服務(wù),如短消息傳送服務(wù)。如果運行者、制造商或被授權(quán)代理人被允許改變蜂窩電話的軟件和/或固件,便能通過對終端的軟件更新使用戶快速和有效地得到這種服務(wù)。在§22.919(以它當前的形式)下,不論是制造商、制造商授權(quán)的服務(wù)代理或者蜂窩運行者,都不能進行這種軟件改變。運行者能向用戶提供系統(tǒng)增強能力的唯一辦法將是要求用戶購買一部新的蜂窩電話。
為了緩解§22.919對用戶以及制造界的沖擊FCC宣稱將適用于那樣一些蜂窩電話,對這些電話而言,初始類型接受申請是在1995年1月1日之后被受理的。其效果是,F(xiàn)CC存檔在當前在運行的2千萬部蜂窩電話,以及在1995年1月1日之后投入服務(wù)但基于1995年1月1日之前受理的類型接受申請的數(shù)百萬部蜂窩電話?,F(xiàn)在已經(jīng)有如此多的蜂窩單元投入市場而它們的電子信息能被操縱以達到非法目的,這一事實表明,§22.919將對欺詐問題幾乎沒有什么沖擊。那些借助非法竄改用ESNs,進行欺詐的組織能利用那不受§22.919限制的數(shù)百萬個終端繼續(xù)這樣做。
從前述能夠理解,提供具有安全存儲器的蜂窩電話是特別希望的。當前看來還沒有解決辦法來改變蜂窩電話以使它們能抵御竄改。此外,看來還沒有辦法和裝置能以一種只保證授權(quán)訪問的方式提供對電子裝置存儲器的更新。
概述防止蜂窩電話存儲器被竄改(以及一般地說,防止電子存儲器被竄改)的傳統(tǒng)方法和所建議的解決方案有這些和那些缺點和局限,這些缺點和局限被本發(fā)明所克服。本發(fā)明的實施例防止電子存儲器內(nèi)容被未授權(quán)訪問和操縱。
根據(jù)本發(fā)明的一個方面,通過周期性地審查電子裝置中的內(nèi)子存儲器內(nèi)容以保證其內(nèi)容不被竄改,來實現(xiàn)其安全性。這種審查涉及對電子存儲器的選定內(nèi)容進行隨機計算以提取這些內(nèi)容的一個審查散列值(audit hash value)或稱審查特征(audit signature)。這個審查散列值與先前從真實存儲器內(nèi)容導(dǎo)出的有效散列值進行比較。這個有效散列值最好是以密碼形式存儲在電子存儲器內(nèi)并只是為了進行比較才解密。審查散列值與有效散列值之間的不一致能表明存儲器被竄改,于是可以使包含該電子存儲器的電子裝置不工作或作出警告指示。
根據(jù)本發(fā)明的另一方面,能由一個數(shù)據(jù)傳送裝置對電子存儲器的內(nèi)容(例如蜂窩電話存儲器中包含的內(nèi)容,包括蜂窩電話的ESN)進行更新,該數(shù)據(jù)傳送裝置在被允許訪問存儲器內(nèi)容之前要受鑒別。數(shù)據(jù)傳送裝置的鑒別涉及使用一種公共/私人密鑰鑒別方法。當數(shù)據(jù)傳送裝置與電子裝置接口并請求訪問時。該電子裝置啟動一個鑒別該數(shù)據(jù)傳送裝置的處理過程。這能涉及電子裝置和數(shù)據(jù)傳送裝置之間交換一系列消息。在電子裝置內(nèi)保持一個公共密鑰,它用于對編成密碼的消息進行解密,或者以數(shù)據(jù)傳送裝置內(nèi)保持的秘密的私人密鑰來“簽字”。再具體地說,當數(shù)據(jù)傳送裝置請求對電子裝置執(zhí)行程序時,一個鑒別過程被啟動。電子裝置的響應(yīng)是向數(shù)據(jù)傳送裝置發(fā)出一個查詢消息。該查詢消息被數(shù)據(jù)傳送裝置中保持的私人密鑰以數(shù)字簽名形式簽字。簽字的查詢信息被送回電子裝置,它確認它使用公共密鑰。一旦被確認,數(shù)據(jù)傳送裝置便被允許訪問電話裝置中的特權(quán)命令和能力。
在對電子存儲器作任何再編程之后,該電子裝置完成散列計算,以導(dǎo)出關(guān)于修改后的存儲器內(nèi)容的新的(有效的)散列值。這新的散列值被回送到電子裝置用于以私人密鑰進行數(shù)字簽名。簽名的新的散列值被回送到電子裝置供存儲。當電子裝置完成下一次存儲器審查時,所得到的審查散列值與這新的有效散列值進行比較。
圖件簡述在結(jié)合圖件閱讀本說明之后便能更容易地理解本發(fā)明的前述和其他目的、特征和優(yōu)點,其中圖1描述一蜂窩通信系統(tǒng)的理想配置;圖2描述一流程圖,說明為建立蜂窩呼叫所用的傳統(tǒng)蜂窩認證方法;圖3描述一種傳統(tǒng)的蜂窩電話處理器和存儲器裝置;圖4描述根據(jù)本發(fā)明的一個實施例的蜂窩電話處理器和存儲器裝置;圖5描述一個流程圖,說明根據(jù)本發(fā)明的一個實施例的示例蜂窩電話的啟動方法;圖6描述一個流程圖,說明根據(jù)本發(fā)明的示例周期性存儲有效性確認方法;圖7描述根據(jù)本發(fā)明的示例數(shù)據(jù)傳送裝置;圖8描述一個流程圖,說明根據(jù)本發(fā)明的一個實施例的認證數(shù)據(jù)傳送裝置的示例方法;圖9描述一個流程圖,說明根據(jù)本發(fā)明的一個實施例的把初如ESN送入蜂窩存儲器的示例方法;圖10描述一個流程圖,說明根據(jù)本發(fā)明重編程一個已建立的ESN的示例方法;以及圖11描述根據(jù)本發(fā)明的一個實施例的被保護的存儲器裝置;以及圖12描述根據(jù)本發(fā)明的一個實施例的示例蜂窩電話編程器。
詳細描述下面在蜂窩電話應(yīng)用的內(nèi)容范圍內(nèi)披露根據(jù)本發(fā)明的示例電子存儲器涉及的裝置和方法。下面描述的例子只是提供出來供說明包含本發(fā)明的一種理想應(yīng)用。
參考圖4,控制器400控制-蜂窩電話的操作(例如見圖12中的參考號1204)。控制器400與一閃頻程序存儲器420、電子可擦可編程只讀存儲器(EEPROM)410、以及隨機存取存儲器(RAM)408結(jié)合操作。控制器400包含微處理器402和內(nèi)部只讀存儲器(IROM)403。IROM403包含啟動代碼404、散列代碼405、認證代碼409、以及一公共的編密碼用密鑰406??刂破?00還包括一個受保護的靜態(tài)隨機存取存儲器(PSRAM)407,一個中斷控制器421、以及一個基于硬件的計時器401用于啟動由微處理器402對選定的存儲器內(nèi)容進行周期性散列計算。EEPROM410包含用戶側(cè)面數(shù)據(jù)412、ESN414、MIN416以及簽字/未簽字的有效散列值對418。蜂窩電話一般操作所涉及的指令代碼保存在閃頻程序存儲器420中。RAM存儲器408被用作為操作的暫存(scrachpad),這些操作是正常蜂窩電話呼叫處理的一部分。涉及敏感數(shù)據(jù)、散列值計算和認證處理的操作最好是與PSRAM407結(jié)合進行??刂破?00通過存儲器總線424與閃頻程序存儲器420、RAM408及EEPROM410通信。
根據(jù)本發(fā)明的一個實施例,用于圖4所示系統(tǒng)的電話通電和存儲器有效性確認的處理方法示于圖5中。在蜂窩電話被接通電源后,在IROM403中的啟動代碼404被微處理器402執(zhí)行以初始化控制器(方框500)。然后,在IROM403中包含的散列代碼405被運行,以在快速程序存儲器的選定內(nèi)容和存儲在EEPROM410中的ESN值414上完成審查散列值計算(方框502)。然后控制器認證存儲在EEPROM410中的簽字的有效散列值對418(方框504)。這可能涉及通過把簽字的有效散列值以公共密鑰406進行處理然后將結(jié)果與未簽字散列值比較來認證簽字的有效散列值。然后,被認證的散列值被存儲在PSRAM407中(方框506)。然后把在方框502提取的審查散列值和在方框504提取的被認證散列值進行比較(方框508)。如果這兩個散列值匹配,則一個微處理器程序計數(shù)器被設(shè)置到快速存儲器420中的一個適當位置,并啟動一個周期性的散列值計算過程(方框510),其后蜂窩電話開始正常操作(方框512)。如果在方框508處散列值不匹配,則該系統(tǒng)被置于無限循環(huán)(方框514),或者被關(guān)掉。前述過程防止一個克隆者在閃頻存儲器中替換一個被修改的程序或者在EEPROM410中替換一個被修改的ESM,因為這樣做會造成散列值不匹配,從而使電話變成不可操作。
為了防止啟動正常操作后由影子存儲器422代替有效快速存儲器420,最好是完成周期性的散列值處理。在正常電話操作過程中,能發(fā)生周期性散列值計算以響應(yīng)計時器終止或響應(yīng)其他系統(tǒng)事件。在圖4所描述的實施例中,周期性散列計算被啟動,以響應(yīng)一個以硬件為基礎(chǔ)的計時器401的終止,它引起一個不可屏蔽中斷(NMI)的產(chǎn)生。一個NMI是一面向硬件的中斷,它不能被軟件過程屏蔽掉。因此,克隆者不能構(gòu)成目的在于阻止NMI的影子代碼。一個常規(guī)的中斷也是一個硬件中斷,它必須與其他來自正常蜂窩電話事件的常規(guī)中斷競爭以得到對微處理器資源的訪問。當一個常規(guī)中斷變?yōu)橛凶罡邇?yōu)先級的中斷請求裝置時,該常規(guī)中斷被承認和被處理。
因為一個完整的散列值計算所占用的時間可能長于正常電話操作所能允許的時間,所以最好提供一種能力能在一段時間(例如幾秒)分成的幾段中完成以分段為基礎(chǔ)的處理。根據(jù)最佳實施例的另一方面,基于硬件的計時器啟動一個兩步處理以完成一段散列值計算。首先,一個不可屏蔽中斷(NMI)使微處理器立即提取按時間安排包括在周期性散列計算中的下一個快速或EEPROM存儲器位置的內(nèi)容,并把它存儲在PSRAM中。該NMI最好是該中斷的短的頂級優(yōu)先級變體,它對于NMI發(fā)生時可能正在運行的微處理器任務(wù)造成的影響可以忽略,這保證克隆軟件不能采取任何行動來避免受到散列計算的檢測。第二個較低優(yōu)先級的標準中斷也由該基于硬件的計時器401產(chǎn)生,它請求服務(wù)以便基于先前被NMI例程捕獲的存儲器字節(jié)完成散列值計算的當前段。這個任務(wù)可以象為正常的呼叫處理任務(wù)所需要的那樣,在硬件計時器終止和關(guān)閉電話機之前被延期一個預(yù)定的最長時間(T)。最長時間(T)的選擇是要使任何合理的呼叫處理能夠完成,該散列計算段能夠結(jié)束,而且該硬件計時器能在它終止之前復(fù)位到它的遞減計數(shù)循環(huán)的開始處。使用兩類中斷周期性完成一段散列值計算的策略避免了系統(tǒng)響應(yīng)的任何降低,同時保證安全性檢驗不能被駐留在影子軟件存儲器中的克隆軟件所旁路。
圖6顯示根據(jù)本發(fā)明周期性散列值計算方法的示例流程圖。參考該圖,當硬件計數(shù)器401中的T1計數(shù)器終止時(方框602),在方框604產(chǎn)生NMI和常規(guī)中斷這兩個中斷。一旦NMI獲得對微處理器的控制(方框604),系統(tǒng)使常規(guī)中斷停止或排隊等候短時間,期間把散列計算所需要的閃頻或EEPROM存儲器中的下一個字節(jié)復(fù)制到PSRAM中(方框606),然后控制返回到NMI發(fā)生時所執(zhí)行的任務(wù)(方框608)。在正常情況下,在一個短時間內(nèi),來自基于硬件的計時器401的正常中斷也得到服務(wù)(方框610),而且基于先前存儲在PSRAM中的存儲器字節(jié)進行的一段散列計算被完成(方框616)。如果散列值計算尚未完成,則基于硬件的計數(shù)器(T1和T2)401被復(fù)位到它們的初始值(方框624)并且正常的電話操作繼續(xù)進行,直至計數(shù)器T1的下一次終止。如果在該常規(guī)中斷被服務(wù)(方框610)之前計數(shù)器T2會終止(方框612),則電話被停止(方框614)。計數(shù)器T2的缺省終止(除非該常規(guī)中斷被正確地服務(wù))防止克隆者停止周期性散列計算。
散列值的這種周期性逐段計算繼續(xù)下去,直至審查混到值計算完成為止(方框618)。然后從PSRAM中取出先前認證的散列值并與該審查散列值比較(方框620)。如果匹配,則基于硬件的計數(shù)器401被復(fù)位(方框624),電話繼續(xù)正常操作(方框600)。如果不匹配,系統(tǒng)被停止(方框622),例如把微處理器402置于停止狀態(tài)。
在其上完成散列計算的蜂窩電話存儲器的選定內(nèi)容最好包括取自快速存儲器420的內(nèi)容以及EEPROM414內(nèi)的ESN。這防止克隆者物理上移走或修改快速存儲器或EEPROM以及用重編程的裝置代替它們,這種重編程裝置包含修改的ESN和/或為欺詐蜂窩電話而設(shè)計的程序代碼。最好是所選擇的存儲器內(nèi)容和所用的散列值計算能使電話由于散列值計算中包括的即使是一個存儲器位的改變也會變成不可操作的。
根據(jù)本發(fā)明的另一方面,使用數(shù)據(jù)傳送裝置能以安全的方式對蜂窩電話編程。圖7中顯示根據(jù)本發(fā)明的一個數(shù)據(jù)傳送裝置示例。控制器400、它的內(nèi)容、以及相關(guān)部件的參考號碼都與圖4中的圖件參考號碼完全相同。示例數(shù)據(jù)傳送裝置750包括一個安全的微處理器752,它包含一個私人密碼密鑰754,該密鑰對應(yīng)于控制器400中的IROM403中的公共密碼密鑰406,安全微處理器752經(jīng)由接口758與蜂窩電話控制器400通信。接口758可以是一個有線串行連接,如RS-232鏈路,無線紅外接口,或RF接口,如蜂窩電話的主無線(未畫出),或在蜂窩電話內(nèi)的另一天線。
只有在完成了嚴格的認證過程之后,才允許由數(shù)據(jù)傳送裝置750訪問蜂窩電話存儲器。更具體地說,只有在數(shù)據(jù)傳送裝置750經(jīng)受了查詢-響應(yīng)過程以保證它的真實性之后,控制器400(及其相關(guān)的存儲器部件)才能為了下載數(shù)據(jù)的目的而被訪問。圖8顯示了根據(jù)本發(fā)明的一個實施例認證數(shù)據(jù)傳送裝置750的示例方法。作為第一步(方框800),最好是使用先前參考圖5描述的防欺詐過程把電話帶入操作狀態(tài)。在建立了一個接口之后,安全處理器752把一編程請求消息和由安全微處理器752產(chǎn)生的一個隨機數(shù)(Rand1)一起發(fā)送給控制器400(方框802)。作為響應(yīng),控制器400向安全微處理器752發(fā)送一個隨機數(shù)查詢代碼(Rand2)(方框804)。然后,安全微處理器752根據(jù)Rand1、Rand2和私人密鑰754產(chǎn)生一個查詢響應(yīng)(方框806)。然后查詢響應(yīng)被回送到控制器400(方框808)。控制器400使用Rand1、Rand2和公共密鑰406對查詢響應(yīng)進行處理。然后通過把處理后的查詢響應(yīng)之值與Rand2進行比較來認證這處理后的查詢響應(yīng)(方框812)。如果查詢響應(yīng)被適當?shù)亟饷?例如Rand2),則該數(shù)據(jù)傳送裝置的真實性被證實,于是電話進入一種編程方式(方框814)。其后數(shù)據(jù)傳送裝置750能訪問蜂窩電話中的各種存儲器和/或下載新的閃頻存儲器420的內(nèi)容。
如果查詢響應(yīng)是無效的,則失敗計數(shù)增1(方框816)。該失敗計數(shù)被檢驗,看是否已達到一個預(yù)定數(shù)(maxcount)(方框818)。失效計數(shù)考慮到數(shù)據(jù)傳送裝置750可能在一個多噪聲介質(zhì)上與控制器400通信。任何造成的通信錯誤都可能造成認證失敗。因此,最好是對數(shù)據(jù)傳送裝置750提供不只一次機會去把蜂窩電話置于編程方式。在本發(fā)明的一個實施例中,最大計數(shù)(maxcount)50被確定為是合適的。如果尚未達到預(yù)定次數(shù),一個消息被送到數(shù)據(jù)傳送裝置750,指出已發(fā)生了認證失敗(方框822)。一旦收到這一指示,認證過程在方框802重新開始。如果已經(jīng)達到了預(yù)定的嘗試次數(shù),則該電話被置于不能操作狀態(tài),并能顯示出一條消息,向用戶指出該電話必須返回以得到被授權(quán)服務(wù)。
在數(shù)據(jù)傳送裝置750已經(jīng)完成任何ESN重編程或下載到快速存儲器420,在電話中的控制器400啟動一次新的散列計算,它包括例如快速存儲器420中修改過的內(nèi)容以及ESN414。造成的散列值被送到數(shù)據(jù)傳送裝置750以得到使用私人密鑰754給出的數(shù)字簽名。然后,簽字的散列值被送回控制器400,與同一散列值的未簽字版本一起存儲在EEPROM410中。
根據(jù)本發(fā)明,ESN能被重編程,但出于安全的原因,ESN編程最好是在工廠一級完成,而不是由被授權(quán)的工廠代理來完成。對ESN編程能在兩種場合發(fā)生在制造過程中的初始ESN編程和對現(xiàn)有的ESN重編程,初始ESN能使用與圖7類似的數(shù)據(jù)傳送裝置來編程。下面參考圖9描述初始ESN編程方法。
作為第一步(方框900),電話被帶入操作狀態(tài)(見圖5)。在與該電話建立了一個接口之后,安全處理器752向控制器發(fā)送一個ESN編程請求消息以及一個隨機數(shù)(Rand1)(方框902)??刂破?00完成一種檢驗,以確定電話內(nèi)的ESN是否為全零,新制造的電話總是這種情況(方框904)。如果ESN不是全零,ESN編程方式請求被拒絕(方框906)。如果ESN是全零,則啟動一個查詢-響應(yīng)過程,該過程基本上類似于圖8中步驟804至820中進行的過程(見方框908)。在成功地認證了數(shù)據(jù)傳送裝置750之后,一個新的ESN能被下載到EEPROM410中。
在數(shù)據(jù)傳送裝置750已經(jīng)完成把ESN下載到EEPROM410之后,控制器400啟動一個新的散列計算,它包括新的ESN414。造成的散列值被送到數(shù)據(jù)傳送裝置750,以得到用私人密鑰754給出的數(shù)字簽名。然后,簽過字的散列值418被回送到控制器400,與這同一散列值的未簽字版本一起存儲在EEPROM410中。
在包含本發(fā)明的系統(tǒng)中也能對現(xiàn)有的ESN重編程。ESN重編程過程最好只在工廠完成,而不是由本地被授權(quán)工廠代理完成。利用只在工廠才能得到的一組微處理器指令,提供了附加的安全性,這組指令被加載到電話中,用于改變先前被編程到該電話中的ESN。這一過程能使用與圖7所示類似的數(shù)據(jù)傳送裝置來完成,下面參考圖10描述這一過程。
作為第一步(方框1000),根據(jù)圖8所示方法,電話被置于常規(guī)編程方式。工廠數(shù)據(jù)傳送裝置750包含ESN重編程代碼756,它能被下載到蜂窩電話的PSRAM存儲器407中,以幫助ESN重編程。在把系統(tǒng)置于編程方式后,ESN重編程代碼756被下載到PSRAM407中(方框1002)。在執(zhí)行ESN重編程代碼756過程中,控制器400對現(xiàn)有ESN置零(方框1004)并啟動該ESN重編程代碼(方框1006)。
在數(shù)據(jù)傳送裝置750已完成了把新的ESN送入EEPROM410的過程之后,控制器400啟動一次新的散列計算,它包括新的ESN414(方框1008)。造成的散列值被送到數(shù)據(jù)傳送裝置750,以得到用私人密鑰754給出的數(shù)字簽名(方框1010)。然后,簽字的散列值418被回送到控制器,與同一散列值的未簽字版本一起存儲在EEPROM410中(方框1012)。
在本發(fā)明的實施例中,散列值計算和數(shù)字簽名是使用單向散列函數(shù)和私人/公共密鑰認證方案來完成的。使用單向散列函數(shù)來導(dǎo)出代表該蜂窩電話內(nèi)存儲器內(nèi)容的散列值。公共/私人密鑰系統(tǒng)被用于為存儲于EEPROM中的有效散列值提供安全性,并認證試圖操縱蜂窩電話中存儲器的數(shù)據(jù)傳送裝置或編程器。單向散列計算對于精通專門技術(shù)的人們是公知的,它在例如授予Moore的美國專利5,343,527號中被描述。
單向散列函數(shù)是這樣一個函數(shù),它在沿向前的方向進行的計算是簡單的,而在沿相反方向的計算是困難的。單向散列函數(shù)H(M)作用于一個任意長輸入M,在本發(fā)明的實施例中它由選定的電子存儲器內(nèi)容構(gòu)成。對M完成的散列函數(shù)返回一個固定長度的散列值h(見式1)。
h=H(M) 式1有許多函數(shù)能取任意長輸入和返回一個固定長度輸出,但單向散列函數(shù)有如下附加特點如果給定M,則容易計算h;如果給定h,則難于計算M;如果給定M,則難于找到另一消息M′,使得H(M)=H(M′)。
對單向散列的基本攻擊是如果給定存儲器輸入(被散列的內(nèi)容)的散列值。克隆者將試圖創(chuàng)建另一組存儲器內(nèi)容M′,使得H(M)=H(M′)。如果克隆者成功地這樣做了,它就會削弱單向散列函數(shù)完全性的基礎(chǔ)。單向散列的目的是提供M的唯一的簽名或指紋。在本發(fā)明中,對蜂窩電話存儲器的選定內(nèi)容完成一個安全的單向散列函數(shù),以產(chǎn)生一個審查散列值。該審查散列值與一有效散列值比較,該有效散列值是先前對來自已知為真實的存儲器的選定存儲器內(nèi)容完成單向散列函數(shù)而產(chǎn)生的。
在一個最佳實施例中,一個消息摘要(digest)算法(例如MD5)被用于安全的單向散列計算。MD5算法產(chǎn)生輸入消息(即選定的存儲器內(nèi)容)的N位散列,或稱消息摘要。MD5算法是很敏感的,這在于所選定內(nèi)容中單個位的改變在統(tǒng)計上會造成散列值的一半位發(fā)生變化。MD5算法還由于它的快速和簡要而聞名。速度是一個重要的考慮,這在于對蜂窩電話微處理器的時間需求不能太大,以免對常規(guī)的系統(tǒng)處理過程造成不可接受的干擾。
MD5算法的適用性還因為它能在增量基礎(chǔ)上完成,允許散列過程中斷,從而在散列計算恢復(fù)之前常規(guī)的微處理器任務(wù)能被處理。此外,MD5算法能很好地適用于傳統(tǒng)的微處理器結(jié)構(gòu)。根據(jù)本發(fā)明的實施例能被使用的其他單向散列算法包括但不限于Snerfu、H-散列、MD2、MD4、安全散列算法(SHA)、以及HAVAL。精通本門技術(shù)的人能容易地對微處理器編程來實現(xiàn)單向散列處理過程。
公共密鑰算法使用兩個密鑰,一個是公共可用的,一個是私人密鑰(秘密的)用于諸如對消息編密碼和解密、消息認證、以及數(shù)字簽名等任務(wù)。這些密鑰能以不同方式使用以達到不同的目標,例如,如果目的是使一個消息保密,則私人密鑰應(yīng)由接收人保持其安全,從而使接收人能對消息解密,在這種情況中,加密用密鑰能被公共知道,而且知道與特定的潛在接收人相關(guān)聯(lián)。雖然能向發(fā)送者保證在這一過程中信息的保密性,但接收者不能被保證其發(fā)送者的真實性。如果一對密鑰中的私人(秘密的)密鑰能由發(fā)送者保持秘密供對消息編密碼,則具有相應(yīng)公共密鑰的接收者能被保證其發(fā)送者的真實性,雖然沒有關(guān)于保密性的保證。根據(jù)本發(fā)明,正是這后一種方案被用于認證數(shù)據(jù)傳送裝置。
公共密鑰算法的操作是基于數(shù)學(xué)上的陷門(trapdoor)函數(shù),它使得由公共密鑰導(dǎo)出私人密鑰在計算上是不可實現(xiàn)的。在公共的RAS(Rivest,Shamir和Adleman)算法的情況中,安全性取決于對兩個大素數(shù)的乘積進行因式分解的困難性。密鑰的選擇始于選擇兩個大素數(shù)p和q,它們相乘在一起,產(chǎn)生出一個大數(shù)n。
n=pq 式2然后,編密碼用密鑰e的選擇要使e和(p-1)(q-1)為相對的素數(shù)。最后,使用歐幾里德算法計算解密碼用密鑰d,使得F=(p-1)(q-1) 式3ed=1(模F)式4數(shù)e和n是公共密鑰;數(shù)d是私人密鑰。式5給出RSA編密碼過程,式6給出解密碼過程。
C=Me(模n) 式5M=Cd(模n) 式6能分解n的對手會用式3確定模F,然后由式4確定私人密鑰d,如果給定公共密鑰e的話。盡管如此,如前文所指出的那樣,n是如此之大,以致于對它進行因式分解是做不到的。關(guān)于RSA算法的更多細節(jié)能在授予Rivest等的美國專利4,405,829中找到。
在本發(fā)明的最佳實施例中,利用了Fiat-Shamir(FS)算法或它的變體(參考了美國專利4,748,668,它的內(nèi)容被全部包括在這里作為參考)。FS算法適用于實現(xiàn)一種認證和數(shù)字簽名方案,它很好地適用于典型蜂窩電話的有限計算能力。
FS算法與先前的方案(例如RSA)的不同之處在于FS算法使用的因子是基于尋找模n的二次余數(shù)(νi)的倒數(shù)的困難性。更具體地說,F(xiàn)S方案涉及選擇一個數(shù)n,這是兩個大素數(shù)(它們最好在512個和1064個二進制位長度之間)的乘積。公共密鑰(ν):ν1,ν2…νk和私人密鑰(S):S1,S2,…Sk是這樣產(chǎn)生的Si=Sqrt(1/νi)mod n。在前述等式的內(nèi)容中找出倒數(shù)(1/νi)模n的困難性能被表現(xiàn)為等效于找出素數(shù)n的因子的困難性。在不犧牲安全性的情況下,該算法的執(zhí)行比其他方案快得多。事實上,已發(fā)現(xiàn)FS方案比RSA方案的優(yōu)越之處在于FS計算只需要為完全必要的認證計算所正常需要的模乘的1%到4%。這對應(yīng)于簽定散列值的認證速度比使用RSA方案完成同樣任務(wù)的速度快兩個數(shù)量級。結(jié)果,使用FS方案比使用RSA方案能顯著地快得多地完成數(shù)據(jù)傳送裝置認證和周期性審查散列值比較。當在工廠一級對大量蜂窩電話或其他電子存儲器編程時,使用FS算法通過更快地產(chǎn)生有效散列值的數(shù)字簽名以供存儲來減少了生產(chǎn)時間。其他能應(yīng)用的算法包括但不限于ELGAMAL、DSA、以及Fiege-Fiat-Shamir。
根據(jù)本發(fā)明的另一方面,在蜂窩電話內(nèi)的控制器硬件具有安全特性,它防止克隆者確定安全存儲器的內(nèi)容或者旁路掉先前描述的安全方案,圖11描述了控制器硬件、外部存儲器、以及存儲器/地址總線結(jié)構(gòu)的細節(jié)。除了芯片選擇邏輯1122和安全邏輯1124之外,在控制器中各部件的功能和操作與圖4中描述的相同。芯片選擇邏輯1122對微處理器地址總線1102上的地址解碼,以便為連到總線1102上的存儲器部件和硬件裝置提供硬件選擇信號。例如,每當?shù)刂房偩€1102上出現(xiàn)一個地址被賦予IROM存儲器403時,便有一個IROM芯片選擇(CS)信號生效。
安全邏輯1124的功能是使用存儲器裝置中存儲的而不是在IROM存儲器403中存儲的微處理器指令代碼來檢測訪問PSRAM407內(nèi)容或?qū)谟布挠嫊r器401復(fù)位的企圖。例如,位于快速存儲器420中的帶有PSRAM407中存儲器位置目標地址的讀或?qū)懼噶钅鼙粰z驗為非法操作,任何非法的訪問企圖都會造成微處理器被迫進入停機狀態(tài),它要求對蜂窩電話完全的電源復(fù)位以恢復(fù)正常操作。
安全邏輯是如下邏式的實現(xiàn)邏輯式1 S=↑Supvr·B邏輯式2 Halt=not S·(A+C)這里S=安全方式;↑Supvr=微處理器向監(jiān)督方式的轉(zhuǎn)換;
A=PSRAM存儲器用的芯片選擇信號;B=IROM存儲器用的芯片選擇信號;C=硬件計時用的芯片選擇信號;Halt=輸入到微處理器的一個硬件控制,使它進入無限循環(huán)或永久等待狀態(tài),直到對該電話去掉電源和再加電源。上述邏輯式1表明每當微處理器過渡到監(jiān)督方式(↑Supvr)而且同時IROM403芯片選擇為有效(·B),則安全方式(S)被設(shè)定。上述邏輯式2表明如果控制器400沒有處在安全方式(not S)而且或者PSRAM407或者硬件計時器的芯片選擇信號為有效的(·(A+C)),則停止微處理器的輸入被激活。這個邏輯有效地防止由前述散列值比較和認證過程所提供的安全措施被旁路掉,因為對PSROM407的合法訪問和對硬件計時器401的復(fù)位命令最好是來自IROM403中存儲的代碼。
位于IROM存儲器403中的所有合法代碼(啟動代碼、散列代碼、公共密鑰代碼、以及認證代碼)最好被這樣一些指令括起來,這些指令在一例程開始時設(shè)置安全方式,而在離開例程時使安全方式被清除。在本發(fā)明的一個最佳實施例中,一個軟件中斷指令(通常在現(xiàn)代微處理器中是可以得到的)被放置在IROM403的每個例程的開頭,以使微處理器402切換到一個監(jiān)督方式和使微處理器硬件信號SPVR變?yōu)橛行?。因為在那時IROM403芯片選擇信號將是有效的,安全方式S將被設(shè)定。在軟件例程結(jié)尾執(zhí)行一個返回指令將取消安全方式。
根據(jù)本發(fā)明的另一方面,數(shù)據(jù)傳送裝置包含一個由工廠提供的安全單元,它能與通用計算機結(jié)合使用。圖12描述了一種示例結(jié)構(gòu)安排。安全單元1200經(jīng)由標準接頭1206固定在PC1202的I/O端口。PC1202上的第二個端口與第二個標準接頭1208(如RS-232、電纜或紅外鏈路)以與一個蜂窩電話1204建立接口。利用圖12所示結(jié)構(gòu)安排,能完成圖8中所示處理過程,以進行蜂窩電話重編程處理。具有標準PC和安全單元1200的被授權(quán)工廠服務(wù)代理被裝備成可對電話重編程。
根據(jù)本發(fā)明的另一實施例,能對現(xiàn)有的蜂窩電話提供一種野外編程能力,它對于抵御不涉及獲得對內(nèi)部印刷電路卡集合的訪問的那些攻擊而言是安全的。這一級保護對于克隆攻擊的最普通方法是很有效的,在這些攻擊中使用通過外部電話連接器能訪問的測試命令改變電話內(nèi)部的存儲器內(nèi)容。通過在允許訪問野外編程命令之前使用圖8中描述的數(shù)據(jù)傳送裝置(DTD)認證來更新當前的蜂窩電話,便能實現(xiàn)這一點。認證軟件代碼和公共密鑰都存儲在現(xiàn)有的閃頻存儲器中,從而避免了對現(xiàn)有傳統(tǒng)設(shè)計的任何改變。
在把單向散列計算和密鑰編密碼系統(tǒng)應(yīng)用于安全和編程一個蜂窩電話中的電子存儲器的內(nèi)容中已經(jīng)描述了本發(fā)明的示例性應(yīng)用。然而,精通本門技術(shù)的人們會容易地理解和承認,根據(jù)本發(fā)明,用于導(dǎo)出存儲器內(nèi)容的簽名的任何適當?shù)暮瘮?shù)、計算、算法、方法或系統(tǒng)都能被采用。再有,已參考具體的實施例描述了本發(fā)明。然而,對于精通本門技術(shù)的人,將容易地看出,有可能以不同于前述最佳實施例的具體形式實現(xiàn)本發(fā)明。例如,有可能在任何電子存儲器和/或電子存儲器編程和訪問裝置中實現(xiàn)本發(fā)明而不偏離本發(fā)明的精神。此外,能在數(shù)字信號處理器、專用處理器、或任何其他類似處理器、或面向電子存儲器的系統(tǒng)中應(yīng)用和實現(xiàn)本發(fā)明。所以,這里描述的最佳實施例只是說明性的,不應(yīng)被認為是任何方式的限制性的。本發(fā)明的范圍由所附權(quán)利要求給出,而不是由前面的描述給出,而落入權(quán)利要求范圍的所有變體和等同物都被認為是包含在其中的。
權(quán)利要求
1.在蜂窩電話中的一種裝置,包括一個微處理器;以及存儲器;這里微處理器對存儲器的內(nèi)容完成散列計算以導(dǎo)出審查散列值,該審查散列值與一有效散列值進行比較,該有效散列值是先前對真實存儲器內(nèi)容完成散列計算導(dǎo)出的。
2.根據(jù)權(quán)利要求1的裝置,這里審查散列值是周期性地被導(dǎo)出和與有效散列值比較。
3.根據(jù)權(quán)利要求2的裝置,這里對散列值的周期性導(dǎo)出是基于硬件的計時器的終止而完成的。
4.根據(jù)權(quán)利要求1的裝置,這里所述存儲器包括一個快速存儲器和一個EEPROM。
5.根據(jù)權(quán)利要求1的裝置,還包含被保護的隨機存取存儲器;這里散列計算是與這被保護的隨機存取存儲器結(jié)合完成的。
6.根據(jù)權(quán)利要求4的裝置,這里審查散列值是根據(jù)快速存儲器和EEPROM中的選定內(nèi)容導(dǎo)出的。
7.根據(jù)權(quán)利要求6的裝置,這里被選定內(nèi)容包括一個電子序列號。
8.根據(jù)權(quán)利要求6的裝置,這里被選定內(nèi)容包括微處理器程序代碼。
9.根據(jù)權(quán)利要求1的裝置,這里有效散列值被使用存儲在存儲器內(nèi)的公共密鑰認證。
10.根據(jù)權(quán)利要求1的裝置,這里有效散列值被使用私人密鑰給予一個數(shù)字簽名。
11.根據(jù)權(quán)利要求1的裝置,這里完成的散列計算是從一組散列函數(shù)中選出的,這組散列函數(shù)包括Snerfu,H-散列,MD2,MD4,MD5,安全散列算法(SHA)以及HAVAL。
12.根據(jù)權(quán)利要求10的裝置,這里使用公共/私人密鑰系統(tǒng),它是從一組算法中選出的,這組算法包括ELGAMAL,RSA,DSA,Fiege-Fiat-Shamir以及Fiat-Shamir。
13.根據(jù)權(quán)利要求5的裝置,還包含安全邏輯,這里的安全邏輯監(jiān)督對被保護隨機存取存儲器的訪問。
14.在一個蜂窩電話中,一種用于檢測存儲器被竄改的方法,該方法包括步驟對一存儲器的選定內(nèi)容完成散列計算,將由此產(chǎn)生的簽字的有效散列值存儲起來,該被選定存儲器內(nèi)容已知是真實的;對存儲器的選定內(nèi)容完成散列計算,由此產(chǎn)生一個審查散列值,以及把審查散列值與有效散列值比較,從而審查散列值和有效散列值之間的差別指出被選定存儲器內(nèi)容發(fā)生了變化。
15.根據(jù)權(quán)利要求14的方法,這里產(chǎn)生審查散列值的步驟是與被保護隨機存取存儲器結(jié)合完成的。
16.根據(jù)權(quán)利要求14的方法,還包括如下步驟用基于私人密鑰的數(shù)字簽名簽署有效散列值。
17.根據(jù)權(quán)利要求14的方法,這里產(chǎn)生審查散列值和比較審查散列值與有效散列值的步驟是周期性地完成的。
18.根據(jù)權(quán)利要求14的方法,這里產(chǎn)生審查散列值的步驟是緊跟基于硬件的計時器的終止完成的。
19.根據(jù)權(quán)利要求14的方法,這里產(chǎn)生審查散列值的步驟涉及計算若干審查散列值段。
20.根據(jù)權(quán)利要求19中的方法,這里一個審查散列值段的計算,可以根據(jù)需要被延遲,而同時完成在蜂窩電話內(nèi)發(fā)生的其他過程。
21.根據(jù)權(quán)利要求14的方法,這里有效散列值被給予一個數(shù)字簽名,而且這里審查散列值與有效散列值的比較步驟包括以簽名認證有效散列值的步驟。
22.在一個蜂窩電話中,一種裝置包括一個微處理器;一個快速存儲器,它的內(nèi)容包括用于蜂窩電話的操作指定;以及一個電子可擦可編程只讀存儲器(EEPROM),它的內(nèi)容包括一個有效散列值,這是對真實的閃頻存儲器內(nèi)容和EEPROM存儲器內(nèi)容的選定部分進行單向散列計算導(dǎo)出的;這里的微處理器通過對選定部分完成散列計算而周期性地產(chǎn)生審查散列值,這個審查散列值與被認證的有效散列值進行比較,以評估快速存儲器和EEPROM存儲器中是否至少有一個已被改變。
23.根據(jù)權(quán)利要求22的裝置,這里單向散列計算是從一組中選出的,這一組包括Snerfu,H-散列,MD2,MD4,MD5,安全散列算法(SHA),以及HAVAL。
24.根據(jù)權(quán)利要求22的裝置,這里的有效散列值在被存儲之前接收一個由私人密鑰給出的數(shù)字簽名,并且由一個公共密鑰認證以便與審查散列值比較。
25.根據(jù)權(quán)利要求24的裝置,這里所用的一個公共/私人密鑰系統(tǒng)是從一組算法中選出的,這組算法包括ELGAMAL,RSA,DSA,Fiege-Fiat-Shamir,以及Fiat-Shamir。
26.根據(jù)權(quán)利要求24的裝置,這里有效散列值接收一個數(shù)字簽名,這里使用蜂窩電話外部的處理裝置由私人密鑰給出的。
27.一種對蜂窩電話編程的系統(tǒng),該系統(tǒng)包括數(shù)據(jù)傳送裝置;這里蜂窩電話響應(yīng)從數(shù)據(jù)傳送裝置收到的一個訪問請求消息,從而啟動一個查詢-響應(yīng)認證過程。
28.一種防止未授權(quán)訪問蜂窩電話存儲器編程能力的系統(tǒng),該系統(tǒng)包括一個蜂窩電話,包括一個存儲數(shù)據(jù)用存儲器,以及帶有公共密鑰認證裝置的微處理器;以及一個數(shù)據(jù)傳送裝置,包括一個具有私人密鑰數(shù)字簽名裝置的微處理器用于向蜂窩移動電話提供簽字的消息,這個私人密鑰簽名裝置對應(yīng)于公共密鑰認證裝置;這里蜂窩電話微處理器根據(jù)對數(shù)據(jù)傳送裝置提供的簽字消息的分析來評估數(shù)據(jù)傳送裝置的真實性。
29.評估蜂窩電話編程裝置真實性的方法,該方法包括步驟發(fā)送一個查詢消息以響應(yīng)-編程請求;用一個私人編密碼密鑰對數(shù)字傳送裝置中的查詢消息簽字;把簽字的查詢消息發(fā)送給蜂窩電話;使用一公共密鑰認證蜂窩電話內(nèi)的簽字的查詢消息,該公共密鑰對應(yīng)于私人編密碼密鑰;如果查詢消息未被認證步驟所恢復(fù),則拒絕該數(shù)據(jù)傳送裝置。
30.在一個含有用于對蜂窩電話編程的數(shù)據(jù)傳送裝置的系統(tǒng)中,一種防止對蜂窩電話中存儲器進行非授權(quán)訪問的的一種方法,所述方法包括步驟從數(shù)據(jù)傳送裝置向蜂窩電話發(fā)送一個編程請求;從蜂窩電話向數(shù)據(jù)傳送裝置發(fā)送一個查詢信息以響應(yīng)傳送請求;在數(shù)據(jù)傳送裝置內(nèi)用一私人密鑰對一查詢響應(yīng)消息簽字,這里查詢響應(yīng)消息依賴于查詢消息的各部分;向蜂窩電話發(fā)送簽字的查詢響應(yīng)消息;使用與私人密鑰對應(yīng)的公共密鑰對蜂窩電話內(nèi)的查詢響應(yīng)消息進行認證;以及如果對簽字的查詢響應(yīng)消息的認證確認了數(shù)據(jù)傳送裝置的真實性,則進入編程方式。
31.一種對蜂窩電話編程的系統(tǒng),該系統(tǒng)包括一個編程器;一個具有第一和第二端口的通用計算機;這里的編程器是與第一端口可連接的,而第二端口用于與被編程的蜂窩電話的接口,這里,為響應(yīng)從編程器收到的對蜂窩電話編程的請求,該蜂窩電話返回一個查詢,該查詢被編程器簽字并返回到蜂窩電話供認證,從而使通過對簽字查詢的認證實現(xiàn)的對查詢的恢復(fù)成為編程器真實性的指示,并使蜂窩電話進入編程狀態(tài)。
32.在一蜂窩電話中,一種裝置包括一個微處理器;這里為響應(yīng)從一編程器收到的對蜂窩電話編程的請求,在蜂窩電話中的微處理器向編程器發(fā)出一個查詢消息,這查詢消息被編程器簽字并返回給蜂窩電話供認證,據(jù)此,對簽字查詢的適當認證指明編程器的真實性,并使蜂窩電話進入編程方式。
33.在一蜂窩電話中,一種防止對存儲器進行欺詐性訪問的系統(tǒng),包括安全邏輯;含有指令代碼的只讀存儲器;以及被保護的隨機存取存儲器;這里安全邏輯防止只讀存儲器以外的其他部件訪問被保護的隨機存取存儲器。
34.根據(jù)權(quán)利要求33的系統(tǒng),還包括一個基于硬件的計時器,這里安全邏輯防止只讀存儲器以外的其他部件訪問基于硬件的計時器。
35.根據(jù)權(quán)利要求33的系統(tǒng),這里只當系統(tǒng)處于監(jiān)督方式時才能在只讀存儲器中指令代碼之后緊跟對被保護隨機存取存儲器的訪問。
36.在電子設(shè)備中,一種裝置包括一個微處理器;以及一個存儲器;這里微處理器對存儲器的內(nèi)容完成散列計算以導(dǎo)出審查散列值,該審查散列值與一有效散列值比較,該有效散列值是先前對真實存儲器內(nèi)容進行散列計算導(dǎo)出的。
37.根據(jù)權(quán)利要求36的裝置,這里審查散列值是周期性地導(dǎo)出和與有效散列值比較的。
38.根據(jù)權(quán)利要求36的裝置,這里的存儲器包括一快速存儲器和一個EEPROM。
39.根據(jù)權(quán)利要求36的裝置,這里審查散列值是根據(jù)快速存儲器和EEPROM的選定內(nèi)容導(dǎo)出的。
40.根據(jù)權(quán)利要求37的裝置,這里選定的內(nèi)容包括微處理器編程代碼。
41.根據(jù)權(quán)利要求36的裝置,這里的有效散列值是用存于存儲器內(nèi)的公共密鑰認證的。
42.根據(jù)權(quán)利要求36的裝置,這里的有效散列值用一私人密鑰給予一個數(shù)字簽名。
43.根據(jù)權(quán)利要求36的裝置,這里完成的散列計算是從一組散列函數(shù)中選出的,這組散列函數(shù)包括Snerfu,H-散列,MD2,MD4,MD5,安全散列算法(SHA),以及HAVAL。
44.根據(jù)權(quán)利要求42的裝置,這里所用公共/私人密鑰系統(tǒng)是從一組公共密鑰算法中選出的,這組算法包括ELGAMAL,RSA,DSA,Fiege-Fiat-Shamir,以及Fiat-Shamir。
45.在一個電子裝置中,一種用于檢測存儲器被竄改的方法,該方法包括步驟存儲一個簽字的有效散列值,該值是對一存儲器的選定內(nèi)容完成散列計算產(chǎn)生的,這選定的存儲器內(nèi)容已知是真實的;對存儲器的選定內(nèi)容完成散列計算以產(chǎn)生審定散列值;以及把審查散列值與有效散列值比較,從而審查散列值和有效散列值之間的差別指出選定存儲器內(nèi)容的改變。
46.根據(jù)權(quán)利要求45的方法,還包括如下步驟根據(jù)一私人密鑰用數(shù)字簽名對有效散列值簽字。
47.根據(jù)權(quán)利要求45中申明的方法,這里產(chǎn)生審查散列值和審查散列值與有效散列值比較的步驟是周期性完成的。
48.根據(jù)權(quán)利要求45的方法,這里產(chǎn)生審查散列值的步驟涉及計算審查散列值段。
49.根據(jù)權(quán)利要求48的方法,這里對一個審查散列值段的計算能在必要時被延遲,而同時完成在該電子裝置內(nèi)發(fā)生的其他處理過程。
50.根據(jù)權(quán)利要求45的方法,這里有效散列值被給予一個數(shù)字簽名,而且這里的審查散列值與有效散列值比較的步驟包括以簽名認證有效散列值的步驟。
51.一種對一電子裝置編程的系統(tǒng),該系統(tǒng)包括一數(shù)據(jù)傳送裝置;這里電子裝置啟動一個查詢響應(yīng)認證過程以響應(yīng)從數(shù)據(jù)傳送裝置收到的訪問請求消息。
52.一種防止存儲器訪問的系統(tǒng),所述系統(tǒng)包括安全邏輯;含有指令代碼的只讀存儲器;以及被保護的隨機存取存儲器;這里安全邏輯防止只讀存儲器以外的其他部件訪問被保護的隨機存取存儲器。
53.根據(jù)權(quán)利要求52的系統(tǒng),還包含一個基于硬件的計時器,這里安全邏輯防止只讀存儲器以外的其他部件訪問該基于硬件的計時器。
54.根據(jù)權(quán)利要求52的系統(tǒng),緊跟只讀存儲器中指令代碼的對被保護隨機存取存儲器的訪問只有當系統(tǒng)處于監(jiān)督方式時才能發(fā)生。
全文摘要
披露了防止竄改電子裝置(例如蜂窩電話)中存儲器的方法和裝置。具有存儲器和處理裝置的電子裝置含有邏輯用于完成對該裝置存儲器內(nèi)容的單向散列計算,從而導(dǎo)出這些內(nèi)容的審查散列值或簽名。該審查散列值與從真實存儲器內(nèi)容中導(dǎo)出的有效散列值比較。審查散列值和有效散列值之差異能指明存儲器被竄改。根據(jù)本發(fā)明的另一方面,電子裝置存儲器內(nèi)容能被數(shù)據(jù)傳送裝置更新,該數(shù)據(jù)傳送裝置在被允許訪問存儲器內(nèi)容之前要被認證。數(shù)據(jù)傳送裝置的認證涉及使用公共/私人密鑰編密碼方案。當數(shù)據(jù)傳送裝置與電子裝置建立接口并請求存儲器訪問時,一個認證數(shù)據(jù)傳送裝置的過程被啟動。
文檔編號G06F12/14GK1235743SQ97199389
公開日1999年11月17日 申請日期1997年9月5日 優(yōu)先權(quán)日1996年9月5日
發(fā)明者W·R·奧斯本 申請人:艾利森公司