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