在嵌入式相關(guān)的網(wǎng)絡(luò)設(shè)備中,為了解決網(wǎng)絡(luò)透明傳輸帶來的安全問題,人們普遍采用TLS協(xié)議用于加密信息,避免消息被破解,同時提供身份驗證機制避免接入釣魚網(wǎng)站,校驗數(shù)據(jù)完整性防止數(shù)據(jù)被篡改等,但又由于自身需要對消息進行加解密的計算帶來了不小的性能開銷和內(nèi)存占用,導(dǎo)致一些片上資源受限的設(shè)備被迫只能采用透明傳輸?shù)姆绞絹磉M行通信,在通信中遭受隱私泄露的風(fēng)險,為了改善這一現(xiàn)象,可以采用以下解決辦法:
與OpenSSL、JSSE(JavaSecureSocketExtension)之類的算法庫運行在X86等通用計算平臺上不同,這類算法庫從設(shè)計之初就定位為全面的工具包。它們旨在提供廣泛的加密功能,支持多種密碼學(xué)標(biāo)準(zhǔn)和技術(shù),并且能夠緊跟最新的安全協(xié)議和算法的發(fā)展。這種全面性使得OpenSSL和JSSE等庫在兼容性和前瞻性方面表現(xiàn)得非常好,然而,這種全面性也伴隨著資源消耗的問題。由于這些庫需要支持大量的算法和協(xié)議,因此它們通常會占用更多的內(nèi)存和計算資源。對于那些資源受限的設(shè)備,顯然是無法承受的,在這種情況下,采用精簡的TLS算法庫成為一種更為合理的選擇。
mbedTLS:這是一個專為嵌入式系統(tǒng)設(shè)計的安全庫,它提供了TLS/DTLS協(xié)議的支持,并且非常注重代碼的小巧和高效。mbedTLS允許用戶通過配置來裁剪不必要的組件,從而進一步減少內(nèi)存占用。
官方代碼倉庫:https://github.com/Mbed-TLS/mbedtls.git
wolfSSL:這個庫同樣針對嵌入式系統(tǒng)進行了優(yōu)化,提供了輕量級的TLS實現(xiàn)。它支持最新的TLS版本,并且包含了一些高級特性,比如對硬件加速器的支持。
官方代碼倉庫:https://github.com/wolfSSL/wolfssl.git
tinydtls:這是一個非常小巧的DTLS庫,特別適合用于資源極其有限的設(shè)備。它專注于DTLS協(xié)議,適用于需要輕量級安全通信的物聯(lián)網(wǎng)場景。
官方代碼倉庫:https://github.com/eclipse/tinydtls.git
這些精簡的TLS庫雖然可能不像OpenSSL那樣提供廣泛的功能集,但它們能夠很好地滿足特定應(yīng)用場景下的安全需求,同時保持較低的資源消耗。在確保安全性的前提下,最大限度地利用有限的硬件資源。
通常情況下,單個TLS證書在不包含擴展信息的情況下,其大小約在1~2KB之間。如果存儲的是整個證書鏈,那么總大小可能會顯著增加。此外,證書的格式也會影響其大小,在資源受限的設(shè)備上,直接使用完整的證書鏈進行認(rèn)證可能不是最佳選擇,為了優(yōu)化內(nèi)存使用,可以考慮以下幾種策略:
壓縮算法:可以將用戶證書通過壓縮算法(如gzip或zlib)壓縮后再存儲于片上存儲器中。當(dāng)需要使用證書時,再將其解壓。雖然這種方法能夠減少存儲空間的需求,但它會在運行時增加額外的CPU開銷來處理壓縮和解壓操作,因此需要根據(jù)設(shè)備的具體性能做取舍。
分包加載:對于較大的證書或證書鏈,可以在加載到內(nèi)存時采用分包的方式進行處理。即根據(jù)單個傳輸包的大小限制,將證書分成若干個小塊逐一加載。這樣可以避免一次性加載大量數(shù)據(jù)而導(dǎo)致內(nèi)存溢出的問題。
只讀訪問:如果應(yīng)用場景不需要對證書內(nèi)容進行修改,可以直接使用指向片上存儲器中證書位置的指針,并以只讀方式訪問證書數(shù)據(jù)。這種方式完全省去了將證書復(fù)制到RAM中的步驟,從而極大地節(jié)省了運行時的內(nèi)存開銷。
采取這些措施可以幫助確保即使在內(nèi)存有限的環(huán)境中也能有效地管理和使用TLS證書,同時保持系統(tǒng)的安全性和性能。在設(shè)計和實現(xiàn)這些方案時,應(yīng)仔細(xì)評估每種方法的成本與收益,確保它們符合特定的應(yīng)用需求和技術(shù)約束。
隨著設(shè)備安全性的要求不斷提高,加密算法也在不斷演化升級。然而,這些加密算法往往涉及到大量的數(shù)學(xué)運算,這些運算如果完全依賴于通用CPU來執(zhí)行,不僅會極大地消耗處理器資源,還會導(dǎo)致性能瓶頸,特別是在處理大量并發(fā)的安全請求時,單純依靠CPU進行加密算法的計算顯得非常不理智且低效。因此,為了提高處理效率并減少功耗,人們開始將專門設(shè)計的硬件加速器集成到芯片內(nèi)部。這些硬件加速器是專門為特定類型的加密運算優(yōu)化的,能夠以極高的速度和效率完成任務(wù)。
AES加速器:用于快速執(zhí)行AES對稱加密和解密操作。AES是目前廣泛使用的塊密碼標(biāo)準(zhǔn),其硬件加速器可以顯著提升加密/解密的速度,這對于需要實時加密的應(yīng)用尤為重要,比如無線通信和視頻流傳輸。
HASH加速器:用于加速哈希函數(shù)的計算,例如SHA-256或MD5等。哈希函數(shù)常用于生成消息摘要,確保數(shù)據(jù)完整性,并在數(shù)字簽名和認(rèn)證過程中起到關(guān)鍵作用。通過專用硬件加速器,可以大幅度提高哈希計算的速度,從而加快整個安全協(xié)議的執(zhí)行過程。
RSA加速器:用于加速RSA公鑰加密算法中的大數(shù)運算。RSA算法在SSL/TLS握手、電子郵件加密等領(lǐng)域有廣泛應(yīng)用。由于RSA涉及的大整數(shù)運算極其復(fù)雜,使用專用的硬件加速器可以顯著減少加密和解密所需的時間。
除了上述提到的加速器外,還有其他類型的硬件加速器,如ECC加速器,用于橢圓曲線加密算法;以及隨機數(shù)生成器(RNG),用于產(chǎn)生高質(zhì)量的隨機數(shù),這對加密算法來說至關(guān)重要。
通過將這些專有的硬件設(shè)備集成到芯片中,不僅可以大大加速加密算法的計算速度,還能降低整體系統(tǒng)的功耗,因為相比軟件實現(xiàn),硬件加速器通常具有更高的能效比。此外,它們還能夠減輕主處理器的工作負(fù)擔(dān),使其能夠?qū)W⒂谄渌匾娜蝿?wù),從而提升了整個系統(tǒng)的響應(yīng)性和穩(wěn)定性。總之,硬件加速器的引入是應(yīng)對日益增長的安全需求和性能要求的一種有效解決方案。
今天的分享就到這里啦,EBYTE每一天都致力于更好的助力物聯(lián)化、智能化、自動化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)和企業(yè)公眾號進行了解,也可以直接撥打400電話咨詢技術(shù)專員!
相關(guān)閱讀:
3、一文看懂IO基礎(chǔ)知識和單片機GPIO工作模式簡介
4、ESP32芯片模塊SSL/TLS協(xié)議應(yīng)用概述
7 X 24 銷售服務(wù)熱線
4000-330-990深圳辦事處柯經(jīng)理:18218726658 南京辦事處葛經(jīng)理:17626012283
成都總部銷售經(jīng)理:
秦 科(無線模塊):18884314654 馮子恒(無線模塊):18884314734
蔡友銀(無線模塊):13882211021 葛宇龍(通信設(shè)備):19138800613
胡兵(外貿(mào)銷售經(jīng)理):18584911141、 [email protected]
業(yè)務(wù)郵箱:[email protected] 全國銷售投訴電話:19934352316
地址:四川省成都市高新西區(qū)西區(qū)大道199號B5棟(前臺座機:028-61543675)
?? 成都億佰特電子科技有限公司【版權(quán)所有】 蜀ICP備13019384號