新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于KEELOQ跳碼技術的密碼發生器設計

        基于KEELOQ跳碼技術的密碼發生器設計

        作者: 時間:2008-11-28 來源:網絡 收藏
        引 言
        基于密碼的訪問控制系統應用在當今是非常普遍的,但人們對其提供的安全等級經常估計過高。通信傳輸速度和系統計算能力的提高使得系統受到惡意攻擊或“密碼掃描”的風險增加。在使用不安全的傳送方式時,可能發生密碼被盜取的現象。例如典型的通過電話線的調制解調器連接,這種使用固定密碼的方法很不理想。
        跳碼技術是通過一個序列使訪問密碼在每次使用時改變。這樣,即使知道大量先前使用的密碼,也不能對新的密碼進行預測。產生這樣一個序列需要使用可靠的加密引擎。Microchip公司提供多種基于KEEL0Q跳碼技術的編碼器,這些編碼器使得產生跳碼遠程控制更為方便。
        本文采用Microchip公司的單片機PICl2C508和HSC300編碼器設計了一個密碼發生器,安裝于鍵盤和PC之間。一個5引腳插頭連接到PC,并向器件供電,而鍵盤插頭則插入5引腳插座。PC和鍵盤之間由時鐘線和數據線連接,允許鍵盤進行正常的操作。當傳送信息至互聯網時,這個密碼發生器為通用訪問控制安全登錄創建一個“超級密碼”。

        1 密碼發生器構成與工作原理
        1.1 鍵盤數據接收和發送

        目前使用的標準5孔屏蔽式連接器如圖1所示。其中包括時鐘線、數據線、地線和+5 V電源線,可以實現鍵盤和PC之間的雙向數據傳輸。

        通常,從鍵盤至PC的數據發送是通過按鍵或鍵釋放完成的。然而,某些配置數據(即重復、延遲和速率)可能反向傳遞。例如,在系統引導過程中,鍵盤使用集電極開路驅動器對時鐘線進行驅動。PC可通過保持時鐘線為低電平來禁止鍵盤。如果PC將數據線保持為低電平而此時時鐘線為高電平,那么計算機發送請求發送信號,鍵盤進入接收模式。只有當時鐘線和數據線同時處于高電平時,鍵盤才被允許發送數據。
        1.2 密碼發生器硬件構成
        密碼發生器硬件原理圖如圖2所示。

        當SO被激活時,PICl2C508接收HCS300編碼器產生的新信息。PICl2c508隨后將模仿鍵盤發送出正確序列的按鍵和釋鍵信息至PC。為防止鍵盤將此發送解讀為來自PC的“請求發送”,在發送期間將鍵盤與時鐘線和數據線隔離。為了簡化電路,采用一個標準的4路雙向CMOS開關4066來切換密碼發生器,或鍵盤與PC線的連接。
        HCS300編碼器設計為,可以是密碼發生器的一部分,也可以像一把鑰匙一樣可移除的,從而允許方便地替換為具有不同加密密鑰或序列號的不同編碼器。HCS300和PICl2C508都采用8引腳SOIC封裝形式,消耗電流極低,并且都能在內部產生用于操作密碼發生器的時鐘,功耗盡量低,以使傳輸線不會出現過載。另外,尺寸盡可能小、元件數盡可能少,從而盡可能采用較小的封裝。理想的情況是將整個電路安置在2個連接器之間較小的間隙中。除一對用于時鐘線和數據線上拉的電阻之外,無需其他元件即可實現全功能的跳碼密碼。
        1.3 軟件設計
        軟件由3個代碼段組成:
        ◆用于HCS300編碼器的接收子程序。
        ◆鍵盤仿真子程序。
        ◆主循環程序。
        用于HCS300編碼器的接收子程序(RECEIVE子程序)收集H(2S300發送的最初64個數據位,并將其填充至一個8字節的緩沖器。其中最后兩個數據位將被忽略,因為它們不具有對本應用有用的信息。
        鍵盤仿真子程序根據IBM―PC/AT鍵盤協議實現鍵掃描碼的發送。
        當CMOS開關將PC連接至鍵盤時鐘線和數據線時,主循環程序將對LED輸出線進行連續采樣,以檢測HCS300是否被激活。
        當LED線變為低電平時,CMOS開關被激活以使時鐘線和數據線與鍵盤隔離,RECEIVE子程序將被調用。軟件采用最簡化的形式開發,可對其采取一些優化措施。例如:可使PIC12C508進入“休眠”狀態,以進一步減小功耗。編碼器可能被移除,因此應對編碼器的接入/激活進行正確檢測。由于沒有解密過程,因此沒有其他方法可獲知發送操作是否已失敗,只能將第二個密碼字與接收到的第一個密碼字進行對比,以確認是否出現發送錯誤。


        2 加密原理

        編碼器HCS300使用KEELOQ跳碼技術,使編碼器每次發送的數據都是獨一無二的。編碼器發送包括兩部分:第一部分稱為“跳碼部分”,在編碼器每次被激活時發生改變且被加密;第二部分是發送數據的非加密部分,主要包括編碼器序列號,解碼器通過該序列號對其進行識別。密碼字的組成如下:

        跳碼包括功能信息、識別值和一個同步計數器。在發送這一信息之前需通過加密算法對其進行加密。加密算法使用64位加密密鑰。如果加密數據中的一位發生改變,則將導致輸出數據中平均有一半的位發生改變。這樣,每次發送時跳碼將徹底改變,因而無法對其進行預測。解碼器使用同步信息來確定發送是有效的還是前一次發送的重復,前一次密碼將被拒絕以防止密碼被盜取。HSC300編碼器發送2個溢出位,用來將同步計數器值的范圍從65 536擴展到196 608次按鈕操作。HCS300編碼器發送數據的固定碼部分包括4位功能信息和2個狀態位。這2個狀態位表明是否進行了重復發送,以及電池電壓是否過低。HCS300編碼器具有發送固定種子的能力,種子值連同計數器值、密鑰、序列號和其他信息一起,在編碼器首次初始化時通過編程寫入編碼器。HCS30C具有32位的種子。
        接收應用程序(服務器上運行的軟件)執行一些簡單的解碼和校驗步驟,跳碼密碼可用來對大量電子服務的訪問進行驗證。密碼中固定的未加密部分可用來識別用戶和編碼器中激活的功能。

        結 語
        本文設計的密碼發生器采用基于KEELOQ的跳碼密碼技術,體積小、功耗低,特別適用于當傳送信息至互聯網時為通用訪問控制安全登錄創建一個“超級密碼”。實踐證明,這種方式的加密方法非常可靠。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 馆陶县| 邓州市| 庐江县| 杭锦后旗| 磐安县| 河西区| 正镶白旗| 英吉沙县| 江达县| 崇文区| 滦南县| 石城县| 孟州市| 新源县| 神池县| 喀什市| 洛浦县| 措勤县| 泸州市| 广安市| 清丰县| 普陀区| 平泉县| 类乌齐县| 舒城县| 祁连县| 铅山县| 辛集市| 韶关市| 锦州市| 陆川县| 本溪市| 广州市| 宣武区| 蒙城县| 丹江口市| 陇川县| 望奎县| 泰和县| 广东省| 昭觉县|