隨著嵌入式產(chǎn)品性能的日益提高,嵌入式系統(tǒng)在消費(fèi)類電子、汽車、工業(yè)控制和通信等行業(yè)迅速普及;但由于嵌入式系統(tǒng)開發(fā)成本高、研發(fā)周期長,使得關(guān)鍵技術(shù)的加密和重要數(shù)據(jù)的保密問題日益突出。如何在這些嵌入式系統(tǒng)中采用低成本、高效率的方法保護(hù)自己的科研成果不被非法仿制和剽竊,同時(shí)保存一些關(guān)鍵代碼或數(shù)據(jù)已成為困擾許研發(fā)工程師的問題之一。解決的辦法除了采用法律手段保護(hù)知識(shí)產(chǎn)權(quán)外,另一個(gè)更加簡單有效的方法就是采用加密存儲(chǔ)芯片進(jìn)行硬件電路的加密和重要數(shù)據(jù)的認(rèn)證存儲(chǔ)。
AT88SCxx系列加密存儲(chǔ)芯片是國際著名芯片廠商Atmel公司生產(chǎn)的具有多用途的加密存儲(chǔ)系列芯片。其中AT88SC1616是該系列芯片的典型代表。由于其具有多達(dá)2KB的EEPROM,利用I2C串行總線通信,采用認(rèn)證或加密驗(yàn)證等方式進(jìn)行數(shù)據(jù)訪問,因此以其容量大、體積小、使用方便、安全可靠等特點(diǎn),在產(chǎn)生開發(fā)中得到了廣泛的應(yīng)用。
1 器件簡介
1.1 引腳說明
如圖1所示,在嵌入式系統(tǒng)中,AT88SC1616常采用SOIC和PDIP兩種典型封裝。由于器件采用I2C串行總線接口,因此引腳數(shù)目少,體積小。各引腳功能如下:
SCL——串行時(shí)鐘輸入腳,用來控制器件所有的數(shù)據(jù)輸入相輸出;
SDA——串行數(shù)據(jù)輸入/輸出腳;
VCC——電源|穩(wěn)壓器電壓,工作電壓為3.0~5.5V;
GND——地;
NC——不連接。
1.2 內(nèi)部結(jié)構(gòu)
如圖2所示,AT88SC1616加密存儲(chǔ)芯片內(nèi)部結(jié)構(gòu)主要由電源管理復(fù)位模塊、同步傳輸模塊、認(rèn)證單元、密碼校驗(yàn)單元、偽隨機(jī)數(shù)發(fā)生器和EEPROM等幾部分組成。其中電源管理復(fù)位模塊主要對(duì)芯片進(jìn)行供電、提供復(fù)位管理和掉電保護(hù)等功能;同步傳輸模塊用于控制在不同通信方式下數(shù)據(jù)的傳輸;認(rèn)證和密碼校驗(yàn)單元實(shí)現(xiàn)在不同安全等級(jí)下用戶用戶應(yīng)用區(qū)數(shù)據(jù)訪問的安全管理;偽隨機(jī)數(shù)發(fā)生器用于進(jìn)行內(nèi)部加密機(jī)的加密計(jì)算;EEPROM則保存需要加密的重要數(shù)據(jù)和代碼。
1.3 主要特點(diǎn)
、倬哂256B的配置存儲(chǔ)區(qū),可根據(jù)不同需要定義芯片序列、密碼、密鑰、認(rèn)證種和廠家信息等。
、谔峁2KB的用戶應(yīng)用存儲(chǔ)區(qū),可根據(jù)不同安全等級(jí)將該區(qū)劃分為16個(gè)獨(dú)立的應(yīng)用分區(qū),最多可以提供給16個(gè)用戶使用;也可將具有相同安全等級(jí)和密碼的多個(gè)應(yīng)用分區(qū)進(jìn)行合并。
③高安全性。對(duì)于用戶民應(yīng)用區(qū),具有標(biāo)準(zhǔn)訪問、認(rèn)證訪問和加密驗(yàn)證訪問兩種方式,同時(shí)提供多組密碼集供讀寫訪問使用。每個(gè)應(yīng)用分區(qū)在配置區(qū)中都有相應(yīng)的寄存器控制其安全等級(jí)和訪問方式。
、芨呖煽啃浴L峁┒噙_(dá)10萬次擦寫次數(shù)和10年的數(shù)據(jù)保存期。
⑤多種封裝。除8腳的PDIP、SOIC封裝外,還具有智能卡片封裝,可廣泛應(yīng)用于IC卡系統(tǒng)。
、薷咚俣。在I2C串行總線方式下,通信速率最高可達(dá)1000kb/s。
2 工作原理
2.1 配置區(qū)結(jié)構(gòu)
AT88SC1616邏輯加密芯片是一款串行EEPROM,共有2KB的用戶應(yīng)用存儲(chǔ)區(qū)和256B的系統(tǒng)配置區(qū),應(yīng)用存儲(chǔ)區(qū)通過配置可劃分成 16個(gè)相同容量的應(yīng)用存儲(chǔ)區(qū)。分別受8套(16個(gè))讀、寫密碼的控制,錯(cuò)誤計(jì)數(shù)最大8次。這16個(gè)應(yīng)用分區(qū)也可以通過配置使用相同的密碼和安全等級(jí)可自由合并使用。AT88SC1616配置區(qū)的結(jié)構(gòu)如圖3所示。
、貲CR:指定認(rèn)證次數(shù)限制和芯片地址。
、贏R0~AR7:確定訪問權(quán)限,初始化時(shí)定義,指定對(duì)應(yīng)的用戶應(yīng)用區(qū)訪問方式,例如是否需要認(rèn)證,是否使用密碼,使用哪一套密碼,是否只讀等等。
、跘AC:認(rèn)證錯(cuò)誤計(jì)數(shù)器。
、躊AC:密碼錯(cuò)誤計(jì)數(shù)器。
供用戶使用的16個(gè)應(yīng)用存儲(chǔ)區(qū)都各有2個(gè)24位的密碼,可在配置區(qū)對(duì)其讀寫操作進(jìn)行設(shè)置,并且每個(gè)密碼都有計(jì)數(shù)器限制口令驗(yàn)證次數(shù)。
2.2 芯片使用
AT88SC1616芯片為用戶訪問應(yīng)用存儲(chǔ)區(qū)提供了標(biāo)準(zhǔn)、認(rèn)證和加密三種方式,既方便用戶根據(jù)實(shí)際情況靈活選擇加密方式,又提高了系統(tǒng)的安全性。在標(biāo)準(zhǔn)訪問方式下,對(duì)用戶應(yīng)用區(qū)的讀寫訪問無任何限制;在認(rèn)證方式下,用戶必須經(jīng)過認(rèn)證,同時(shí)要通過不同用戶區(qū)所設(shè)定的密碼檢驗(yàn)才能正確訪問用戶數(shù)據(jù)區(qū),在這種方式下,總線上傳輸?shù)臄?shù)據(jù)是明文:加密驗(yàn)證模式下訪問用戶時(shí)用戶必須首先經(jīng)過認(rèn)證,然后利用認(rèn)證成功后配置區(qū)特定寄存器中更新的數(shù)據(jù)作為密鑰再次進(jìn)行認(rèn)證,最后還要通過不同用戶區(qū)設(shè)定的密碼檢驗(yàn)后才可訪問用戶區(qū),這種方式下總線下傳輸?shù)臄?shù)據(jù)是經(jīng)過加密的密文。
接著發(fā)送校驗(yàn)和,以和芯片內(nèi)部的加密機(jī)進(jìn)行校驗(yàn),校驗(yàn)和不正確芯片會(huì)返回錯(cuò)誤信息。
4 在嵌入式系統(tǒng)中的應(yīng)用
由于AT88SC1616具有使用方便、安全可靠等諸多優(yōu)點(diǎn),使其在工業(yè)控制、消費(fèi)類電子、醫(yī)療器械、計(jì)費(fèi)系統(tǒng)等領(lǐng)域具有廣闊的應(yīng)用前景。筆者已將該芯片用于已開發(fā)的選擇性漏電保護(hù)系統(tǒng)中。在這個(gè)系統(tǒng)中的64條供電支路被人為劃分成4個(gè)區(qū),每個(gè)區(qū)設(shè)定獨(dú)立的電壓、電流和相位。針對(duì)不同區(qū)的管理員,還設(shè)定不同的用戶名和密碼,這些參量都被保存在AT88SC1616的用戶使用區(qū)中。我們?cè)诰S護(hù)系統(tǒng)數(shù)據(jù)安全性方面采用的辦法是,在程序中對(duì)這些參量的讀寫訪問都設(shè)定了密碼,密碼不正確是不能讀寫這些參量的,保證了只有真正的供電分區(qū)管理員才可對(duì)相應(yīng)區(qū)的系統(tǒng)參數(shù)進(jìn)行設(shè)定;同時(shí)采用加密驗(yàn)證訪問方式,使得總線上傳輸?shù)臄?shù)據(jù)是密文,維護(hù)了系統(tǒng)數(shù)據(jù)的安全性。為防止有些不良用戶利用非法手段獲取系統(tǒng)時(shí)序進(jìn)行反匯編,以此達(dá)到破解系統(tǒng)牟取高額利潤的目的,也采用了兩個(gè)辦法來保證整個(gè)系統(tǒng)的安全性,一是系統(tǒng)中不定期地對(duì)芯片進(jìn)行認(rèn)證訪問,系統(tǒng)一次認(rèn)證不成功就返回錯(cuò)誤信息;第二是對(duì)非法的認(rèn)證訪問數(shù)進(jìn)行錯(cuò)誤限制,錯(cuò)誤一旦超過8次,芯片鎖死,從而維護(hù)了我們的知識(shí)產(chǎn)權(quán)。
出于安全考慮,每個(gè)芯片要使用唯一的序列號(hào)。筆者還根據(jù)實(shí)際情況設(shè)計(jì)了一款針對(duì)AT88SC1616的簡單實(shí)用的編程器,利用該編程器可在芯片正式使用之間對(duì)其初始化,將序列號(hào)、認(rèn)證參數(shù)、安全等級(jí)、訪問密碼等各種信息寫入配置區(qū),使得每一個(gè)被初始化的芯片都可以直接在其它系統(tǒng)中應(yīng)用,大大提高了效率。