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

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

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

3天內不再提示

一篇文章帶你深入了解Mbed TLS是啥

RTThread物聯網操作系統 ? 來源:Rice嵌入式開發 ? 作者:Rice嵌入式開發 ? 2021-06-29 09:58 ? 次閱讀

概要

Mbed TLS是一個開源、可移植、易于使用、代碼可讀性高的SSL庫。可實現常用的加密/解密算法,X.509證書操作以及TLS/DTLS 協議。它的各個功能模塊相對獨立、耦合低,可以通過配置宏定義裁剪,非常適合用于嵌入式系統。它提供了具有直觀的API和可讀源代碼的SSL 庫。該庫即開即用,可以在大部分系統上直接構建它,也可以手動選擇和配置各項功能。

MbedTLS庫提供了一組可單獨使用和編譯的加密組件,還可以使用單個配置頭文件加入或排除這些組件。從功能角度來看,該MbedTLS分為三個主要部分:

SSL/TLS 協議實施。

一個加密庫。

一個 X.509 證書處理庫。

MbedTLS遵循Apache 2.0開源許可協議,目前由TrustedFirmware維護(Linaro主持的一個治理開放社區項目),在Github上已收獲 3k star,目前Github上發布的最新版本為2.26.0版本,開源倉庫地址為:https://github.com/ARMmbed/mbedtls

MbedTLS庫提供了TLS/DTLS協議的實現,有了MbedTLS庫之后意味著:

TCP + TLS = TCP(S)

MQTT + TLS = MQTT(S)

HTTP + TLS = HTTP(S)

COAP + DTLS = COAP(S)

目前進入萬物互聯的時代,網絡通信(TCP/UDP)是必不可少的,同時各大廠商推出了各種通信模組,可以實現基于TCP/UDP通信的上層協議:HTTP、MQTT、COAP等等。這些應用層協議最大的特點是“明文傳輸”,一旦有中間人想要截獲篡改數據,非常容易。

在我的網絡協議棧解析的文章中,所有的實例都是以明文的形式進行試驗。然后有網友問我,怎么保證數據安全呢?為了方便學習使用Mbed TLS庫,我直接在ubuntu(18.04)上進行實操。

ubuntu安裝MbedTLS庫

下載源碼直接從github下載最新的MbedTLS源代碼:https://github.com/ARMmbed/mbedtls

git clone https://github.com/ARMmbed/mbedtls.git

構建及安裝MbedTLS庫MbedTLS庫提供了兩種構建方式:make和cmake。并且可以在目標主機安裝MbedTLS動態鏈接庫和頭文件。而本文采用cmake進行構建:

注:如果你的ubuntu沒有安裝cmake需要安裝cmake構建工具,安裝命令如下:

# 更新軟件源

sudo apt-get update

# 安裝cmake

sudo apt-get install cmake

編譯安裝MbedTLS,其中:

-DUSE_SHARED_MBEDTLS_LIBRARY=On 生成動態鏈接庫

cmake時,不要忘記之后cmake指令之后的“。”,該點表示當前目錄

rice@rice:~/mbedtls_study/mbedtls$ cmake -DUSE_SHARED_MBEDTLS_LIBRARY=On 。

rice@rice:~/mbedtls_study/mbedtls$ make

rice@rice:~/mbedtls_study/mbedtls$ sudo make install

在概述中,我們提到MbedTLS是可以裁剪的(注:在這個實驗中,我是按照默認配置);MbedTLS可以通過修改配置文件的方式進行裁剪,MbedTLS提供了幾個參考模板,具體的config.h文件可在mbedtls/configs目錄,參考文件config-ccm-psk-tls1_2.h和config-mini-tls1_1.h等文件。這里以CMake為例:

# 刪除之前cmake相關中間文件,但是不包括CMakeLists.txt文件

find 。 -iname ‘*cmake*’ -not -name CMakeLists.txt -exec rm -rf {} +

# 指定配置文件為 config-ccm-psk-tls1_2.h,重新編譯

CFLAGS=“-I$PWD/configs -DMBEDTLS_CONFIG_FILE=‘《config-ccm-psk-tls1_2.h》’” cmake 。

安裝之后查看是否安裝成功:

默認情況下 動態鏈接庫安裝至 /usr/local/lib 包括libmbedtls.so libmbedcrypto.so libmbedx509.so

3f6f99b0-d873-11eb-9e57-12bb97331649.png

默認情況下 頭文件安裝至 /usr/local/include/mbedtls

3f9ecce4-d873-11eb-9e57-12bb97331649.png

默認情況下 mbedtls的相關工具將安裝在 /usr/local/bin目錄下,例如gen_key等

3ff13196-d873-11eb-9e57-12bb97331649.png

SHA-1實驗

SHA-1是一種數據加密算法,該算法的思想是接收一段明文,然后以一種不可逆的方式將它轉換成一段(通常更小)密文,也可以簡單的理解為取一串輸入碼(稱為預映射或信息),并把它們轉化為長度較短、位數固定的輸出序列即散列值(也稱為信息摘要或信息認證代碼)的過程。

單向散列函數的安全性在于其產生散列值的操作過程具有較強的單向性。如果在輸入序列中嵌入密碼,那么任何人在不知道密碼的情況下都不能產生正確的散列值,從而保證了其安全性。SHA將輸入流按照每塊512位(64個字節)進行分塊,并產生20個字節的被稱為信息認證代碼或信息摘要的輸出。

該算法輸入報文的長度不限,產生的輸出是一個160位的報文摘要。輸入是按512位的分組進行處理的。SHA-1是不可逆的、防沖突,并具有良好的雪崩效應。

通過散列算法可實現數字簽名實現,數字簽名的原理是將要傳送的明文通過一種函數運算(Hash)轉換成報文摘要(不同的明文對應不同的報文摘要),報文摘要加密后與明文一起傳送給接受方,接受方將接受的明文產生新的報文摘要與發送方的發來報文摘要解密比較,比較結果一致表示明文未被改動,如果不一致表示明文已被篡改。

MAC(信息認證代碼)就是一個散列結果,其中部分輸入信息是密碼,只有知道這個密碼的參與者才能再次計算和驗證MAC碼的合法性。

SHA-1加密的實驗:SHA-1加密測試代碼(測試內容:RiceChen的SHA-1值):

#include 《string.h》#include 《stdio.h》#include “mbedtls/sha1.h”#define mbedtls_printf printfint main(void)

{

int ret;

unsigned char buffer[] = “RiceChen”;

unsigned char digest[32] = {0};

mbedtls_sha1_context sha1_ctx;

memset(digest, 0x00, sizeof(digest));

mbedtls_sha1_init(&sha1_ctx);

mbedtls_sha1_starts(&sha1_ctx);

mbedtls_sha1_update(&sha1_ctx, buffer, sizeof(buffer) - 1);

mbedtls_sha1_finish(&sha1_ctx, digest);

int i = 0;

mbedtls_printf(“SHA1: [”);

while(digest[i])

{

mbedtls_printf(“%02X”, digest[i]);

i++;

}

mbedtls_printf(“]

”);

exit:

mbedtls_sha1_free(&sha1_ctx);

return ret;

}

構建測試代碼的CMakeLists.txt文件內容:

cmake_minimum_required(VERSION 2.6)

project(“mbedtls-test”)

set(libs

mbedtls

mbedcrypto

mbedx509

set(targets

mbedtls-test

add_executable(mbedtls-test mbedtls-test.c)

target_link_libraries(mbedtls-test ${libs})

編譯測試代碼:

rice@rice:~/mbedtls_study/demo$ mkdir build

rice@rice:~/mbedtls_study/demo$ cd build

rice@rice:~/mbedtls_study/demo/build$ cmake 。./

-- The C compiler identification is GNU 7.5.0

-- The CXX compiler identification is GNU 7.5.0

-- Check for working C compiler: /usr/bin/cc

-- Check for working C compiler: /usr/bin/cc -- works

-- Detecting C compiler ABI info

-- Detecting C compiler ABI info - done

-- Detecting C compile features

-- Detecting C compile features - done

-- Check for working CXX compiler: /usr/bin/c++

-- Check for working CXX compiler: /usr/bin/c++ -- works

-- Detecting CXX compiler ABI info

-- Detecting CXX compiler ABI info - done

-- Detecting CXX compile features

-- Detecting CXX compile features - done

-- Configuring done

-- Generating done

-- Build files have been written to: /home/rice/mbedtls_study/demo/build

rice@rice:~/mbedtls_study/demo/build$ make

Scanning dependencies of target mbedtls-test

[ 50%] Building C object CMakeFiles/mbedtls-test.dir/mbedtls-test.c.o

[100%] Linking C executable mbedtls-test

[100%] Built target mbedtls-test

rice@rice:~/mbedtls_study/demo/build$ 。/mbedtls-test

SHA1: [CBD12068E2F91DF5DB148742DF108131AF76287E]

可以看到通過MbedTLS對“RiceChen”進行加密的SHA-1值:[CBD12068E2F91DF5DB148742DF108131AF76287E]

測試SHA1是否正確,可以通過https://1024tools.com/hash在線工具進行測試,可以看到是一致的結果。

注意:如果運行可執行文件出現如下問題:

問題:

rice@rice:~/mbedtls_study/demo/build$ 。/mbedtls-test

。/mbedtls-test: error while loading shared libraries: libmbedcrypto.so.0: cannot open shared object file: No such file or directory

解決方法:

rice@rice:~/mbedtls_study/demo/build$ sudo vim /etc/ld.so.conf //在新的一行中加入庫文件所在目錄

/usr/local/lib

rice@rice:~/mbedtls_study/demo/build$ sudo ldconfig //更新/etc/ld.so.cache文件

總結:

MbedTLS是一個非常強大的開源庫,而且功能上可以靈活的裁剪,對于嵌入式設備來說非常的友好。

后續將玩轉一下這個庫其他加解密算法。可以持續關注。

編輯:jq

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

    關注

    3

    文章

    3381

    瀏覽量

    42604
  • SSL
    SSL
    +關注

    關注

    0

    文章

    126

    瀏覽量

    25756
  • 萬物互聯
    +關注

    關注

    1

    文章

    224

    瀏覽量

    14142

原文標題:MbedTLS學習--SHA-1

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

收藏 人收藏

    評論

    相關推薦

    帶你深入了解RS485總線

    做工程很多時候會提到RS485控制線,它到底是什么呢?今天我聊聊RS485相關的應用,深入了解RS485,你會發現里面的知識確實有很多,那么我們就選擇些平時在弱電中會考慮到的問題供大家了解
    發表于 05-16 14:13 ?1w次閱讀
    <b class='flag-5'>帶你</b><b class='flag-5'>深入了解</b>RS485總線

    深入了解示波器

    深入了解示波器
    發表于 11-14 22:32

    單片機的深入了解

    項目名稱:單片機的深入了解!項目是否開源:否申請開發板數量:1 塊申請人團隊介紹:我們團隊由五個人組成,我們打算開始著手單片機的程序改編,設計些比較特殊新穎的東西!希望給以支持!
    發表于 10-12 20:00

    深入了解LabVIEW FPGA資料分享

    深入了解LabVIEW FPGA
    發表于 05-27 08:35

    文章帶你了解原型制作化技術

    文章帶你了解什么是原型制作化技術?
    發表于 04-26 06:15

    mbed TLS的目標是什么

    前言 mbed TLS(以前稱為PolarSSL)是TLS和SSL協議的實現,并且需要相應的加密算法和支持代碼。這是雙重許可與Apache許可證2.0版(與GPLv2許可也可)。網站上指出,m
    發表于 07-19 06:11

    AT32基于mbed TLS的HTTPS服務器

    AT32基于mbed TLS的HTTPS服務器介紹如何使用mbed TLS 搭建個HTTPS 服務器,用戶可以根據自己的應用去編寫網頁內容
    發表于 10-26 08:24

    示波器的深入了解

    示波器的深入了解 引言自然界運行著各種形式的正弦波,比如海浪、地震、聲波、爆破、空氣中傳播的聲音,或者身體運轉的自然節律。物理世界里,能
    發表于 11-04 11:53 ?52次下載
    示波器的<b class='flag-5'>深入了解</b>

    起來認識深入了解水銀

    起來認識深入了解水銀    汞在常溫下呈液態,
    發表于 10-23 09:22 ?2213次閱讀

    帶你深入了解光耦

    電子發燒友網帶你深入了解光耦相關知識,講述光耦的作用,光耦原理及各種光耦型號和替代型號,讓大家全面了解光電耦合器
    發表于 03-16 16:43
    <b class='flag-5'>帶你</b><b class='flag-5'>深入了解</b>光耦

    深入了解示波器入門手冊

    深入了解示波器入門手冊
    發表于 03-27 17:43 ?241次下載
    <b class='flag-5'>深入了解</b>示波器入門手冊

    了解IC內部結構嗎本文帶你深入了解

    本文檔的主要內容詳細介紹的是IC內部結構 你了解IC內部結構嗎本文帶你深入了解
    的頭像 發表于 03-09 11:33 ?1.1w次閱讀
    你<b class='flag-5'>了解</b>IC內部結構嗎本文<b class='flag-5'>帶你</b><b class='flag-5'>深入了解</b>

    帶你深入了解示波器

    帶你深入了解示波器
    發表于 02-07 14:26 ?19次下載

    深入了解安全光柵

    深入了解安全光柵
    的頭像 發表于 06-25 13:53 ?1244次閱讀
    <b class='flag-5'>深入了解</b>安全光柵

    深入了解 GaN 技術

    深入了解 GaN 技術
    的頭像 發表于 12-06 17:28 ?6200次閱讀
    <b class='flag-5'>深入了解</b> GaN 技術
    主站蜘蛛池模板: 国产热re99久久6国产精品| 欧美国产黄色| 午夜视频吧| 午夜爱爱网站| 80s国产成年女人毛片| 久草免费在线播放| 国产手机免费视频| 亚洲aa在线| 婷婷狠狠| 高h细节肉爽文bl1v1| 中文字幕在线资源| 好大好硬好深好爽视频h | 天天插天天插| 成年毛片| 午夜激情影视| 丁香婷婷久久大综合| www.91在线播放| 手机福利视频| jlzzjlzzjlzz亚洲女| 91av视频在线| 在线精品国产三级| 色综合久久综合欧美综合图片 | 日本一区二区三区四区在线观看| 欧美一区二区三区激情啪啪| avbobo在线| 成人国产一区| 日韩精品一区二区三区毛片 | 欧美最猛黑人xxxxwww| 热re66久久精品国产99热| 污女网站| 精品国模| 天天做天天爱夜夜大爽完整| bt天堂资源种子在线8| 日日干夜夜骑| 色老头成人免费视频天天综合| 77788色淫网站女女免费视频| 成人一级视频| wwwxx在线| 久久婷婷色综合老司机| 黄色大片视频在线观看| 亚洲香蕉久久|