一種面向物聯網環境的數據加密和身份認證方法
【專利摘要】本發明公開一種面向物聯網環境的數據加密和身份認證裝置、基于usbkey的身份認證系統。所述裝置,在外殼中,控制芯片與時鐘、USB接口相連接,其特征是:控制芯片作為核心控制芯片與其他元器件相連,沒有復位開關,只有上電復位,固件程序通過USB接口下載;固件程序主要包含usb協議的解析以及具體的應用邏輯。網頁通過加載ActiveX控件調用usb驅動程序與該裝置進行數據通信。本發明主要用于物聯網環境中數據的加密和解密,以及遠程登錄時用戶的身份認證。
【專利說明】一種面向物聯網環境的數據加密和身份認證方法
【技術領域】
[0001]本發明涉及一種使用硬件加密和解密算法的身份認證技術,尤其涉及一種基于USB技術的能在物聯網網絡環境下對用戶的身份進行認證的方法。
【背景技術】
[0002]隨著物聯網的出現和發展,信息安全問題已成為社會關注的熱點,特別是物聯網環境下的信息安全已成為影響國家安全、經濟發展、社會穩定的重大關鍵問題。研制和開發適用于不同網絡環境下的身份認證系統具有重要的意義。數據加密和身份認證服務是提供物聯網服務中其它服務的如提和基礎。
[0003]隨著互聯網的快速發展,各種新的應用層出不窮,如遠程教育、網上購物、視頻點播等,互聯網已經由原來簡單地提供公共信息服務轉向全方位個性化服務。伴隨著這些服務的出現,一個首先必須解決的問題就是:如何能夠快速、準確、方便、可靠地識別用戶的身份,并且盡可能地降低認證整體的成本。
[0004]目前在實際應用中,有四種常見的用戶身份認證方法:用戶賬戶+口令密碼;銀行卡或智能卡;虹膜或指紋;動態密碼鎖。雖然這些方法都可以提供認證服務,但每種方法都有自己的局限性。第一種方法使用起來簡單、方便,但可靠性最差,一旦盜用者通過某種方式獲得了他人的賬戶和密碼,則該用戶的切身利益將無法得到保障;后三種方法可靠性較高,但需要配置專用設備,體系結構復雜,使用不便,價格過于昂貴,影響推廣使用。
[0005]Usbkey作為一種經濟實用的解決方案得到了廣泛的應用。但現存的usbkey解決方案也存在一些不足。如用戶的用戶名和密碼存儲在usbkey存儲區中且不可修改,加密后的用戶名和密碼等信息在網絡中傳輸,卡操作系統有可能存在后面。由于用戶的用戶名和密碼存儲在usbkey存儲區中且不可被修改,網絡中傳輸的數據格式是固定的,所以數據就很容易被截獲和破解。如數據被破解后,用戶就必須去服務器端的管理部門更換usbkey即重新寫入用戶名和密碼等信息,給服務器端的管理帶來麻煩。
[0006]在因特網環境中,典型的B/S結構的Web應用系統模式為:客戶端瀏覽器接收Web服務器提供的數據,按標準的HTML語言對數據進行解釋,并在瀏覽器窗口中表現出來。HTML語言的表述能力限制了瀏覽器窗口能力。要實現基于硬件識別技術的身份認證系統與Web應用系統的集成,客戶端必須具有讀取USBKey及本地硬件信息,并進行一定數據處理的能力。
[0007]USB總線是一種串行總線,支持主機與各式各樣即插即用的外設之間進行數據傳輸。它由主機預定傳輸數據的標準協議。在總線上的各種外設上分享USB總線帶寬。當總線上的外設和主機在運行時,允許自由添加、設置、使用以及拆除一個或多個外設。一個完整的USB總線系統可以分為三部分:USB的主機、USB的設備以及USB的互聯。在任何USB總線系統中只能有一個主機。主機系統中提供USB總線接口驅動的模塊,稱作USB總線主機控制器。主機系統中USB總線的根(節點)集線器,通過次級的集線器則可以連接更多的外設。USB總線的外設可以分為網絡集線器和功能外設兩大類。USB總線連接外設和主機時,利用菊花鏈的形式對端點加以擴展,形成了金字塔型的外設連接結構。
[0008]USB標準命令共有11種,對于USB MASS STORAGE類設備來講,主機并沒有發出全部的標準命令,所以設備只要支持USB MASS STORAGE類設備需要的標準請求即可實現枚舉過程。USB標準命令為8個字節長度,主要功能是完成USB設備的配置操作.USB MASSSTORAGE類設備主要用到以下3種標準命令:GET DESCRIPTER,用于獲取設備描述符、配置描述符、語言ID、產片序列號、廠商字符串、設備序列號;SET ADDRESS,用于設置USB MASSSTORAGE類設備的地址;SET CONFI⑶RATION,用于設備USB設備的配置值。主機為了獲取設備信息,對某些命令可能發多次請求。如果枚舉成功,主機將發現新設備。隨后USB主機根據枚舉的數據,發送USB設備特定的功能代碼。然后USB主機和設備端就可以進行數據通信了。
[0009]ActiveX控件是Windows標準控件的一種擴充機制,很適合應用在網絡環境中,作為自包含代碼的數據單元在網絡上傳輸。HTML語言允許嵌入腳本語言(IE支持VB-Script和JavaScript),并且腳本語言可以調用ActiveX控件的方法和屬性。
[0010]由于本發明主要應用于windows XP操作系統中,USB協議由主從兩部分組成。為了保證usbkey設備與主機通信的安全性,完全自主解析USB設備端協議和自主設計windows XP上的USB驅動程序,確保了程序中不存在后門。USB驅動的設計采用DriverStudio3.2和VC++6.0工具進行開發。這樣就可以保證usbkey卡操作系統和應用程序的安全性。
【發明內容】
[0011]為了克服現有的usbkey這種信息格式固定的不足和管理的不便,本發明的目的在于提供一種解決方案,該方案不僅允許用戶隨意修改用戶名和密碼,并且每次認證的信息也是不同的。
[0012]本發明的以上目的通過以下的技術方案實現:
一個usbkey裝置。在usbkey的存儲區中預留3個區域。一個用來保存用戶名,一個用來保存用戶密碼,一個用來保存用戶的RSA私鑰。用戶身份的驗證分三步:第一步,將用戶在WEB表單上輸入的用戶名和密碼傳入usbkey中,與usbkey中存儲的用戶名和密碼進行對比,如果正確則進入第二步,否則返回錯誤信息要求用戶重新輸入。第二步,將隨機函數產生的指定長度的隨機數用RSA加密算法和usbkey中存儲的RSA私鑰進行加密,將隨機數,加密后的數據和USBKEYID —起發送到服務器。第三步,在服務器端通過用同樣的算法和RSA私鑰對得到的隨機數進行加密,再與接收到的加密數據進行對比。如果一致則提供用戶請求的服務。
[0013]由于用戶名和密碼只存儲在usbkey存儲區中,所以用戶可以通過配置軟件隨意更改自己的用戶名和密碼,無需與服務器同步。但是RSA私鑰必需一致,所以用戶是不允許修改私鑰,私鑰的修改只能由服務器端的管理人員來完成。
[0014]一個卡操作系統。卡操作系統主要有USB協議的解析、flash的讀寫和單片機主應用程序組成。USB協議解析式端點O作為控制端點,端點3作為輸入端點,端點4作為輸出端點。
[0015]一個USB驅動。USB驅動開發是將端點3初始化為輸入端點,端點4初始化為輸出端點。僅實現了 read和write函數,未實現iocontrol函數。
[0016]一個上位機配置軟件。用于用戶修改用戶名和密碼。
[0017]本發明的有益效果是,可允許用戶通過配置軟件修改用戶名和密碼,用戶的驗證信息為隨機產生的指定長度的隨機數。
【專利附圖】
【附圖說明】
[0018]下面結合附圖和實施例對本發明進一步說明。
[0019]圖1是本發明實施例的應用原理圖。
[0020]圖2是本發明實施例的usbkey的原理圖。
[0021 ]圖3是本發明實施例的usb協議setup流程圖。
[0022]圖4是本發明實施例的單片機應用程序流程圖。
[0023]圖5是本發明實施例的USB設備請求調用圖。
[0024]圖6是本發明實施例的上位機配置軟件。
[0025]圖7本發明實施例的ActiveX控件函數列表。
[0026]圖8本發明實施例的遠程登錄界面。
【具體實施方式】
[0027]體現本發明特征與優點的一些典型實施例將在以下的說明中詳細敘述。應理解的是本發明能夠在不同的實施例上具有各種的變化,其皆不脫離本發明的保護范圍,且其中的說明及附圖在本質上是當作說明之用,而非用以限制本發明。
[0028]本發明實施例的基于usbkey的身份認證系統,具有本發明實施例的一種面向物聯網環境的數據加密和身份認證裝置。
[0029]如圖1所示,本發明實施例的基于usbkey的身份認證系統,主要由以下幾部分組成:USbkey裝置、客戶端、網絡和服務器。
[0030]從總的工作原理來講,用戶在客戶端打開登錄頁面前,先插入usbkey,然后在登錄頁面的相應位置輸入用戶名和密碼,單擊submit按鈕。在此過程中,用戶在登錄頁面上輸入的用戶名和密碼傳入到usbkey中,在usbkey中與存儲區中存儲的用戶名和密碼進行對比,如果正確,則產生指定長度的認證隨機數,用RSA私鑰加密后,和明文一起發送到服務器進行下一步認證。認證全部正確則返回用戶請求的服務。
[0031]首先介紹usbkey裝置。本發明優選實施例的基于usbkey的身份認證系統中的一種面向物聯網環境的數據加密和身份認證裝置是一個完整的單片機系統。通過USB接口與客戶端通信,接收客戶端登陸頁面中輸入的用戶名和密碼,在usbkey中對用戶名和密碼進行比較。產生指定長度的隨機數,并采用RSA私鑰對隨機數進行加密和發送。每個用戶擁有一個唯一的usbkey裝置。Usbkey裝置中存儲了用戶的用戶名、密碼和RSA私鑰。
[0032]下面再介紹所述usbkey裝置的軟硬件配置。從硬件配置上講,usbkey裝置包括一個外殼,一個帶有加密算法的單片機、一個時鐘等被封裝在所述外殼內。如圖2所示,usbkey裝置的內部模塊連接關系為:控制芯片分別與USB接口和時鐘相連。單片機接收客戶端輸入的信息,對信息進行相應的處理并返回給客戶端需要的信息。
[0033]所述usbkey裝置的核心控制芯片優選某公司的A980芯片。A980系列安全芯片是A780芯片的升級產品,實現了增強功能、提升性能、降低成本的要求。
[0034]A980芯片采用自主研發的32位RISC CPU為核心處理器,內置公鑰(SM2、RSA、ECC)、分組(SM1、SMS4、SSF33、DES/3DES、AES)和散列(SM3、SHA-1、SHA-256)等三類多種密碼算法加速引擎。覆蓋了國際和國內標準的主流加密算法,可滿足電子政務、電子商務等不同領域對安全加密和遠程身份認證的需求。
[0035]A980 芯片配置了 8KB SRAM.256KB FLASH 存儲器和 USB、GP10、UART、SP1、IS07816等通訊接口,具有成本低、功耗小、性能高、速度快的特性。
[0036]A980芯片可應用于USB KEY、RF-SIM, SD-KEY、讀卡器、加密卡等多種安全產品。
[0037]A980芯片特性:32位RISC CPU,工作主頻12/48MHz ;MMU存儲保護,8+7K字節片內RAM ;
256K字節片內FLASH,可分別作為程序存儲器和數據存儲器;密碼算法協處理器,包
括:
公鑰算法:SM2、RSA (1024?2048 位),ECC (192?256 位);
分組算法:SM1、SSF33、SMS4、DES/3DES、AES ;
散列算法:SM3、SHA-U SHA-256 ;
物理噪聲真隨機數發生器;1路WDT看門狗定時器;2路定時器,I路實時鐘計數器;12位GPIO接口,支持SP1、UART ;USB 2.0全速(12Mbps)工作模式;復位控制器(支持片內上電復位);中斷控制器;芯片安全組件(包括防SPA/DPA攻擊、存儲保護等);支持3.3V±5%電源輸出,輸出電流最大50mA ;防靜電保護(ESD):HBM4000V ;工作溫度:_25°C?+ 85°C ;工作電壓:3.0V?5.5V ;工作電流:平均4mA,公鑰密碼運算時最大16mA ;
封裝形式:SS0P24或LQFP64。
[0038]如圖3所示。USBKEY裝置與客戶端連接后,USB接口提供5V電源,然后單片機進入復位狀態,之后進行USB協議的解析。在USB協議解析中,解析了 USB標準協議中的GET_DEVICE_DESCRIPTOR、GET_C0NFIG_DESCRIPT0R、SET_DEVICE_ADDR 和 SET_C0NFIG 四條標準命令。在設備描述符中將設備描述成USB2.0、廠商ID為0XFFFF、設備ID為0X1234.在配置描述符中將接口描述成MASS STORAGE、接口子類描述成SCS1-2、接口協議描述成BULKONLY、端點3描述成BULK輸入、端點4描述成BULK輸出。
[0039]如圖4所示。USBKEY裝置與客戶端連接后,首先進行USB接口的初始化,然后進行USB枚舉,之后運行固件程序。單片機固件程序實現了兩個模式。一是配置模式,用于用戶修改用戶名和密碼。一是使用模式,用于判斷用戶輸入的用戶名和密碼是否正確以及進行與服務器之間的身份認證。
[0040]本發明優選實施例的基于usbkey的身份認證系統中的USB驅動程序是使用Driver Studio3.2和VC++6.0自主開發的。USB設備的WDM驅動程序也采用分層結構:頂層為USB設備驅動程序,對于某些設備可能還有中間層驅動程序,最后一層為USB總線驅動程序,它負責和USB硬件打交道。
[0041]如圖5所示,USB設備驅動程序并不和硬件交互,這和其它傳統的總線不一樣。對USB設備驅動程序來說,它靠創建URB (USB REQUST BLOCK)并把URB提交到總線驅動程序,最終由總線驅動來完成相應的設備操作。總線驅動程序理解USB通信機制,并知道如何和USB設備進行數據的傳輸。當它接收到設備驅動請求包時,會把這些請求數據重新組織成具有USB特定格式的事務來進行傳輸。
[0042]結合圖5,可以將設備和主機通信流程簡述如下:當用戶要與USB設備進行數據傳輸操作時,上層應用程序調用Windows API函數進行I/O請求,并把它傳遞給USB設備驅動程序。這個I/O請求包傳遞至設備驅動程序后,設備驅動程序根據該請求包中包含的IOCTL進入相應的派遣例程進行處理,在派遣例程中根據不同的傳輸類型構造相應USB請求塊(URB),然后傳遞給USB總線驅動程序(某些設備可能需要經過中間層驅動程序處理)。USB總線驅動程序根據IRP中所含的URB執行相應的操作,并把所要傳輸的數據組織成USB事務傳輸給USB設備,然后把該IRP操作的結果返回給USB設備驅動程序。由USB設備驅動程序層層向上將IRP操作結果傳回給應用程序完成本次數據傳輸。
[0043]如圖6所示。上位機配置軟件的圖像界面包含:打開設備、關閉設備、配置用戶名、配置密碼、發送數據區、發送數據、接收數據和退出程序。配置軟件的界面啟動以后,連接usbkey裝置,單擊打開設備命令按鈕,設備就被打開了,接下來就可以進行配置了。將用戶名對應的字符的ASCII碼輸入到發送數據區,然后單擊配置用戶名命令按鈕,用戶名就配置完成。密碼的配置與此相同。發送數據命令按鈕和接收數據命令按鈕用于測試數據的發送與接收是否正確。
[0044]本發明優選實施例的基于usbkey的身份認證系統中的ActiveX控件是使用VC++6.0開發的。ActiveX控件是一個自包含代碼的組件,它有自己的永久狀態,并且ActiveX控件與包容器之間通過COM接口進行通信,所以ActiveX控件具有普遍的適應性,更適合于瀏覽器與用戶的交互。當打開登錄頁面時,在HTML代碼中,通過CLSID來指定ActiveX控件的類型,同時希望瀏覽器自動找到ActiveX控件并注冊到客戶機上。
[0045]如圖7所不。ActiveX控件包含的函數為:DllRegisterServer,DllUnregisterServer, DllGetClassObject, DllCanUnloadNow, Findusb , Usbopen,usbread , usbwrite, AboutBox, test.DllRegisterServer 函數用于注冊 ActiveX 控件。DllUnRegisterServer 函數用于卸載 ActiveX 控件。DllGetClassObject 函數用于獲得類對象。DllCanUnloadNow函數用于將組件從程序的內存中卸載。Findusb函數用于查找usbkey裝置是否連接到了客戶端。Usbopen函數用于打開usbkey裝置。Usbread函數用于讀取usbkey裝置的數據。Usbwrite函數用于向usbkey裝置寫入數據。Test函數用于測試控件是否可用。AboutBox函數用于輸出一些關于控件的信息。
[0046]如圖8所示。用戶遠程登錄的界面,輸入用戶名和密碼后,點擊命令按鈕submit。如果信息正確就可以登錄系統,否則就重新輸入用戶信息。
【權利要求】
1.一種面向物聯網環境的數據加密和身份認證裝置,用于網絡環境中遠程登錄時客戶端用戶身份的認證,在外殼中,控制芯片與時鐘、USB接口相連接,其特征是:控制芯片作為核心控制芯片與其他元器件相連,沒有復位開關,只有上電復位,固件程序通過USB接口下載;固件程序與上位機驅動程序相對應,配置軟件和ActiveX控件調用驅動程序,根據固件程序的應用邏輯進行配置和正常調用。
2.根據權利要求1所述的固件程序,其特征是:固件程序包含USBSETUP、FLASH讀寫和數據加密三部分。
3.根據權利要求2所述的USBSETUP程序,其特征是:解析了 USB標準協議中的GET_DEVICE_DESCRIPTOR、GET_C0NFIG_DESCRIPT0R、SET_DEVICE_ADDR 和 SET_C0NFIG 四條標準命令;在設備描述符中將設備描述成USB2.0、廠商ID為0XFFFF、設備ID為0X1234.在配置描述符中將接口描述成MASS STORAGE、接口子類描述成SCS1-2、接口協議描述成BULKONLY、端點3描述成BULK輸入、端點4描述成BULK輸出。
4.根據權利要求2所述的FLASH讀寫程序,其特征是:寫扇區時先對指定的扇區(IK)進行擦除操作,然后在寫入指定長度的數據,用戶名和密碼的程度都是固定的8字節;讀扇區時將指定扇區的數據拷貝指定的變量中;在usbkey的存儲區中預留3個區域:一個用來保存用戶名,一個用來保存用戶密碼,一個用來保存用戶的RSA私鑰;用戶身份的驗證分三步:第一步,將用戶在WEB表單上輸入的用戶名和密碼傳入usbkey中,與usbkey中存儲的用戶名和密碼進行對比,如果正確則進入第二步,否則返回錯誤信息要求用戶重新輸入;第二步,將隨機函數產生的指定長度的隨機數用RSA加密算法和usbkey中存儲的RSA私鑰進行加密,將隨機數,加密后的數據和USBKEYID —起發送到服務器;第三步,在服務器端通過用同樣的算法和RSA私鑰對得到的隨機數進行加密,再與接收到的加密數據進行對比;如果一致則提供用戶請求的服務。
5.根據權利要求2所述的數據加密程序,其特征是:使用RSA加密算法對其進行加密,RSA密鑰的模長為1024位,密鑰從FLASH中指定的區域中讀出。
6.根據權利要求1所述的上位機驅動程序,其特征是:使用DriverStudio3.2和VC++6.0開發,廠商ID為0XFFFF、設備ID為0X1234,端點3為BULK輸入、端點4為BULK輸出,驅動程序中實現了 read和write兩個函數,沒有實現對應的iocontrol函數,驅動程序使用固定的GUID來訪問。
7.根據權利要求1所述的配置軟件,其特征是:通過操作系統的注冊表中USB驅動程序的⑶ID來查找usbkey裝置,如果usbkey裝置沒有連接,則提示用戶插入usbkey裝置,Usbkey裝置連接以后則可以單擊打開設備命令按鈕,打開usbkey裝置,然后就可以對usbkey裝置進行相應的配置操作了。
8.根據權利要求1所訴的ActiveX控件,其特征是:使用VC++6.0的MFC ActiveX向導生成ActiveX的框架,軟化通過USB驅動程序的⑶ID來訪問usbkey裝置,ActiveX控件提供了 findusb、usbread、usbwrite、usbopen 函數:Findusb 函數用于查找 usbkey 裝置是否已經連接,Usbopen函數打開usbkey裝置,Usbread和usbwrite函數用于和usbkey裝置進行數據交互。
【文檔編號】H04L9/32GK103427989SQ201210151645
【公開日】2013年12月4日 申請日期:2012年5月16日 優先權日:2012年5月16日
【發明者】王志良, 李宗輝, 谷學靜, 王魯 申請人:王志良, 李宗輝, 谷學靜, 王魯