基于KEELOQ跳碼技術(shù)的密碼發(fā)生器設(shè)計
基于密碼的訪問控制系統(tǒng)應(yīng)用在當(dāng)今是非常普遍的,但人們對其提供的安全等級經(jīng)常估計過高。通信傳輸速度和系統(tǒng)計算能力的提高使得系統(tǒng)受到惡意攻擊或“密碼掃描”的風(fēng)險增加。在使用不安全的傳送方式時,可能發(fā)生密碼被盜取的現(xiàn)象。例如典型的通過電話線的調(diào)制解調(diào)器連接,這種使用固定密碼的方法很不理想。
跳碼技術(shù)是通過一個序列使訪問密碼在每次使用時改變。這樣,即使知道大量先前使用的密碼,也不能對新的密碼進行預(yù)測。產(chǎn)生這樣一個序列需要使用可靠的加密引擎。Microchip公司提供多種基于KEEL0Q跳碼技術(shù)的編碼器,這些編碼器使得產(chǎn)生跳碼遠程控制更為方便。
本文采用Microchip公司的單片機PICl2C508和HSC300編碼器設(shè)計了一個密碼發(fā)生器,安裝于鍵盤和PC之間。一個5引腳插頭連接到PC,并向器件供電,而鍵盤插頭則插入5引腳插座。PC和鍵盤之間由時鐘線和數(shù)據(jù)線連接,允許鍵盤進行正常的操作。當(dāng)傳送信息至互聯(lián)網(wǎng)時,這個密碼發(fā)生器為通用訪問控制安全登錄創(chuàng)建一個“超級密碼”。
1 密碼發(fā)生器構(gòu)成與工作原理
1.1 鍵盤數(shù)據(jù)接收和發(fā)送
目前使用的標(biāo)準(zhǔn)5孔屏蔽式連接器如圖1所示。其中包括時鐘線、數(shù)據(jù)線、地線和+5 V電源線,可以實現(xiàn)鍵盤和PC之間的雙向數(shù)據(jù)傳輸。
通常,從鍵盤至PC的數(shù)據(jù)發(fā)送是通過按鍵或鍵釋放完成的。然而,某些配置數(shù)據(jù)(即重復(fù)、延遲和速率)可能反向傳遞。例如,在系統(tǒng)引導(dǎo)過程中,鍵盤使用集電極開路驅(qū)動器對時鐘線進行驅(qū)動。PC可通過保持時鐘線為低電平來禁止鍵盤。如果PC將數(shù)據(jù)線保持為低電平而此時時鐘線為高電平,那么計算機發(fā)送請求發(fā)送信號,鍵盤進入接收模式。只有當(dāng)時鐘線和數(shù)據(jù)線同時處于高電平時,鍵盤才被允許發(fā)送數(shù)據(jù)。
1.2 密碼發(fā)生器硬件構(gòu)成
密碼發(fā)生器硬件原理圖如圖2所示。
當(dāng)SO被激活時,PICl2C508接收HCS300編碼器產(chǎn)生的新信息。PICl2c508隨后將模仿鍵盤發(fā)送出正確序列的按鍵和釋鍵信息至PC。為防止鍵盤將此發(fā)送解讀為來自PC的“請求發(fā)送”,在發(fā)送期間將鍵盤與時鐘線和數(shù)據(jù)線隔離。為了簡化電路,采用一個標(biāo)準(zhǔn)的4路雙向CMOS開關(guān)4066來切換密碼發(fā)生器,或鍵盤與PC線的連接。
HCS300編碼器設(shè)計為,可以是密碼發(fā)生器的一部分,也可以像一把鑰匙一樣可移除的,從而允許方便地替換為具有不同加密密鑰或序列號的不同編碼器。HCS300和PICl2C508都采用8引腳SOIC封裝形式,消耗電流極低,并且都能在內(nèi)部產(chǎn)生用于操作密碼發(fā)生器的時鐘,功耗盡量低,以使傳輸線不會出現(xiàn)過載。另外,尺寸盡可能小、元件數(shù)盡可能少,從而盡可能采用較小的封裝。理想的情況是將整個電路安置在2個連接器之間較小的間隙中。除一對用于時鐘線和數(shù)據(jù)線上拉的電阻之外,無需其他元件即可實現(xiàn)全功能的跳碼密碼。
1.3 軟件設(shè)計
軟件由3個代碼段組成:
◆用于HCS300編碼器的接收子程序。
◆鍵盤仿真子程序。
◆主循環(huán)程序。
用于HCS300編碼器的接收子程序(RECEIVE子程序)收集H(2S300發(fā)送的最初64個數(shù)據(jù)位,并將其填充至一個8字節(jié)的緩沖器。其中最后兩個數(shù)據(jù)位將被忽略,因為它們不具有對本應(yīng)用有用的信息。
鍵盤仿真子程序根據(jù)IBM—PC/AT鍵盤協(xié)議實現(xiàn)鍵掃描碼的發(fā)送。
當(dāng)CMOS開關(guān)將PC連接至鍵盤時鐘線和數(shù)據(jù)線時,主循環(huán)程序?qū)ED輸出線進行連續(xù)采樣,以檢測HCS300是否被激活。
當(dāng)LED線變?yōu)榈碗娖綍r,CMOS開關(guān)被激活以使時鐘線和數(shù)據(jù)線與鍵盤隔離,RECEIVE子程序?qū)⒈徽{(diào)用。軟件采用最簡化的形式開發(fā),可對其采取一些優(yōu)化措施。例如:可使PIC12C508進入“休眠”狀態(tài),以進一步減小功耗。編碼器可能被移除,因此應(yīng)對編碼器的接入/激活進行正確檢測。由于沒有解密過程,因此沒有其他方法可獲知發(fā)送操作是否已失敗,只能將第二個密碼字與接收到的第一個密碼字進行對比,以確認是否出現(xiàn)發(fā)送錯誤。
2 加密原理
編碼器HCS300使用KEELOQ跳碼技術(shù),使編碼器每次發(fā)送的數(shù)據(jù)都是獨一無二的。編碼器發(fā)送包括兩部分:第一部分稱為“跳碼部分”,在編碼器每次被激活時發(fā)生改變且被加密;第二部分是發(fā)送數(shù)據(jù)的非加密部分,主要包括編碼器序列號,解碼器通過該序列號對其進行識別。密碼字的組成如下:
跳碼包括功能信息、識別值和一個同步計數(shù)器。在發(fā)送這一信息之前需通過加密算法對其進行加密。加密算法使用64位加密密鑰。如果加密數(shù)據(jù)中的一位發(fā)生改變,則將導(dǎo)致輸出數(shù)據(jù)中平均有一半的位發(fā)生改變。這樣,每次發(fā)送時跳碼將徹底改變,因而無法對其進行預(yù)測。解碼器使用同步信息來確定發(fā)送是有效的還是前一次發(fā)送的重復(fù),前一次密碼將被拒絕以防止密碼被盜取。HSC300編碼器發(fā)送2個溢出位,用來將同步計數(shù)器值的范圍從65 536擴展到196 608次按鈕操作。HCS300編碼器發(fā)送數(shù)據(jù)的固定碼部分包括4位功能信息和2個狀態(tài)位。這2個狀態(tài)位表明是否進行了重復(fù)發(fā)送,以及電池電壓是否過低。HCS300編碼器具有發(fā)送固定種子的能力,種子值連同計數(shù)器值、密鑰、序列號和其他信息一起,在編碼器首次初始化時通過編程寫入編碼器。HCS30C具有32位的種子。
接收應(yīng)用程序(服務(wù)器上運行的軟件)執(zhí)行一些簡單的解碼和校驗步驟,跳碼密碼可用來對大量電子服務(wù)的訪問進行驗證。密碼中固定的未加密部分可用來識別用戶和編碼器中激活的功能。
結(jié) 語
本文設(shè)計的密碼發(fā)生器采用基于KEELOQ的跳碼密碼技術(shù),體積小、功耗低,特別適用于當(dāng)傳送信息至互聯(lián)網(wǎng)時為通用訪問控制安全登錄創(chuàng)建一個“超級密碼”。實踐證明,這種方式的加密方法非??煽俊?/P>