
在通用計算機系統(如PC機、智能手機等)中,密碼算法的實現表現為一組二進制軟件代碼, 密碼運算CPU負責完成。在密碼運算進程中,密鑰等敏感數據和密碼運算的中央變量則表現為存儲在內存空間或許寄存器中的隨機比特串數據;在正常情況下,這些敏感數據只有執行密碼運算的進程能夠或許訪問讀取, 別的任何進程或實體都不允許訪問。
在通用計算機系統中,針對密鑰數據的攻擊,大抵能夠分為2類:直接的密鑰數據讀取攻擊和間接攻擊。直接攻擊是指,攻擊者繞過各類安全防護,非受權地直接讀取到密鑰的比特串數據;直接攻擊可進一步分為軟件方法和物理方法的攻擊。物理攻擊方法需要攻擊者與系統之間產生物理接觸,而軟件攻擊則不必要。
間接攻擊是指,攻擊者在沒有直接讀取密鑰數據的情況下,收集密碼運算執行時系統釋放的外部信號特徵信息。上述特徵信息並不等於密鑰,但是與密鑰密切相關,攻擊者依據這些網絡到的信息推想出密鑰數據。相比直接攻擊,直接攻擊中還必要離線的數據處理和推測密鑰步驟。
不同於通用計算機系統中運行的密碼軟件,在硬件形式實現的密碼系統中(即密碼算法的運算邏輯實現為ASIC 或許FPGA 器件),平日不存在共享執行的別的軟件功效,所以不存在軟件方法攻擊。
在硬件密碼系統中,針對密鑰的直接攻擊平日表現為物理方法的直接讀取(比方,Cold Boot攻擊,或經由進程激光掃描讀取晶片以後的密鑰數據);別的,針對各類軟件或許硬件密碼實現的、非入侵式(Non-invasive)的側信道攻擊(Side Channel Attack)都能夠認為是直接攻擊(比方經由進程光陰、能量、噪聲等多種側信道探測密鑰),或許是入侵式/半入侵式(Invasive/Semi-invasive)地轉變硬件密碼系統中密碼執行進程中的數據或執行邏輯,使得攻擊者從系統輸入能夠或許直接地推想取得密鑰數據(比方施加內部前提觸發硬件毛病以盜取密鑰)。
