在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

簡單介紹TLS1.2握手和協商過程

RTThread物聯網操作系統 ? 來源:lp ? 2019-04-10 15:22 ? 次閱讀

前言

隨著物聯網的發展,連接到互聯網的設備數量呈指數增長,物聯網信息安全越來越重要。

因此,TLS 逐漸成為物聯網通訊的標配。但是 TLS 是加密傳輸,這給調試增加了一定的難度。

筆者最近工作中一直用到 HTTPS,但是苦于 wireshark 只能抓取 HTTP 的明文數據包,無法抓取 HTTPS 的數據包,于是就有了這篇文章,在 RT-Thread 系統上,使用 wireshark 抓取 HTTPS 數據包.

簡單介紹TLS1.2握手和協商過程

client hello

客戶端向服務器發送 tls 版本,加密方式,客戶端隨機數等。

server hello

服務器端返回協商信息的結果,包括使用的 tls 版本,使用哪一種加密方式(cipher suite), 服務器的隨機數(random_s)。

證書校驗

客戶端驗證證書的合法性,如果驗證通過才會進行后續通訊

client key exchange

客戶端發送協商密鑰發送給服務端

server change cipher spec

服務器通知客戶端以后使用此協商密鑰進行加密

hangshake message finish

客戶端接收服務器發送的握手消息,驗證通過后,握手完成。

此后的通訊都采用協商密鑰和加密算法通訊。

設備端解密https數據包

查閱文檔得知,wireshark 支持將 tls 會話中使用的密鑰保存到外部文件中,供 wireshark 使用。

流程圖

在沒有抓包路由器的情況下,使用方案A, 電腦創建 wifi 熱點,設備端連接電腦熱點,并發起 https 請求,服務器接收到請求,向設備端發出響應,設備端根據響應的內容,計算出密鑰, 并將設備端隨機數和密鑰通過 udp 發送到 pc,保存到 sslkey.log 文件,wireshark 根據設備端隨機數和密鑰即可將 tls 數據包解密。

配置wireshark

新建 sslkey.log 文件,并配置為 windows 系統變量。

配置 wireshark編輯->首選項->protocols->SSL(version 2.4.9),更高版本的 wireshark 操作步驟為:編輯->首選項->protocols->TLS

配置好之后重啟 wireshark

按照下面的格式,向 sslkey.log 寫入客戶端隨機數和密鑰, 即可使 wireshark 解密 tls 數據包.

1CLIENT_RANDOM5a497axx3756f69b4axxx2CLIENT_RANDOM5dfb96xxb07a9da164xxx3CLIENT_RANDOM5a497axx12e14567b9xxx4CLIENT_RANDOM55c00xxxb07a9da164xxx5CLIENT_RANDOM5a497xxxb03ca0d5fcxxx

數據的含義如下:

CLIENT_RANDOM: 固定標簽(支持 SSL 3.0, TLS 1.0, 1.1, 1.2)

第二個參數:客戶端隨機數(random_c)32個字節,編碼為64個十六進制字符

第三個參數: 48字節的協商密鑰,編碼為96個十六進制字符

接下來只要找到設備上的客戶端隨機數和密鑰,保存到 syskey.log,即可通過 wireshark 解密 tls 數據包。

下面函數,保存了客戶端隨機數和密鑰信息。

ssl_tls.c

1intmbedtls_ssl_derive_keys(mbedtls_ssl_context*ssl) 2{ 3... 4 5MBEDTLS_SSL_DEBUG_MSG(3,("ciphersuite=%s", 6mbedtls_ssl_get_ciphersuite_name(session->ciphersuite))); 7MBEDTLS_SSL_DEBUG_BUF(3,"mastersecret",,48); 8MBEDTLS_SSL_DEBUG_BUF(4,"randombytes",handshake->randbytes,64); 9MBEDTLS_SSL_DEBUG_BUF(4,"keyblock",keyblk,256);10...11}

其中session->master保存的是密鑰,handshake->randbytes保存的是客戶端和服務器的隨機數。也就是說,將這兩個參數保存到 sslkey.log 文件中,那么 wireshark 就能解密設備上的https數據包。

編寫 udp 客戶端,將客戶端隨機數和密鑰發送到 windows,windows 編寫 udp server python 腳本,用于接收數據,并將數據寫入 sslkey.log 文件

1#include 2#include 3 4#include 5#include"netdb.h" 6 7staticintport=5000; 8 9voidudpcli_send(char*ip,char*random_c,intrandom_len,char*master,intmaster_len)10{11intsock;12structhostent*host;13structsockaddr_inserver_addr;14charrandom_ptr[100]={0};15charmaster_ptr[100]={0};16inti=0;1718if(random_c==RT_NULL||master==RT_NULL)19{20rt_kprintf("random_cormasterisnull\n");21return;22}2324host=(structhostent*)gethostbyname(ip);25if(host==RT_NULL)26{27rt_kprintf("Gethostbynamefailed!\n");28return;29}3031//randomserver_random:32bit+client_random:32bit32for(i=0;ih_addr);5354rt_memset(&(server_addr.sin_zero),0,sizeof(server_addr.sin_zero));5556//sendto(sock,send_data,rt_strlen(send_data),0,(structsockaddr*)&server_addr,sizeof(structsockaddr));57sendto(sock,random_ptr,64,0,(structsockaddr*)&server_addr,sizeof(structsockaddr));58sendto(sock,master_ptr,96,0,(structsockaddr*)&server_addr,sizeof(structsockaddr));5960if(sock>=0)61{62closesocket(sock);63sock=-1;64}65}

udpserver.py

1importsocket 2 3BUFSIZ=1024 4ip_port=('0.0.0.0',5000) 5file=r'd:\work\tmp\sslkey.log' 6 7server=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 8server.bind(ip_port) 910whileTrue:11random_c,client_addr=server.recvfrom(BUFSIZ)12master,client_addr=server.recvfrom(BUFSIZ)13print("openfile"+""+file)14write_data='CLIENT_RANDOM'+str(random_c,encoding='utf-8')+''+str(master,encoding='utf-8')15print(write_data)1617withopen(file,'a')asf:18f.write(write_data)19print("closefile"+""+file)

需要注意的是,設備使用上述方法解密 https 的數據包,加密算法目前只能是 RSA,所以還需要強制客戶端發送的加密方式(cipher suites)只能是 RSA。

修改packages\mbedtls-latest\ports\inc\tls_config.h,注釋掉如下宏定義:

1//#defineMBEDTLS_KEY_EXCHANGE_PSK_ENABLED2//#defineMBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED3//#defineMBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED4//#defineMBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED5//#defineMBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED6//#defineMBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED7//#defineMBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED8//#defineMBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED9//#defineMBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED

這樣就可以確保客戶端和服務器只使用 RSA 的加密方式進行通信, 但是部分服務器不支持 RSA 的方式,握手過程會失敗。

將udpcli_send函數添加到mbedtls_ssl_derive_keys函數中,如下所示

1MBEDTLS_SSL_DEBUG_MSG(3,("ciphersuite=%s", 2mbedtls_ssl_get_ciphersuite_name(session->ciphersuite))); 3MBEDTLS_SSL_DEBUG_BUF(3,"mastersecret",session->master,48); 4MBEDTLS_SSL_DEBUG_BUF(4,"randombytes",handshake->randbytes,64); 5MBEDTLS_SSL_DEBUG_BUF(4,"keyblock",keyblk,256); 6 7//replaceyouripaddress 8udpcli_send("192.168.123.206",handshake->randbytes,32,session->master,48); 910mbedtls_zeroize(handshake->randbytes,sizeof(handshake->randbytes));

windows 運行 python 腳本(注意修改sslkey.log的文件路徑)

1pythonudpserver.py

設備聯網成功后,在 MSH 終端輸入

1\|/ 2-RT-ThreadOperatingSystem 3/|\4.0.1buildApr22019 42006-2019Copyrightbyrt-threadteam 5lwIP-2.0.2initialized! 6[I/SAL_SOC]SocketAbstractionLayerinitializesuccess. 7 8........... 9msh/mnt/sdcard>10msh/mnt/sdcard>11msh/mnt/sdcard>12msh/mnt/sdcard>wgethttps://www.rt-thread.com/service/rt-thread.txt1.txt

wireshark抓包

加密的數據包

解密的數據包

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 物聯網
    +關注

    關注

    2928

    文章

    46024

    瀏覽量

    389474
  • 路由器
    +關注

    關注

    22

    文章

    3827

    瀏覽量

    116209
  • 數據包
    +關注

    關注

    0

    文章

    269

    瀏覽量

    24921

原文標題:基于RT-Thread 使用 wireshark 抓取 HTTPS 數據包

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    請問ESP8266的SDK支持TLS1.2版本嗎?

    請問ESP8266的SDK支持TLS1.2版本嗎?
    發表于 07-11 07:21

    TLS-V1.2 HTTPS請求吞吐量非常差

    測試與FRIERTOS + LWIP建立在43438。與TLS-V1.1相比,TLS-V1.2 HTTPS請求吞吐量非常差。TLSV1.1每分鐘發送的HTTPS請求數是TLSV1.2的14倍。另外
    發表于 10-23 15:14

    用2048位的密鑰大小與TLS SSL服務器通信?

    hello”消息沒有“Server Hello”返回。APache和板之間的密碼套件和協協商似乎很糟糕。有沒有機會用2048位的密鑰大小與TLS/SSL服務器通信?希望大家能幫忙!謝謝您。
    發表于 04-02 10:12

    深度還原TLS握手問題的排查思路和方法

    問題,說實話,我也是懵的,因為這個錯誤碼在過往的調試、開發、測試過程中并沒有見過。雖然之前也遇到過一些 TLS握手失敗的問題,一般可能就是CA證書沒有配好,或者還有一個 mbedtls配置項
    發表于 08-04 11:31

    請問SPC-5 Studio是否支持這些功能?

    1. TCP IP雙棧(Ipv4/Ipv6)2 TLS1.2
    發表于 01-09 08:30

    什么是握手信號? 什么是握手協議?

    什么是握手信號? 什么是握手協議? RS -232通行方式允許簡單連接三線:Tx、Rx和地線。但是對于數據傳輸,雙方必須對數據定
    發表于 10-14 10:26 ?5627次閱讀

    TCP三次握手過程描述

    本文檔主要描述TCP三次握手過程,一個完整的三次握手也就是 請求---應答---再次確認
    發表于 03-02 15:37 ?8次下載

    TLS1.3的正式運行版本,為互聯網安全筑起了新的長城

    目前網上廣泛使用的安全協議TLS1.2始于2008年,這些年來它為網民們遮風擋雨立下汗馬功勞,但是在滿世界黑客的明槍暗箭攻擊下也是滿目滄桑。為了修補漏洞,執行TLS1.2協議的軟件打滿了補丁,俗話說:“新三年舊三年,縫縫補補又三年。” 九年多了,
    的頭像 發表于 03-30 09:22 ?4459次閱讀
    <b class='flag-5'>TLS</b>1.3的正式運行版本,為互聯網安全筑起了新的長城

    科普:簡化SSL/TLS握手過程

    伴隨所有握手,SSL / TLS握手是一切開始的地方。SSL / TLS握手涉及一系列步驟,通過該步驟,雙方(客戶端和服務器)彼此進行驗證,
    的頭像 發表于 06-27 17:36 ?2979次閱讀

    使用TLS 1.3的優勢有哪些

      您會注意到的一個顯著差異是執行完全握手時往返次數減少。較舊版本的 TLS 協議要求在客戶端發送應用程序數據之前進行兩次完整的往返。使用 TLS v1.3,只需要一次往返!此外,服務器可以發送應用程序數據以響應客戶端的第一個
    的頭像 發表于 10-20 17:05 ?1739次閱讀

    HTTPS協議是什么?為什么安全?

    HTTPS簡單理解成HTTP over SSL/TLS。客戶端和服務端在使用HTTPS傳輸業務數據前,首先由SSL/TLS協議在兩端之間建立安全信道(這個過程稱作
    的頭像 發表于 01-08 14:36 ?2775次閱讀

    基于TLS DoIP測試開發實踐

    作者|寧國路小龍蝦小編|吃不飽車載以太網系列文章“當DoIP遇上TLS介紹了新版ISO13400-2規范變化點、TLS簡介以及CANoeTLSdemo工程的數據流,其中TLSDoIP數據流分為4
    的頭像 發表于 05-31 09:47 ?896次閱讀
    基于<b class='flag-5'>TLS</b> DoIP測試開發實踐

    微軟宣布Azure賬戶取消TLS1.0和1.1支持

    此舉涉及到所有現有的及新創建的Azure賬戶。為確保業務不受影響,IT之家強烈推薦各用戶盡早在2024年10月31日前完成TLS1.2的升級,并刪除對TLS1.0和1.1的依賴性。實踐表明,TLS1.0和1.1無法充分保護數據安
    的頭像 發表于 01-11 11:47 ?860次閱讀

    谷歌Chrome瀏覽器抗量子加密算法被指破壞TLS握手,導致部分網站無法被訪問

    谷歌自去年8月起便開始測試后量子安全TLS密鑰封裝機制,通過采用TLS 1.3及QUIC連接的Kyber768抗量子密鑰協商算法,以提升ChromeTLS流量的安全性。
    的頭像 發表于 04-30 14:22 ?949次閱讀

    socket 加密通信的實現方式

    握手過程協商加密算法、生成會話密鑰。 數據傳輸: 使用協商的加密算法和會話密鑰對數據進行加密和解密。 結束握手: 通信結
    的頭像 發表于 11-12 14:18 ?1340次閱讀
    主站蜘蛛池模板: 四虎国产精品成人永久免费影视 | 热久久最新地址 | 午夜看片在线 | 成人性欧美丨区二区三区 | 丁香色综合| 俺来也俺来也天天夜夜视频 | 三级在线观看视频 | 午夜视频在线免费播放 | 精品一区 二区三区免费毛片 | 天天搞天天色 | 四虎国产精品免费观看 | 他也色在线视频 | аⅴ资源天堂8在线 | 美女露出尿口让男人桶爽网站 | 色丁香在线 | 奇米影视亚洲狠狠色777不卡 | 5566精品资源在线播放 | 亚洲国产精品久久久久婷婷老年 | 亚洲ay| 日韩欧免费一区二区三区 | videosex久久麻豆 | 亚洲精品美女视频 | 亚洲精品资源在线 | 欧美性黑人极品hd网站 | 色噜噜狠狠狠综合曰曰曰 | 一区二区不卡视频在线观看 | 国产一级特黄高清在线大片 | 天天摸天天看天天做天天爽 | 啪视频免费 | 婷婷在线观看香蕉五月天 | 欧美一区二区三区综合色视频 | 香港三级理论在线影院 | 欧美三级网址 | 啪啪黄色| 久久婷婷一区二区三区 | 色妞色综合久久夜夜 | 婷婷五月色综合香五月 | 淫欧美| 日韩毛片高清在线看 | 在线观看亚洲专3333 | 婷婷在线网站 |