柯龍 嚴碧波
摘要:隨著電子辦公的普及與電子商務的應用,數(shù)據(jù)安全問題頻繁發(fā)生,人們對數(shù)據(jù)安全的要求也越來越高。該文從電子辦公中常見的安全問題出發(fā),采用PKI密碼體系,使用數(shù)字證書確保用戶唯一身份,JWT用作攜帶和傳遞用戶身份信息,將簽名驗證和MAC一同使用保證數(shù)據(jù)完整性和真實性。在登錄安全和傳輸安全這兩個方面,提出一種可靠性高與安全性兼顧的方法,能夠有效保障電子辦公中的數(shù)據(jù)安全。
關鍵詞:PKI;JWT;MAC;數(shù)據(jù)安全
中圖分類號:TP309.2? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)36-0073-02
開放科學(資源服務)標識碼(OSID):
Application of Electronic Office Data Security
KE Long, YAN Bi-bo
(School of Electronic Information, Yangtze University, Jingzhou 434023, China)
Abstract: With the popularization of electronic office and the application of electronic commerce, data security problems occur frequently, people's requirements for data security are increasingly high. Based on the common security problems in electronic office, this paper adopts PKI password system and uses digital certificates to ensure the unique identity of users. JWT is used to carry and transmit user identity information. Signature verification and MAC are used together to ensure the integrity and authenticity of data. In the two aspects of login security and transmission security, a method with high reliability and security is proposed, which can effectively guarantee the data security in electronic office.
Key words: PKI; JWT;MAC; data security
由于疫情的影響,越來越多公司選擇線上辦公,電子商務領域的擴張和各種商務的運營方式蓬勃發(fā)展,而電子商務所包含的線上頻繁交易和各種認證手續(xù)包含著大量的用戶信息,由于網(wǎng)絡具有開放性和匿名性等特點,非法用戶通過一些技術手段假冒他人身份進行網(wǎng)上欺詐的門檻越來越低,從而對合法用戶和系統(tǒng)造成極大的危害。
身份認證是確保認證對象真實和有效的過程,被認為是當今網(wǎng)上交易的基礎。在公鑰基礎設施(Public Key Infrastructure,縮寫為PKI [1])體系中,認證中心(Certification Authority,縮寫為CA)為系統(tǒng)內(nèi)每個合法用戶辦一個網(wǎng)上身份認證,即網(wǎng)絡身份證,從而減少匿名帶來的危害。
在交易過程中,不僅要保證交易對象是可信賴的,也要確保交易雙方接收到的數(shù)據(jù)與原數(shù)據(jù)完全一致,否則交易將存在安全問題。通過數(shù)字摘要消息認證碼(Message authentication code,縮寫為MAC[2])的特點,其中任何一位的改變都會產(chǎn)生截然不同的數(shù)字摘要,從而保證數(shù)據(jù)的完整性。
交易中和交易完成也要防止抵賴和否認事實的發(fā)生。在PKI系統(tǒng)中,不可抵賴性來源于數(shù)字簽名[3]。由于用戶進行數(shù)字簽名的時候,簽名私鑰只能被簽名者自己掌握,系統(tǒng)中的其他人不能做出這樣的簽名,因此,在私鑰安全的假設下簽名者就不能否認自己做出的簽名。保護簽名私鑰的安全性是不可抵賴問題[4]的基礎。
1 登錄安全保障
登錄是一個系統(tǒng)的重要功能,登錄成功就意味著擁有一個系統(tǒng)的相關使用權限,一個安全的登錄流程是十分有必要的。PKI的身份認證可以很好地保證身份信息無法被竊取,而且也可以用作敏感信息加密。使用JWT[5]不僅可以做登錄權限控制,還能減少數(shù)據(jù)庫頻繁查詢次數(shù)減輕服務器壓力。
1.1 PKI體系
數(shù)字證書是指在互聯(lián)網(wǎng)通訊中標志通訊各方身份信息的一個數(shù)字認證,人們可以在網(wǎng)上用它來識別對方的身份。數(shù)字證書從本質(zhì)上來說是一種電子文檔,是由CA中心所頒發(fā)的一種較為權威與公正的證書。
通過數(shù)字證書,CA可以對互聯(lián)網(wǎng)上所傳輸?shù)母鞣N信息進行加密、解密、數(shù)字簽名與簽名認證等各種處理,同時也能保障在數(shù)字傳輸?shù)倪^程中不被不法分子所侵入。密鑰管理中心(Key Management Center,縮寫為KMC)是為了解決私鑰的備份與恢復的問題管理辦法,通過CA和KMC可以從密鑰的生成、使用、最后銷毀提供了一系列的解決辦法,確保密鑰是由真正的實體用戶掌控,提供唯一的身份標識。
1.2 JWT
JSON Web Token(縮寫為JWT)是目前最流行的跨域身份驗證解決方案。基于Token的鑒別機制類似于HTTP協(xié)議也是無狀態(tài)的,它不需要在服務端去保留用戶的認證信息或會話信息。當?shù)谝淮蔚卿浐?,服務器生成一個Token便將此Token返回給客戶端,以后客戶端只需帶上這個Token前來請求數(shù)據(jù)即可,無須再次帶上用戶名和密碼。
JWT是由三部分構(gòu)成,將這三段信息文本用“.”連接構(gòu)成了JWT字符串。
JWT頭由兩部分組成:聲明類型、聲明加密的算法。
JWT的第二部分是有效載荷,其中包含三種聲明:標準中注冊的聲明、公共聲明、私有聲明,主要是JWT的簽發(fā)信息,和用戶信息。
JWT第三部分是前兩部分以“.”連接,使用secret進行簽名加密形成,secret相當于一次簽名,不可泄露。
2 數(shù)據(jù)傳輸安全保障
信息在網(wǎng)絡傳輸過程中需要保證數(shù)據(jù)的安全,常用做法是對數(shù)據(jù)進行加密。需要注意的是任何的加密方法安全性取決于密鑰的長度,以及攻破密文所需的計算量。采用1024位的RSA加密能有效防止敏感信息的竊取,而一段消息進行MAC處理將無法逆轉(zhuǎn)能夠確保數(shù)據(jù)的完整性。
2.1 數(shù)據(jù)防竊取
RSA加密使用一對“私鑰SK-公鑰PK”,用私鑰加密的內(nèi)容只有對應公鑰才能解開,反之亦然。非對稱加密的一個公鑰,有且只有一個對應的私鑰;而且公鑰是公開的,加密算法E和解密算法D都是公開的。
發(fā)送者A用B的公鑰PKB通過加密E運算對明文X加密得到密文Y然后發(fā)送給B。
B用自己的私鑰SKB通過解密D運算進行解密,恢復出明文,即
而且有一點,用公鑰加密的消息不能通過公鑰解密
對一段明文不管是先加密E再解密D和先進行解密D再進行加密E能得到一樣的結(jié)果,這一點將用于簽名中。
每次數(shù)據(jù)傳輸只要將敏感信息用對方的公鑰進行加密,即使數(shù)據(jù)被竊取,也無法獲得內(nèi)容,就能達到防竊取的目的。
2.2 數(shù)據(jù)完整性
消息認證碼MAC,常用算法有MD5、SHA-1等。消息驗證碼的好處就是能將較長的數(shù)據(jù)經(jīng)過摘要算法后能得到很短的消息摘要H。
以MD5為例,一段消息X經(jīng)過MD5處理生成消息摘要H,由于MD5是一種不可逆算法,意思是沒有逆MD5運算把摘要H無法還原成原來的消息。
但是消息X如果過短或者過于簡單,可通過彩虹表或沖撞攻擊導致不安全的問題,現(xiàn)在常用做法有加鹽(salt)和迭代運算的方法:
加鹽就是在原來的消息上人為添加一段字符串與消息X一同進行摘要,迭代運算就是經(jīng)過多次的Hash運算。這兩種方法都可以有效防止暴力破解的方法,而且在不影響用戶體驗時多次迭代能極大提升破解所需的資源。本文采用加鹽的方法去提升安全性能。
將上述兩種方法結(jié)合,在數(shù)據(jù)傳輸前,一份進行MD5摘要然后進行私鑰簽名,另一份用對方公鑰加密,組合后傳輸就可保證數(shù)據(jù)無法被竊取。傳輸?shù)椒掌鞫撕笥眉s定好的MD5對已解密的密文進行MD5摘要,再和解密摘要進行對比就可保證數(shù)據(jù)完整。
3 實驗測試
本文使用IDEA開發(fā)工具,JDK1.8開發(fā)環(huán)境,MySQL數(shù)據(jù)庫,swagger作為測試API結(jié)果顯示。
1)驗證碼測試,需求兩個參數(shù):簽名后的驗證碼和公鑰,提交到服務器判斷。
響應結(jié)果會將簽名的驗證碼,使用發(fā)過來的公鑰進行驗證,并和存入session的數(shù)據(jù)進行對比,然后返回響應數(shù)據(jù)。
2)測試Token請求:需求用戶名和密碼,密碼經(jīng)過MD5處理,后臺由實現(xiàn)類查詢數(shù)據(jù)庫對比密碼,正確則簽發(fā)Token并封裝。
響應返回結(jié)果:
4結(jié)束語
本文通過現(xiàn)有的公鑰密碼體系與電子辦公這種強調(diào)身份的工作進行結(jié)合,提供一種更加安全可靠方案。通過使用非對稱加密,混合摘要加密的方法,并與傳統(tǒng)的登錄方式進行結(jié)合,能做到網(wǎng)絡身份與真實個人對應,有效防止網(wǎng)絡匿名危害,使用Token還能提升用戶的操作便利性,減少服務器檢索次數(shù)的優(yōu)點,并且在數(shù)據(jù)傳輸方面也能做到不泄露,無法篡改且數(shù)據(jù)完整。
參考文獻:
[1] 劉知貴,楊立春,蒲潔,等.基于PKI技術的數(shù)字簽名身份認證系統(tǒng)[J].計算機應用研究,2004,21(9):158-160.
[2] 徐津,溫巧燕,王大印.一種基于Hash函數(shù)和分組密碼的消息認證碼[J].計算機學報,2015,38(4):793-803.
[3] 高朝勤.信息系統(tǒng)等級保護中的多級安全技術研究[D].北京:北京工業(yè)大學,2012.
[4] 郭丞乾,蔡權偉,林璟鏘,等.單點登錄協(xié)議實現(xiàn)的安全分析[J].信息安全研究,2019,5(1):59-67.
[5] 范展源,羅福強.JWT認證技術及其在WEB中的應用[J].數(shù)字技術與應用,2016(2):114.
【通聯(lián)編輯:代影】