一、企業(yè)數(shù)據(jù)安全風險和國內(nèi)密碼應用現(xiàn)狀
隨著企業(yè)上云和數(shù)字化轉(zhuǎn)型升級的深化,數(shù)據(jù)正在成為企業(yè)的核心資產(chǎn)之一,在生產(chǎn)過程中發(fā)揮的價值越來越大。
近幾年大規(guī)模的數(shù)據(jù)泄露事件頻發(fā),外部威脅和內(nèi)部威脅左右夾擊,由內(nèi)部威脅帶來的大規(guī)模數(shù)據(jù)泄露事件越來越多,不安全的配置、源代碼泄露及硬編碼都有可能造成數(shù)據(jù)泄露,企業(yè)業(yè)務數(shù)據(jù)安全面臨嚴峻挑戰(zhàn)。
業(yè)務安全挑戰(zhàn)
·提供數(shù)據(jù)傳輸、數(shù)據(jù)存儲等過程中的機密性和完整性的保護;
·完善的密鑰生命周期管理,保證密鑰產(chǎn)生和運算過程的安全;
·保護金融支付、電子政務、身份認證等業(yè)務過程的安全。
另一方面,《密碼法》、《網(wǎng)絡安全法》、網(wǎng)絡安全等級保護2.0,以及相關(guān)行業(yè)安全規(guī)范對數(shù)據(jù)安全保護以及數(shù)據(jù)加密做出明確規(guī)定。
安全合規(guī)要求
·滿足外部合規(guī)需求,如密碼法應用要求、等保安全合規(guī)建設等,系統(tǒng)安全標準PCI DSS、SOC、第三方支付認證等;
·滿足內(nèi)部審計管理策略。
二、密碼常用技術(shù)簡介
1.對稱加密
·AES、DES、3DES、SM4等;
·加密解密使用相同密鑰。
2.非對稱加密
·RSA、ECC、SM2等;
·公鑰加密,私鑰解密。
3.雜湊/哈希/散列
·SHA、MD5、SM3;
·單向不可逆。
4.數(shù)字簽名
·將非對稱密鑰反過來使用;
·私鑰簽名,公鑰驗證。
三、企業(yè)數(shù)據(jù)安全面臨的難題
1.從數(shù)據(jù)安全生命周期看風險及防護關(guān)鍵難點
難點1:分類、治理和策略。
難點2:DaR/DiT/DiU加密技術(shù)。
難點3:密鑰管理。
難點4:事件監(jiān)測分析。
2.從開發(fā)運營過程看數(shù)據(jù)泄露風險
開發(fā):意識疏忽泄露源代碼中包含的敏感憑據(jù)和密鑰。
測試:暴露高風險的測試數(shù)據(jù)庫訪問端口和弱賬號等。
部署/交付:臨時環(huán)境中的數(shù)據(jù)訪問端口,薄弱配置導致的安全問題。
生產(chǎn)/運營:賬號口令泄露、破解、弱口令,缺乏保護的隱私數(shù)據(jù)和密鑰。
3.從應用服務的構(gòu)成看數(shù)據(jù)泄露風險
數(shù)據(jù)從產(chǎn)生、傳輸、存儲、處理,到共享展示,每一個環(huán)節(jié)都存在數(shù)據(jù)泄露的風險,涉及數(shù)據(jù)安全保障:
本地敏感數(shù)據(jù)存儲安全、網(wǎng)絡通道的安全、配置文件和硬編碼敏感信息的安全、密鑰的安全管理、云上數(shù)據(jù)的存儲安全、金融支付等敏感應用的安全合規(guī)問題、數(shù)據(jù)的共享、展示脫敏的問題等等。
4.云架構(gòu)下數(shù)據(jù)加密及密鑰管理的挑戰(zhàn)
(1)云數(shù)據(jù)全生命周期保護
數(shù)據(jù)分級與治理,確保云上敏感數(shù)據(jù)從生產(chǎn)、存儲、流動、使用到銷毀等數(shù)據(jù)全生命周期的加密策略的應用。
(2)云產(chǎn)品數(shù)據(jù)加密及密鑰管理
云產(chǎn)品,如云硬盤、云存儲、云數(shù)據(jù)庫等精細化數(shù)據(jù)加密保護,密鑰策略集中管控、安全分發(fā)、多租戶隔離等挑戰(zhàn)。
(3)密碼方案云環(huán)境適配
傳統(tǒng)密鑰管理系統(tǒng)方案與云平臺架構(gòu)難以融合,合規(guī)化硬件密碼機部署困難,多租戶管理、權(quán)限管控困難,接口不適配等。
(4)密鑰權(quán)限租戶主管控
云數(shù)據(jù)加密與密鑰管理分離,密鑰全生命周期由租戶自主管控,包括密鑰訪問身份與策略管控、密鑰材料、加密算法等。
四、騰訊云數(shù)據(jù)安全中臺
騰訊云數(shù)據(jù)安全中臺具備三大特性,全數(shù)據(jù)生命周期支持、完整的云產(chǎn)品生態(tài)集成、國密與FIPS標準的支持。騰訊云數(shù)據(jù)安全中臺還能提供極簡的加密API和SDK服務,讓用戶得以使用最小的工作量,極簡地實現(xiàn)對云上數(shù)據(jù)的加密保護。
通過數(shù)據(jù)安全中臺的解決方案,可以在各個環(huán)節(jié)解決這些數(shù)據(jù)安全風險的問題,例如客戶端本地敏感數(shù)據(jù)的存儲,通過SDK結(jié)合KMS進行數(shù)據(jù)的加解密。不同服務之間的調(diào)用,API密鑰的保管可以使用白盒密鑰解決,配置文件敏感信息可以通過憑據(jù)管理系統(tǒng)進行很好的管理。
五、云上數(shù)據(jù)安全應用最佳實踐
1.密鑰管理系統(tǒng)KMS
對于云上數(shù)據(jù)安全應用方案,需要保管的核心內(nèi)容就是密鑰,密鑰存放在硬編碼配置文件里面,是寫在代碼里面的,這種情況下配置文件泄漏或者代碼泄漏,密鑰也會隨之泄漏,密鑰的丟失導致數(shù)據(jù)的密文不再安全,因此使用加密算法需要使用密鑰管理系統(tǒng)(KMS)來對密鑰進行統(tǒng)一管理。
另外,密鑰的強度和隨機性也是安全的重要因素之一,使用軟件產(chǎn)生的偽隨機數(shù)的安全度要低于專用硬件加密機生成的真隨機數(shù),這也是我們數(shù)據(jù)加密密鑰需要使用KMS的原因之一。
KMS是云平臺和產(chǎn)品合規(guī)的基礎安全組件,海外用戶需要滿足FIPS-140-2標準,國內(nèi)用戶需要支持國密。一般的密鑰管理系統(tǒng)提供以下特性:
·基于硬件加密機的真隨機數(shù);
·密鑰的權(quán)限細粒度管控;
·密鑰的自動輪換;
·密鑰生命周期的管理(創(chuàng)建、開啟、禁用、計劃刪除、銷毀等);
·自有密鑰的導入;
·多級密鑰管理。
用戶根密鑰的創(chuàng)建、管理等操作都將在合規(guī)的HSM硬件中進行,騰訊云在內(nèi)的任何人都無法獲取到您的明文主密鑰。
(1)安全合規(guī)的密鑰保障
KMS控制臺操作簡單,用戶可自動創(chuàng)建密鑰的類型,密鑰輪換的啟停、密鑰的啟用、計劃刪除等等。
密鑰有自己的生命周期,從狀態(tài)上可以看到,創(chuàng)建一個密鑰后,開啟的狀態(tài)就是可用的狀態(tài),如果發(fā)現(xiàn)一個密鑰出現(xiàn)了泄漏的問題,管理員可以立即關(guān)掉,讓所有的數(shù)據(jù)都不能進行解密。
最小粒度進行授權(quán),KMS與騰訊云訪問管理集成可進行資源級別的授權(quán),通過CAM身份管理和策略管理控制哪些賬戶、哪些角色可以訪問或管理敏感密鑰。首先管理員在KMS創(chuàng)建一個子賬號,不同子賬號分配給不同的應用,根據(jù)不同應用的特點可以進行授權(quán)。
(2)敏感數(shù)據(jù)加密
敏感信息加密是密鑰管理服務(KMS)核心的能力,實際應用中主要用來保護服務器硬盤上敏感數(shù)據(jù)的安全(小于4KB),如密鑰、證書、配置文件等。
通過直接調(diào)用KMS接口選擇采用對稱密鑰或非對稱密鑰進行數(shù)據(jù)加解密,默認海外節(jié)點是AES算法,國內(nèi)是國密的算法,解決傳統(tǒng)用戶本地加解密的痛點,權(quán)限是無法管控的。
另外加密算法庫的依賴,目前國密算法SDK相對比較少,通過KMS只需要KMS SDK避免對各種算法的依賴。這是數(shù)據(jù)量不大、并發(fā)性能要求不高的場景,可以直接調(diào)用SDK。
(3)高性能本地數(shù)據(jù)加密
對于較大的文件或者對性能敏感的數(shù)據(jù)加密,推薦使用信封加密。
這里說一下多層密鑰管理,因為KMS考慮安全性通訊鏈路是HTTPS,每一個請求都經(jīng)過遠程調(diào)用,性能滿足不了要求,這種情況下可通過多級密鑰管理的方式來解決,多級密鑰存在用戶緩存中,只要主密鑰保證足夠的安全,數(shù)據(jù)密鑰就可以保證安全,數(shù)據(jù)密鑰保證安全,數(shù)據(jù)也就能夠保證安全性。這就是我們說的信封加密。
KMS產(chǎn)生兩級密鑰(主密鑰CMK和數(shù)據(jù)加密密鑰DEK),海量的業(yè)務數(shù)據(jù)采用DEK進行本地高效加密,而DEK通過CMK進行加密保護。通過DEK加密后的密文數(shù)據(jù)及DEK密文傳輸并存儲至服務端業(yè)務系統(tǒng)。解密時,先用CMK解密DEK密文,獲得DEK明文后再本地解密業(yè)務數(shù)據(jù)。
數(shù)據(jù)加解密可以在本地進行操作,避免每次發(fā)起SDK的請求。第一次數(shù)據(jù)加解密時觸發(fā)一次網(wǎng)絡調(diào)用,其他的所有時間都是本地進行數(shù)據(jù)加解密,目前服務器算力加密算法對業(yè)務性能的影響基本上還是在可接受的范圍內(nèi)。
(4)BYOK(Bring Your Own Key)
KMS支持BYOK(Bring Your Own Key),允許用戶在騰訊云架構(gòu)上使用自有的密鑰材料進行敏感數(shù)據(jù)加解密服務。通過KMS服務生成一個密鑰材料為空的用戶根密鑰,用戶可將自己的密鑰材料導入到該密鑰中,形成一個外部密鑰,再由KMS服務進行該外部密鑰的分發(fā)管理。
(5)無縫集成云產(chǎn)品,實現(xiàn)云上數(shù)據(jù)透明加密
企業(yè)上云非常在意的一點是數(shù)據(jù)的存儲安全性,通過KMS如何如何實現(xiàn)簡單數(shù)據(jù)的安全存儲?KMS集成了多款云產(chǎn)品,通過授權(quán)的方式實現(xiàn)特別數(shù)據(jù)加解密的功能。
以CBS加密為例:
用戶啟動CBS加密特性時,KMS將自動通過系統(tǒng)默認生成CMK以信封加密的方式對業(yè)務數(shù)據(jù)進行加密。用戶掛載CBS時,由CBS在用戶授權(quán)情況下為用戶創(chuàng)建CMK和數(shù)據(jù)密鑰,當數(shù)據(jù)需要寫入時,由CBS觸發(fā)加密操作,密文存儲,當用戶需要讀取數(shù)據(jù)時,由CBS自動為用戶解密返回明文,整個流程對用戶來說是完全透明的
(6)白盒密鑰管理
在訪問API接口服務時,需要API鑒權(quán)的密鑰或者Token,例如云API訪問時需要SecretId和SecretKey,對于這類特殊數(shù)據(jù)的保護場景,推薦使用白盒加密的方式來保護API密鑰的安全。
白盒算法是將算法和密鑰進行混淆,整個加密過程中都不需要明文密鑰,從而解決了標準密碼算法中明文密鑰的問題。使用過程中用戶作為管理員角色,創(chuàng)建白盒密鑰對API Key進行加密,并把白盒解密密鑰和API Key密文分發(fā)給相應的開發(fā)或運維人員部署,使用白盒解密密鑰和白盒SDK解密API Key密文至內(nèi)存中使用,通過這樣的方式有效對API Key的安全進行加固。
另外,白盒密鑰管理支持指定設備綁定,限定白盒密鑰解密的環(huán)境,即使密鑰全部丟失情況下,脫離環(huán)境也無法進行解密,進一步加固保護API Key的安全性。
2.憑據(jù)管理系統(tǒng)
像帳號密碼、敏感IP端口、數(shù)據(jù)庫連接信息等我們可以統(tǒng)稱為憑據(jù),傳統(tǒng)的使用方式是把信息配置在配置文件或者配置中心。現(xiàn)狀是大部分敏感憑據(jù)并沒有進行加密保護,一旦配置文件丟失,容易造成敏感信息泄露。有一些有安全意識開發(fā)的同學會對敏憑據(jù)進行一次簡單的加密,但是加密憑據(jù)的密鑰放在哪里就成了關(guān)鍵問題。
這種情況,推薦使用憑據(jù)管理系統(tǒng)(SecretsManager,SSM)對敏感憑據(jù)進行統(tǒng)一管理。
·安全的憑據(jù)托管以及權(quán)限控制,數(shù)據(jù)使用KMS加密
·憑據(jù)的版本管理
·憑據(jù)的自動輪換
·憑據(jù)的生命周期管理
以一個源代碼為例,通常的方式會在配置文件中配置DB連接方式,代碼初始化會加載初始文件,建立數(shù)據(jù)庫連接池,配置文件里面是敏感信息。通過接入憑據(jù)管理系統(tǒng),從源代碼中刪除硬編碼憑據(jù),將程序中對敏感信息硬編碼或配置文件中敏感信息替換為通過API的方式查詢,以編程方式動態(tài)檢索憑據(jù),代碼中不會出現(xiàn)敏感信息,業(yè)務只需關(guān)心一個接口,這有助于避免代碼泄露時或者查看代碼的人獲取敏感信息。
憑據(jù)輪換是通過版本管理的方式,借助憑據(jù)管理系統(tǒng),按周期更新敏感憑據(jù)內(nèi)容,依賴該憑據(jù)的所有應用點將自動完成同步,實現(xiàn)安全的憑據(jù)輪換管理,同時確保依賴該憑據(jù)的業(yè)務連續(xù)性。
3.云加密機
金融、支付、政務等敏感應用有比較高的合規(guī)審計需求,云加密機可以很好地滿足這類特殊需求。
傳統(tǒng)的方式需要使用硬件加密機,但傳統(tǒng)硬件加密機的問題是部署周期長、部署復雜、部署成本高。
利用虛擬化技術(shù),提供可擴展,高可用,高性能的虛擬硬件密碼機VSM服務,可以降低用戶自行部署物理加密機的風險和成本。
云加密機可以自身實現(xiàn)安全可靠的密鑰管理,支持國際、國密算法,支持選擇不同使用類型的VSM滿足不同的應用需求。
(1)金融數(shù)據(jù)密碼機EVSM
主要應用于金融支付領(lǐng)域保障金融數(shù)據(jù)的安全,符合各種金融行業(yè)的規(guī)范,符合金融磁條卡、IC卡業(yè)務等特點。
(2)通用服務器密碼機GVSM
提供國際和國內(nèi)通用的密碼服務接口,能獨立或并行為多個應用實體提供密碼服務和密鑰管理服務的云加密實例。
(3)簽名驗證服務器SVSM
提供基于PKI體系和數(shù)字證書的數(shù)字簽名、驗證簽名等運算功能,可以保證關(guān)鍵業(yè)務信息的真實性、完整性和不可否認性。
4.數(shù)據(jù)庫加密
企業(yè)數(shù)據(jù)上云會用到多種關(guān)系型數(shù)據(jù)庫、非關(guān)系型數(shù)據(jù)庫,業(yè)務重要數(shù)據(jù)在落盤存儲時需要使用密碼技術(shù)對敏感數(shù)據(jù)進行加密處理??刹捎脩脤蛹用芑驍?shù)據(jù)庫層加密的方式:
業(yè)務自己在應用層進行數(shù)據(jù)的加解密,結(jié)合SDK應用內(nèi)對數(shù)據(jù)解密后進行明文的展示,這種方式用戶實現(xiàn)的成本相對比較高,需要自己去實現(xiàn)各種各樣的邏輯。
數(shù)據(jù)庫層加密有幾種方式:
(1)數(shù)據(jù)庫插件
通過插件的方式來截獲用戶的請求,關(guān)聯(lián)用戶加解密的策略,進行數(shù)據(jù)的加解密。這樣的方式優(yōu)點是性價比高、性能比較高、實施成本也比較低。
(2)數(shù)據(jù)庫加密網(wǎng)關(guān)
云上實施比較容易,自動為用戶分配數(shù)據(jù)庫加密網(wǎng)關(guān),用戶在業(yè)務敏感的前提下可以通過加密網(wǎng)關(guān)的方式實現(xiàn)字段級數(shù)據(jù)庫加解密。
(3)TDE表空間級加密
騰訊云數(shù)據(jù)庫服務對接KMS為用戶提供透明加解密的方案,實現(xiàn)的機制是通過KMS提供主密鑰,通過數(shù)據(jù)庫的TDE特性進行表空間數(shù)據(jù)加解密,對業(yè)務上層透明,缺點是目前不能做到字段級的數(shù)據(jù)加解密的功能。
(4)云訪問安全代理CASB
對于期望對數(shù)據(jù)庫進行字段級的加解密,防止被脫庫后敏感信息的泄露,除了應用側(cè)自行實現(xiàn)加解密邏輯,云數(shù)據(jù)安全中臺提供了云訪問安全代理CASB方案組件。借助CASB,用戶可以輕松實現(xiàn)基于商用密碼算法的應用免改造、字段級加密,以及基于密碼應用的防黑客攻擊的數(shù)據(jù)安全保護方案。
Q&A
Q:一般加解密的耗時是在什么范圍?
A:通過KMS進行加解密是通過硬件加密機,基本上在10毫秒以內(nèi),整體耗時也需要看用戶的網(wǎng)絡環(huán)境,通常情況下是30-50毫秒以內(nèi),如果對性能比較敏感的,可以通過多級密鑰的方式在本地進行高性能加解密,本地進行數(shù)據(jù)加解密主要取決于服務器的配置。目前來看,使用AES128對整個性能的影響是可接受的。
Q:加密數(shù)據(jù)如何傳送給另一個云服務供應商或傳回給企業(yè)?
A:不同的服務商間傳遞可以通過信封加密的方式,在傳遞密文的同時也傳遞數(shù)據(jù)加密密鑰的密文,騰訊云帳號體系是支持通過角色來進行跨帳號的授權(quán),授權(quán)第三方綁用戶KMS的資源,接收方就可以解密密鑰的密文,拿到明文后對數(shù)據(jù)進行解密,就可以拿到傳遞數(shù)據(jù)真實的信息。
Q:硬件加密相對一般軟加密有什么優(yōu)勢、其底層原理是什么?
A:一是它是基于硬件設備來產(chǎn)生的真隨機數(shù),比如會采集周邊的光噪聲、熱噪聲,通過專用的硬件生成真隨機數(shù),軟件生成的隨機數(shù)是偽隨機數(shù),真隨機數(shù)保障整個密鑰的安全性。硬件密碼機是經(jīng)過國家密碼局安全認證的,可以將密鑰安全地托管在密碼機內(nèi),任何人都無法獲取它的明文,通過這樣托管的方式保障整個密鑰的安全性。
Q:內(nèi)部分析人員會接觸到原始客戶的數(shù)據(jù),對于內(nèi)部數(shù)據(jù)有什么加密方案?
A:內(nèi)部的分析人員如果需要對原始數(shù)據(jù)進行分析的話,建議還是在分析過程中對數(shù)據(jù)進行解密后再進行分析。用戶的明文數(shù)據(jù)一定不是明文進行落盤??梢酝ㄟ^KMS對數(shù)據(jù)進行加解密。
Q:如果用AES 256加密算法是否會影響很大?這樣加密方式、數(shù)量類型、數(shù)據(jù)量相關(guān)嗎?
A:和數(shù)據(jù)量是相關(guān)的,AES256對性能有一定的影響,要看服務器的配置、有沒有硬件加速卡進行加速等條件,AES128也有足夠的安全性,有特別的需求可以用AES256。
Q:白盒加密的加密流程是怎樣的?
A:實際上操作分兩部分,第一部分是KMS管理員通過控制臺創(chuàng)建一個白盒密鑰,第二步通過白盒密鑰對用戶的敏感數(shù)據(jù)進行加密,這一步也是通過控制臺生成的,過程已經(jīng)將密鑰和算法進行混合,管理員再將混合后的密鑰分發(fā)給研發(fā)或者是運維同學使用,管理員通過控制臺進行加密過程中實現(xiàn)了算法和密鑰的混合,保證其安全性。
Q:通過白盒加密的內(nèi)容,如何解密?
A:首先提供解密的SDK,會有白盒密鑰,以及經(jīng)過混淆后的密文,本地集成SDK方式進行解密。
Q:客戶端需要從云端獲取密鑰,怎么防止客戶端冒充及怎么自證客戶端的身份?
A:騰訊云有一套健全的身份認證體系,會分主帳號、子帳號多級認證,通過騰訊云統(tǒng)一身份認證鑒別用戶身份防止客戶端冒充,通過授權(quán)使用API key,也是通過帳號管理體系分配權(quán)限的。
Q:管理員分配給客戶端是存儲在客戶端本地嗎,如果被別人拿到是不是可以冒充客戶端?
A:對帳號的身份鑒權(quán)是根密鑰APIKey,不同服務間進行API調(diào)用需要身份認證,安全性是需要進行保障的,傳統(tǒng)的方式是放到本地的某一個目錄下的文件中進行權(quán)限控制,或者放在環(huán)境變量中,白盒密鑰是專門用來對這類APIKey進行混淆加密實現(xiàn)安全加固的。
Q:國密算法和一般國外的算法有什么不同呢?
A:國密算法是國家出臺的一系列的算法,像非對稱加密也是利用了橢圓曲線算法的特性,大體思路上是相同的。