黃劍光
(中國軟件與技術服務股份有限公司 北京 100000)
近年來,隨著科技信息的發(fā)展,研究人員發(fā)現各類信息系統(tǒng)的建設方越來越關注信息系統(tǒng)的數據安全,在制定建設目標時往往會將數據安全要求單獨列出,要求承建方在進行需求分析時,要結合應用系統(tǒng)擬定級情況和威脅分析結果,對應用系統(tǒng)的安全功能進行分析定義,形成類似“安全功能需求分析”的獨立交付物,并要求將數據安全的需求具體落實到系統(tǒng)建設中,可見在當前以及未來數據安全在信息系統(tǒng)建設中的重要地位。
值得關注的是,數據安全涉及范圍非常廣,需要從制度建設、硬件物理環(huán)境建設、網絡環(huán)境建設、軟件建設等多個方面全方位推進,軟件出現安全漏洞,會造成系統(tǒng)被攻擊,信息被泄露;軟件做得好,管理被疏忽,同樣會造成信息被泄露,所以無論哪一個環(huán)節(jié)出現問題,都會導致危害數據安全的事件發(fā)生,造成嚴重后果。
軟件建設方面保證系統(tǒng)安全,同樣也涉及很多環(huán)節(jié),例如應用系統(tǒng)采用符合等級保護要求的身份鑒別技術,要具備登錄控制功能、訪問控制功能、對系統(tǒng)重要操作和安全事件具有審計功能;要求系統(tǒng)具有抗抵賴性、容錯性、保證數據安全性、保密性,要充分考慮數據安全等。
GB/T 22239—2019《信息安全技術網絡安全等級保護基本要求》第三級安全要求明確了對密碼技術的使用要求,例如:一是在安全通信網絡方面明確應采用校驗技術或密碼技術保證通信過程中數據的完整性,應采用密碼技術保證通信過程中數據的保密性;二是在安全計算方面明確應采用校驗技術或密碼技術保證重要數據在傳輸和存儲過程中數據的完整性,明確應采用密碼技術保證重要數據在傳輸和存儲過程中數據的保密性[1]。
上述內容對信息系統(tǒng)安全在保證數據完整性和數據保密性方面,提出了目標性要求,均涉及數據傳輸安全和數據存儲安全兩個方面。要滿足等級保護要求,應用系統(tǒng)需要采用加密或其他有效措施實現系統(tǒng)重要數據在傳輸、存儲的過程中,對其進行加密處理、對傳輸的數據文件、會話過程進行加密保護,確保數據在傳輸和存儲過程中的保密性和防篡改性,加強系統(tǒng)的抗抵賴性,提高安全防范水平。
(1)對稱加密。是指加解密過程中使用的密鑰是相同的或者是可以相互推導出來的,大多數對稱加密算法中加解密密鑰是相同的。以加解密密鑰相同為例,數據發(fā)送方將明文數據通過加密算法處理后變成復雜的密文發(fā)送出去,接收方收到密文后,使用相同的加密密鑰和相同算法的逆算法對密文進行解密,將密文恢復成可讀的明文數據[2-3]。
(2)非對稱加密。數據發(fā)送方加密和接收方解密使用的是兩個完全不同的密鑰,其中對外公開的是公鑰,需要保密的是私鑰。公鑰和私鑰是成對出現的,如果用公鑰對數據進行加密,那么只有用對應的私鑰才能解密;如果用私鑰對數據進行加密,那么只有用對應的公鑰才能解密。
數字簽名是非對稱加密的一種應用場景,發(fā)送方采用非對稱加密算法使用自己的私鑰產生一段無法被偽造的字串,作為對發(fā)送方發(fā)送信息的真實有效的證明,用以保證發(fā)送信息的完整性、簽名者身份的真實性和簽名行為的不可否認性。
簽名驗證是數據接收方接收到已做數字簽名的信息后,需要進行來源確認,以及確認信息是否在傳輸途中被篡改過。接收方用持有的發(fā)送方的公鑰對簽名進行解密,得到摘要,再使用與發(fā)送方同樣的算法對信息計算摘要值,再與解密得到的摘要進行比對,如果一致則信息未被篡改即簽名驗證通過。
數據發(fā)送方和接收方在網絡中傳遞公鑰時,需要引入一個公正的第三方,當一方要發(fā)布公鑰時,它會將自身的身份信息和公鑰提交給這個第三方,第三方對其身份進行證實,如果沒有問題,則將其信息和公鑰打包成為證書,即數字證書。當另一方需要獲取公鑰時,只需要獲得這個證書,再從中提取出公鑰。
數字信封技術可以保證信息的完整性,確保只有特定的接收方才能查看到發(fā)送的信息。數字信封技術包括打包和拆解兩個過程,數字信封打包是指發(fā)送方使用接收方的公鑰將密鑰進行加密的過程,數字信封拆解是指接收方用自己的私鑰解密加密信息的密鑰,從而解密信息的過程。
本文示例的數據安全解決方案將闡述如何在安全計算方面使用密碼技術保證信息系統(tǒng)的數據完整性和數據保密性。接下來對數據完整性和數據保密性的應用實現進行分析[4-5]。
數據完整性是指保持數據在傳輸、存儲和處理的過程中,信息不被篡改、不被丟失,即數據在其生命周期內保持一致性、正確性、可靠性。
在數據存儲安全上,以結構化數據存儲為例,結構化數據存儲于數據庫,對于其中的重要信息需要進行加密存儲,可以采用的加密方式不是唯一的,需要結合應用場景進行確定。例如:(1)對于保存后利用率非常低的重要信息,可以用雜湊算法例如國密算法SM3和私鑰實現對其進行數字簽名,然后將簽名后的加密信息存儲于數據庫中,當需要檢測這些重要信息是否被篡改時,可以通過驗簽操作檢查數據完整性方面的問題。(2)對于保存后需要時常被利用的重要信息,使用數字簽名技術需要頻繁地對重要信息簽名、驗簽,顯然對于系統(tǒng)的性能和實現的復雜程度方面都有比較大的影響,這種情況下,為了方便對數據的重復利用,可以采用對稱加密方式如國密算法SM4先將重要信息進行加密處理,再對密鑰進行加密管理,如用國密算法SM2和公鑰對密鑰進行加密存儲。同時鑒于現在數據庫的安全性機制都比較健全,在項目中通常還會合理啟用數據庫安全策略,在這種情況下,要非法入侵數據庫對數據進行篡改難度非常大。一般來說,信息系統(tǒng)在應用層采用合適的加密方式處理重要數據,加之數據庫層啟用合適的數據庫安全策略,基本可以達到數據完整性對重要數據存儲的要求。
在傳輸安全上,發(fā)送方為了讓接收方能夠正確查看到發(fā)送的明文信息,需要把密文和加密密鑰同時發(fā)給接收方,接收方為了確保接收信息的完整性和不可否認性,需要對收到的信息進行驗證,判斷其在傳輸過程中是否被篡改過、是否是發(fā)送方約定發(fā)送的信息等等。為了滿足這個需求,一般來說,發(fā)送方通常會用私鑰對傳輸信息進行數字簽名,如采用國密算法SM3生成可以用來驗證數據傳輸完整性的簽名字串。接收方進行簽名驗證工作,驗簽通過則說明信息在傳輸過程中未被進行篡改,保證了信息的完整性。由于前述有對數字簽名和簽名驗證的概念介紹,不再贅述。
數據保密性一般是指保證信息只可讓被授權訪問的特定用戶訪問。
在數據存儲保密性方面,應用系統(tǒng)可以通過不同的方式來實現,例如:(1)通過建立應用系統(tǒng)的訪問控制策略來實現,規(guī)定用戶、用戶的功能訪問范圍以及用戶的數據訪問范圍。數據訪問權限的設定上,應用系統(tǒng)的要求也多種多樣,例如根據用戶級別、屬地等特性限定用戶可以訪問的數據范圍,設定好訪問策略后,應用系統(tǒng)即可以面向不同的用戶展示不同的內容。這種情況下,防止篡改訪問策略則需被尤為關注,需要對存儲訪問策略信息的表或者文件中的重要信息進行加密處理。(2)應用系統(tǒng)常常通過使用密碼技術對數據進行加密處理來實現數據存儲的保密性,這一點在“數據完整性應用分析”一節(jié)已有闡述,這樣一來,即便對于有數據庫訪問權限而沒有特定數據訪問權限的訪問者來說,這些加密后的數據依然是安全的,但是需要結合具體的應用場景合理選擇密碼技術。
數據傳輸的保密性要求必須為特定的接收方才可以接收和查看信息。在數據點對點的發(fā)送過程中,發(fā)送方需要將密文和加密密鑰一起發(fā)送給接收方,而加密密鑰的密鑰只有特定的接收方才持有,這樣就保證數據傳輸的保密性。在公鑰密碼體制中,公鑰是用于對外公開的,而私鑰只有自己才持有,利用這個特性,通常發(fā)送方會使用數字信封技術,用接收方的公鑰通過SM2算法加密用于信息加密的密鑰,以此保證只有接收方才可以解密傳輸的信息。
前述內容中多次闡述對密鑰需要進行加密處理,無論是用于加密信息的密鑰、還是用于加密密鑰的密鑰都要進行妥善安全的管理。管理措施包括不要固定密鑰、不能以明文形式存儲和引用密鑰、密鑰不要與加密實體存儲于同一臺服務器上、密鑰須存儲于一個安全的環(huán)境等。
(1)兩個網絡環(huán)境。網絡1和網絡2,網絡1與網絡2之間通過安全通道連通。
(2)兩個應用系統(tǒng)。應用系統(tǒng)1和應用系統(tǒng)2,應用系統(tǒng)1與其配套的簽名驗簽服務器部署于網絡1,應用系統(tǒng)2與其配套的簽名驗簽服務器部署于網絡2。應用系統(tǒng)1和應用系統(tǒng)2之間通過前述網絡環(huán)境進行通信。
(3)業(yè)務場景要求。應用系統(tǒng)1需將數據包安全地發(fā)送至應用系統(tǒng)2,應用系統(tǒng)2將正確的數據包下載至本地,繼續(xù)利用。在數據存儲方面,要求兩個應用系統(tǒng)均對重要信息進行加密存儲,數據包落地在不同應用后,均需保持數據可用。在發(fā)送和下載過程中需要充分考慮保持數據的真實性、完整性和不可抵賴性。
簽名驗簽服務器能夠對各類電子信息數據、電子文檔等提供基于數字證書的數字簽名服務,并可以驗證簽名真實性和有效性。本方案中引入簽名驗簽服務器,方案中采用的一系列的加解密保護措施均基于配套的簽名驗簽服務器實現,需要借助它完成對數據在傳輸和存儲過程中的數據加解密、數字信封打包和信封拆解、數字簽名和簽名驗證等操作。
數據是信息系統(tǒng)中的核心資產,對重要信息加密是數據安全保護的一種主要機制。本方案中的應用系統(tǒng)中涉及的重要信息,在數據庫層需要進行加密存儲,同時為了解決密碼固定帶來的風險,使用簽名驗簽服務器提供的接口生成隨機串碼作為信息加密的密碼,用該密碼對重要信息進行對稱加密,同時對隨機串碼進行非對稱加密。
4.3.1 重要信息加密存儲方式說明
方案中對重要信息加密的過程為首先調用簽名驗簽服務器提供的接口隨機獲取多個密鑰,通過對稱SM4加密算法,對重要信息項分別進行對稱加密存儲。對密鑰的保護措施為使用本節(jié)點公鑰加密后存儲于數據庫中。
4.3.2 重要信息查詢處理方式說明
應用系統(tǒng)對重要信息加密存儲,在增強數據存儲安全性的同時,也限制了系統(tǒng)中一些功能的實現機制,例如查詢條件涉及加密字段時,均需要進行精確查詢。功能實現流程是應用系統(tǒng)取出重要字段對應的密鑰密文,使用本節(jié)點私鑰解密,得到密鑰明文,再將查詢條件的值用此密鑰進行SM4加密處理,然后通過密文進行數據庫字段精確查詢比對,從而檢索出符合條件的記錄。
本方案涉及發(fā)送和接收兩個節(jié)點應用之間的數據傳輸,需要考慮數據如何能夠在不同的系統(tǒng)中被安全、順利地使用,這是設計需要重點解決的問題。方案本身在實現層面復雜度較高,但是基本可以在應用層保證系統(tǒng)的數據安全性要求,達到了如下目標:
(1)各應用系統(tǒng)中數據要加密存儲,保證數據存儲的完整性和保密性。
(2)各應用系統(tǒng)之間數據要加密傳輸,保證數據傳輸的完整性和保密性。
(3)數據在不同節(jié)點的應用中落地后,需要先解密再重新按照本節(jié)點的密鑰進行重新加密,以保證數據在不同節(jié)點均保持其可用性。
實現過程如圖1所示。
圖1 數據在兩個節(jié)點之間的安全傳輸及存儲過程示意圖
應用系統(tǒng)1作為發(fā)送節(jié)點,將待傳輸的數據包進行加密處理形成密文,采用數字信封技術,對密鑰進行數字信封打包,并對密文和加密密鑰附上數字簽名,發(fā)送給應用系統(tǒng)2。應用系統(tǒng)2則需要對收到的數據包進行完整性和不可抵賴性檢查,通過簽名驗證、數字信封拆解、重要信息解密并重新加密之后,將重新加密后的數據存儲于數據庫中,以備應用系統(tǒng)2繼續(xù)使用。
在以上實現過程中,發(fā)送節(jié)點的簽名驗簽服務器需要配置接收節(jié)點的公鑰,接收節(jié)點的簽名驗簽服務器需要配置發(fā)送節(jié)點的公鑰。
本文闡述的應用數據安全解決方案重點在于借助簽名驗簽服務器提供的數字簽名技術,保證了存儲和傳輸數據的完整性和保密性;同時對于重要數據的加密,沒有采用固定的密碼,而是調用簽名驗簽服務器的接口生成的隨機碼;為了保證發(fā)送節(jié)點和接收節(jié)點的應用可以正常使用,多次對傳輸的數據進行重新解加密處理。通過這三點總結,可以比較清楚地看出來,在保障數據安全的同時,會增加信息系統(tǒng)實現的復雜度,對一些功能的實現方式造成一定的約束,以及影響系統(tǒng)的性能。建議在系統(tǒng)設計時結合信息安全要求,對具體做什么樣的安全設計、需要保障什么樣的系統(tǒng)功能、達到什么樣的性能標準,尋求找到系統(tǒng)安全設計的平衡點。
在數據安全保障方面,除了本文討論的信息系統(tǒng)本身的設計實現上可以采用的一些數據加解密手段和安全保障措施以外,還涉及制度安全、網絡安全、硬件及物理環(huán)境安全等方面,數據安全是一個完整的安全體系,需要各方進行充分配合,協(xié)同建設。