《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > USB安全鑰功能擴展與優化設計

USB安全鑰功能擴展與優化設計

2009-01-19
作者:馬 偉

??? 摘? 要:介紹USB安全鑰的完整功能,加密算法的動態鏈接庫DLL設計,在線修改存儲在安全鑰內的用戶產品信息功能的方法。為設計完整的USB設備提供借鑒。?

??? 關鍵詞:通用串行總線USB? 單片機? 動態鏈接庫DLL? 標準加密算法DES? USB固件? USB驅動程序? 人機接口設備HID?

?

1? USB安全鑰的完整功能?

??? USB安全鑰最早基于USB的熱插拔、速度以及硬件等優勢,結合加密算法,用于辦公文件、軟件等的存儲和加密。但USB安全鑰的用武之地遠不止這些,與網絡技術結合,用于時下最時尚的電子商務中,才使其大顯神通。USB安全鑰結合傳統的電子商務核心技術和新興的USB技術,用于實現電子商務中的關鍵技術——身份識別,在未來電子商務領域具有廣闊的應用前景。USB安全鑰集數據加密和數據存儲兩大功能于一體,推動了電子商務的發展。?

??? 傳統的電子商務或是網絡email等的身份認證基本上是通過兩種方式來實現的。一種是密碼機制,雙方約定好規則。這是目前最為普遍的方式,但是這種方式的嚴重缺點顯而易見。密碼作為最重要的信息,在網絡上傳輸,很容易被黑客攻擊截獲,經常發生密碼被盜。第二種方式是通過第三方的認證,雙方共同信任第三方公司提供的信息,從而進行交易。微軟在.NET計劃中推出的認證服務器就提供這種服務。但是,信譽度建立在第三方上,便會受到第三方的制約,掏錢不說,還要擔心第三方是否會倒閉。USB安全鑰解決了這兩種方式無法解決的問題。?

??? 完整的USB安全鑰系統由三部分組成:安全鑰端,采用Motorola公司帶USB接口的8位單片機MC68HC908JB8構成;PC端,由任何一臺可接入網絡的PC構成,并安裝PC端的用戶身份認證軟件;Server端,任何一臺網絡服務器安裝用于身份認證的Server端軟件。?

??? USB安全鑰系統結構體系及功能流程如圖1所示,列出了九個步驟,描述了USB安全鑰從插入PC到完成一次身份識別的完整流程。?

?

?

??? 需要強調的是,在上述步驟中,PC僅僅起一個Media(媒介)的作用。任何重要的數據都沒有經過PC,在網絡上傳輸的僅僅是8個字節的隨機數(它只在Server服務器和安全鑰端有意義,只對特定的加密算法和密鑰有意義),被黑客截取也不會有問題。這8個字節的隨機數由網絡Server產生,經由PC傳遞給USB安全鑰加密;加密后的隨機數再由PC不加任何改變地傳遞給Server;Server去調用解密算法解開加密的隨機數,與原來未加密的隨機數比較,如果相同則說明USB安全鑰的持有者身份合理。整個身份認證也告結束。這里,USB安全鑰體現出兩大優點:(1)沒有任何重要的個人信息在網上傳遞,保證了安全性;(2)Server由網絡商自己維護,安全鑰由用戶攜有,雙方的認證沒有依靠第三方,快捷、安全、信譽度高。當然,USB安全鑰還有其他很多優點,例如可以在PC上熱插拔,可以在任何一臺支持USB的PC上工作(現在幾乎所有的PC都應該支持USB)等。?

2 USB安全鑰的技術細節?

??? USB安全鑰技術,從設計上可以分為三個模塊:Server端的網絡通訊和加密算法設計、PC端的USB驅動程序和網絡通訊設計、安全鑰端的USB固件和加密算法設計。涉及到的計算機技術包括Socket網絡編程技術、USB驅動程序設計技術和加密算法技術??梢哉f整個設計內容龐雜,技術難度高。因此,設計時就需細化,一步步完成單個功能,再進行聯調,將單個模塊融合成完整的USB安全鑰。?

??? 后期的功能擴展和優化設計也是針對三個模塊,應用三大技術完成。主要是:服務器(Server)端DES加密算法的研究,設計加密算法的動態鏈接庫DLL,提供給客戶最簡單的API;PC和安全鑰端驅動程序的研究,實現PC端友好的程序界面,動態在線修改存儲在安全鑰內的用戶產品信息。本文將詳細介紹擴展和優化的設計方法,從而揭示USB安全鑰的技術細節。?

2.1 如何設計Server端加密算法及其DLL?

??? 密碼算法(Algorithm)就是指加密函數(Encryption)和解密函數(Decryption)。有加密函數,那么必然有一套與它對應的解密函數?,F代密碼學用密鑰技術解決了保密性不夠的問題。密鑰用K表示。K的取值范圍叫做密鑰空間。可以用如下式子來表示加密和解密函數之間的關系:?

??? DK(EK(M))=M?

??? 其中,E為加密函數,D為解密函數,M為被加密的原文。有一個重要的結論:所有算法的安全性都基于密鑰的安全性,而不是算法細節的安全性。這就是說,算法可以公開,只要密鑰是保密的,則這個算法就是安全的。簡單地說,密鑰就是與密文疊加在一起的一組數。?

??? 標準加密算法DES作為ANSI的數據加密算法和ISO的DEA-1,成為世界范圍內的標準已經20多年。就目前密碼學的發展情況來說,DES的安全性還是能夠滿足用戶需求的。由于完整的DES算法相當復雜,這里僅簡單介紹算法的結構。?

??? DES是分組加密算法,以64位為一組對明文進行分組,然后進行加密和解密。加密和解密的算法相同,只是密鑰的編排不同。密鑰長度為56位,通常是64位,但是每字節第8位都用來作為奇偶校驗位,因此實際上只有56位。DES共有16輪,即對同一組明文結合密鑰進行16輪相同的加密過程,最終達到加密要求。?

??? 具體到每一輪的加密過程是這樣的:每一輪中,密鑰位移位,然后從密鑰中選出48位。數據的32位右半部分數據擴展成48位,與密鑰結合。然后再將這48位數據變換為32位,并與數據的32位左半部分相與后作為新的32位右半部分。而32位左半部分基本不變。最后,左右各32位數組合在一起便構成了一輪加密后的64位密文。重復同樣運算16次,便完成了加密/解密功能[4]。?

??? Server端的加密算法采用DES。加密和解密是整個USB安全鑰身份認證的核心。在安全鑰的初期產品中,已經實現了DES算法下的加密功能。但是,作為產品,其安全性是第一位的。而且,對于要將加密算法嵌入自己系統的用戶來說,提供給他們大量的加密算法的源代碼是不合適的。要對DES算法進行修改,將其從Server端的源程序中提出,改掉原來復雜的調用機制,改為提供給用戶三個簡單的接口函數:產生隨機數、加密和解密函數、實現DES加密算法的DLL。?

??? 動態鏈接庫(DLL)是一個包含了若干個函數的可執行模塊,Windows應用程序可以調用這些函數來完成實際任務。對于調用DLL的用戶來說,利用的資源僅僅是應用函數接口和一個后綴為.dll的文件,實現加密算法的模塊化。?

??? 在建立了一個VC工程之后,需要建立主程序頭文件KeyDll.h,加入如下代碼。這些代碼中定義了導出的四個函數。?

class _declspec(dllexport) CKeyDllApp?

{public:?

??? BOOL GetChallenge();?

??? int* Challenge();//導出函數?

??? int* DecryptData(BYTE []);//導出函數,需要解密的隨機數,可存儲在數組InputNum[8]中。此函數輸出值即為加密后的數據,輸出格式為數組DESDeData[8]?

??? int* EncryptData(BYTE []);//導出函數,需要加密的隨機數,可存儲在數組InputNum[8]中。此函數輸出值即為加密后的數據,輸出格式為數組DESEnData[8]?

??? BOOL cha_gen;?

??? void DESDecrypt ();//BYTE *Data, BYTE *Key);?//解密函數定義?

??? void DESEncrypt ();//BYTE *Data, BYTE *Key);?//加密函數定義?

??? BOOL Init();?

protected:?

??? BYTE DESKey[8]; ??? //密鑰?

??? BYTE IniDeData[8]; //外部輸入的需要解密的數據?

??? BYTE IniEnData[8]; //外部輸入的加密前的隨機數?

??? BYTE DESDeData[8]; //解密后的數據?

??? BYTE DESEnData[8]; //加密后的數據?

??? WORD subkey[16][48]; //子密鑰?

??? BYTE challenge[8];?

......}?

??? 然后,在主文件KeyDll.cpp中實現各功能函數的具體功能,主要是算法的實現。?

BOOL CKeyDllApp::GetChallenge()//這是產生隨機數的函數,它調用API的函數srand(),最終產生的8位隨機數存在數組challenge[8]中?

{?

??? int i;?

??? srand((unsigned)time(NULL));?

??? if(!cha_gen){?

??? ??? for(i = 0; i < 8; i++){?

??? ??? do{challenge[i] = (rand()/256);}?

??? ??? while((challenge[i]=='t') || (challenge[i] == 0) || (challenge[i]==255) || (challenge[i]== 256- 't'));}?

??? ??? challenge[8] = 0;?

??? ??? cha_gen = TRUE;?

??? ??? return TRUE;}?

??? return FALSE;}?

?

void CKeyDllApp::DESDecrypt ()//解密函數,完成對已加密的8位隨機數的解密功能 ?

{?

??? WORD TempInput[64],TempOutput[64],TempKey[64];?

??? stringtobit (IniDeData, TempInput);?

??? stringtobit (DESKey, TempKey);?

??? decry (TempInput, TempKey, TempOutput);?

??? bittostring (TempOutput, DESDeData);}?

?

void CKeyDllApp::DESEncrypt()?? //加密函數,可完成?

對8位隨機數的加密功能,然后可與原隨機數比較,看是否相等?

{?

??? WORD TempInput[64], TempOutput[64],TempKey[64];?

??? stringtobit (IniEnData, TempInput);?

??? stringtobit (DESKey, TempKey);?

??? encry (TempInput, TempKey, TempOutput);?

??? bittostring (TempOutput, DESEnData);}?

?

int* CKeyDllApp::DecryptData(BYTE InputDeNum[8])//導出的獲取解密數據的函數。此函數需要賦值——已加密了的8位隨機數,并進行解密,最終函數值為解密后的?

8位隨機數?

{?

??? int i;?

??? for (i = 0; i < 8; i++)?

??? IniDeData[i]=InputDeNum[8];?

??? return (int *)DESDeData;}?

?

int* CKeyDllApp::EncryptData(BYTE InputEnNum[8])//導出的獲取加密數據的函數。此函數需要賦值——8位隨機數,直接調用并賦8位隨機數后,此函數將調用加密函數并進行加密,最終函數值為加密后的8位隨機數?

{?

??? int i;?

??? ??? for (i = 0; i < 8; i++)?

??? ??? IniEnData[i]=InputEnNum[i];?

??? ??? return (int *)DESEnData;} ?

?

??? 編譯、連接后將產生一系列文件,在加上源工程文件,將會有數量比較龐大的文件系統。最終,只需提供給用戶三個文件即可,它們是:?

??? · KeyDllDebugKeyDll.dll,這是DLL文件;?

??? · KeyDllDebugKeyDll.lib,這個文件將在應用DLL的程序編譯和連接時,提供連接向導;?

??? · KeyDllKeyDll.h,這個頭文件告訴用戶此DLL中導出了哪些量可以用。?

??? DES的DLL導出了一個類:CkeyDllApp。在這個類中共有4個導出函數可以導入應用程序中,用戶在導入了加密DLL后,可以在自己的程序中直接調用以下函數:?

??? · BOOL GetChallenge(),用于在應用程序支持循環結構;?

??? · int*Challenge(),產生隨機數,并存儲在Challenge[8]中;?

??? · int*DecryptData(BYTE []),用于解密隨機數;?

??? · int*EncryptData(BYTE []),用于加密隨機數。?

2.2 USB安全鑰新增功能描述?

??? USB安全鑰和PC傳輸的數據量不大,而且沒有很高的速度要求。因此,在編寫固件時就將其歸類為HID(USB的人機接口設備類)。在編寫PC端的驅動程序時可以直接調用Windows提供的HID的API函數,大大降低了編程的難度。更重要的是,Windows對HID設備的支持非常完備,不需要用戶再編寫底層的驅動。?

??? 安全鑰端的設計內容主要是:實現在線修改存儲在安全鑰內的KeyID和讀取KeyID兩個功能,分別由函數Set_KeyID和Get_KeyID實現。KeyID是安全鑰的標識符,在安全鑰插到PC上后,被讀出并送往Server進行檢查。在初期產品中,KeyID只能是安全鑰首次接到PC上讀取,且不能更改,這為廠家和開發者造成了不便。因此要更改初期產品中的KeyID,就必須修改安全鑰端的匯編程序,然后再“燒”寫到安全鑰中,非常麻煩。新增功能可實現KeyID的在線修改。?

??? PC端的設計包括兩步。首先要實現在PC上讀取安全鑰內的KeyID。通過安全鑰的端點1,8個字節的KeyID被周期地送出。PC要獲取這些數據,調用HID類庫Get_Report(Feature)。從安全鑰發來的包含KeyID的包的特性及技術指標如表1。?

?

?

??? 第2步,在PC上實現修改KeyID功能。調用HID類庫Set_Report(Feature),將新的KeyID發送到安全鑰中,具體指標如表2所示。

?

?

2.3 如何設計安全鑰端新增功能的USB固件?

??? USB固件(Firmware),就是USB安全鑰硬件上采用的單片機和其他處理器中有關USB通信的程序。這里采用Motorola公司的8位單片機MC68HC908JB8作為USB安全鑰的控制器芯片。MC68HC908JB8帶有USB接口,8K的Flash,支持USB 1.1版本中的低速(Low Speed)設備,資源有限,主要用于實現USB通信,價格比較低廉。因此,很適合于USB安全鑰。MC68HC908JB8中USB通信的程序模塊,包含在實現MC68HC908JB8所有功能的匯編程序中。?

??? 圖2是經典的USB固件的流程圖??紤]到USB安全鑰中USB數據通信量很小,不需要考慮通信時間,采用中斷傳輸方式。整個程序就是在等待數據傳輸要求的中斷到來,從而進入數據傳輸模塊。讀/寫數據緩沖區,往USB端點(Endpoint)中讀/寫數據,交給USB模塊收發數據。當USB安全鑰不需要傳輸數據時,就進入掛起狀態(Suspend)。在得到PC主機遠程喚醒后啟動,繼續工作。?

?

?

??? 新增功能中,主要完成的兩個功能就是KeyID的讀取和修改,即實現Get_KeyID和Set_KeyID功能。程序構思大致是:對于Get_KeyID,在接收到PC端發來的讀取KeyID的中斷后,立即從端點1發送8字節的KeyID,這一段沒有什么特別之處;對于Set_KeyID,在接收到信號后,立即轉入Set_KeyID子程序。首先將存儲KeyID的Flash去保護,然后寄存器置位,即在硬件上給Flash一個高電平,接著進行擦除,再將保存于緩沖區的PC發來的新KeyID存儲到Flash中。最后,置Flash狀態寄存器位,給Flash加保護。?

2.4 PC端新增功能的USB驅動程序設計?

??? Windows 98的驅動程序從結構上來說分為兩層:內核層和用戶層。USB的客戶驅動程序屬于用戶層,而USB類驅動程序和底層驅動程序則屬于內核層。目前,USB還屬于起步階段,Windows對USB的支持還不夠完善,僅支持內核層。USB開發人員所要做的,就是開發客戶驅動程序,直接與類驅動程序打交道。?

??? HID屬于USB設備類中的一個子類,Windows對它提供了非常強大的支持,尤其是在用戶層提供了Hid.dll,其中包含了用戶層驅動程序與類驅動程序通信需要的各種功能模塊,將它們以API的形式提供給用戶函數接口。這樣,在編寫客戶驅動程序的時候就可以直接調用這些API函數來完成諸如IN、OUT等功能,大大降低了編寫驅動程序的難度。?

??? HID客戶驅動程序訪問HID類驅動程序,由HID類驅動程序完成大多數工作,而硬件交互由HID小驅動程序HidUsb.sys處理,HID小驅動程序調用USB底層驅動程序USBD.sys訪問設備。?

??? 這里介紹用戶模式的HID客戶驅動程序設計過程。它主要包括三個方面的工作:?

??? ·查找所有HID設備;?

??? ·對于查找到的每一個HID設備,檢查其功能,判斷是否為感興趣的設備;?

??? ·根據用戶需要讀取HID輸入Report(Feature)或者寫HID輸出Report(Feature)。?

??? 程序流程如下:?

??? (1)查找USB安全鑰設備;?

??? (2)讀取HID設備功能;?

??? (3)具體實現Get_KeyID和Set_KeyID子函數;?

BOOL??? CUsbKey::GetKeyID()? //Get_KeyID子程序?

{...?

??? result=HidD_GetFeature(HidDevice, ReadBuffer,0x09);?

?? //調用此函數,獲取從端點1發來的8字節KeyID;??

??? for(tmpInt=0;tmpInt

??????? KeyID_Get[tmpInt]=ReadBuffer[tmpInt+1];?

??? return TRUE;?

}?

BOOL??CUsbKey::SetKeyID()??? // Set_KeyID子程序?

{?? int i;?

??? long result;?

??? int DataBuffer[16];?

??? WriteBuffer[0]=0;?????????? //寫緩沖區首字節清0,作為Set_Feature函數的要求?

??? char *c;????????????????? //獲得對話框內輸入8字節新KeyID字符串的指針?

??? c=(char *)(LPCSTR)str_KeyIDSet;?

??? for (i=0;i

??????? DataBuffer[i]=*c++;?

??? ……?? //此處省略了對輸入的8個字節的KeyID的16進制檢查代碼?

??? for(i=0;i<8;i++)?

??? ??? WriteBuffer[i+1]=DataBuffer[2*i]+DataBuffer[2*i+1];?

??? result=HidD_SetFeature(HidDevice,WriteBuffer, 0x09);?

??? return? TRUE;?

}?

??? (4)程序運行結果。?

??? 編譯連接之后,最終會生成可執行文件KEYDEMO.exe。執行它即可SK通信,實現各種功能。?

參考文獻?

1 王云飛.USB系統研究.研究生論文,北京:清華大學,2001?

2 MOTOROLA. MC68HC908JB8 Technical Data. 2000?

3 Chris Cant (美)著,孫義譯.Windows WDM設備驅動程序開發指南.北京:機械工業出版社,2000?

4 Bruce Schneier(美)著,吳世忠譯.應用密碼學——協議、算法與C源程序.北京:機械工業出版社,2000?

5 USB Implementers' Forum.Universal Serial Bus Specification, Revision 1.0. January 15, 1996

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美午夜不卡在线观看免费| 欧美一区午夜精品| 久久久久久久综合日本| 亚洲深夜福利在线| 亚洲综合日本| 国产午夜精品美女毛片视频| 欧美人与禽猛交乱配| 91久久精品视频| 亚洲国产99| 猫咪成人在线观看| 欧美日韩另类一区| 你懂的国产精品| 国产性天天综合网| 国产精品videossex久久发布| 欧美日韩国产综合视频在线| 久久久国产精品一区| 久久久噜噜噜久久中文字幕色伊伊| 在线电影院国产精品| 亚洲精品国产拍免费91在线| 欧美一区二视频在线免费观看| 亚洲精品欧美一区二区三区| 亚洲一区国产精品| 欧美一区二区视频免费观看| 国产日韩精品一区二区三区| 日韩视频免费观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美一级专区| 一区二区三区av| 国产精品狼人久久影院观看方式| 久久精品一本久久99精品| 久久亚洲美女| 国产精品视频免费在线观看| 国产精品swag| 国产欧美91| 一本色道久久88综合日韩精品| 久久久久久伊人| 久久国内精品自在自线400部| 1024日韩| 欧美国产日韩一二三区| 亚洲高清不卡av| 欧美在线一二三四区| 另类图片综合电影| 黑人一区二区三区四区五区| 暖暖成人免费视频| 正在播放亚洲一区| 91久久精品国产91久久性色tv| 久久九九国产| 国产精品第一页第二页第三页| 国产欧美丝祙| 91久久久国产精品| 国产一区在线视频| 亚洲欧美第一页| 欧美激情精品久久久六区热门| 国产精品午夜春色av| 亚洲精品乱码久久久久久日本蜜臀| 欧美日韩和欧美的一区二区| 免费成人你懂的| 国产乱码精品一区二区三区忘忧草| 午夜欧美大尺度福利影院在线看| 亚洲美女福利视频网站| 亚洲一区尤物| 欧美性感一类影片在线播放| 亚洲欧美国产一区二区三区| 欧美手机在线| 麻豆精品视频在线观看视频| 久久天天躁狠狠躁夜夜av| 欧美日韩免费一区| 欧美精品国产| 欧美精品在线观看一区二区| 亚洲精品久久久久久久久久久久久| 国产免费成人| 亚洲精品综合久久中文字幕| 久久精品日韩欧美| 亚洲精品1234| 中文亚洲免费| 亚洲与欧洲av电影| 国产精品青草久久久久福利99| 欧美激情网站在线观看| 激情综合在线| 野花国产精品入口| 国语自产精品视频在线看抢先版结局| 亚洲一区久久| 国产一区日韩一区| 欧美一区国产一区| 夜夜嗨av一区二区三区网站四季av| 伊人成人网在线看| 日韩视频久久| 亚洲美女黄网| 欧美大片在线观看一区二区| 精品成人在线观看| 久久在线免费视频| 欧美黄色视屏| 在线看片一区| 狠狠色综合色区| 亚洲在线免费观看| 午夜伦欧美伦电影理论片| 久久综合色影院| 午夜一区二区三区在线观看| 亚洲第一页自拍| 亚洲一区二区黄| 一区二区三区鲁丝不卡| 久久精品人人做人人爽电影蜜月| 亚洲美女视频网| 性做久久久久久久免费看| 亚洲人成网站999久久久综合| 亚洲欧美一区二区原创| 午夜日韩福利| 狠狠色狠狠色综合日日小说| 国产精品久久久久77777| 亚洲国产日韩一区| 一本色道久久综合亚洲精品高清| 在线不卡欧美| 久久国产免费看| 欧美一区国产在线| 怡红院精品视频在线观看极品| 久久偷窥视频| 欧美精品国产精品日韩精品| 亚洲国产成人av好男人在线观看| 欧美美女操人视频| 国产日韩精品一区二区三区在线| 欧美另类综合| 亚洲区中文字幕| 亚洲国产一成人久久精品| 亚洲欧美日韩精品综合在线观看| 亚洲一区精彩视频| 午夜精品一区二区三区四区| 国产精品黄色在线观看| 国产亚洲欧美日韩美女| 狠狠色丁香婷婷综合| 日韩视频一区二区三区| 在线观看视频一区二区| 美女啪啪无遮挡免费久久网站| 欧美四级伦理在线| 欧美四级剧情无删版影片| 在线欧美电影| 久久精品国产69国产精品亚洲| 亚洲性图久久| 红桃视频国产精品| 久久精品夜色噜噜亚洲a∨| 亚洲一区二区三区在线观看视频| 欧美黄色小视频| 欧美大片18| 欧美日韩国产影片| 国产精品护士白丝一区av| 亚洲三级国产| 国产一区二区精品| 91久久国产综合久久蜜月精品| 午夜在线电影亚洲一区| 亚洲精选大片| 国产一二三精品| 国产精品网站在线观看| 在线欧美亚洲| 亚洲欧美制服中文字幕| 久久久久一区二区三区四区| 黄色成人小视频| 久久免费视频一区| 日韩视频在线永久播放| 亚洲第一精品久久忘忧草社区| 久久久噜噜噜| 亚洲国产精品成人一区二区| 欧美激情在线有限公司| 亚洲国产精品美女| 欧美日韩亚洲综合一区| 国产亚洲福利社区一区| 亚洲精品一区二区三区99| 亚洲人成网站精品片在线观看| 欧美性做爰猛烈叫床潮| 国产精品自在线| 亚洲国产另类 国产精品国产免费| 最新69国产成人精品视频免费| 亚洲精品在线观看免费| 欧美精品啪啪| 亚洲一区二区三区国产| 亚洲精品影院在线观看| 久久不射电影网| 欧美日韩国产a| 亚洲天堂视频在线观看| 欧美一区二区三区婷婷月色| 久久久久**毛片大全| 99精品视频免费| 欧美日韩中国免费专区在线看| 欧美视频日韩视频| 欧美99在线视频观看| 久久人人97超碰人人澡爱香蕉| 在线一区日本视频| 亚洲精品1234| 亚洲欧洲精品一区二区精品久久久| 国产在线观看91精品一区| 午夜精品福利在线| 国产欧美一区二区精品性| 欧美日韩一区二区精品| 中国av一区| 欧美日韩在线不卡| 国产精品丝袜91| 国产精品久久久久久久久久妞妞| 欧美—级在线免费片| 中日韩美女免费视频网址在线观看| 91久久视频| 99精品视频免费全部在线| 久久综合久久久久88| 久久综合999| 国产精品久久久久久久一区探花| 国产精品久久久99| 欧美成人一区在线| 欧美一区二区三区四区在线观看地址| 狠狠综合久久| 一区二区亚洲欧洲国产日韩| 久久综合影视| 久久久久网址| 久久精品二区亚洲w码| 国产精品国产馆在线真实露脸| 久久美女艺术照精彩视频福利播放| 影音先锋中文字幕一区| 国产亚洲一区二区三区| 欧美成人福利视频| 黑人极品videos精品欧美裸| 日韩五码在线| 国产精品系列在线| 亚洲肉体裸体xxxx137| 国产在线拍揄自揄视频不卡99| 久久精品国产成人| 国产精品尤物福利片在线观看| 欧美激情一区二区三区全黄| 国产精品嫩草99av在线| 亚洲国产成人午夜在线一区| 一区二区三区三区在线| 激情久久中文字幕| 欧美成人精品一区二区三区| 欧美高清在线一区二区| 欧美日韩hd| 欧美 日韩 国产一区二区在线视频| 在线欧美日韩| 久久久人成影片一区二区三区观看| 欧美日韩在线三级| 西瓜成人精品人成网站| 亚洲高清视频在线观看| 亚洲视频精品| 亚洲视频第一页| 欧美视频官网| 亚洲一区二区视频| 欧美成黄导航| 国外成人网址| 国内精品国语自产拍在线观看| 国产精品亚洲一区| 亚洲韩日在线| 伊人一区二区三区久久精品| 久久精品国产99精品国产亚洲性色| 欧美久久在线| av成人老司机| 韩日视频一区| 国产精品v一区二区三区| 国产九色精品成人porny| 亚洲电影在线免费观看| 日韩天堂在线观看| 久久激情五月激情| 亚洲免费影视第一页| 亚洲人精品午夜| 91久久国产综合久久蜜月精品| 欧美日韩美女| 亚洲欧美怡红院| 国产亚洲欧洲| 在线欧美福利| 国产女主播视频一区二区| 国产精品成人播放| 国内精品美女在线观看| 欧美麻豆久久久久久中文| 野花国产精品入口| 中文国产亚洲喷潮| 欧美连裤袜在线视频| 欧美理论在线播放| 亚洲欧美在线观看| 最新日韩中文字幕| 亚洲欧美精品伊人久久| 91久久久国产精品| 国产欧美91| 狠狠狠色丁香婷婷综合激情| 狠狠色综合一区二区| 国产女同一区二区| 中文在线资源观看视频网站免费不卡| 韩国av一区二区三区四区| 亚洲国产高清一区二区三区| 男人的天堂亚洲| 精品不卡视频| 性娇小13――14欧美| 亚洲欧美日韩综合| 一区二区三区|亚洲午夜| 美日韩精品免费观看视频| 国产精品免费小视频| 老司机午夜精品视频在线观看| 亚洲欧美卡通另类91av| 久久噜噜噜精品国产亚洲综合| 久久久久久久久久久成人| 亚洲国内精品| 狠狠色狠狠色综合日日五| 欧美女人交a| 美女爽到呻吟久久久久| 麻豆成人综合网| 香蕉久久一区二区不卡无毒影院| 久久成人免费视频| 蜜臀va亚洲va欧美va天堂| 国产精品嫩草99a| 日韩午夜激情电影| 欧美一区二区成人| 午夜日韩福利| 国产精品高潮呻吟久久av黑人| 欧美sm重口味系列视频在线观看| 最近中文字幕日韩精品| 欧美四级在线| 国产精品美女xx| 欧美在线免费看| 欧美韩日视频| 亚洲一区二三| 国产日韩欧美黄色| 欧美三级在线| 欧美中文字幕视频| 一区二区不卡在线视频 午夜欧美不卡在| 国产精品初高中精品久久| 欧美国产在线观看| 欧美日韩精品免费| 国产精品视频区| 欧美中文字幕在线观看| 国产日韩在线一区二区三区| 国产视频精品免费播放| 亚洲国产精品国自产拍av秋霞| 国产精品久久久久影院色老大| 免费在线观看成人av| 久久尤物电影视频在线观看| 久久一区免费|