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

圖1 數(shù)據(jù)在兩個節(jié)點之間的安全傳輸及存儲過程示意圖
應(yīng)用系統(tǒng)1作為發(fā)送節(jié)點,將待傳輸?shù)臄?shù)據(jù)包進行加密處理形成密文,采用數(shù)字信封技術(shù),對密鑰進行數(shù)字信封打包,并對密文和加密密鑰附上數(shù)字簽名,發(fā)送給應(yīng)用系統(tǒng)2。應(yīng)用系統(tǒng)2則需要對收到的數(shù)據(jù)包進行完整性和不可抵賴性檢查,通過簽名驗證、數(shù)字信封拆解、重要信息解密并重新加密之后,將重新加密后的數(shù)據(jù)存儲于數(shù)據(jù)庫中,以備應(yīng)用系統(tǒng)2繼續(xù)使用。
在以上實現(xiàn)過程中,發(fā)送節(jié)點的簽名驗簽服務(wù)器需要配置接收節(jié)點的公鑰,接收節(jié)點的簽名驗簽服務(wù)器需要配置發(fā)送節(jié)點的公鑰。
本文闡述的應(yīng)用數(shù)據(jù)安全解決方案重點在于借助簽名驗簽服務(wù)器提供的數(shù)字簽名技術(shù),保證了存儲和傳輸數(shù)據(jù)的完整性和保密性;同時對于重要數(shù)據(jù)的加密,沒有采用固定的密碼,而是調(diào)用簽名驗簽服務(wù)器的接口生成的隨機碼;為了保證發(fā)送節(jié)點和接收節(jié)點的應(yīng)用可以正常使用,多次對傳輸?shù)臄?shù)據(jù)進行重新解加密處理。通過這三點總結(jié),可以比較清楚地看出來,在保障數(shù)據(jù)安全的同時,會增加信息系統(tǒng)實現(xiàn)的復(fù)雜度,對一些功能的實現(xiàn)方式造成一定的約束,以及影響系統(tǒng)的性能。建議在系統(tǒng)設(shè)計時結(jié)合信息安全要求,對具體做什么樣的安全設(shè)計、需要保障什么樣的系統(tǒng)功能、達到什么樣的性能標準,尋求找到系統(tǒng)安全設(shè)計的平衡點。
在數(shù)據(jù)安全保障方面,除了本文討論的信息系統(tǒng)本身的設(shè)計實現(xiàn)上可以采用的一些數(shù)據(jù)加解密手段和安全保障措施以外,還涉及制度安全、網(wǎng)絡(luò)安全、硬件及物理環(huán)境安全等方面,數(shù)據(jù)安全是一個完整的安全體系,需要各方進行充分配合,協(xié)同建設(shè)。