iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 9
0
Security

資訊系統安全與 CISSP 的簡單應用系列 第 9

[Day 09] 安全工程 (Cryptographic Applications)

哈囉大家好,今日密碼學的應用甚廣,也一直在發展中。文章前半部,會先介紹一個大家一定會用到的「密碼加鹽」機制;文章後半部,再列舉各領域中目前最廣泛之應用,供各位日後參考,我想也是見證這個時代的密碼學足跡吧。

雜湊函數 & 訊息鑑別碼


我們不推薦 MD5 訊息摘要演算法 (MD5 Message-Digest Algorithm),原因是 MD5 在 1996 年就被證實存在弱點,可以被加以破解,所以對於需要高度安全性的資料,專家一般建議改用其他演算法,如 SHA-2;另外在 2004 年,已被證實 MD5 演算法無法防止碰撞 (collision),因此不適用於安全性認證,如 SSL 公開金鑰認證或是數位簽章等用途。

所以以後我們就把心力花在 SHA 安全雜湊演算法 (Secure Hash Algorithm) 上面囉。

  1. SHA-1:160-bit message digest (已發現碰撞)
  2. SHA-2:variable lengths, ragning up to 512 bits message digest. (目前沒問題)
  3. SHA-3:在 2015 年 8 月 5 日由 NIST 通過 FIPS 202 正式發表 (歡呼撒花)。
    其實 SHA-3 並不是要取代 SHA-2,因為 SHA-2 目前並沒有出現明顯的弱點。但由於 MD5、SHA-0 和 SHA-1 已出現成功的破解,NIST (您知道 NIST 是誰嗎?就是資安標準界目前的老大啦) 感覺需要一個與之前演算法不同的、可替換的加密雜湊演算法,也就是現在的 SHA-3。NIST 電腦安全專家 Tim Polk 說,SHA-3 的優勢在於它與 SHA-2 設計上存在極大差別,適用於 SHA-2的攻擊方法將不能作用於 SHA-3

密碼加「鹽」了嗎?


  1. 若是您的密碼是雜湊後就直接放入密碼存放區,那攻擊者可能會使用 彩虹表 (Rainbow Tables) 去破解常用的密碼。
  2. 密碼儲存要加「鹽」才夠安全,即在雜湊之前先將密碼加一點料,以加強密碼強度 (增加破解的時間)。
  3. 進行雜湊運算,來,直接看 CODE。
/// <summary>
/// Hash and salt passwords.
/// 依據 HMACSHA1 使用虛擬亂數產生器,實作密碼式的金鑰衍生功能 PBKDF2 (密碼迭代)
/// </summary>
/// <param name="plainText"></param>
/// <param name="salt">Always use a new salt per password. Salts do not have to be kept secret and can be stored alongside the hash itself.</param>
/// <param name="KeySize">Output Key Size for PBKDF2</param>
/// <returns>Hashes and salts are binary blobs. No need to convert into strings.</returns>
static byte[] GenerateSaltedHash(byte[] plainText, byte[] salt, int KeySize)
{
    byte[] plainTextWithSaltBytes =
      new byte[plainText.Length + salt.Length];

    for (int i = 0; i < plainText.Length; i++)
    {
        plainTextWithSaltBytes[i] = plainText[i];
    }
    for (int i = 0; i < salt.Length; i++)
    {
        plainTextWithSaltBytes[plainText.Length + i] = salt[i];
    }

    Rfc2898DeriveBytes rfcKey = new Rfc2898DeriveBytes(plainText, salt, 2);
    return rfcKey.GetBytes(KeySize);
}

密碼學的應用甚廣


安總就不在各位面前搬門弄斧了,因為接下來各領域各有專業,深入實作下去就會發現許多細節,我若展開來,鐵人賽 100 天都不夠,所以謝謝您們喔,如果想要補充下列主題的先進大大,可以於本篇下方留言喔。

  • 數位簽章標準 (Digital Signature Standard) → [SHA-1/SHA-2] + [DSA/RSA/ECDSA]
  • 郵件安全 (Secure Email) → [S/MIME] or [PGP]
  • 網頁活動安全 (Secure Web Activity) → [TLS]
  • 網絡交通安全 (Secure Networking Traffic) → [IPsec]
  • 數位內容安全 (Secure Digital Content) → [Digital Right Management]

這是安總大學時期學計算機網路的教科書,2017 年出第七版啦 (撒花),每次教科書出新版我都很注意改版的內容,往往這些增修都能反映時代的軌跡,而參與其中、躬逢其盛的我們,是何等有幸。
Computer Networking 7th
《Computer Networking: A Top-Down Approach, 7/e》


上一篇
[Day 08] 安全工程 (Cryptography for Authentication)
下一篇
[Day 10] 安全工程 (Security Models and Architecture Design)
系列文
資訊系統安全與 CISSP 的簡單應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言