精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何使用OpenSSL:哈希值、數字簽名等

系統 Linux
通過 OpenSSL 深入了解密碼學的細節:哈希值、數字簽名、數字證書等。

[[337722]]

通過 OpenSSL 深入了解密碼學的細節:哈希值、數字簽名、數字證書等。

本系列的第一篇文章通過 OpenSSL 庫和命令行實用程序介紹了哈希、加密/解密、數字簽名和數字證書。這第二篇文章將對細節進行深入探討。讓我們從計算中無處不在的哈希開始,并考慮是什么使哈希函數具備密碼學意義

密碼學哈希

OpenSSL 源代碼的下載頁面包含了一個帶有最新版本的表格。每個版本都有兩個哈希值hash:160 位 SHA1 和 256 位 SHA256。這些值可以用來驗證下載的文件是否與存儲庫中的原始文件相匹配:下載者在本地重新計算下載文件的哈希值,然后將結果與原始文件進行比較。現代系統有計算這種哈希值的實用程序。例如,Linux 有 md5sum 和 sha256sum。OpenSSL 本身也提供了類似的命令行實用程序。

哈希值被用于計算的許多領域。例如,比特幣區塊鏈使用 SHA256 哈希值作為區塊標識符。挖比特幣就是生成一個低于指定閾值的 SHA256 哈希值,也就是至少有 N 個前導零的哈希值。(N 的值可以上升或下降,這取決于特定時間的挖礦生產力)。作為一個興趣點,如今的礦機是為并行生成 SHA256 哈希值而設計的硬件集群。在 2018 年的一個高峰期,全球的比特幣礦工每秒產生約 7500 萬個太哈希值terahash —— 這真是一個不可思議的數字。

網絡協議也使用哈希值(在這里通常叫做“校驗和checksum”)來支持消息的完整性;也就是說,保證收到的消息與發送的消息是一樣的。消息發送者計算消息的校驗和,并將結果與消息一起發送。當消息到達時,接收方重新計算校驗和。如果發送的校驗和與重新計算的校驗和不一致,那么消息在傳輸過程中可能出現了一些問題,或者發送的校驗和出現了問題,或者兩者都出現了問題。在這種情況下,應該重新發送消息和它的校驗和,或者至少應該觸發一個錯誤情況。(如 UDP 這樣的低級網絡協議不會理會校驗和。)

哈希的其他例子大家都很熟悉。比如一個網站,要求用戶用密碼進行驗證,用戶在瀏覽器中輸入密碼,然后,他們通過 HTTPS 連接到服務器,密碼從瀏覽器加密發送到服務器。一旦密碼到達服務器,就會被解密,然后進行數據庫表的查詢。

在這個查詢表中應該存儲什么?存儲密碼本身是有風險的。風險要小得多的方式是存儲一個由密碼生成的哈希值,也許在計算哈希值之前“加一些salt(額外的位)改善口味”。你的密碼可能會被發送到 Web 服務器上,但網站可以向你保證,密碼不會存儲在那里。

哈希值還出現在安全的各個領域。例如,基于哈希值的消息認證碼hash-based message authentication codeHMAC)使用一個哈希值和一個秘密的加密密鑰cryptographic key來認證通過網絡發送的消息。HMAC 碼輕量級且易于在程序中使用,在 Web 服務中很受歡迎。一個 X509 數字證書包括一個稱為指紋fingerprint的哈希值,它可以方便證書驗證。一個存放于內存中的可信存儲truststore可以實現為一個以這種指紋為鍵的查找表 —— 作為一個支持恒定查找時間的哈希映射hash map。來自傳入的證書的指紋可以與可信存儲中的密鑰進行比較,以確定是否匹配。

密碼學哈希函數cryptographic hash function應該具有什么特殊屬性?它應該是單向one-way的,這意味著很難被逆轉。一個加密哈希函數應該是比較容易計算的,但是計算它的反函數(將哈希值映射回輸入位串的函數)在計算上應該是困難的。下面是一個描述,用 chf 作為加密哈希函數,我的密碼 foobar 作為樣本輸入。

  1. +---+
  2. foobar—>|chf|—>hash value ## 簡單直接
  3. +--–+

相比之下,逆向操作是不可行的:

  1. +-----------+
  2. hash value—>|chf inverse|—>foobar ## 棘手困難
  3. +-----------+

例如,回憶一下 SHA256 哈希函數。對于一個任意長度為 N > 0 的輸入位串,這個函數會生成一個 256 位的固定長度的哈希值;因此,這個哈希值甚至不會反映出輸入位串的長度 N,更不用說字符串中每個位的值了。順便說一下,SHA256 不容易受到長度擴展攻擊length extension attack。唯一有效的逆向工程方法是通過蠻力搜索將計算出的 SHA256 哈希值逆向返回到輸入位串,這意味著需要嘗試所有可能的輸入位串,直到找到與目標哈希值匹配的位串。這樣的搜索在 SHA256 這樣一個完善的加密哈希函數上是不可行的。

現在,最后一個回顧的知識點是有序in order。加密哈希值是統計學上的唯一,而不是無條件的唯一,這意味著兩個不同的輸入位串產生相同的哈希值是不太可能的,但也不是不可能的 —— 這稱之為碰撞collision生日問題提供了一個很好的反直覺的碰撞例子。對各種哈希算法的抗碰撞性collision resistance有著廣泛的研究。例如,MD5(128 位哈希值)在大約 221 次哈希之后,抗碰撞能力就會崩潰。對于 SHA1(160 位哈希值),大約在 261 次哈希后開始崩潰。

對于 SHA256 的抗碰撞能力的剖析,目前還沒有一個很好的估計。這個事實并不奇怪。SHA256 有 2256 個不同的哈希值范圍,這個數字的十進制表示法有 78 位之多!那么,SHA256 哈希會不會發生碰撞呢?當然可能,但可能性極小。

在下面的命令行示例中,有兩個輸入文件被用作位串源:hashIn1.txt 和 hashIn2.txt。第一個文件包含 abc,第二個文件包含 1a2b3c

為了便于閱讀,這些文件包含的是文本,但也可以使用二進制文件代替。

在命令行(百分號 % 是提示符)使用 Linux sha256sum 實用程序對這兩個文件進行處理產生以下哈希值(十六進制):

  1. % sha256sum hashIn1.txt
  2. 9e83e05bbf9b5db17ac0deec3b7ce6cba983f6dc50531c7a919f28d5fb3696c3 hashIn1.txt
  3.  
  4. % sha256sum hashIn2.txt
  5. 3eaac518777682bf4e8840dd012c0b104c2e16009083877675f00e995906ed13 hashIn2.txt

OpenSSL 哈希對應的結果與預期相同:

  1. % openssl dgst -sha256 hashIn1.txt
  2. SHA256(hashIn1.txt)= 9e83e05bbf9b5db17ac0deec3b7ce6cba983f6dc50531c7a919f28d5fb3696c3
  3.  
  4. % openssl dgst -sha256 hashIn2.txt
  5. SHA256(hashIn2.txt)= 3eaac518777682bf4e8840dd012c0b104c2e16009083877675f00e995906ed13

這種對密碼學哈希函數的研究,為我們仔細研究數字簽名及其與密鑰對的關系奠定了基礎。

數字簽名

顧名思義,數字簽字digital signature可以附在文件或其他一些電子工件artifact(如程序)上,以證明其真實性。因此,這種簽名類似于紙質文件上的手寫簽名。驗證數字簽名就是要確認兩件事:第一,被擔保的工件在簽名被附上后沒有改變,因為它部分是基于文件的加密學哈希值。第二,簽名屬于一個人(例如 Alice),只有她才能獲得一對密鑰中的私鑰。順便說一下,對代碼(源碼或編譯后的代碼)進行數字簽名已經成為程序員的普遍做法。

讓我們來了解一下數字簽名是如何創建的。如前所述,沒有公鑰和私鑰對就沒有數字簽名。當使用 OpenSSL 創建這些密鑰時,有兩個獨立的命令:一個是創建私鑰,另一個是從私鑰中提取匹配的公鑰。這些密鑰對用 base64 編碼,在這個過程中可以指定它們的大小。

私鑰private key由數值組成,其中兩個數值(一個模數modulus和一個指數exponent)組成了公鑰。雖然私鑰文件包含了公鑰public key,但提取出來的公鑰并不會透露相應私鑰的值。

因此,生成的帶有私鑰的文件包含了完整的密鑰對。將公鑰提取到自己的文件中是很實用的,因為這兩把鑰匙有不同的用途,而這種提取方式也將私鑰可能被意外公開的危險降到最低。

接下來,這對密鑰的私鑰被用來生成目標工件(如電子郵件)的哈希值,從而創建簽名。在另一端,接收者的系統使用這對密鑰的公鑰來驗證附在工件上的簽名。

現在舉個例子。首先,用 OpenSSL 生成一個 2048 位的 RSA 密鑰對:

  1. openssl genpkey -out privkey.pem -algorithm rsa 2048

在這個例子中,我們可以舍去 -algorithm rsa 標志,因為 genpkey 默認為 RSA 類型。文件的名稱(privkey.pem)是任意的,但是隱私增強郵件Privacy Enhanced Mail(PEM)擴展名 .pem 是默認 PEM 格式的慣用擴展名。(如果需要的話,OpenSSL 有命令可以在各種格式之間進行轉換。)如果需要更大的密鑰大小(例如 4096),那么最后一個參數 2048 可以改成 4096。這些大小總是二的冪。

下面是產生的 privkey.pem 文件的一個片斷,它是 base64 編碼的:

  1. -----BEGIN PRIVATE KEY-----
  2. MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBANnlAh4jSKgcNj/Z
  3. JF4J4WdhkljP2R+TXVGuKVRtPkGAiLWE4BDbgsyKVLfs2EdjKL1U+/qtfhYsqhkK
  4. ...
  5. -----END PRIVATE KEY-----

接下來的命令就會從私鑰中提取出這對密鑰的公鑰:

  1. openssl rsa -in privkey.pem -outform PEM -pubout -out pubkey.pem

由此產生的 pubkey.pem 文件很小,可以在這里完整地顯示出來:

  1. -----BEGIN PUBLIC KEY-----
  2. MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDZ5QIeI0ioHDY/2SReCeFnYZJY
  3. z9kfk11RrilUbT5BgIi1hOAQ24LMilS37NhHYyi9VPv6rX4WLKoZCmkeYaWk/TR5
  4. 4nbH1E/AkniwRoXpeh5VncwWMuMsL5qPWGY8fuuTE27GhwqBiKQGBOmU+MYlZonO
  5. O0xnAKpAvysMy7G7qQIDAQAB
  6. -----END PUBLIC KEY-----

現在,有了密鑰對,數字簽名就很容易了 —— 在本例中,源文件 client.c 是要簽名的工件:

  1. openssl dgst -sha256 -sign privkey.pem -out sign.sha256 client.c

client.c 源文件的摘要是 SHA256,私鑰在前面創建的 privkey.pem 文件中。由此產生的二進制簽名文件是 sign.sha256,這是一個任意的名字。要得到這個文件的可讀版本(比如 base64),后續命令是:

  1. openssl enc -base64 -in sign.sha256 -out sign.sha256.base64

文件 sign.sha256.base64 現在包含如下內容:

  1. h+e+3UPx++KKSlWKIk34fQ1g91XKHOGFRmjc0ZHPEyyjP6/lJ05SfjpAJxAPm075
  2. VNfFwysvqRGmL0jkp/TTdwnDTwt756Ej4X3OwAVeYM7i5DCcjVsQf5+h7JycHKlM
  3. o/Jd3kUIWUkZ8+Lk0ZwzNzhKJu6LM5KWtL+MhJ2DpVc=

或者,可執行文件 client 也可以被簽名,由此產生的 base64 編碼簽名將如預期的不同:

  1. VMVImPgVLKHxVBapJ8DgLNJUKb98GbXgehRPD8o0ImADhLqlEKVy0HKRm/51m9IX
  2. xRAN7DoL4Q3uuVmWWi749Vampong/uT5qjgVNTnRt9jON112fzchgEoMb8CHNsCT
  3. XIMdyaPtnJZdLALw6rwMM55MoLamSc6M/MV1OrJnk/g=

這一過程的最后一步是用公鑰驗證數字簽名。作為驗證的一個重要步驟,應重新計算用于簽署工件(在本例中,是可執行的 client 程序)的哈希值,因為驗證過程應表明工件在簽署后是否發生了變化。

有兩個 OpenSSL 命令用于這個目的。第一條命令是對 base64 簽名進行解碼。

  1. openssl enc -base64 -d -in sign.sha256.base64 -out sign.sha256

第二條是核實簽名:

  1. openssl dgst -sha256 -verify pubkey.pem -signature sign.sha256 client

第二條命令的輸出,應該是這樣的:

  1. Verified OK

為了了解驗證失敗時的情況,一個簡短但有用的練習是將最后一個 OpenSSL 命令中的可執行的 client 文件替換為源文件 client.c,然后嘗試驗證。另一個練習是改變 client 程序,無論多么輕微,然后再試一次。

數字證書

數字證書digital certificate匯集了到目前為止所分析的各個部分:哈希值、密鑰對、數字簽名和加密/解密。生產級證書的第一步是創建一個證書簽名請求certificate signing request(CSR),然后將其發送給證書頒發機構certificate authority(CA)。在 OpenSSL 的例子中,要做到這一點,請運行:

  1. openssl req -out myserver.csr -new -newkey rsa:4096 -nodes -keyout myserverkey.pem

這個例子生成了一個 CSR 文檔,并將該文檔存儲在文件 myserver.csr(base64 文本)中。這里的目的是:CSR 文檔要求 CA 保證與指定域名相關聯的身份,域名也就是 CA 所說的通用名common name(CN)。

盡管可以使用現有的密鑰對,但這個命令也會生成一個新的密鑰對。請注意,在諸如 myserver.csr 和 myserverkey.pem 等名稱中使用 server 暗示了數字證書的典型用途:作為與 www.google.com 等域名相關的 Web 服務器的身份擔保。

然而,無論數字證書如何使用,同樣使用這個命令都會創建一個 CSR。它還會啟動一個問題/回答的交互式會話,提示有關域名的相關信息,以便與請求者的數字證書相連接。這個交互式會話可以通過在命令中提供基本的信息,用反斜杠來續行一步完成。-subj 標志提供了所需的信息。

  1. % openssl req -new \
  2. -newkey rsa:2048 -nodes -keyout privkeyDC.pem \
  3. -out myserver.csr \
  4. -subj "/C=US/ST=Illinois/L=Chicago/O=Faulty Consulting/OU=IT/CN=myserver.com"

產生的 CSR 文件在發送給 CA 之前可以進行檢查和驗證。這個過程可以創建具有所需格式(如 X509)、簽名、有效期等的數字證書。

  1. openssl req -text -in myserver.csr -noout -verify

這是輸出的一個片斷:

  1. verify OK
  2. Certificate Request:
  3. Data:
  4. Version: 0 (0x0)
  5. Subject: C=US, ST=Illinois, L=Chicago, O=Faulty Consulting, OU=IT, CN=myserver.com
  6. Subject Public Key Info:
  7. Public Key Algorithm: rsaEncryption
  8. Public-Key: (2048 bit)
  9. Modulus:
  10. 00:ba:36:fb:57:17:65:bc:40:30:96:1b:6e:de:73:
  11. Exponent: 65537 (0x10001)
  12. Attributes:
  13. a0:00
  14. Signature Algorithm: sha256WithRSAEncryption

自簽證書

在開發 HTTPS 網站的過程中,手頭有一個不用經過 CA 流程的數字證書是很方便的。在 HTTPS 握手的認證階段,自簽證書self-signed certificate就能滿足要求,盡管任何現代瀏覽器都會警告說這樣的證書毫無價值。繼續這個例子,自簽證書的 OpenSSL 命令(有效期為一年,使用 RSA 公鑰)如下:

  1. openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:4096 -keyout myserver.pem -out myserver.crt

下面的 OpenSSL 命令呈現了生成的證書的可讀版本:

  1. openssl x509 -in myserver.crt -text -noout

這是自簽證書的部分輸出:

  1. Certificate:
  2. Data:
  3. Version: 3 (0x2)
  4. Serial Number: 13951598013130016090 (0xc19e087965a9055a)
  5. Signature Algorithm: sha256WithRSAEncryption
  6. Issuer: C=US, ST=Illinois, L=Chicago, O=Faulty Consulting, OU=IT, CN=myserver.com
  7. Validity
  8. Not Before: Apr 11 17:22:18 2019 GMT
  9. Not After : Apr 10 17:22:18 2020 GMT
  10. Subject: C=US, ST=Illinois, L=Chicago, O=Faulty Consulting, OU=IT, CN=myserver.com
  11. Subject Public Key Info:
  12. Public Key Algorithm: rsaEncryption
  13. Public-Key: (4096 bit)
  14. Modulus:
  15. 00:ba:36:fb:57:17:65:bc:40:30:96:1b:6e:de:73:
  16. ...
  17. Exponent: 65537 (0x10001)
  18. X509v3 extensions:
  19. X509v3 Subject Key Identifier:
  20. 3A:32:EF:3D:EB:DF:65:E5:A8:96:D7:D7:16:2C:1B:29:AF:46:C4:91
  21. X509v3 Authority Key Identifier:
  22. keyid:3A:32:EF:3D:EB:DF:65:E5:A8:96:D7:D7:16:2C:1B:29:AF:46:C4:91
  23.  
  24. X509v3 Basic Constraints:
  25. CA:TRUE
  26. Signature Algorithm: sha256WithRSAEncryption
  27. 3a:eb:8d:09:53:3b:5c:2e:48:ed:14:ce:f9:20:01:4e:90:c9:
  28. ...

如前所述,RSA 私鑰包含的值是用來生成公鑰的。但是,給定的公鑰不會泄露匹配的私鑰。關于底層數學理論的介紹,見 https://simple.wikipedia.org/wiki/RSA_algorithm

數字證書與用于生成該證書的密鑰對之間存在著重要的對應關系,即使證書只是自簽的:

  • 數字證書包含構成公鑰的指數和模數值。這些值是最初生成的 PEM 文件中密鑰對的一部分,在本例中,是文件 myserver.pem
  • 指數exponent幾乎總是 65,537(如本例中),所以可以忽略。
  • 密鑰對的模數modulus應該與數字證書的模數相匹配。

模數是一個很大的值,為了便于閱讀,可以進行哈希處理。下面是兩個 OpenSSL 命令,它們檢查相同的模數,從而確認數字證書是基于 PEM 文件中的密鑰對。

  1. % openssl x509 -noout -modulus -in myserver.crt | openssl sha1 ## 證書中的模數
  2. (stdin)= 364d21d5e53a59d482395b1885aa2c3a5d2e3769
  3.  
  4. % openssl rsa -noout -modulus -in myserver.pem | openssl sha1 ## 密鑰中的模數
  5. (stdin)= 364d21d5e53a59d482395b1885aa2c3a5d2e3769

所產生的哈希值匹配,從而確認數字證書是基于指定的密鑰對。

回到密鑰分發問題上

讓我們回到第一部分末尾提出的一個問題:client 程序和 Google Web 服務器之間的 TLS 握手。握手協議有很多種,即使是用在 client 例子中的 Diffie-Hellman 版本也有不同的方式。盡管如此,client 例子遵循了一個共同的模式。

首先,在 TLS 握手過程中,client 程序和 Web 服務器就加密套件cipher suite達成一致,其中包括要使用的算法。在本例中,該套件是 ECDHE-RSA-AES128-GCM-SHA256

現在值得關注的兩個要素是 RSA 密鑰對算法和 AES128 塊密碼,用于在握手成功的情況下對消息進行加密和解密。關于加密/解密,這個過程有兩種流派:對稱symmetric非對稱asymmetric。在對稱流派中,加密和解密使用的是相同的密鑰,這首先就引出了密鑰分發問題key distribution problem。如何將密鑰安全地分發給雙方?在非對稱流派中,一個密鑰用于加密(在這種情況下,是 RSA 公鑰),但另一個密鑰用于解密(在這種情況下,是來自同一對密鑰的 RSA 私鑰)。

client 程序擁有來認證證書的 Google Web 服務器的公鑰,而 Web 服務器擁有來自同一對密鑰的私鑰。因此,client 程序可以向 Web 服務器發送加密信息,而 Web 服務器可以單獨對該通信進行解密。

在 TLS 的情況下,對稱方式有兩個顯著的優勢:

  • 在 client 程序與 Google Web 服務器之間的互動中,認證是單向的。Google Web 服務器向 client 程序發送三張證書,但 client 程序并沒有向 Web 服務器發送證書,因此,Web 服務器沒有來自客戶端的公鑰,無法加密發給客戶端的消息。
  • 使用 AES128 的對稱加密/解密比使用 RSA 密鑰的非對稱加密/解密快了近千倍

TLS 握手將兩種加密/解密方式巧妙地結合在一起。在握手過程中,client 程序會生成隨機位,即所謂的預主密pre-master secret(PMS)。然后,client 程序用服務器的公鑰對 PMS 進行加密,并將加密后的 PMS 發送給服務器,服務器再用 RSA 密鑰對的私鑰對 PMS 信息進行解密:

  1. +-------------------+ encrypted PMS +--------------------+
  2. client PMS--->|servers public key|--------------->|servers private key|--->server PMS
  3. +-------------------+ +--------------------+

在這個過程結束時,client 程序和 Google Web 服務器現在擁有相同的 PMS 位。每一方都使用這些位生成一個主密碼master secret,并立即生成一個稱為會話密鑰session key的對稱加密/解密密鑰。現在有兩個不同但等價的會話密鑰,連接的每一方都有一個。在 client 的例子中,會話密鑰是 AES128 類的。一旦在 client 程序和 Google Web 服務器兩邊生成了會話密鑰,每一邊的會話密鑰就會對雙方的對話進行保密。如果任何一方(例如,client 程序)或另一方(在這種情況下,Google Web 服務器)要求重新開始握手,握手協議(如 Diffie-Hellman)允許整個 PMS 過程重復進行。

總結

在命令行上說明的 OpenSSL 操作也可以通過底層庫的 API 完成。這兩篇文章重點使用了這個實用程序,以保持例子的簡短,并專注于加密主題。如果你對安全問題感興趣,OpenSSL 是一個很好的開始地方,并值得深入研究。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2010-09-02 21:10:13

2011-08-29 10:27:38

IT技術數字簽名數字證書

2009-08-14 13:40:17

數字簽名電子簽名安全體系結構

2010-06-04 09:21:51

身份認證數字簽名

2019-04-18 15:00:36

2010-09-17 20:20:14

2010-10-08 21:14:08

2021-12-28 13:54:52

加密密鑰Java

2011-01-19 17:27:21

Sylpheed

2009-07-19 21:44:39

2016-11-10 23:51:41

2013-04-22 16:07:45

2009-03-02 16:42:33

2011-06-20 15:12:48

微軟木馬

2022-05-11 16:35:30

加密數字簽名信息

2022-02-21 09:00:08

數字簽名驗證

2011-08-30 14:29:31

數字簽名數字證書

2021-09-26 05:59:16

數字簽名數字證書HTTPS

2010-01-14 10:05:48

Ubuntu數字簽名

2009-06-29 13:26:44

Java編程入門加密
點贊
收藏

51CTO技術棧公眾號

成人免费视频网站| 精品国内自产拍在线观看| 日韩 欧美 高清| www亚洲人| 国产成人精品三级麻豆| 欧美亚洲第一页| 91久久久久久久久久久久久久| 试看120秒一区二区三区| 欧美午夜视频在线观看| 综合网五月天| 欧美拍拍视频| 国产精品一品二品| 国产大片精品免费永久看nba| 久久久久久久麻豆| 精品在线91| 日韩免费在线观看| 另类小说色综合| 美女搞黄视频在线观看| 亚洲欧美一区二区三区孕妇| 免费h精品视频在线播放| 国产人妻精品一区二区三| 久久福利影视| 97人人做人人爱| 欧美 日韩 国产 一区二区三区| 五月综合久久| 精品99久久久久久| 欧美激情第四页| 久久久久黄色| 色又黄又爽网站www久久| 激情伊人五月天| 色老头在线观看| 自拍视频在线观看一区二区| 日韩精彩视频| 亚洲av激情无码专区在线播放| 国产激情视频一区二区在线观看| 国产精品女人网站| 老熟妇一区二区三区| 一区二区三区国产盗摄| 色综合久久久888| 黄色一级大片在线免费观看| 日本一区二区三区视频| 国产香蕉一区二区三区在线视频 | 影音先锋在线国产| 亚洲国产专区| 国内免费久久久久久久久久久| 男人操女人的视频网站| 综合国产精品| 欧美高跟鞋交xxxxhd| 男女性高潮免费网站| 亚洲欧洲美洲一区二区三区| 久久久精品美女| 欧美性x x x| 欧美黄色免费| 九九热视频这里只有精品| 加勒比婷婷色综合久久| 亚洲一区二区三区| 欧美激情精品久久久久久黑人| 青青操视频在线播放| 欧美日韩一区二区高清| 久久久久久综合网天天| 奇米影视第四色777| 一区二区高清| 国产成人在线一区| 91超薄丝袜肉丝一区二区| 激情图片小说一区| 99国产超薄丝袜足j在线观看| 国内老熟妇对白hdxxxx| 成人激情av网| 欧美男人的天堂| 91激情在线| 亚洲男同1069视频| 精品国产一区二区三区无码| 蜜桃av在线| 欧美影院一区二区三区| 激情成人在线观看| 久久香蕉精品香蕉| 国产亚洲视频在线| 久久中文免费视频| 国产日韩视频| 国产日本欧美一区二区三区在线| 国产黄色免费大片| 99精品在线观看视频| 天天好比中文综合网| 91香蕉在线观看| 日韩欧美高清视频| 中文字幕日韩久久| 奇米777国产一区国产二区| 永久免费看mv网站入口亚洲| 中文字幕影音先锋| 亚洲在线免费| 91手机在线观看| 你懂的在线播放| 专区另类欧美日韩| 日本三级免费观看| 久久综合给合| 亚洲日韩欧美视频| 久久久久久国产精品免费播放| 久久久久91| http;//www.99re视频| 国产h在线观看| 亚洲一二三区视频在线观看| 国产高潮免费视频| 日韩精品福利一区二区三区| 欧美成人合集magnet| 久久国产视频精品| 国产成人高清视频| 亚洲日本理论电影| 忘忧草在线影院两性视频| 日韩欧美中文字幕制服| av网站免费在线看| 黄色亚洲免费| 91久久久久久久久久久久久| 久草在线网址| 精品日本美女福利在线观看| 日本在线视频播放| 欧美第一精品| 国产精品久久久久久久久久久不卡| 亚洲欧美激情另类| 亚洲天堂福利av| 中文字幕一区二区三区四区在线视频 | 一区二区日韩av| 性chinese极品按摩| 网曝91综合精品门事件在线| 色综合视频一区中文字幕| 亚洲特级黄色片| 久久久久国产精品厨房| 日本三级免费网站| 国产精品任我爽爆在线播放| 久久视频中文字幕| 国产又大又粗又硬| 欧美激情中文字幕| 日韩一级理论片| 女优一区二区三区| 欧美综合第一页| 在线观看xxx| 精品久久香蕉国产线看观看亚洲| 亚洲黄色小说在线观看| 欧美福利影院| 99porn视频在线| 污污的网站在线看| 精品欧美一区二区在线观看| 欧美黑人猛猛猛| 国产揄拍国内精品对白| 黄色一级片网址| 国产不卡精品在线| 欧美成人合集magnet| 精品毛片一区二区三区| 亚洲女爱视频在线| 911亚洲精选| 亚洲区欧美区| 欧美激情一区二区三区在线视频| 牛牛精品一区二区| 亚洲欧美综合图区| 成年人晚上看的视频| 久久精品一区蜜桃臀影院| 天天操天天摸天天爽| 日韩欧美中字| 亚洲最大福利视频| 免费看电影在线| 日韩av在线导航| 中文字幕在线播| 国产精品免费av| 6080国产精品| 国产日韩欧美| 亚洲啪啪av| 麻豆精品一区| 97人洗澡人人免费公开视频碰碰碰| 日韩av地址| 欧美日韩国产精选| 黄色一级片在线| 91视频xxxx| 国产免费中文字幕| 国产精品mm| 日韩欧美激情一区二区| 国产精品免费精品自在线观看| 欧美极品少妇全裸体| 全色精品综合影院| 欧美欧美午夜aⅴ在线观看| 丰满少妇高潮久久三区| 99riav久久精品riav| 天天干天天草天天| 在线日本高清免费不卡| 视频一区二区三| 综合视频一区| 国产精品av电影| 97超碰在线公开在线看免费| 国产网站欧美日韩免费精品在线观看 | 欧美亚洲国产一区二区三区| 黄色一级大片在线免费观看| 91视视频在线直接观看在线看网页在线看| 亚洲乱码国产一区三区| 一区二区电影在线观看| 欧美日韩精品久久| 日韩精品一区二区三区免费视频| 欧美一级bbbbb性bbbb喷潮片| 99精品老司机免费视频| 亚洲第一区中文字幕| 这里只有精品999| 香蕉成人啪国产精品视频综合网| 成年人看的免费视频| 成人av在线一区二区三区| 在线观看免费的av| 久久青草久久| av在线播放天堂| 91综合网人人| 奇米影视首页 狠狠色丁香婷婷久久综合| 豆花视频一区| 国产精品视频精品| 国产第一页在线| 日韩在线视频一区| 国产在线视频资源| 亚洲第一视频网站| 国产极品久久久| 欧美日韩成人高清| 亚洲国产精品无码久久久| 亚洲精品日韩综合观看成人91| 免费成人深夜天涯网站| 91丨porny丨中文| 国产人成视频在线观看| 国产精品亚洲第一| 在线观看岛国av| 免费在线观看视频一区| 国语对白做受xxxxx在线中国| 亚洲国产精品一区| www.激情网| 一区二区三区毛片免费| 正在播放精油久久| 成人羞羞视频播放网站| 欧美精品一区二区三区四区五区| 久久久久久久久久久久久久久久久久久久| 91久久精品国产91久久| 日韩专区视频| 婷婷开心激情综合| 亚洲一一在线| 国产毛片一区二区三区| 免费在线国产精品| 日本妇女一区| 乱色588欧美| 中文字幕亚洲影视| 日本视频一区在线观看| 国产区精品区| 午夜午夜精品一区二区三区文| 国产aⅴ精品一区二区三区久久| 欧美aaaaa喷水| 国产欧美日韩在线一区二区| 日本不卡免费新一二三区| 在线成人动漫av| 色综合久久久久久久久五月| 成人网18免费网站| 伊人婷婷久久| 亚洲高清资源在线观看| 蜜臀在线免费观看| 欧美日韩一区二区三区四区在线观看| 青青青在线观看视频| 伊人久久久大香线蕉综合直播| 欧美精品一区免费| 日韩影院精彩在线| 色一情一区二区三区| 国产成人综合在线观看| 亚洲日本久久久| 久久婷婷综合激情| 性爱在线免费视频| 日韩毛片视频在线看| 国产在线欧美在线| 欧美天堂在线观看| 亚洲无码精品在线播放| 日韩一区二区在线播放| 午夜福利视频一区二区| 国产一区二区三区在线视频| 在线看av的网址| 欧美激情二区三区| 第84页国产精品| 成人网在线观看| 91午夜精品| 日本亚洲自拍| 欧美在线网站| 国产91在线视频观看| 久久国产夜色精品鲁鲁99| 欧美午夜精品一区二区| 91女神在线视频| 日韩精品123区| 亚洲成在人线在线播放| 中文字幕一区二区人妻| 日韩网站在线看片你懂的| 亚洲色欧美另类| 久久国产精品久久久久久久久久| 九色porny自拍视频在线观看| 国产精品视频永久免费播放| 2020最新国产精品| 日韩尤物视频| 在线成人h网| 97人人爽人人| 久久伊99综合婷婷久久伊| 国产麻豆视频在线观看| 色天天综合色天天久久| 精品人妻一区二区三区换脸明星| 亚洲区免费影片| 国产www视频在线观看| 国产精品mp4| 国产精品久久久久av蜜臀| 一区二区三区免费看| 美女日韩在线中文字幕| 亚洲av无码成人精品区| 国产精品久久久久久亚洲毛片| 日韩精品人妻中文字幕| 欧美日韩和欧美的一区二区| 香蕉视频成人在线| 欧美高清视频在线播放| 亚洲日韩中文字幕一区| 免费在线国产精品| 激情自拍一区| 国产资源中文字幕| 欧美激情一区二区三区蜜桃视频| 韩国av免费观看| 日韩精品中文字幕在线一区| 欧美成人hd| 国产精品美乳在线观看| 亚洲福利天堂| 极品美女扒开粉嫩小泬| 国产成人午夜精品影院观看视频| 欧美性猛交xxxx乱大交少妇| 日本国产一区二区| 天堂中文在线看| 97免费中文视频在线观看| aaa国产精品| 日本a在线天堂| 国产精品白丝jk白祙喷水网站| 一本一本久久a久久| 欧美日韩精品一区二区天天拍小说| 久草在线网址| 日本精品一区二区三区在线| 天海翼亚洲一区二区三区| 国产毛片视频网站| 成人av电影在线观看| 久久精品视频久久| 精品国产免费视频| 超碰中文在线| 国产精品伊人日日| 1000部精品久久久久久久久| 小毛片在线观看| 午夜av区久久| 青青久在线视频免费观看| 欧美一区二区影院| 国产成人影院| 黄色免费网址大全| 欧美国产1区2区| 亚洲一区二区三区高清视频| 久久精品亚洲一区| 中文字幕视频精品一区二区三区| av在线免费观看国产| 波多野结衣在线一区| 91精品国产乱码在线观看| 日韩成人av网| 日韩国产激情| 亚洲人体一区| 国产a区久久久| 日韩欧美一级视频| 亚洲免费影视第一页| 精品免费av在线 | 四虎成人免费在线| 国产精品7m视频| 婷婷综合伊人| 国产精品欧美性爱| 狠狠躁夜夜躁人人躁婷婷91| 国产午夜视频在线观看| 亚洲一区二区免费在线| 亚洲图片在线| 69视频在线观看免费| 欧美顶级少妇做爰| segui88久久综合9999| 午夜欧美性电影| 国产精品资源网| 国产成人精品一区二三区| 在线电影av不卡网址| 亚洲精品一区在线| 久久精品一区二| 怡红院av一区二区三区| 五月婷婷久久久| 国产有码一区二区| 激情综合电影网| 99久久久无码国产精品不卡| 精品少妇一区二区三区| 日韩精品99| 青草视频在线观看视频| 国产欧美日韩不卡免费| 亚洲欧美激情另类| 国产精品一香蕉国产线看观看| 激情久久一区| 精品在线观看一区| 亚洲第一在线视频| 久久av影院| 国产精品沙发午睡系列| 亚洲欧美一区二区三区国产精品| 欧美挠脚心网站| 99re在线视频观看| 蜜桃视频第一区免费观看| 日韩精品一区二区在线播放| 久久伊人91精品综合网站| 亚洲三级网址| 四季av综合网站|