一種基于KEELOQ的改進加密算法及其在單片機中的實現技術
發布時間:2008/6/3 0:00:00 訪問次數:731
    
    
     摘要:討論了microchip公司的keeloq加解密算法的實現機制,通過引入隨隨機數,提出了一種新的改進算法,并給出了其在單片機中的實現方案。該算法具有簡單實用、所需硬件資源少、傳輸效率和安全性相對較高等優點,適用于需要數據加密的小型無線數據傳輸系統,具有廣闊的應用前景。
     關鍵詞:加密算法 keeloq 單片機 跳碼技術 當今的編解碼電路已經朝著高度集成化和微電腦化發展。像普通的固定編解碼芯片和mc145026/145027、pt2262/2272等已被廣泛應用于公用系統中,給生活帶來了方便。然而這些芯片不能保證系統的安全性。由于這些系統每次發送的數據流一模一樣,只是高低電平的組合,第三方面通過捕捉設備,一旦用戶信號出現,便可瞬間取得合法的身份識別碼;或使用編碼掃描設備,主動攻擊解碼芯片。因此保證系統的安全性是一個很現實的問題。在此背景下,基于加密算法的編解碼ic的安全機制得到了應用。microchip公司的keeloq技術是這種技術的代表。keeloq技術是一種多變化、抗截獲得、安全可靠性高的非線性跳碼加密解密技術。keeloq目前是通過硬件芯片ic(以mirochip公司的hcs300為代表)實現,主要應用于汽車陣盜系統和門禁系統,是無鑰進入系統領域的首選芯片。但也由于硬件芯片本身的限制(其所能加密的數據必須預先寫入eeprom中),使之很難用于其它(如數據加密)領域。 本文把這項封裝在芯片里的keeloq加密技術用軟件方式實現,并針對單片機的特性進行了適當改進。這種在單片機中實現的改進算法不僅包含了原來hcs300所具備的所有功能,而且在系統安全性、靈活性、可擴展性、傳輸效率等方面均有較大改善,同時對改進算法在數據加密領域作為全新的嘗試,以其特殊的密鑰管理方法獨立于對稱型加密(如des)與不對稱型加密算法(即公開密鑰體制,如rsa),成為一種適用于無線傳輸領域小型系統的數據加密算法。1 keeloq技術簡介及其硬件實現 keeloq技術的核心思想是用64bit的en_key[64:0](加密密鑰)去加密32bit的csr[31:0](校驗碼)得到32bit的cryp密文。加密機制為:首先定義一個非線性表,這個非線性表有5位輸入nlf_in[4:0],一位輸出nlf_out。它在csr[31:0]中間隔均勻地取固定5位:i0、i1、i2、i3、i4,通過非線性產生一個輸出碼nlf_out;這一位輸出碼nlf_out再與en_key中的15位、csr中的2位進行異或運算后輸出第一位輸出碼cryp[0];每輸出一位后,en_key、csr分別進行移位,en_key作循環移位,cryp[0]作為csr移位的輸入;重復上述步驟直到輸出32位cryp[0:31]。依此法,即使32bit的校驗碼csr中只有一位發生變化,用keeloq加密算法得到的cryp密文也會有50%以上的數據位(16bit)發生變化。 microchip公司以keeloq技術為基礎開發了滾動碼系統專用芯片,hcs300是其中較典型的一款。它是一塊8引腳的編碼ic芯片,里面集成了keeloq算法和其他一些功能,帶有四個按鍵接口,實現15位的功能/命令碼。內置192bits(12×16bit words)eeprom,用來存放en_key(加密密鑰)、sn(序列號)、sync(同步碼)、seed(種子碼)等。序列號用來標識不同的對象;加密密鑰用來對發送的數據進行加密,增加破譯的難度,它不直接發送出去;同步計數器用來抗截獲,每次發送數據時,同步計數器的值都被更新,所以每次發送的數據都不一樣。種子碼用于安全學習時參與加密密鑰的生成。接收方必須先通過學習來獲得并存儲發送方的序列號、加解密密鑰和當前同步計數器的值。學習相當于身份確認,只有經過學習的用戶才能與主機通信。主機在接收到信號后,首先比對序列號,然后利用學習過程中得到并存儲的加密密鑰對接收的數據進行解密;接著檢查同步計數器是否匹配,在確認其匹配后,再去處理接收到的按鍵信令,并根據接收到的按鍵信令作出相應的動作反應。hcs300的系統使每次發送的密文都不相同,有效防止了空中截獲法和數據重傳帶來的安全隱患。 hcs300系統的加密密鑰在學習過程中經密鑰生成算法產生。學習分為一般學習和安全學習。一般模式下,解密解鑰由mkey和sn生成加解密密鑰en_key,其解密密鑰隱含于發送信息(mkey和sn)中。安全模式下,增加了種子碼seed(當四鍵一起按時發送),它與mkey和sn一起生成加解密密鑰en_key,而seed_key在平時并不發送,這樣增加了安全性。不過,在學習時seed碼的發送是不經過加密的。2 keeloq技術的不足與改進加密算法的提出盡管keeloq技術有上述獨特的優點,但是經過深入分析不難發現keeloq算法及其硬件實現技術也存在一些不足:(1)安全性基于出廠密鑰和種碼seed。在hcs300芯片中,加密密鑰en_key是由出廠密鑰mkey、序列號sn和種子碼seed(安全模式)生成的。而sn和seed在發送數據的過程中未經加密,是可截獲的
    
    
     摘要:討論了microchip公司的keeloq加解密算法的實現機制,通過引入隨隨機數,提出了一種新的改進算法,并給出了其在單片機中的實現方案。該算法具有簡單實用、所需硬件資源少、傳輸效率和安全性相對較高等優點,適用于需要數據加密的小型無線數據傳輸系統,具有廣闊的應用前景。
     關鍵詞:加密算法 keeloq 單片機 跳碼技術 當今的編解碼電路已經朝著高度集成化和微電腦化發展。像普通的固定編解碼芯片和mc145026/145027、pt2262/2272等已被廣泛應用于公用系統中,給生活帶來了方便。然而這些芯片不能保證系統的安全性。由于這些系統每次發送的數據流一模一樣,只是高低電平的組合,第三方面通過捕捉設備,一旦用戶信號出現,便可瞬間取得合法的身份識別碼;或使用編碼掃描設備,主動攻擊解碼芯片。因此保證系統的安全性是一個很現實的問題。在此背景下,基于加密算法的編解碼ic的安全機制得到了應用。microchip公司的keeloq技術是這種技術的代表。keeloq技術是一種多變化、抗截獲得、安全可靠性高的非線性跳碼加密解密技術。keeloq目前是通過硬件芯片ic(以mirochip公司的hcs300為代表)實現,主要應用于汽車陣盜系統和門禁系統,是無鑰進入系統領域的首選芯片。但也由于硬件芯片本身的限制(其所能加密的數據必須預先寫入eeprom中),使之很難用于其它(如數據加密)領域。 本文把這項封裝在芯片里的keeloq加密技術用軟件方式實現,并針對單片機的特性進行了適當改進。這種在單片機中實現的改進算法不僅包含了原來hcs300所具備的所有功能,而且在系統安全性、靈活性、可擴展性、傳輸效率等方面均有較大改善,同時對改進算法在數據加密領域作為全新的嘗試,以其特殊的密鑰管理方法獨立于對稱型加密(如des)與不對稱型加密算法(即公開密鑰體制,如rsa),成為一種適用于無線傳輸領域小型系統的數據加密算法。1 keeloq技術簡介及其硬件實現 keeloq技術的核心思想是用64bit的en_key[64:0](加密密鑰)去加密32bit的csr[31:0](校驗碼)得到32bit的cryp密文。加密機制為:首先定義一個非線性表,這個非線性表有5位輸入nlf_in[4:0],一位輸出nlf_out。它在csr[31:0]中間隔均勻地取固定5位:i0、i1、i2、i3、i4,通過非線性產生一個輸出碼nlf_out;這一位輸出碼nlf_out再與en_key中的15位、csr中的2位進行異或運算后輸出第一位輸出碼cryp[0];每輸出一位后,en_key、csr分別進行移位,en_key作循環移位,cryp[0]作為csr移位的輸入;重復上述步驟直到輸出32位cryp[0:31]。依此法,即使32bit的校驗碼csr中只有一位發生變化,用keeloq加密算法得到的cryp密文也會有50%以上的數據位(16bit)發生變化。 microchip公司以keeloq技術為基礎開發了滾動碼系統專用芯片,hcs300是其中較典型的一款。它是一塊8引腳的編碼ic芯片,里面集成了keeloq算法和其他一些功能,帶有四個按鍵接口,實現15位的功能/命令碼。內置192bits(12×16bit words)eeprom,用來存放en_key(加密密鑰)、sn(序列號)、sync(同步碼)、seed(種子碼)等。序列號用來標識不同的對象;加密密鑰用來對發送的數據進行加密,增加破譯的難度,它不直接發送出去;同步計數器用來抗截獲,每次發送數據時,同步計數器的值都被更新,所以每次發送的數據都不一樣。種子碼用于安全學習時參與加密密鑰的生成。接收方必須先通過學習來獲得并存儲發送方的序列號、加解密密鑰和當前同步計數器的值。學習相當于身份確認,只有經過學習的用戶才能與主機通信。主機在接收到信號后,首先比對序列號,然后利用學習過程中得到并存儲的加密密鑰對接收的數據進行解密;接著檢查同步計數器是否匹配,在確認其匹配后,再去處理接收到的按鍵信令,并根據接收到的按鍵信令作出相應的動作反應。hcs300的系統使每次發送的密文都不相同,有效防止了空中截獲法和數據重傳帶來的安全隱患。 hcs300系統的加密密鑰在學習過程中經密鑰生成算法產生。學習分為一般學習和安全學習。一般模式下,解密解鑰由mkey和sn生成加解密密鑰en_key,其解密密鑰隱含于發送信息(mkey和sn)中。安全模式下,增加了種子碼seed(當四鍵一起按時發送),它與mkey和sn一起生成加解密密鑰en_key,而seed_key在平時并不發送,這樣增加了安全性。不過,在學習時seed碼的發送是不經過加密的。2 keeloq技術的不足與改進加密算法的提出盡管keeloq技術有上述獨特的優點,但是經過深入分析不難發現keeloq算法及其硬件實現技術也存在一些不足:(1)安全性基于出廠密鑰和種碼seed。在hcs300芯片中,加密密鑰en_key是由出廠密鑰mkey、序列號sn和種子碼seed(安全模式)生成的。而sn和seed在發送數據的過程中未經加密,是可截獲的