網絡安全系列 之 密鑰安全管理



最近涉及到安全相關的知識,這里對安全秘鑰管理要點做簡單記錄:

加密技術 是最常用的安全保密手段,利用技術手段把重要的數據變為亂碼(加密)傳送,到達目的地后再用相同或不同的手段還原(解密)。

0. 基本概念

加密包括兩個元素:算法密鑰。一個加密算法是將消息與密鑰(一串數字)結合,產生不可理解的密文的步驟。
密鑰是結合密碼算法一起使用的參數,擁有它的實體可以加密或恢復數據。

密鑰可以分對稱密鑰和非對稱密鑰。

對稱密鑰: 加/解密使用相同密鑰。 -- AES等算法
非對稱密鑰:需要兩個密鑰來進行加密和解密。(公鑰和私鑰) -- RSA等算法

1. 密鑰分層管理結構

工作密鑰 (WK/WorkKey)

密鑰加密密鑰 (KEK或MK/MasterKey)

根密鑰(RK/RootKey)

  • 密鑰分層管理至少選擇兩層結構進行管理:根密鑰和工作密鑰。

2. 密鑰生命周期安全管理

密鑰生命周期 由於不良設計可能導致的安全問題
生成: 生成算法隨機性差,導致密鑰可被預測,或攻擊者可以自己生成密鑰。
分發: 密鑰明文分發,導致密鑰存在被攻擊者截獲的風險。
更新: 密鑰從不更新,導致攻擊者更容易獲取密鑰,從而能夠輕易獲取敏感數據的明文。
存儲: 密鑰明文存儲在數據庫中,導致攻擊者容易讀取出密鑰,從而能夠輕易獲取敏感數據的明文。
備份: 如果重要密鑰從不備份,一旦密鑰丟失,將導致原有加密的數據不能解密,大大降低了系統可靠性。
銷毀: 密鑰僅被普通刪除,導致攻擊者有可能恢復出密鑰。

密鑰的建立包括密鑰的生成和分發。

2.1 生成

  1. 基於安全的隨機數發生器
  2. 基於密鑰導出函數

PBKDF2是一個基於口令的密鑰導出函數,導出密鑰的計算公式:
DK = PBKDF2(HashAlg, Password, Salt, count, dkLen)
PBKDF2 :密鑰導出函數名
輸入:
HashAlg :哈希算法(推薦使用SHA256)
Password :用戶輸入的口令或者讀取的一串字符串
Salt :鹽值,為安全隨機數,至少為8字節
count :迭代次數,正整數
dkLen :導出密鑰的字節長度,正整數。
輸出:
DK :導出的密鑰,長度為dkLen個字節的字符串。
```
http://javadoc.iaik.tugraz.at/iaik_jce/current/iaik/pkcs/pkcs5/PBKDF2.html
3. 基於標准的密鑰協商機制
4. 基於安全的密鑰生成工具等

2.2 分發

密鑰的分發是將密鑰通過安全的方式傳送到被授權的實體,一般通過安全傳輸協議或者使用數字信封等方式來完成。

數字信封是對稱密碼體制和非對稱密碼體制的一種混合應用,即解決了非對稱密碼體制加解密效率的問題,又妥善解決了密鑰傳送的安全問題。

  • 在密鑰的分發過程中,對於對稱密鑰和非對稱密鑰的私鑰而言,應保證其完整性和機密性;

    推薦產品開發人員使用安全的加密傳輸協議(如SSL、IPSec、SSH)來傳輸這些敏感數據。
    當產品的應用場景中不具備建立安全傳輸協議的條件時,也可以使用數字信封來完成密鑰的分發。

數字信封加解密接口

接口 iPSI OpenSSL
加密 CRYPT_sealInit() EVP_SealInit()
加密 CRYPT_sealUpdate() EVP_SealUpdate()
加密 CRYPT_sealFinal() EVP_SealFinal()
解密 CRYPT_openInit() EVP_OpenInit()
解密 CRYPT_openUpdate() EVP_OpenUpdate()
解密 CRYPT_openFinal() EVP_OpenFinal()

對於非對稱密鑰的公鑰而言,應保證其完整性與真實性。

2.3 使用

  • 一個密鑰只用於一個用途(如:加密、認證、隨機數生成和數字簽名等)。

  • 非對稱加密算法私鑰僅可被其擁有者掌握。

2.4 存儲

  • 用於數據加解密的工作密鑰不可硬編碼在代碼中。

  • 對稱密鑰、私鑰、共享秘密等均屬於敏感數據,在本地存儲時均需提供機密性保護。

       上層密鑰的機密保護由下層密鑰提供 --> 根密鑰的安全管理。
    
  • 密鑰組件方式生成根密鑰時,密鑰組件需要分散存儲,當密鑰組件存儲於文件中時,須對文件名做一般化處理。

2.5 更新

當密鑰已經達到其使用期限或者密鑰已經被破解時,密碼系統需要有密鑰更新機制來重新產生新的密鑰

  • 密鑰須支持可更新,並明確更新周期。

2.6 備份

密鑰丟失將導致密文數據無法解密,這樣便造成了數據的丟失。
應依據具體場景,來評估是否需要對密鑰提供備份與恢復機制

2.7 銷毀

  • 不再使用的密鑰應當立即刪除。

2.8 可審核

  • 密鑰管理操作需要記錄詳細日志。

密鑰的生成、使用(作為管理用途,如加解密密鑰、派生密鑰必須記日志,作為業務用途,如加解密業務數據則不要求)、更新、銷毀操作是重要的管理操作。
日志中需詳細記錄密鑰的各項管理操作,包括但不限於記錄操作的主體(人或設備)、時間、目的、結果等可用於事件追溯的信息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM