FAQ Hero
程式碼簽章信任

什麼是程式碼
簽章最佳做法?

什麼是程式碼簽章最佳做法?

程式碼簽章驗證軟體開發人員或發行者的身分,並確認在程式碼被簽署到下載的整個過程中其完整性完好無損。這證明了程式碼可以受到信任。遺憾的是,惡意執行者不斷試圖滲透程式碼簽章做法,從而將惡意軟體內嵌至受信任的程式碼。

以下是一些用以減輕攻擊風險的最佳做法:

  • 安全的金鑰儲存:如果用於簽章的私密金鑰被外洩或失竊,那麼它可以被用於簽署被內嵌惡意軟體的軟體,這樣被發佈的軟體會註冊為源自該組織的合法軟體。應在硬體安全模組(HSM)中保護私密金鑰,或在待用時對其進行加密。根據CA/瀏覽器(CA/B)論壇要求,用於公用信任的金鑰必須儲存在HSM中。
  • 強制執行金鑰和簽章存取控制:設定原則並強制執行金鑰存取控制,以確保只有獲得授權的開發人員和使用者才能在需要時使用特定的金鑰進行簽章。在雲端產生金鑰,這樣金鑰就不會被共用、丟失或被盜。強制執行職責分離,即分離產生金鑰者和簽署者的職責。實作多重要素身分驗證(MFA),以確保存取簽章的人確實是其自稱的那個人。對於已離職或不再需要存取簽章或金鑰產生的人員,撤銷其存取權限。
  • 監測並稽核金鑰簽章工作流程:追蹤誰在什麼時候簽署了什麼內容,這樣您就可以對未經授權的簽章做出快速回應,並採取適當的補救措施。定期稽核與金鑰組相關的所有活動,包括產生、憑證作業、金鑰分配和簽章存取。
  • 保持最新狀態並強制執行整個公司範圍的加密標準原則:行業要求可能發生變化,以幫助組織領先於威脅形勢。CA/瀏覽器論壇的新要求將3072位元RSA定為公開信任程式碼簽章和時間戳記憑證的最低金鑰要求,自2021年6月1日起生效。組織內的開發人員和使用者在產生金鑰或進行程式碼簽章時,可能知道也可能不知道這些變化。組織必須強制執行行業要求,以防止使用者使用弱的或不合規的演算法、金鑰大小或曲線來產生金鑰或要求憑證。
  • 在SDLC流程中啟用自動化的程式碼簽章:在CI/CD管線等SDLC流程中實現簽章的整合和自動化,這樣您就可以降低未簽章程式碼或不合規簽章的風險。您可以設定安全控制和自動化,從而以連續、快速的軟體開發節奏組建安全且合規的軟體。
  • 比較來自不同組建伺服器的簽章:近期的軟體供應鏈攻擊造成世界各地影響力巨大的組織出現嚴重的營運和財務中斷。惡意執行者潛入目標組織的開發營運之中,並在SDLC期間將惡意軟體內嵌至程式碼,之後這些被竄改的程式碼被發佈並部署在客戶系統之中。在發佈程式碼之前對來自不同組建伺服器的軟體的雜湊進行簽章和比較,以查明伺服器組建之間是否存在任何差異。兩個或兩個以上相同組建的法定數量可確保組建是安全的,並且組建中沒有包含未知程式碼。
  • 撤銷已外洩的憑證:如果您發現被外洩的金鑰或已簽章的惡意軟體,請向您的憑證授權中心(CA)報告此事件。程式碼簽章憑證需要被撤銷,這將使軟體不再有效,並阻止惡意軟體的進一步傳播。
  • 為您的已簽章程式碼添加時間戳記:避免程式碼簽章憑證過期導致軟體意外過期的風險。程式碼簽章憑證的有效期為1-3年。如果程式碼簽章憑證過期,那麼已簽章的軟體也將過期,除非軟體在簽章時帶有時間戳記。系統將記錄時間戳記,因此只要軟體在生產中,就會繼續有效。為程式碼添加時間戳記的另一個原因是為了最大限度地減少憑證撤銷的影響。如果發現惡意軟體並且必須撤銷相關憑證,時間戳記將最大限度地減少影響,其原因是撤銷只會影響在入侵日期之後發佈的軟體。