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