本文來自微信公眾號(hào)“數(shù)世咨詢”,作者/茉泠。
01
實(shí)況報(bào)道
最近的新聞報(bào)道稱,遠(yuǎn)程訪問解決方案公司AnyDesk遭到了黑客的入侵。這也引發(fā)了業(yè)界對于代碼簽名實(shí)踐以及軟件供應(yīng)鏈安全的關(guān)注與重視。
代碼簽名的用途在于為軟件、固件或應(yīng)用添加數(shù)字簽名,以確保用戶的代碼來自可信源并且在上次簽名后未被篡改。但代碼簽名的實(shí)際效用取決于其執(zhí)行情況,不當(dāng)?shù)膶?shí)踐可能會(huì)導(dǎo)致惡意軟件注入、代碼和軟件篡改以及冒充攻擊。
雖說私鑰的安全保護(hù)至關(guān)重要,但許多開發(fā)者出于便利性考慮,經(jīng)常將其保存在本地電腦或構(gòu)建服務(wù)器中來進(jìn)行自行管理。這使得私鑰更容易被盜用和誤用,同時(shí)也給安全團(tuán)隊(duì)制造了盲點(diǎn)。
自2020年SolarWinds黑客攻擊事件之后,證書頒發(fā)機(jī)構(gòu)/瀏覽器論壇(CA/B Forum)發(fā)布了一套新的基線要求,用于維護(hù)代碼簽名證書,其中要求強(qiáng)制使用HSM(hardware security modules,硬件安全模塊),以及專門用于保護(hù)和管理加密密鑰的設(shè)備,并實(shí)施其他相關(guān)措施來保護(hù)私鑰。
雖說HSM提供了最高級別的安全性,但同時(shí)也帶來了更高的成本、更復(fù)雜的操作以及維護(hù)需求。除非它們能被集成到DevOps團(tuán)隊(duì)使用的代碼簽名工具中,否則這種脫節(jié)很可能會(huì)使得代碼簽名過程變得更加復(fù)雜并造成一定的延遲。
隨著行業(yè)資產(chǎn)與服務(wù)向云端的遷移,安全性成為了更高的優(yōu)先級,同時(shí)云解決方案也為代碼簽名提供了新的可能。云端代碼簽名和HSM不僅加快了開發(fā)速度,增強(qiáng)了靈活性,同時(shí)還支持分布式開發(fā)團(tuán)隊(duì)的集中控制,使得整個(gè)開發(fā)流程更加順暢,且更容易被安全團(tuán)隊(duì)監(jiān)控。
02
集成代碼簽名之旅
隨著CA/B論壇最近的改革,各組織需要啟動(dòng)他們的現(xiàn)代化代碼簽名之旅,引入集中控制機(jī)制以對開發(fā)團(tuán)隊(duì)進(jìn)行支持。目前,許多公司仍舊處于“臨時(shí)”階段——密鑰被本地管理,且開發(fā)者采用多樣化的代碼簽名工具和流程。然而,有些公司則已經(jīng)通過部署HSM來對密鑰進(jìn)行保護(hù),實(shí)現(xiàn)了集中控制,以便安全團(tuán)隊(duì)可以實(shí)現(xiàn)更好的監(jiān)督和管理,但獨(dú)立的代碼簽名工具使用仍會(huì)對軟件開發(fā)速度造成影響。
一個(gè)理想且成熟的體系應(yīng)該將密鑰安全、代碼簽名工具與開發(fā)工作流程進(jìn)行集成,確保整個(gè)編碼、容器化、工件處理和執(zhí)行過程的無縫流暢與高效。安全團(tuán)隊(duì)需要負(fù)責(zé)管理HSM,從而實(shí)現(xiàn)對代碼簽名過程的完全掌握,同時(shí)開發(fā)者也能享受到敏捷且靈活的開發(fā)通道。
以下幾項(xiàng)最佳實(shí)踐能夠有效地支持這一轉(zhuǎn)變過程:
密鑰保護(hù):將代碼簽名密鑰存儲(chǔ)在安全的位置,例如符合CA/B論壇加密要求的HSM(FIPS 140-2第2級或共同標(biāo)準(zhǔn)EAL 4+)中。HSM具有防篡改功能,且可防止私鑰被導(dǎo)出。
訪問控制:通過基于角色的訪問控制來最小化未經(jīng)授權(quán)訪問和誤用私鑰的風(fēng)險(xiǎn)。定義審批工作流程并執(zhí)行安全策略,只允許必要的員工訪問,并保留審計(jì)日志,記錄誰觸發(fā)了簽名請求,誰訪問了密鑰,以及訪問理由。
密鑰輪換:一旦密鑰泄露,所有相關(guān)的簽名發(fā)布都可能會(huì)受到影響。定期更換代碼簽名密鑰,并為不同的發(fā)布使用不同的密鑰,覆蓋各個(gè)DevOps團(tuán)隊(duì)。
給代碼加上時(shí)間戳:代碼簽名證書的有效期通常只有一到三年。在代碼簽名時(shí)添加時(shí)間戳可以在證書過期或被撤銷后,仍然證明簽名的有效性,延長代碼和軟件的信任期限。
代碼完整性核查:在簽名并發(fā)布最終版本前,進(jìn)行徹底的代碼審查,對比構(gòu)建服務(wù)器中與源代碼庫中的代碼,驗(yàn)證所有開發(fā)者的簽名以確保代碼未被篡改。
集中式管理:在全球化的商業(yè)環(huán)境中,實(shí)施集中式代碼簽名流程可以對整個(gè)企業(yè)的簽名活動(dòng)以及證書狀態(tài)進(jìn)行監(jiān)控,提高管理的透明度,確保責(zé)任分明并減少安全風(fēng)險(xiǎn)。
執(zhí)行政策:通過定義和應(yīng)用一套詳細(xì)的政策來對代碼簽名流程進(jìn)行標(biāo)準(zhǔn)化,包括管理密鑰使用權(quán)限、審批流程、密鑰過期時(shí)間、CA類型、密鑰大小以及簽名算法等。實(shí)現(xiàn)這些政策的自動(dòng)化執(zhí)行,確保所有代碼、文件和軟件的簽名都符合政策要求以及行業(yè)標(biāo)準(zhǔn)。
簡化代碼簽名流程:通過將代碼簽名與CI/CD工具集成和自動(dòng)化,簡化DevOps團(tuán)隊(duì)的工作流程。不僅保證安全性,同時(shí)提高效率和靈活性。
在當(dāng)今軟件開發(fā)的持續(xù)集成(CI)和持續(xù)部署(CD)環(huán)境中,實(shí)施強(qiáng)大的代碼簽名流程成為了提高安全性的關(guān)鍵策略。這種最佳實(shí)踐不僅為建立開發(fā)過程中的信任機(jī)制提供了可靠的方法,同時(shí)也還有助于確保軟件供應(yīng)鏈的整體安全性得到加強(qiáng)。