淺談加密算法以及加密系統(tǒng)架構
背景
隨著信息互聯(lián)網(wǎng)的高速發(fā)展,金融行業(yè)對信息安全的重視程度在不斷增強。金融行業(yè)對信息安全的要求為信息系統(tǒng)的軟硬件以及數(shù)據(jù)受到保護,不被破壞、泄露等,保證系統(tǒng)可以安全可靠地運行。信息安全中的關鍵技術在于加密技術,面對互聯(lián)網(wǎng)技術更新速度快的趨勢,金融行業(yè)對加密系統(tǒng)也提出了新的挑戰(zhàn),為保證銀行內部系統(tǒng)的安全運營,有效支持業(yè)務的向前發(fā)展,如何選擇加密算法以及合理部署加密系統(tǒng)架構將是對銀行業(yè)的一大挑戰(zhàn)。
一、加密體制分類
加密體制可以分為對稱加密體制和非對稱加密體制。對稱加密體制是指加密/解密的密鑰是同一個密鑰,信息接收雙方都知道密鑰以及加解密算法,該算法主要用來對敏感數(shù)據(jù)信息進行加密。非對稱加密體制是指加密/解密使用不同的密鑰,通常有兩個密鑰,稱為“公鑰”和“私鑰”,它們兩個配合使用才能打開加密文件。
1.1 對稱加密算法
對稱加密體制是假設通信雙方能夠通過一個安全信道協(xié)商一個會話密鑰,雙方通信時,發(fā)送者A利用加密密鑰k及加密算法將原消息m加密成密文c;接收者B收到密文c后,利用解密算法及密鑰k對密文解密得到原始消息m。
圖1:對稱加密模型
1.2 非對稱加密算法
非對稱加密體制又稱公鑰加密體制,非對稱加密模型如圖2所示。
圖2:非對稱加密模型
非對稱加密體制的特點如下:
1)消息的接收者有一對公鑰和私鑰,公鑰用于加密數(shù)據(jù),私鑰用于解密數(shù)據(jù)。在使用公鑰加密算法前,需要一個初始化過程安全地生成用戶的公鑰和私鑰,并將公鑰發(fā)布出去。
2)公鑰是公開的數(shù)據(jù),可以通過一定的方法讓任何用戶可以得到,即公鑰不對外保密。
3)利用公鑰及密文,在不知道私鑰的情況下,計算對應的明文非常困難。
二、常見的加密算法
加密算法分為對稱加密算法、非對稱加密算法以及散列算法。
對稱加密算法
對稱加密算法常見有:DES、3DES、AES。
DES(DataEncryption Standard):
算法中數(shù)據(jù)以64比特分組進行加密,有效密鑰長度為56位,數(shù)據(jù)加密標準,速度較快,適用于加密大量數(shù)據(jù)的場合。
3DES(TripleDES):
是基于DES算法,用3個或2個DES密鑰加密一串明文,密碼長度最少為112位,最多168位,對一塊數(shù)據(jù)用三個不同的密鑰進行三次加密,相比于DES,其強度更高。
AES(AdvancedEncryption Standard):
是一種帶有可變塊長和可變密鑰長度的迭代分組加密方法,分組長度為128位,密鑰長度為128位、192位或256位,高級加密標準,其速度快,安全級別高。
非對稱加密算法
非對稱加密算法常見有RSA、DSA、ECC。
RSA:
是一個支持變長密鑰的公共密鑰算法,需要加密的文件塊的長度也是可變的。
DSA(DigitalSignature Algorithm):
數(shù)字簽名算法,是一種標準的數(shù)字簽名標準。它主要用于數(shù)字簽名和認證,和RSA不同地方在于它不能用作加密、解密以及密鑰交換,只用于簽名。
ECC(EllipticCurves Cryptography):
橢圓曲線密碼編碼學。ECC和RSA相比,優(yōu)勢在于抗攻擊性強、計算量小,處理速度快、存儲空間占用小、帶寬要求低。
散列算法
散列算法常見有MD5、SHA1、SHA256。
MD5(MessageDigest Algorithm 5):
其算法以任意長度的消息文件為輸入,產生一個128比特的摘要作為輸出,是一種單向散列算法,非可逆,相同的明文產生相同的密文。
SHA1(SecureHash Algorithm 1):
其算法以任意長度的消息文件作為輸入,產生一個160比特的摘要作為輸出。
SHA256(SecureHash Algorithm 256):
是SHA2的一種,對于任意長度的消息,SHA256都會產生一個256位的哈希值,內部狀態(tài)大小為256位。
三種算法的比較
對稱加密算法使用同一個密鑰加密和解密,速度快,適合給大量數(shù)據(jù)加密。對稱加密的客戶端與服務端使用的密鑰一樣,容易被破解,安全性不高。
非對稱加密算法使用公鑰加密,私鑰解密,私鑰簽名公鑰驗簽,安全性比對稱加密高,但是速度比較慢。非對稱加密的客戶端與服務端使用的密鑰不一樣,不易被破解,安全性高。
散列算法主要做防篡改簽名,它可以輸入任意長度的串都會得到一個固定長度的串。
國密算法
國密即國家密碼局認定的國產密碼算法,其中包括對稱加密算法、橢圓曲線非對稱加密算法及雜湊算法,具體有SM2、SM3、SM4等。因其國密算法的安全性高以及國產密碼算法等特點,現(xiàn)階段,G行的加密系統(tǒng)所采用的算法即為國密算法。
SM2
橢圓曲線非對稱加密算法,密碼強度為256位。該算法基于ECC,256位的SM2密碼強度高于2048位的RSA密碼強度,安全性較高,主要用于實現(xiàn)數(shù)字簽名和數(shù)據(jù)加密等功能。
SM3
雜湊算法,也稱為哈希算法,輸出的哈希值長度為256比特,其安全性要高于MD5算法以及SHA1算法,主要用于計算消息的摘要,檢驗消息的完整性。
SM4
分組對稱加密算法,數(shù)據(jù)分組長度為128比特,密鑰分組長度也為128比特,在安全性上面要高于3DES算法,主要用于實現(xiàn)數(shù)據(jù)的加密/解密運算,保證數(shù)據(jù)和信息的機密性。
三、加密的常見功能
1)防止機密數(shù)據(jù)被泄露或篡改;
2)防止特權用戶查看私人數(shù)據(jù)文件;
3)防止不速之客查看機密的數(shù)據(jù)文件;
4)使入侵者不能輕易地查找一個系統(tǒng)的文件。
數(shù)據(jù)加密可在網(wǎng)絡OSI七層協(xié)議(OSI是Open System Interconnect的縮寫,意為開放式系統(tǒng)互聯(lián))的多層上實現(xiàn)、所以從加密技術應用的邏輯位置看,有三種方式:
鏈路加密:
通常把網(wǎng)絡層以下的加密叫鏈路加密,主要用于保護通信節(jié)點間傳輸?shù)臄?shù)據(jù),加解密由置于線路上的密碼設備實現(xiàn)。
節(jié)點加密:
是對鏈路加密的改進。在協(xié)議傳輸層上進行加密,主要是對源節(jié)點和目標節(jié)點之間傳輸數(shù)據(jù)進行加密保護,克服了鏈路加密在節(jié)點處易遭非法存取的缺點。
端對端加密
網(wǎng)絡層以上的加密稱為端對端加密。對應用層的數(shù)據(jù)信息進行加密,易于用軟件實現(xiàn),且成本低,但密鑰管理問題困難,主要適合大型網(wǎng)絡系統(tǒng)中信息在多個發(fā)方和收方之間傳輸?shù)那闆r。
四、密鑰管理體系
4.1 密鑰的生命周期
在任何安全系統(tǒng)中,密鑰的安全管理都是一個關鍵的環(huán)節(jié),如果密鑰得不到有效的保護,那么設計再好的密碼體系又有什么用呢。所謂密鑰管理是指在參與通信的各方中建立密鑰并保護密鑰的一整套過程和機制。如果密鑰是一成不變的,那么密鑰管理就會非常簡單了,但是安全策略要求用戶要定期或者不定期的對密鑰進行更換。在一個健全的密鑰管理體系中,密鑰是有其自身的產生、使用和消亡的過程,這些過程就構成了子密鑰的生命周期。
密鑰的生命周期有4種主要狀態(tài):
4.2 密鑰管理生命周期
密鑰管理中系統(tǒng)所處的一系列不同的狀態(tài)被稱為密鑰管理生命周期,在密鑰生命周期的4種狀態(tài)下,密鑰管理生命周期的狀態(tài)如圖3所示。
圖3:密鑰管理生命周期
4.3 密鑰的層次結構
把密鑰組織成層次結構是一種有效保護密鑰的方法,除了在層次結構底層的密鑰外,其他層次的密鑰的目的都是為了保護其下層的密鑰,而最底層的密鑰則是用來保護數(shù)據(jù)通信的安全。按照層次結構劃分,將密鑰分為以下三類:
1)主密鑰:處于密鑰層次結構的最高層,沒有其他密鑰保護主密鑰,所以主密鑰只能用人工建立的方式。
2)加密密鑰的密鑰:在密鑰傳輸協(xié)議中加密其他密鑰,可以保護其下層的密鑰安全傳輸。
3)數(shù)據(jù)密鑰:處于密鑰層次結構的最下層,用于加密用戶的數(shù)據(jù),以使數(shù)據(jù)能夠安全傳輸。
這種層次結構的方法限制了密鑰的使用,從而減少密鑰暴露的可能,使密鑰被攻擊的風險大大降低。
五、加密平臺系統(tǒng)部署架構
金融機構通常會采購硬件加密機來完成數(shù)據(jù)的加解密算法需求,由于加密機設備的特殊安全設計,可以保證密鑰信息的高度安全:一、加密機通過邏輯設計保證密鑰明文不會暴露到加密機外部,所有涉密數(shù)據(jù)均在加密機內部完成運算;二、加密機具有自毀裝置,密鑰不可能通過物理方式非法獲取。另外,加密機采用高性能國產算法處理芯片,保證一臺加密機可以在一秒鐘內處理幾十萬次的加密運算。
以G行的加密系統(tǒng)部署為例,G行為提高密鑰統(tǒng)一安全管控水平,降低密鑰管理成本和運行成本,建立了加密機綜合管理系統(tǒng),通過該系統(tǒng)為全行所有系統(tǒng)提供統(tǒng)一的安全加密運算請求。加密機綜合管理系統(tǒng)的主要功能包括兩方面,其一為由密鑰管理平臺承載的密鑰管理功能,實現(xiàn)全行各類密鑰的集中產生、存儲、下發(fā)等密鑰管理功能;其二為加密平臺承載的加密算法服務,為全行業(yè)務應用系統(tǒng)提供集中統(tǒng)一的數(shù)據(jù)加解密服務,主要包括報文MAC生成與驗證,用戶密碼轉換與校驗,涉密數(shù)據(jù)的加密與解密,數(shù)據(jù)報文的簽名與驗簽。由于加密平臺是加密機綜合管理系統(tǒng)的核心業(yè)務功能,主要介紹一下加密平臺的應用邏輯架構,如圖4所示。
圖4:加密系統(tǒng)應用邏輯架構圖
為保障加密請求的交易成功率,加密平臺整體采用了三層負載均衡的邏輯架構,分別為:API端的負載均衡、接入服務的負載均衡、加密機接入的負載均衡。在這三層負載均衡框架下,可以保證交易系統(tǒng)成功率達到100%。
5.1 主要功能模塊
加密平臺的主要應用功能模塊主要包括:
加密API:
部署在各個應用系統(tǒng),由各個應用系統(tǒng)直接調用發(fā)起加密算法請求。API在設計上采用了輪詢、超時、重發(fā)、故障探測與自動恢復等機制來保證成功率。
加密平臺一般x臺一組形成一個集群,加密API輪流將加密請求發(fā)送到后面的n個加密平臺,超時設置一般小于z毫秒,當請求超時時自動重發(fā)到下一臺加密平臺,如果加密平臺返回碼為系統(tǒng)錯誤(非業(yè)務錯誤)時,API也會再次將請求自動發(fā)送到下一個平臺;當請求某個加密平臺連續(xù)失敗次數(shù)達到設定次數(shù)時,會將該加密平臺置為異常,不再向該平臺發(fā)送請求,然后在固定時間間隔發(fā)起探測交易,如果探測成功再加入正常處理隊列。
Server1:
接收加密API的服務請求,對報文進行格式校驗,根據(jù)密鑰名稱、交易碼確認需要路由到的后臺加密機,將交易請求放到對應的共享內存。為保障交易處理效率,加密平臺會預先將密鑰加載到內存,并進行排序。當server1需要獲取密鑰屬性時,可以快速使用二分法查找算法找到對應的密鑰。由于加密平臺需要面向全行數(shù)百個系統(tǒng)提供服務,server1會面臨連結數(shù)過高的問題,server1采用多端口以及鏈路匯聚的方式解決。server1同時啟動十幾個偵聽端口對外提供服務,使交易均衡分布在各個端口,同時預留一些端口作為容災備份。另外,借鑒nginx鏈路匯聚的方式,采用epoll技術,使得一個服務進程可以最大承載數(shù)萬的連接請求。
Server2:
負責接收共享內存中的請求報文,將請求報文轉換為加密機識別格式的請求報文,發(fā)送到對應的加密機。該模塊實現(xiàn)主要的業(yè)務處理功能,通過基礎的加密機指令,形成近百個通用報文數(shù)據(jù)加解密請求,為上游提供服務。由于對稱密鑰、非對稱密鑰在處理效率上存在數(shù)十倍的差距,為避免互相干擾需要將加密機分為對稱密鑰加密機組、非對稱密鑰加密機組。每個server2進程僅連接其中一個加密機,同時啟動多個server2進程并發(fā)處理共享內存的加密請求。server2由加密機異常探測功能,當發(fā)現(xiàn)加密機異常時,server2會將加密機設置為異常狀態(tài),然后server2自動退出處理,再由專門的服務程序進行異常加密機的恢復探測。
密鑰管理功能:
由于通常加密請求僅是各種算法運行,不會涉及數(shù)據(jù)的更新,因此加密平臺單獨將密鑰跟新相關的功能獨立出來。密鑰更新操作主要為密鑰的新增和同步密鑰。涉及的模塊主要包括server3和server4,server3用于處理密鑰管理交易,server4負責與數(shù)據(jù)庫進行直接交互。
Server5:
負責將密鑰的更新操作同步到同組的其他加密服務器。
由于每一筆金融業(yè)務處理會涉及多支交易,每支交易在多個系統(tǒng)流轉中又會多次調用加密請求,因此加密平臺的處理效率對業(yè)務的整體處理效率有很大影響,在系統(tǒng)部署和程序設計時必須特別關注處理效率。目前加密平臺在部署上采用貼近調用系統(tǒng)分機房、分網(wǎng)絡域多集群分布式部署的方式。在這種部署模式下,加密平臺可以達到每筆加密請求響應時間在ams左右,并能在高并發(fā)用戶下,提供極高的TPS的處理性能。
5.2 問題與挑戰(zhàn)
隨著銀行系統(tǒng)的發(fā)展,接入系統(tǒng)快速增長,分布式部署的加密平臺服務器數(shù)量也快速增長,帶來的首要問題是管理問題,包括:客戶端API的管理、加密平臺的管理、密鑰的管理。
API的管理問題主要是:加密系統(tǒng)不能完全掌握和控制各系統(tǒng)的API配置方式、使用方式及運行狀態(tài),存在配置信息不規(guī)范,使用方式不標準,運行異常不能及時發(fā)現(xiàn)的問題。
加密平臺的管理問題主要是:加密平臺服務器多,集中維護管理困難,操作復雜,應急處置效率不高的問題。
密鑰管理的問題主要是:加密平臺分布式部署后缺乏集中的密鑰管理中心,密鑰同步操作復雜,操作風險高,容易出現(xiàn)多服務器間密鑰同步遺漏錯誤的問題。另外,還存在一個加密請求涉及多個密鑰但這些密鑰跨加密機不允許直接操作的問題。
隨著互聯(lián)網(wǎng)、大數(shù)據(jù)、云計算、人工智能、區(qū)塊鏈等技術創(chuàng)新與傳統(tǒng)金融服務的融合,未來的銀行信息系統(tǒng)也將朝著全面云化等技術體系演進。當越來越多的組件融合在一起,基于云的加密和密鑰管理廣泛應用趨勢將逐漸加速,云技術能提供更靈活的安全服務,在數(shù)據(jù)訪問、密鑰管理和數(shù)據(jù)保留策略方面取得更長遠進步;未來為建設集中的加密管控系統(tǒng),可以將加密系統(tǒng)與云技術結合,在云上更加高效集中的配置管理加密系統(tǒng),銀行系統(tǒng)建設的架構將進一步豐富銀行的基礎服務能力。
六、總結與展望
信息加密技術作為金融行業(yè)的安全運營的重要一環(huán),其重要性不可忽略。隨著加密算法的公開化和解密技術的發(fā)展,加密算法的種類越來越豐富,其應用場景涉及到用戶登錄、身份驗證及交易等,不同的應用場景會使用到不同的加密算法來達到目標。
伴隨著社會數(shù)字化的趨勢,未來加密算法將會持續(xù)深入地運用到銀行業(yè)的系統(tǒng)中,技術方向也將朝著分布式架構的路線更加深入演進;加密系統(tǒng)的應用運維管理工作將會更加合理,應急工具與監(jiān)控的不斷完善與豐富也將促進系統(tǒng)運維的效率進一步提高,增強運維中心安全運營的保障能力。