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

OpenSSL入門:密碼學基礎知識

系統 Linux
想要入門密碼學的基礎知識,尤其是有關 OpenSSL 的入門知識嗎?繼續閱讀。

[[337721]]

想要入門密碼學的基礎知識,尤其是有關 OpenSSL 的入門知識嗎?繼續閱讀。

本文是使用 OpenSSL 的密碼學基礎知識的兩篇文章中的第一篇,OpenSSL 是在 Linux 和其他系統上流行的生產級庫和工具包。(要安裝 OpenSSL 的最新版本,請參閱這里。)OpenSSL 實用程序可在命令行使用,程序也可以調用 OpenSSL 庫中的函數。本文的示例程序使用的是 C 語言,即 OpenSSL 庫的源語言。

本系列的兩篇文章涵蓋了加密哈希、數字簽名、加密和解密以及數字證書。你可以從我的網站的 ZIP 文件中找到這些代碼和命令行示例。

讓我們首先回顧一下 OpenSSL 名稱中的 SSL。

OpenSSL 簡史

安全套接字層Secure Socket Layer(SSL)是 Netscape 在 1995 年發布的一種加密協議。該協議層可以位于 HTTP 之上,從而為 HTTPS 提供了 S:安全secure。SSL 協議提供了各種安全服務,其中包括兩項在 HTTPS 中至關重要的服務:

  • 對等身份驗證Peer authentication(也稱為相互質詢):連接的每一邊都對另一邊的身份進行身份驗證。如果 Alice 和 Bob 要通過 SSL 交換消息,則每個人首先驗證彼此的身份。
  • 機密性Confidentiality:發送者在通過通道發送消息之前先對其進行加密。然后,接收者解密每個接收到的消息。此過程可保護網絡對話。即使竊聽者 Eve 截獲了從 Alice 到 Bob 的加密消息(即中間人攻擊),Eve 會發現他無法在計算上解密此消息。

反過來,這兩個關鍵 SSL 服務與其他不太受關注的服務相關聯。例如,SSL 支持消息完整性,從而確保接收到的消息與發送的消息相同。此功能是通過哈希函數實現的,哈希函數也隨 OpenSSL 工具箱一起提供。

SSL 有多個版本(例如 SSLv2 和 SSLv3),并且在 1999 年出現了一個基于 SSLv3 的類似協議傳輸層安全性Transport Layer Security(TLS)。TLSv1 和 SSLv3 相似,但不足以相互配合工作。不過,通常將 SSL/TLS 稱為同一協議。例如,即使正在使用的是 TLS(而非 SSL),OpenSSL 函數也經常在名稱中包含 SSL。此外,調用 OpenSSL 命令行實用程序以 openssl 開始。

除了 man 頁面之外,OpenSSL 的文檔是零零散散的,鑒于 OpenSSL 工具包很大,這些頁面很難以查找使用。命令行和代碼示例可以將主要主題集中起來。讓我們從一個熟悉的示例開始(使用 HTTPS 訪問網站),然后使用該示例來選出我們感興趣的加密部分進行講述。

一個 HTTPS 客戶端

此處顯示的 client 程序通過 HTTPS 連接到 Google:

  1. /* compilation: gcc -o client client.c -lssl -lcrypto */
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <openssl/bio.h> /* BasicInput/Output streams */
  5. #include <openssl/err.h> /* errors */
  6. #include <openssl/ssl.h> /* core library */
  7. #define BuffSize 1024
  8.  
  9. void report_and_exit(const char* msg) {
  10. perror(msg);
  11. ERR_print_errors_fp(stderr);
  12. exit(-1);
  13. }
  14.  
  15. void init_ssl() {
  16. SSL_load_error_strings();
  17. SSL_library_init();
  18. }
  19.  
  20. void cleanup(SSL_CTX* ctx, BIO* bio) {
  21. SSL_CTX_free(ctx);
  22. BIO_free_all(bio);
  23. }
  24.  
  25. void secure_connect(const char* hostname) {
  26. char name[BuffSize];
  27. char request[BuffSize];
  28. char response[BuffSize];
  29.  
  30. const SSL_METHOD* method = TLSv1_2_client_method();
  31. if (NULL == method) report_and_exit("TLSv1_2_client_method...");
  32.  
  33. SSL_CTX* ctx = SSL_CTX_new(method);
  34. if (NULL == ctx) report_and_exit("SSL_CTX_new...");
  35.  
  36. BIO* bio = BIO_new_ssl_connect(ctx);
  37. if (NULL == bio) report_and_exit("BIO_new_ssl_connect...");
  38.  
  39. SSL* ssl = NULL;
  40.  
  41. /* 鏈路 bio 通道,SSL 會話和服務器端點 */
  42.  
  43. sprintf(name, "%s:%s", hostname, "https");
  44. BIO_get_ssl(bio, &ssl); /* 會話 */
  45. SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY); /* 魯棒性 */
  46. BIO_set_conn_hostname(bio, name); /* 準備連接 */
  47.  
  48. /* 嘗試連接 */
  49. if (BIO_do_connect(bio) <= 0) {
  50. cleanup(ctx, bio);
  51. report_and_exit("BIO_do_connect...");
  52. }
  53.  
  54. /* 驗證信任庫,檢查證書 */
  55. if (!SSL_CTX_load_verify_locations(ctx,
  56. "/etc/ssl/certs/ca-certificates.crt", /* 信任庫 */
  57. "/etc/ssl/certs/")) /* 其它信任庫 */
  58. report_and_exit("SSL_CTX_load_verify_locations...");
  59.  
  60. long verify_flag = SSL_get_verify_result(ssl);
  61. if (verify_flag != X509_V_OK)
  62. fprintf(stderr,
  63. "##### Certificate verification error (%i) but continuing...\n",
  64. (int) verify_flag);
  65.  
  66. /* 獲取主頁作為示例數據 */
  67. sprintf(request,
  68. "GET / HTTP/1.1\x0D\x0AHost: %s\x0D\x0A\x43onnection: Close\x0D\x0A\x0D\x0A",
  69. hostname);
  70. BIO_puts(bio, request);
  71.  
  72. /* 從服務器讀取 HTTP 響應并打印到輸出 */
  73. while (1) {
  74. memset(response, '\0', sizeof(response));
  75. int n = BIO_read(bio, response, BuffSize);
  76. if (n <= 0) break; /* 0 代表流結束,< 0 代表有錯誤 */
  77. puts(response);
  78. }
  79.  
  80. cleanup(ctx, bio);
  81. }
  82.  
  83. int main() {
  84. init_ssl();
  85.  
  86. const char* hostname = "www.google.com:443";
  87. fprintf(stderr, "Trying an HTTPS connection to %s...\n", hostname);
  88. secure_connect(hostname);
  89.  
  90. return 0;
  91. }

可以從命令行編譯和執行該程序(請注意 -lssl-lcrypto 中的小寫字母 L):

  1. gcc -o client client.c -lssl -lcrypto

該程序嘗試打開與網站 www.google.com 的安全連接。在與 Google Web 服務器的 TLS 握手過程中,client 程序會收到一個或多個數字證書,該程序會嘗試對其進行驗證(但在我的系統上失敗了)。盡管如此,client 程序仍繼續通過安全通道獲取 Google 主頁。該程序取決于前面提到的安全工件,盡管在上述代碼中只著重突出了數字證書。但其它工件仍在幕后發揮作用,稍后將對它們進行詳細說明。

通常,打開 HTTP(非安全)通道的 C 或 C++ 的客戶端程序將使用諸如文件描述符網絡套接字之類的結構,它們是兩個進程(例如,這個 client 程序和 Google Web 服務器)之間連接的端點。另一方面,文件描述符是一個非負整數值,用于在程序中標識該程序打開的任何文件類的結構。這樣的程序還將使用一種結構來指定有關 Web 服務器地址的詳細信息。

這些相對較低級別的結構不會出現在客戶端程序中,因為 OpenSSL 庫會將套接字基礎設施和地址規范等封裝在更高層面的安全結構中。其結果是一個簡單的 API。下面首先看一下 client 程序示例中的安全性詳細信息。

  • 該程序首先加載相關的 OpenSSL 庫,我的函數 init_ssl 中對 OpenSSL 進行了兩次調用:

    1. SSL_load_error_strings();
    2. SSL_library_init();
  • 下一個初始化步驟嘗試獲取安全上下文,這是建立和維護通往 Web 服務器的安全通道所需的信息框架。如對 OpenSSL 庫函數的調用所示,在示例中使用了 TLS 1.2:

    1. const SSL_METHOD* method = TLSv1_2_client_method(); /* TLS 1.2 */

    如果調用成功,則將 method 指針被傳遞給庫函數,該函數創建類型為 SSL_CTX 的上下文:

    1. SSL_CTX* ctx = SSL_CTX_new(method);

    client 程序會檢查每個關鍵的庫調用的錯誤,如果其中一個調用失敗,則程序終止。

  • 現在還有另外兩個 OpenSSL 工件也在發揮作用:SSL 類型的安全會話,從頭到尾管理安全連接;以及類型為 BIO(基本輸入/輸出Basic Input/Output)的安全流,用于與 Web 服務器進行通信。BIO 流是通過以下調用生成的:

    1. BIO* bio = BIO_new_ssl_connect(ctx);

    請注意,這個最重要的上下文是其參數。BIO 類型是 C 語言中 FILE 類型的 OpenSSL 封裝器。此封裝器可保護 client 程序與 Google 的網絡服務器之間的輸入和輸出流的安全。

  • 有了 SSL_CTXBIO,然后程序在 SSL 會話中將它們組合在一起。三個庫調用可以完成工作:

    1. BIO_get_ssl(bio, &ssl); /* 會話 */
    2. SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY); /* 魯棒性 */
    3. BIO_set_conn_hostname(bio, name); /* 準備連接 */

    安全連接本身是通過以下調用建立的:

    1. BIO_do_connect(bio);

    如果最后一個調用不成功,則 client 程序終止;否則,該連接已準備就緒,可以支持 client 程序與 Google Web 服務器之間的機密對話。

在與 Web 服務器握手期間,client 程序會接收一個或多個數字證書,以認證服務器的身份。但是,client 程序不會發送自己的證書,這意味著這個身份驗證是單向的。(Web 服務器通常配置為需要客戶端證書)盡管對 Web 服務器證書的驗證失敗,但 client 程序仍通過了連接到 Web 服務器的安全通道繼續獲取 Google 主頁。

為什么驗證 Google 證書的嘗試會失敗?典型的 OpenSSL 安裝目錄為 /etc/ssl/certs,其中包含 ca-certificates.crt 文件。該目錄和文件包含著 OpenSSL 自帶的數字證書,以此構成信任庫truststore??梢愿鶕枰滦湃螏?,尤其是可以包括新信任的證書,并刪除不再受信任的證書。

client 程序從 Google Web 服務器收到了三個證書,但是我的計算機上的 OpenSSL 信任庫并不包含完全匹配的證書。如目前所寫,client 程序不會通過例如驗證 Google 證書上的數字簽名(一個用來證明該證書的簽名)來解決此問題。如果該簽名是受信任的,則包含該簽名的證書也應受信任。盡管如此,client 程序仍繼續獲取頁面,然后打印出 Google 的主頁。下一節將更詳細地介紹這些。

客戶端程序中隱藏的安全性

讓我們從客戶端示例中可見的安全工件(數字證書)開始,然后考慮其他安全工件如何與之相關。數字證書的主要格式標準是 X509,生產級的證書由諸如 Verisign證書頒發機構Certificate Authority(CA)頒發。

數字證書中包含各種信息(例如,激活日期和失效日期以及所有者的域名),也包括發行者的身份和數字簽名(這是加密過的加密哈希值)。證書還具有未加密的哈希值,用作其標識指紋

哈希值來自將任意數量的二進制位映射到固定長度的摘要。這些位代表什么(會計報告、小說或數字電影)無關緊要。例如,消息摘要版本 5Message Digest version 5(MD5)哈希算法將任意長度的輸入位映射到 128 位哈希值,而 SHA1(安全哈希算法版本 1Secure Hash Algorithm version 1)算法將輸入位映射到 160 位哈希值。不同的輸入位會導致不同的(實際上在統計學上是唯一的)哈希值。下一篇文章將會進行更詳細的介紹,并著重介紹什么使哈希函數具有加密功能。

數字證書的類型有所不同(例如根證書、中間證書和最終實體證書),并形成了反映這些證書類型的層次結構。顧名思義,證書位于層次結構的頂部,其下的證書繼承了根證書所具有的信任。OpenSSL 庫和大多數現代編程語言都具有 X509 數據類型以及處理此類證書的函數。來自 Google 的證書具有 X509 格式,client 程序會檢查該證書是否為 X509_V_OK

X509 證書基于公共密鑰基礎結構public-key infrastructure(PKI),其中包括的算法(RSA 是占主導地位的算法)用于生成密鑰對:公共密鑰及其配對的私有密鑰。公鑰是一種身份:Amazon 的公鑰對其進行標識,而我的公鑰對我進行標識。私鑰應由其所有者負責保密。

成對出現的密鑰具有標準用途。可以使用公鑰對消息進行加密,然后可以使用同一個密鑰對中的私鑰對消息進行解密。私鑰也可以用于對文檔或其他電子工件(例如程序或電子郵件)進行簽名,然后可以使用該對密鑰中的公鑰來驗證簽名。以下兩個示例補充了一些細節。

在第一個示例中,Alice 將她的公鑰分發給全世界,包括 Bob。然后,Bob 用 Alice 的公鑰加密郵件,然后將加密的郵件發送給 Alice。用 Alice 的公鑰加密的郵件將可以用她的私鑰解密(假設是她自己的私鑰),如下所示:

  1. +------------------+ encrypted msg +-------------------+
  2. Bob's msg--->|Alice's public key|--------------->|Alice's private key|---> Bob's msg
  3. +------------------+ +-------------------+

理論上可以在沒有 Alice 的私鑰的情況下解密消息,但在實際情況中,如果使用像 RSA 這樣的加密密鑰對系統,則在計算上做不到。

現在,第二個示例,請對文檔簽名以證明其真實性。簽名算法使用密鑰對中的私鑰來處理要簽名的文檔的加密哈希:

  1. +-------------------+
  2. Hash of document--->|Alice's private key|--->Alice's digital signature of the document
  3. +-------------------+

假設 Alice 以數字方式簽署了發送給 Bob 的合同。然后,Bob 可以使用 Alice 密鑰對中的公鑰來驗證簽名:

  1. +------------------+
  2. Alice's digital signature of the document--->|Alice's public key|--->verified or not
  3. +------------------+

假若沒有 Alice 的私鑰,就無法輕松偽造 Alice 的簽名:因此,Alice 有必要保密她的私鑰。

client 程序中,除了數字證書以外,這些安全性都沒有明確展示。下一篇文章使用使用 OpenSSL 實用程序和庫函數的示例填充更多詳細的信息。

命令行的 OpenSSL

同時,讓我們看一下 OpenSSL 命令行實用程序:特別是在 TLS 握手期間檢查來自 Web 服務器的證書的實用程序。調用 OpenSSL 實用程序可以使用 openssl 命令,然后添加參數和標志的組合以指定所需的操作。

看看以下命令:

  1. openssl list-cipher-algorithms

該輸出是組成加密算法套件cipher suite的相關算法的列表。下面是列表的開頭,加了澄清首字母縮寫詞的注釋:

  1. AES-128-CBC ## Advanced Encryption Standard, Cipher Block Chaining
  2. AES-128-CBC-HMAC-SHA1 ## Hash-based Message Authentication Code with SHA1 hashes
  3. AES-128-CBC-HMAC-SHA256 ## ditto, but SHA256 rather than SHA1
  4. ...

下一條命令使用參數 s_client 將打開到 www.google.com 的安全連接,并在屏幕上顯示有關此連接的所有信息:

  1. openssl s_client -connect www.google.com:443 -showcerts

端口號 443 是 Web 服務器用于接收 HTTPS(而不是 HTTP 連接)的標準端口號。(對于 HTTP,標準端口為 80)Web 地址 www.google.com:443 也出現在 client 程序的代碼中。如果嘗試連接成功,則將顯示來自 Google 的三個數字證書以及有關安全會話、正在使用的加密算法套件以及相關項目的信息。例如,這是開頭的部分輸出,它聲明證書鏈即將到來。證書的編碼為 base64:

  1. Certificate chain
  2. 0 s:/C=US/ST=California/L=Mountain View/O=Google LLC/CN=www.google.com
  3. i:/C=US/O=Google Trust Services/CN=Google Internet Authority G3
  4. -----BEGIN CERTIFICATE-----
  5. MIIEijCCA3KgAwIBAgIQdCea9tmy/T6rK/dDD1isujANBgkqhkiG9w0BAQsFADBU
  6. MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVR29vZ2xlIFRydXN0IFNlcnZpY2VzMSUw
  7. ...

諸如 Google 之類的主要網站通常會發送多個證書進行身份驗證。

輸出以有關 TLS 會話的摘要信息結尾,包括加密算法套件的詳細信息:

  1. SSL-Session:
  2.     Protocol : TLSv1.2
  3.     Cipher : ECDHE-RSA-AES128-GCM-SHA256
  4.     Session-ID: A2BBF0E4991E6BBBC318774EEE37CFCB23095CC7640FFC752448D07C7F438573
  5. ...

client 程序中使用了協議 TLS 1.2,Session-ID 唯一地標識了 openssl 實用程序和 Google Web 服務器之間的連接。Cipher 條目可以按以下方式進行解析:

  • ECDHE橢圓曲線 Diffie-Hellman(臨時)Elliptic Curve Diffie Hellman Ephemeral)是一種用于管理 TLS 握手的高效的有效算法。尤其是,ECDHE 通過確保連接雙方(例如,client 程序和 Google Web 服務器)使用相同的加密/解密密鑰(稱為會話密鑰)來解決“密鑰分發問題”。后續文章會深入探討該細節。
  • RSA(Rivest Shamir Adleman)是主要的公共密鑰密碼系統,并以 1970 年代末首次描述了該系統的三位學者的名字命名。這個正在使用的密鑰對是使用 RSA 算法生成的。
  • AES128高級加密標準Advanced Encryption Standard)是一種塊式加密算法block cipher,用于加密和解密位塊blocks of bits。(另一種算法是流式加密算法stream cipher,它一次加密和解密一個位。)這個加密算法是對稱加密算法,因為使用同一個密鑰進行加密和解密,這首先引起了密鑰分發問題。AES 支持 128(此處使用)、192 和 256 位的密鑰大?。好荑€越大,安全性越好。

    通常,像 AES 這樣的對稱加密系統的密鑰大小要小于像 RSA 這樣的非對稱(基于密鑰對)系統的密鑰大小。例如,1024 位 RSA 密鑰相對較小,而 256 位密鑰則當前是 AES 最大的密鑰。

  • GCM伽羅瓦計數器模式Galois Counter Mode)處理在安全對話期間重復應用的加密算法(在這種情況下為 AES128)。AES128 塊的大小僅為 128 位,安全對話很可能包含從一側到另一側的多個 AES128 塊。GCM 非常有效,通常與 AES128 搭配使用。

  • SHA256256 位安全哈希算法Secure Hash Algorithm 256 bits)是我們正在使用的加密哈希算法。生成的哈希值的大小為 256 位,盡管使用 SHA 甚至可以更大。

加密算法套件正在不斷發展中。例如,不久前,Google 使用 RC4 流加密算法(RSA 的 Ron Rivest 后來開發的 Ron’s Cipher 版本 4)。 RC4 現在有已知的漏洞,這大概部分導致了 Google 轉換為 AES128。

總結

我們通過安全的 C Web 客戶端和各種命令行示例對 OpenSSL 做了首次了解,使一些需要進一步闡明的主題脫穎而出。下一篇文章會詳細介紹,從加密散列開始,到對數字證書如何應對密鑰分發挑戰為結束的更全面討論。 

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

2015-06-01 13:35:43

數據中心DCIM

2024-07-12 16:01:37

2020-05-20 08:35:55

公鑰密碼學非對稱密碼密碼

2017-06-01 09:03:51

2017-12-14 16:02:43

2009-10-20 17:39:57

服務器基礎知識

2012-05-25 13:12:57

TitaniumMobile WebHTML5

2019-10-08 16:35:53

Java網絡爬蟲webmagic

2013-04-17 15:11:08

2020-12-19 10:38:22

量子計算密碼學加密

2009-08-21 17:19:36

C#網絡編程入門

2022-10-25 08:05:12

Kotlin響應式編程

2022-07-22 11:43:12

交互動效產品體驗用戶

2010-05-24 18:39:13

2009-12-23 11:10:08

2010-10-11 12:16:40

2011-07-30 13:16:20

2015-10-08 15:07:32

2022-06-16 14:04:14

密碼學加密后量子密碼學

2011-07-19 13:55:38

點贊
收藏

51CTO技術棧公眾號

秋霞午夜理伦电影在线观看| 黄色av网站免费| 亚洲一区二区三区四区电影| 一区二区理论电影在线观看| 久久久7777| 中文字幕一区二区三区波野结| 国产精品久久久久一区二区三区厕所| 91精品国产综合久久小美女| 国产一区二区视频播放| 美女隐私在线观看| 97精品超碰一区二区三区| 国产精品女人久久久久久| 久久久久99精品成人片试看| 青青视频一区二区| 欧美日韩高清影院| 日本www在线播放| 免费高清在线观看| 久久中文字幕电影| 国产精品免费视频久久久| 欧美一级高潮片| 四季av在线一区二区三区| 亚洲韩国日本中文字幕| 在线观看日本一区二区| 国产在线美女| 亚洲精品乱码久久久久久久久| 欧美一级片免费观看| 亚洲黄色在线免费观看| 蜜臀a∨国产成人精品| 韩国美女主播一区| 成人免费视频网站入口::| 红桃成人av在线播放| 精品成a人在线观看| 国产精品区在线| xxxxxx欧美| 亚洲www啪成人一区二区麻豆| 一级做a爰片久久| 国内爆初菊对白视频| 亚洲国产清纯| 欧美激情2020午夜免费观看| 日韩激情小视频| 大色综合视频网站在线播放| 亚洲无限av看| 亚洲激情视频小说| 日韩欧美在线精品| 亚洲精品99久久久久| 最新国产精品自拍| 亚洲成人黄色| 日韩欧美一级精品久久| 91亚洲一区二区| 亚洲精品aa| 5858s免费视频成人| 中文字幕国内自拍| av在线播放一区| 欧美在线不卡视频| 少妇一级淫免费播放| 成人不卡视频| 欧美在线免费观看视频| 亚洲精品高清无码视频| 欧美精品高清| 欧美三级日韩三级国产三级| 欧美成人黄色网址| 国内欧美日韩| 69堂亚洲精品首页| 久久精品一卡二卡| 大奶在线精品| 日韩激情片免费| 国产精品成人一区二区三区电影毛片| 婷婷亚洲精品| 一区二区三区动漫| 国产成人av免费在线观看| 888久久久| 久久露脸国产精品| 在线观看免费av片| 蜜桃视频一区二区三区| 亚洲www视频| 亚洲欧美激情另类| 26uuu色噜噜精品一区二区| 欧美成人一区二区在线| 成年人免费在线视频| 中文字幕亚洲欧美在线不卡| 永久域名在线精品| 国产盗摄一区二区| 色综合天天性综合| 99sesese| 国产精品午夜av| 亚洲欧美在线一区二区| 99热这里只有精品4| 亚洲视频中文| 国产成人精品综合| 99精品免费观看| 97超碰欧美中文字幕| 亚洲国产高清国产精品| 青草av在线| 91激情在线视频| 亚洲热在线视频| 夜夜躁狠狠躁日日躁2021日韩| 中文字幕综合在线| 日韩大片免费在线观看| 免费成人美女在线观看.| 成人动漫视频在线观看完整版 | 国偷自产av一区二区三区小尤奈| 欧美性孕妇孕交| 亚洲欧美福利一区二区| 香港三级韩国三级日本三级| 国内欧美日韩| 亚洲久久久久久久久久| 欧美日韩免费做爰视频| 丝袜诱惑亚洲看片| 国产日本一区二区三区| 国产原创在线观看| 色噜噜夜夜夜综合网| 人妻精油按摩bd高清中文字幕| 国产探花一区在线观看| 久久久噜噜噜久久| 一区二区久久精品66国产精品| av电影天堂一区二区在线| 中文字幕中文字幕在线中心一区| 新版的欧美在线视频| 精品久久久网站| 91久久久久久久久久久久久久| 久久久成人网| 国产九色精品| 免费在线中文字幕| 日韩一区二区视频| 多男操一女视频| 日本少妇一区二区| 欧美综合激情| 这里有精品可以观看| 欧美本精品男人aⅴ天堂| 美女网站视频色| 蜜臀91精品一区二区三区| 欧美久久久久久久| 三级在线观看视频| 亚洲精品国产精品自产a区红杏吧| 亚洲综合网在线| 精一区二区三区| 咪咪色在线视频| 韩国精品视频在线观看| 在线观看国产成人av片| 日韩电影在线观看一区二区| 91毛片在线观看| 美女日批免费视频| 日韩大尺度在线观看| 91国内揄拍国内精品对白| 黄色美女一级片| 亚洲成人精品一区| 屁屁影院国产第一页| 影音先锋中文字幕一区| 韩日午夜在线资源一区二区| 123区在线| 日韩成人在线视频网站| 91九色丨porny丨肉丝| 久久亚洲二区三区| 999香蕉视频| 欧美日韩在线播放视频| 国产精品久久av| 麻豆网站在线看| 91精品欧美综合在线观看最新| 杨钰莹一级淫片aaaaaa播放| 国产乱码精品1区2区3区| av一区二区三区免费观看| 97视频一区| 7m精品福利视频导航| 日本韩国一区| 欧美色大人视频| 青花影视在线观看免费高清| 国产成人午夜精品影院观看视频| 国产片侵犯亲女视频播放| 黄色美女久久久| 日韩av不卡电影| 欧美一级二级三级区| 欧美一级黄色大片| 天天爽夜夜爽夜夜爽精品| 久久九九99视频| 亚洲午夜激情影院| 亚洲黄页一区| 天堂av一区二区| 玖玖玖电影综合影院| 18一19gay欧美视频网站| 国产三级视频在线播放线观看| 欧美精品丝袜久久久中文字幕| 欧美成人免费看| 久久综合色一综合色88| 国产精品v日韩精品v在线观看| 欧美另类亚洲| 免费h精品视频在线播放| 激情亚洲小说| 国内精品久久久久久影视8| 国产女主播在线写真| 日韩一卡二卡三卡| 最近免费中文字幕大全免费版视频| 中文字幕在线一区| 污污内射在线观看一区二区少妇| 日韩精品五月天| 国产欧美日韩小视频| 精品国产a一区二区三区v免费| 96sao精品视频在线观看| 国产精品蜜芽在线观看| 丝袜美腿亚洲一区二区| 色欲av永久无码精品无码蜜桃 | 九九热播视频在线精品6| 国产精品久久久久久久7电影| 人妖欧美1区| 中文字幕国产精品| 五月婷婷丁香网| 91精品久久久久久久99蜜桃| 在线观看亚洲天堂| 一区二区三区在线视频免费| 黄色片在线观看免费| av电影在线观看完整版一区二区| 一级 黄 色 片一| 日本不卡一区二区三区高清视频| av网站手机在线观看| 国产精品久久久久久久| 欧美人与物videos另类| 极品束缚调教一区二区网站| 亚洲sss综合天堂久久| 高清成人在线| 亚州国产精品久久久| 91一区二区三区在线| 最新的欧美黄色| 男人天堂网在线观看| 亚洲精品电影网在线观看| 国产成人精品一区二三区四区五区 | 麻豆一区二区三区在线观看| 欧洲三级视频| 免费不卡亚洲欧美| 台湾色综合娱乐中文网| 国产精品乱码| 51精品国产| 91手机在线播放| 精品一区二区三区中文字幕视频 | 美女视频亚洲色图| 成人羞羞视频免费| 中文字幕一区日韩精品| 91在线观看免费观看 | 国产乱码精品一区二区三区日韩精品 | 天天色 色综合| 国内免费精品视频| 偷偷要91色婷婷| 久久午夜免费视频| 羞羞网站在线免费观看| 亚洲第一页中文字幕| 亚洲AV无码精品自拍| 日韩一卡二卡三卡四卡| 国产成人毛毛毛片| 精品国产一区久久| 日韩在线视频第一页| 亚洲国产欧美一区| 天堂中文网在线| 日韩精品丝袜在线| 日漫免费在线观看网站| 亚洲欧美在线磁力| eeuss影院www在线观看| 色婷婷av一区二区三区久久| 香蕉视频国产在线观看| 久久久精品免费视频| 成人在线视频亚洲| 欧美大成色www永久网站婷| 久久久久久国产精品免费无遮挡 | 六月婷婷一区| 欧美污视频网站| 久久中文字幕一区二区三区| 国产精品入口免费软件| 久久99精品国产.久久久久久| 91aaa精品| 丁香婷婷综合激情五月色| 在线xxxxx| 91在线视频18| 免费看日本黄色片| 亚洲精品国久久99热| 日产精品久久久久久久| 91久久精品一区二区三区| 一级特黄aaa大片在线观看| 日韩女优制服丝袜电影| 亚洲欧洲国产综合| 色妞久久福利网| 操喷在线视频| 国产精品成久久久久三级 | 黄色一区三区| 欧美自拍偷拍| 黄色成人在线免费观看| 先锋影音久久久| 国产精欧美一区二区三区白种人| 丁香啪啪综合成人亚洲小说| 爱爱免费小视频| 亚洲卡通欧美制服中文| 天堂а√在线中文在线新版| 欧美日韩在线播放一区| 欧美视频一二区| 中文字幕日韩有码| av午夜在线观看| 国产欧美精品一区二区三区介绍| japanese色系久久精品| 日韩精品一区二区三区四区五区 | 三级精品视频| 一区二区三区电影| 99成人在线| 中文字幕一区二区在线观看视频| 久久蜜桃一区二区| 精品欧美一区二区久久久久 | 欧美精品成人在线| yiren22亚洲综合| 激情伦成人综合小说| 综合天堂久久久久久久| 黑人粗进入欧美aaaaa| www..com久久爱| 中文字幕av播放| 欧美综合亚洲图片综合区| 欧美一区二区三区激情| 久久精品2019中文字幕| 欧美www.| 久久久久久久免费| 欧美午夜久久| 天天久久综合网| 国产精品久久久久久久久图文区 | 日韩丝袜美女视频| av基地在线| 日本在线精品视频| 久久365资源| 妺妺窝人体色www看人体| 久久99热国产| 欧美巨胸大乳hitomi| 欧美性黄网官网| 日韩永久免费视频| 欧美激情一区二区久久久| 精品久久亚洲| 一区二区在线中文字幕电影视频| 秋霞电影网一区二区| av女人的天堂| 一本到不卡免费一区二区| 亚洲av毛片成人精品| 欧美国产第二页| 榴莲视频成人app| 欧美交换配乱吟粗大25p| 国产在线不卡一卡二卡三卡四卡| 青青青视频在线播放| 欧美三级韩国三级日本一级| 国产三级电影在线| 国产精品久久久久久久久久三级 | 真实国产乱子伦对白视频| 国产一区二区日韩精品| 国产精品丝袜一区二区| 这里只有精品免费| 最爽无遮挡行房视频在线| 亚洲自拍小视频| 亚洲性感美女99在线| 日韩无码精品一区二区| 天天综合色天天综合色h| 色综合888| 国产福利视频一区| 日韩av在线播放网址| 欧美美女一级片| 亚洲女性喷水在线观看一区| www.色视频| 97国产suv精品一区二区62| 日韩超碰人人爽人人做人人添| 妺妺窝人体色www在线小说| 久久日韩精品一区二区五区| 不卡av电影在线| 久久精品国产成人| 波多野结衣欧美| 国产精品99久久免费黑人人妻| 国产日韩v精品一区二区| 97caocao| 久久久久久久久久久人体| 亚洲欧洲av| 亚洲国产高清av| 一区二区三区成人在线视频| 人妻精品无码一区二区| 日本免费一区二区三区视频观看 | 性一交一乱一伧国产女士spa| 成人av免费在线播放| 亚洲图片欧美日韩| 欧美老女人性视频| 卡通动漫国产精品| 激情 小说 亚洲 图片: 伦| 亚洲乱码国产乱码精品精的特点 | 一区二区三区视频免费在线观看| 日韩综合久久| 奇米影视亚洲色图| 国产日韩欧美精品在线| 91免费视频播放| 68精品久久久久久欧美 | 国产日本一区二区| 国产精品自拍电影| 2019最新中文字幕| 国产精品精品| 国产呦小j女精品视频| 欧美久久免费观看| 国产99在线观看| 日韩中文不卡| www.亚洲免费av| 91丨九色丨蝌蚪丨对白| 69视频在线免费观看| 99热国内精品永久免费观看| 性囗交免费视频观看| 91精品在线免费| 亚洲欧美在线成人| 成年人网站免费视频|