隨著 IoT 和邊緣裝置的普及,安全風險也日益增加。本文從網路攻擊型別、硬體安全機制到密碼學應用,提供全面的安全防護策略。探討了 Mirai、Stuxnet 等惡意軟體的攻擊手法,並分析了針對智慧城市的攻擊案例,強調了 Zigbee 協議等潛在漏洞。同時,本文也深入研究了 RoT、ARM TrustZone、Intel Boot Guard 等硬體安全技術,以及 SSH 安全性和密碼學的最佳實務。最後,文章詳細介紹了對稱密碼學,特別是 AES 加密演算法及其各種模式,並提供了 Python 程式碼範例,以幫助開發者實作安全防護措施。

未來的發展

在未來,資料分析和機器學習將在IoT中發揮更加重要的作用。隨著資料的增加,需要更先進的技術來處理和分析這些資料。同時,需要更好的安全措施來保護這些資料。

圖表翻譯:

  graph LR
    A[資料收集] --> B[資料預處理]
    B --> C[資料分析]
    C --> D[資料視覺化]
    D --> E[決策]

這個圖表展示了資料分析流程的各個步驟,從資料收集到決策。每個步驟都需要在實時或近實時的環境中進行,以便能夠做出關鍵的決策。

內容解密:

資料分析是IoT中的一個關鍵過程,因為它能夠從大量的資料中提取有用的資訊。機器學習模型可以根據當前的和歷史的模式預測未來的事件。資料分析流程包括幾個重要的步驟,包括資料收集、資料預處理、資料分析和資料視覺化。這些步驟需要在實時或近實時的環境中進行,以便能夠做出關鍵的決策。

IoT 和 Edge 安全性

IoT(物聯網)是當前最快速成長的技術領域之一,具有巨大的潛力和影響力。然而,IoT 也形成了地球上最大的攻擊面,吸引了各種惡意攻擊和威脅。作為架構師,我們有責任瞭解 IoT 技術堆疊並確保其安全性。

IoT 安全性是一個複雜的問題,因為許多 IoT 裝置都沒有足夠的安全性功能,且常常被忽視。這些裝置通常是簡單的感測器,沒有足夠的計算資源和記憶體來執行複雜的安全性協議。因此,IoT 安全性需要一個不同的方法,關注於輕量級的安全性解決方案和分散式的安全性架構。

本章將探討一些針對 IoT 的惡意攻擊和弱點,並討論如何加強 IoT 安全性。首先,我們需要了解 IoT 的技術堆疊,包括物理裝置、通訊系統和網路。然後,我們將探討軟體定義的周界和區塊鏈技術如何用於保護 IoT 資料。

網路攻擊和威脅

網路攻擊和威脅是 IoT 安全性的主要問題。以下是一些常見的攻擊和威脅:

  • 放大攻擊:利用合法的服務(如 NTP、Steam 或 DNS)來放大攻擊流量。
  • ARP 欺騙:傳送偽造的 ARP 訊息,以將攻擊者的 MAC 地址與受害者的 IP 地址聯絡起來。
  • 橫幅掃描:一種技術,用於盤點網路上的系統,也可以用於發現系統的版本和配置資訊。
  • 機器人網路:一組受惡意軟體感染和控制的網路裝置,通常用於發動大規模的 DDoS 攻擊。
  • 暴力破解:透過反覆嘗試不同的密碼和組合來猜測密碼或破解加密。
  • 緩衝區溢位:利用軟體中的漏洞,向緩衝區寫入超出其容量的資料,從而導致緩衝區溢位,可能導致系統崩潰或執行惡意程式碼。

IoT 安全性解決方案

為了加強 IoT 安全性,我們需要採取多層次的安全性措施,包括:

  • 物理層安全:確保 IoT 裝置的物理安全,防止未經授權的訪問和篡改。
  • 通訊層安全:使用安全的通訊協議和加密技術,保護 IoT 資料在傳輸過程中的安全。
  • 網路層安全:使用防火牆、入侵檢測和防禦系統等網路安全技術,保護 IoT 網路免受攻擊和威脅。
  • 軟體定義的周界:使用軟體定義的周界技術,建立一個安全的 IoT 資料環境,防止未經授權的訪問和篡改。
  • 區塊鏈技術:使用區塊鏈技術,建立一個安全的、去中心化的 IoT 資料管理系統,防止資料篡改和竊聽。

網路攻擊與防禦機制

網路攻擊是指惡意的個體或組織對網路系統或裝置進行的破壞或竊取行動。這些攻擊可能是針對網路的可用性、完整性或機密性。常見的網路攻擊包括緩衝區溢位(Buffer Overflow)、SQL注入(SQL Injection)和跨站指令碼攻擊(Cross-Site Scripting, XSS)。

網路攻擊型別

  1. 緩衝區溢位(Buffer Overflow):這是一種攻擊者透過向緩衝區中寫入超出其容量的資料,從而使得程式控制流被改變,可能導致惡意程式碼的執行。
  2. SQL注入(SQL Injection):這是一種攻擊者透過在網站的輸入欄中注入惡意的SQL程式碼,從而獲得未經授權的存取資料庫的許可權。
  3. 跨站指令碼攻擊(Cross-Site Scripting, XSS):這是一種攻擊者透過在網站中注入惡意的指令碼程式碼,從而在使用者的瀏覽器中執行,可能導致用戶資料的竊取或其他惡意行為。
  4. 側通道攻擊(Side-Channel Attack):這是一種攻擊者透過分析系統的側通道資訊(如耗時、耗能等),從而獲得有關系統安全性的資訊。
  5. 社交工程攻擊(Social Engineering):這是一種攻擊者透過人為操縱,從而獲得使用者的信任,可能導致用戶提供敏感資訊或進行惡意行為。

網路防禦機制

  1. 防火牆(Firewall):這是一種網路安全系統,用於控制進出網路的流量,阻止未經授權的存取。
  2. 入侵檢測系統(Intrusion Detection System, IDS):這是一種網路安全系統,用於檢測和報警網路中的惡意行為。
  3. 入侵防禦系統(Intrusion Prevention System, IPS):這是一種網路安全系統,用於檢測和阻止網路中的惡意行為。
  4. 加密技術(Encryption):這是一種網路安全技術,用於保護資料的機密性和完整性。
  5. 安全啟動(Secure Boot):這是一種網路安全技術,用於確保裝置啟動時的安全性,防止惡意程式碼的執行。

物聯網(IoT)安全

物聯網(IoT)是指將各種物體與網路連線起來,從而實現物體之間的互動和通訊。物聯網的安全性是非常重要的,因為它涉及到各種物體的安全性和隱私性。

  1. 物聯網安全威脅:物聯網的安全威脅包括惡意程式碼的執行、資料竊取和裝置控制等。
  2. 物聯網安全解決方案:物聯網的安全解決方案包括加密技術、安全啟動、入侵檢測系統等。

網路安全威脅:Mirai惡意軟體

Mirai惡意軟體是一種在2016年8月感染Linux基礎的物聯網(IoT)裝置的惡意軟體。這種惡意軟體形成了一個巨大的botnet,對多個高知名度的目標發動了大規模的分散式拒絕服務(DDoS)攻擊。其中包括Krebs on Security、Dyn、Lonestar Cell等。

Mirai惡意軟體的工作原理

Mirai惡意軟體的工作原理可以分為以下幾個步驟:

  1. 掃描受害者:Mirai惡意軟體首先使用TCP SYN包進行快速的非同步掃描,以探測隨機的IPV4地址。它特別針對SSH/Telnet TCP埠23和2323進行掃描。如果掃描和埠連線成功,則進入下一階段。
  2. 暴力破解Telnet:Mirai惡意軟體嘗試使用暴力破解的方式建立一個功能性的Telnet會話。如果登入成功,Mirai惡意軟體會將主機記錄到一個中央的C2伺服器。
  3. 感染:Mirai惡意軟體將一個載入程式傳送到受害者的裝置,負責識別作業系統並安裝裝置特定的惡意軟體。它會搜尋其他競爭的程序使用埠22或23,並將其終止(包括可能已經存在於裝置上的其他惡意軟體)。載入程式的二進位制檔案會被刪除,程序名稱會被隱藏以隱藏其存在。惡意軟體不會在重新啟動後持續存在。

Mirai惡意軟體的影響

Mirai惡意軟體感染了超過60萬臺IoT裝置,包括IP攝像頭、DVR、消費者路由器、VoIP電話、印表機和機上盒。這些裝置大多數位於巴西、哥倫比亞和越南。Mirai惡意軟體的攻擊主要是DDoS攻擊,包括SYN洪水、GRE IP網路洪水、STOMP洪水和DNS洪水。

內容解密:

上述內容介紹了Mirai惡意軟體的工作原理和影響。Mirai惡意軟體是一種感染Linux基礎的IoT裝置的惡意軟體,形成了一個巨大的botnet,對多個高知名度的目標發動了大規模的DDoS攻擊。為了防止類似的攻擊,必須加強IoT裝置的安全性,包括使用強密碼、定期更新軟體和實施安全的網路協議。

  flowchart TD
    A[掃描受害者] --> B[暴力破解Telnet]
    B --> C[感染]
    C --> D[DDoS攻擊]

圖表翻譯:

上述圖表展示了Mirai惡意軟體的工作流程。首先,Mirai惡意軟體掃描受害者的IoT裝置,然後使用暴力破解的方式建立一個功能性的Telnet會話。如果登入成功,Mirai惡意軟體會將主機記錄到一個中央的C2伺服器,然後感染受害者的裝置,形成一個巨大的botnet,對多個高知名度的目標發動了大規模的DDoS攻擊。

網路安全威脅:Stuxnet病毒

Stuxnet是一種網路安全威脅,於2010年首次被發現。它是一種蠕蟲病毒,旨在永久破壞伊朗的資產,特別是伊朗的核設施。Stuxnet針對的是使用西門子(Siemens)S7-300可程式設計邏輯控制器(PLC)的SCADA系統。它使用了一個rootkit來修改電機的旋轉速度,從而破壞伊朗的核設施。

Stuxnet的攻擊過程

  1. 初始感染:Stuxnet透過四個零日漏洞同時發動攻擊,使用了一個rootkit來安裝一個被竊取的、但合法簽署和認證的裝置驅動程式。這個驅動程式是必要的,以便隱藏Stuxnet免受防病毒軟體的檢測。
  2. Windows攻擊和傳播:一旦Stuxnet安裝完成,它就會在Windows系統中搜索西門子SCADA控制軟體的檔案。如果找到這些檔案,Stuxnet就會嘗試透過一個C2伺服器訪問網際網路,並下載一個payload。
  3. 破壞:當Stuxnet決定發動攻擊時,它會重放預先錄製的資料到SCADA系統中,從而破壞伊朗的核設施。Stuxnet會慢慢地破壞離心機的轉子,導致鈾不當地富集和破壞離心機的轉子管。

物聯網和邊緣安全

Stuxnet的攻擊對伊朗的核設施造成了重大損害,據信有超過1,000個離心機被破壞。今天,Stuxnet的程式碼已經線上上公開,任何人都可以使用它來建立衍生攻擊。

圖表翻譯:
  graph LR
    A[Stuxnet] --> B[初始感染]
    B --> C[Windows攻擊和傳播]
    C --> D[破壞]
    D --> E[離心機破壞]

內容解密:

Stuxnet是一種高度複雜的網路安全威脅,它使用了一個rootkit來隱藏自己,並使用四個零日漏洞同時發動攻擊。它的攻擊過程包括初始感染、Windows攻擊和傳播、以及破壞。Stuxnet的攻擊對於網路安全和邊緣安全具有重要的啟示,尤其是在物聯網時代。

智慧城市中的IoT安全威脅

隨著智慧城市的發展,物聯網(IoT)裝置的數量也在迅速增加。然而,IoT裝置的安全性卻成為了一個令人憂慮的問題。最近的一項學術研究顯示,一種新的網路攻擊方式可以在不需要與網際網路連線的情況下執行,尤其是在個人區域網路(PAN)中。

這種攻擊方式是透過感染Philips Hue智慧燈泡來實現的。Philips Hue燈泡使用Zigbee協議建立網路,並且可以被控制。研究人員發現,Zigbee協議的安全性存在漏洞,可以被利用來感染燈泡。

攻擊者使用了一個四階段的攻擊計劃:

  1. 突破OTA(空中下載)韌體包的加密和簽名。
  2. 將惡意韌體升級部署到單個燈泡中。
  3. 感染的燈泡加入網路,並利用零日漏洞繞過安全檢查。
  4. 感染的燈泡將其有效載荷傳送給鄰近的燈泡,迅速擴散感染。

研究人員使用了相關分析(CPA)和差異分析(DPA)來突破韌體包的加密和簽名。CPA和DPA是兩種先進的攻擊方式,可以測量裝置的動態功耗,從而推斷出加密演算法的中間值。

這種攻擊方式可以擴充套件到智慧城市的規模,對城市的燈光系統造成嚴重的威脅。因此,IoT裝置的安全性需要被重視和加強。

物理和硬體安全

IoT裝置通常部署在偏遠和孤立的地區,容易受到物理攻擊。另外,IoT裝置的硬體需要現代的保護機制,例如加密和安全啟動。因此,IoT裝置的安全性需要從物理和硬體層面來加強。

圖表翻譯:

此圖表示攻擊者的攻擊流程,從感染Philips Hue燈泡開始,加入網路,傳送有效載荷,最終擴散感染。

import numpy as np

# 定義加密和簽名的函式
def encrypt(data):
    # 加密演算法
    return np.random.rand(len(data))

def sign(data):
    # 簽名演算法
    return np.random.rand(len(data))

# 定義攻擊者的攻擊流程
def attack(data):
    # 感染Philips Hue燈泡
    infected_data = encrypt(data)
    # 加入網路
    network_data = sign(infected_data)
    # 傳送有效載荷
    payload = np.random.rand(len(network_data))
    # 擴散感染
    return payload

# 測試攻擊流程
data = np.random.rand(10)
payload = attack(data)
print(payload)

內容解密:

此程式碼定義了加密和簽名的函式,然後定義了攻擊者的攻擊流程。攻擊流程包括感染Philips Hue燈泡,加入網路,傳送有效載荷,最終擴散感染。程式碼使用numpy庫來生成隨機資料,模擬攻擊流程。

硬體安全的第一層:RoT(Root of Trust)

RoT是一個硬體驗證的啟動過程,確保第一個可執行的opcode來自於一個不可變的源。這是啟動過程的基礎,之後會在BIOS、OS和應用程式中扮演重要角色。RoT是對抗rootkit的基礎防禦。

RoT的建立

RoT可以透過不同的方法建立,例如:

  • 從ROM或非可寫記憶體啟動,儲存映像和根金鑰
  • 使用一次可程式設計記憶體儲存根金鑰
  • 從受保護的記憶體區域啟動,將程式碼載入受保護的記憶體儲存

RoT的驗證

RoT需要驗證每個啟動階段。每個階段都維護一組加密簽名的金鑰,用於驗證下一個階段的啟動。

ARM TrustZone

ARM TrustZone是一個安全的silicon IP塊,為SOC製造商提供了一個硬體RoT和其他安全服務。TrustZone將硬體分為安全和非安全的"世界"。TrustZone是一個獨立的微處理器,執行在一個為安全而設計的Trusted OS上。受保護的資產和函式居住在受信任的核心中,應該是輕量級的。世界之間的切換是透過硬體上下文切換完成的,消除了對安全監視軟體的需求。

Intel Boot Guard

Intel Boot Guard是一個根據硬體的機制,提供了一個驗證的啟動,使用加密簽名驗證初始啟動塊或使用測量過程進行驗證。Boot Guard需要製造商生成一個2048位的金鑰,用於驗證初始塊。金鑰被分成私有和公有部分。公有部分被印在一次性熔斷器上。私有部分生成下一個啟動階段的簽名。

金鑰管理和受信任的平臺模組

公有和私有金鑰對於確保系統安全至關重要。金鑰本身需要適當的管理以確保其安全。有一個硬體標準用於金鑰安全,稱為受信任的平臺模組(TPM)。TPM是一個獨立的硬體元件,具有在製造時燒錄的秘密RSA金鑰。TPM通常用於持有、保護和管理其他金鑰,例如磁碟加密、RoT啟動、驗證硬體和軟體的真實性以及密碼管理。

IoT和Edge安全

TPM可以建立一個"已知良好"配置的軟體和硬體的雜湊值,用於執行時驗證篡改。其他服務包括協助SHA-1和SHA-256雜湊、AES加密塊、非對稱加密和隨機數生成。

處理器和記憶體空間

我們已經討論了各種漏洞和處理器技術,用於對抗漏洞。兩種主要的技術包括非執行記憶體和地址空間佈局隨機化。這兩種技術都是為了增加或防止緩衝區溢位和堆疊溢位型別的惡意程式碼注入的負擔。非執行保護是一個設施,旨在將只有驗證和合法的程式碼居住的區域對映為唯一可以執行操作的地址空間。如果嘗試透過堆疊溢位型別的攻擊注入惡意程式碼,堆疊將被標記為非執行,且會觸發一個異常。

物聯網和邊緣安全

隨著物聯網(IoT)和邊緣計算的發展,安全性成為了一個越來越重要的問題。IoT裝置通常部署在遠端位置,缺乏傳統的安全措施,例如防火牆和入侵檢測系統。因此,IoT裝置和邊緣節點需要強大的安全措施來保護其免受惡意攻擊。

非執行記憶體

為了防止惡意程式碼的執行,許多作業系統和硬體平臺都支援非執行記憶體(Non-Executable Memory)。這種技術使用NX位(No Execute Bit)或XD位(Execute Disable Bit)來標記記憶體區域為非執行區域。這樣,即使惡意程式碼試圖執行,也會被作業系統或硬體攔截。

地址空間佈局隨機化

地址空間佈局隨機化(Address Space Layout Randomization,ASLR)是一種技術,透過隨機化記憶體空間的佈局來防止緩衝區溢位攻擊和傳回庫攻擊。這種技術使得攻擊者難以預測記憶體空間的佈局,從而難以實施攻擊。

儲存安全

IoT裝置通常需要持久儲存來儲存資料和程式碼。為了確保儲存安全,需要使用加密和安全技術。例如,許多儲存裝置都支援加密和安全技術,例如AES加密和安全擦除。

物理安全

IoT裝置通常部署在遠端位置,缺乏傳統的安全措施。因此,物理安全成為了一個重要的問題。IoT裝置需要具有防篡改和物理安全功能,例如防篡改封裝和安全擦除。

側通道攻擊

側通道攻擊(Side-Channel Attack)是一種攻擊技術,透過觀察系統的物理特性,例如功耗、時間和電磁輻射,來獲取系統的安全資訊。側通道攻擊包括時間攻擊、緩衝區攻擊、電磁輻射攻擊和掃描鏈攻擊等。

FIPS 140-2

FIPS 140-2是一種政府規範,規定了IT裝置的加密和安全要求。FIPS 140-2定義了四個安全等級:

  • 第1級:軟體加密,安全性有限。
  • 第2級:需要角色基礎的身份驗證,需要具有防篡改功能。
  • 第3級:需要物理防篡改,需要加密保護和金鑰管理。
  • 第4級:需要高階防篡改,適合於物理上未受保護的環境。

時間攻擊

時間攻擊(Timing Attack)是一種側通道攻擊,透過觀察系統的時間特性,例如演算法的執行時間,來獲取系統的安全資訊。

差分功耗分析

差分功耗分析(Differential Power Analysis,DPA)是一種側通道攻擊,透過觀察系統的功耗特性,例如演算法的功耗消耗,來獲取系統的安全資訊。

差分動態電力分析(Differential Power Analysis, DPA)

DPA是一種側通道攻擊,透過測量系統的動態電力消耗來推斷加密演算法中使用的金鑰。這種攻擊方法可以觀察到 SPA(簡單動態電力分析)中無法直接觀察到的微小變化。攻擊者可以透過將不同的隨機金鑰輸入系統,進行數千次測量,以建立一個與資料相關的集合。例如,攻擊 AES 演算法,只需建立兩個集合,分別對應於被攻擊的位元(0 或 1)的值。然後,對這兩個集合進行平均,計算 0 和 1 集合之間的差異,以顯示隨機輸入對輸出的影響。

預防方法

為了防止這種攻擊,以下方法可以使用:

  • 修改加密函式以最小化金鑰的使用。使用根據實際金鑰的雜湊值生成的短期會話金鑰。
  • 對於計時攻擊,隨機插入不會干擾原始演算法的函式。使用不同的隨機操作碼來建立一個大型工作函式以抵禦攻擊。
  • 刪除依賴於金鑰的條件分支。

Shell 安全性

除了硬體安全性外,架構師還必須考慮系統的網路和 Shell 安全性。在本節中,我們將探討 Shell 連線的一個領域:SSH(安全 Shell)。SSH是一種加密網路協定,提供登入、命令列控制、遠端存取和根存取現代作業系統的服務。SSH使用不安全網路上的安全通道,採用SHA-2和SHA-256等方法,並使用公鑰交換或簡單密碼等方法進行身份驗證。

SSH 安全性

雖然 SSH 協定使用身份驗證和加密方法,但仍然存在漏洞:

  • 首選方法是使用公鑰交換進行身份驗證。這比根據密碼的安全性更好。
  • 其他硬體考慮包括:
  • 防止存取除錯埠和通道。這些通常在PCA上以序列埠和JTAG埠的形式暴露。
  • ASIC通常使用BGA(球格陣列)焊盤附著到PCA。高效能粘合劑和耐熱膠應該用於包圍封裝,可能會對其造成不可修復的損害。

物聯網和邊緣安全性

  • 一種典型的攻擊向量是使用蛻蟲式使用者名稱/密碼嘗試。SSH埠提供了一個容易被攻擊的機會,因為裝置可能會在網際網路上保持埠開啟和暴露。絕不能在任何系統上使用空密碼。此外,使用非常強大的使用者名稱和密碼,使用偽隨機密碼生成器。
  • SSH會話絕不能閒置。SSH會話可以在沒有活動的情況下終止。
  • 使用除22號埠以外的其他埠。許多人為了方便選擇使用222或2222埠。建議使用遠離這些容易猜到的整數的未使用埠。
  • 使用雙因素身份驗證方法。

密碼學

加密和保密是物聯網部署的絕對要求。它們用於保護通訊、保護韌體和身份驗證。關於加密,通常有三種形式需要考慮:

  • 對稱金鑰加密:加密和解密金鑰相同。RC5、DES、3DES和AES都是對稱金鑰加密的形式。
  • 公鑰加密:加密金鑰公開供任何人使用和加密資料。只有接收方具有用於解密訊息的私鑰。這也被稱為非對稱加密。非對稱密碼學管理資料保密性、身份驗證和不可否認性。眾所周知的Internet加密和訊息協定,如橢圓曲線、PGP、RSA、TLS和S/MIME,被視為公鑰。
  • 密碼雜湊:這將任意大小的資料對映到位元字串(稱為摘要)。此雜湊函式旨在“單向”。基本上,唯一能夠重建輸出雜湊的方法是強制每個可能的輸入組合(它不能反向執行)。MD5、SHA1、SHA2和SHA3都是單向雜湊函式的形式。這些通常用於編碼數字簽名,例如簽名的韌體映像、訊息身份驗證碼(MAC)或身份驗證。當加密短訊息(如密碼)時,輸入可能太小,無法有效地建立公平的雜湊;在這種情況下,會將salt或非私有字串附加到密碼以增加熵。Salt是一種金鑰匯出函式(KDF)的形式。

對稱密碼學

對稱密碼學是一種使用相同金鑰進行加密和解密的技術。它的優點是速度快、效率高,但需要確保金鑰的安全性。對稱密碼學的標準是 Advanced Encryption Standard (AES),它取代了舊的 Data Encryption Standard (DES) 演算法。AES 使用固定區塊大小(128、192 或 256 位)進行加密和解密。

AES 加密過程

AES 加密過程可以分為四個階段:

  1. Key Expansion:將金鑰擴充套件為 44 個字(32 位),這個過程實際上是對金鑰進行加密。
  2. Initial Round:將明文(plaintext)與擴充套件的金鑰進行 XOR 運算。
  3. Main Rounds:進行多輪加密,包括 SubBytes、ShiftRows、MixColumns 和 AddRoundKey 等步驟。
  4. Final Round:進行最後一輪加密,包括 SubBytes、ShiftRows 和 AddRoundKey 等步驟。

AES 模式

AES 有多種模式,包括:

  • Electronic Codebook (ECB):最基本的 AES 加密模式,但不安全,因為相同的明文會產生相同的密文。
  • Cipher Block Chaining (CBC):明文與前一個密文進行 XOR 運算,然後進行加密。
  • Cipher Feedback (CFB) Chaining:類似於 CBC,但形成了一個密文流。
  • Output Feedback (OFB) Chaining:類似於 CFB,但允許錯誤糾正碼。
  • Counter (CTR):將區塊密碼轉換為流密碼,使用計數器進行加密。
  • CBC with Message Authentication Code (CBC-MAC):使用 MAC(也稱為標籤或 MIC)進行訊息驗證。

AES 金鑰長度

AES 金鑰長度可以是 128、192 或 256 位。一般來說,金鑰長度越大,保護越好。但是,金鑰長度也會影響加密和解密的速度。

實際應用

在 IoT 和 Edge 裝置中,AES 是一個常用的加密演算法。但是,需要考慮到資料傳輸的長度和速度要求。例如,在某些應用中,資料傳輸的長度可能是固定的,因此可以使用固定區塊大小的 AES 加密。但是在其他應用中,資料傳輸的長度可能是變動的,因此需要使用可變區塊大小的 AES 加密。

程式碼範例

以下是使用 Python 實現的 AES 加密和解密範例:

import os
from cryptography.hazmat.primitives import padding
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend

def aes_encrypt(plaintext, key):
    # 生成隨機的 IV
    iv = os.urandom(16)
    
    # 建立 AES Cipher 物件
    cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
    
    # 將明文填充到 16 位元組的倍數
    padder = padding.PKCS7(128).padder()
    padded_data = padder.update(plaintext) + padder.finalize()
    
    # 加密
    encryptor = cipher.encryptor()
    ciphertext = encryptor.update(padded_data) + encryptor.finalize()
    
    return iv + ciphertext

def aes_decrypt(ciphertext, key):
    # 分離 IV 和密文
    iv = ciphertext[:16]
    ciphertext = ciphertext[16:]
    
    # 建立 AES Cipher 物件
    cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
    
    # 解密
    decryptor = cipher.decryptor()
    padded_data = decryptor.update(ciphertext) + decryptor.finalize()
    
    # 移除填充
    unpadder = padding.PKCS7(128).unpadder()
    plaintext = unpadder.update(padded_data) + unpadder.finalize()
    
    return plaintext

# 測試
key = b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x10\x11\x12\x13\x14\x15'
plaintext = b'Hello, World!'
ciphertext = aes_encrypt(plaintext, key)
print(ciphertext)

decrypted_text = aes_decrypt(ciphertext, key)
print(decrypted_text)

圖表翻譯

以下是 AES 加密過程的圖表:

  flowchart TD
    A[明文] --> B[Key Expansion]
    B --> C[Initial Round]
    C --> D[Main Rounds]
    D --> E[Final Round]
    E --> F[密文]

這個圖表展示了 AES 加密過程的各個階段,從明文到密文。

密碼學中的加密模式

在密碼學中,加密模式是指用於將明文轉換為密文的方法。這些模式可以提供機密性、完整性和真實性。早期的加密模式包括電子密碼書(ECB)、密碼分塊鏈(CBC)和密碼反饋(CFB)等。

物聯網 (IoT) 安全性已成為一個關鍵挑戰,涵蓋從底層硬體到軟體應用的全技術棧。本文深入探討了多種網路攻擊型別,包含 Mirai 惡意軟體、Stuxnet 病毒、智慧燈泡攻擊以及側通道攻擊等,並分析了現有的防禦機制,如 RoT、ARM TrustZone、Intel Boot Guard、非執行記憶體、地址空間佈局隨機化和各種加密技術,包含對稱加密 AES 及其不同模式等。多維比較分析顯示,現有安全機制各有優劣,單一防禦手段不足以應對日益複雜的攻擊態勢。技術限制深析指出,IoT 裝置資源受限、部署分散且缺乏統一安全標準,加劇了安全挑戰。此外,本文也關注了 DPA 等側通道攻擊的威脅,並提供了一些預防方法。展望未來,玄貓認為,隨著邊緣計算的興起和 AI 技術的發展,根據行為分析的異常檢測、AI 驅動的威脅情報和零信任安全模型等技術將成為 IoT 安全的關鍵發展方向。對於 IoT 裝置製造商和使用者,應重視多層次縱深防禦策略,整合軟硬體安全機制,並持續更新安全策略以應對不斷演變的威脅,才能有效保障 IoT 生態的健康發展。