
摘要:微信小程序作為依附于微信框架上的應用,在微信上有著廣闊的應用前景及優質用戶,流量巨大,方便快捷,但也存在著源代碼泄露、用戶信息泄露等安全問題,只有從根本上解決這些問題,才能讓用戶對微信小程序用得舒心,用得放心。文章通過對微信小程序框架的概述,淺析微信小程序現有的安全問題,提出用RSA算法進行同態加密的創新性想法,探討RSA加密算法優點,對微信小程序的安全問題提出相應的解決辦法。
關鍵詞:微信小程序;安全性分析;加密算法
doi:10.3969/J.ISSN.1672-7274.2023.05.025
中圖分類號:TP 311.56" " " " " " " "文獻標示碼:A" " " " " " " "文章編碼:1672-7274(2023)05-00-03
Abstract: As an application attached to the WeChat framework, WeChat applets have broad application prospects and high-quality users on WeChat, with huge traffic and convenience, but there are also security problems such as source code disclosure and user information disclosure. Only by fundamentally solving these problems can users use WeChat applets comfortably and safely. This paper summarizes the framework of WeChat applets, analyzes the existing security problems of WeChat applets, puts forward the innovative idea of homomorphic encryption using RSA algorithm, discusses the advantages of RSA encryption algorithm, and puts forward corresponding solutions to the security problems of WeChat applets.
Key words: WeChat applet; safety analysis; encryption algorithm
1" 微信小程序基本框架
微信小程序采用JavaSBridge框架搭建,其較為“特殊”開發語言和文件基于微信的開發商騰訊公司自主定義的WXML/WXSS和JS開發語言標準。其中,微信小程序的視圖層和邏輯層由兩個運行在WebView的線程組成。從本質上來講,微信小程序這種架構設計依舊依賴于WebView,但首屏渲染模式在雙線程的管理模式下進行了加速,避免了單線程下JS運行造成頁面的加載和渲染阻塞。
1.1 視圖層View
視圖層由WXML與WXSS編寫,通過組件進行展示。WXML(WeiXin Markup Language,微信標記語言)是一套用來描述網頁的架構,其以框架作為基礎設計而成的標簽語言與XML格式相似,并支持數據綁定、條件渲染、列表渲染、自定義模板、事件回調以及外部引用等;WXSS(WeiXin Style Sheet,微信樣式表)用于對WXML組件樣式的描述,類似于網頁開發的CSS,組件為框架所提供的系列基礎模塊和視圖層基本構成單位,其包含了表單組件、導航、地圖和媒體組件等常見要素[1-2]。
1.2 邏輯層App Service
微信小程序框架中邏輯層通過JavaScript引擎來開發,其數據傳輸的主要流程如下:首先,視圖層要接收一個來自邏輯層已經處理加載完畢事件的數據;其次,在頁面上顯示給邏輯層的數據,而邏輯層則會把從視圖層中接收到數據的加載事件反饋到后臺,便于用戶調用。微信小程序框架下極其豐富的微信原生API,不僅能夠便捷地調取微信所提供的由用戶授予許可的用戶頭像、昵稱和本地存儲等信息,還能夠實現微信掃一掃、微信支付等功能,其強大的模塊化功能,使得每一個頁面都具有一個獨立作用域。
2" 微信小程序應用前景
微信小程序自問世之初就被寄予了“方便、快捷、即開即用、用完就走、不需要下載冗余App、降低內存占用”等殷切期望。“粵省事”微信小程序作為國內第一個整合各個部門民生服務的移動平臺,自2018年5月推出以來,已經整合各級部門高頻政務服務事項400余件,實名注冊用戶規模已經突破1.64億,日均辦理業務規模已超4億件,日在線訪問用戶規模已超過1 500萬人次。“粵省事”已發展成為目前全國用戶群體規模最大,業務集成度、服務便捷度和應用活躍度等均雄居國內市場之首的移動政務服務應用。在廣東省平均4人就會有1人在使用“粵省事”,很顯然,在當前這個講究便捷的時代,越來越多的微信小程序逐漸走進平常百姓的生活中,有著極大的發展前景以及廣泛的應用場景。
3" 微信小程序存在的問題及解決辦法
3.1 Web接口漏洞
如今微信小程序用戶與日俱增,同時也存在著一些漏洞。第一,XSS攻擊,是指惡意攻擊者將腳本代碼插入網頁當中,當用戶瀏覽網頁時,會自動執行網頁中嵌入的腳本代碼,從而對用戶進行惡意攻擊。第二,CSRF攻擊,是指使用戶對當前登錄的Web應用程序執行非本意操作的攻擊方法。第三,各類越權漏洞,指服務器對客戶端的數據操作請求過度信任,從而忽略了判斷用戶操作的權限,允許該用戶修改相關參數,使其可以使用添加、刪除、檢查和修改其他賬戶的功能,從而導致越權漏洞。
3.2 業務邏輯漏洞
業務邏輯漏洞是指后端服務本身的業務邏輯漏洞。例如,任意修改訂單金額、手機驗證碼回傳、檢索密碼設計缺陷。
3.3 微信業務方面的解決辦法
微信也在查補漏洞產生上做出了努力,微信小程序不同于H5,重復提交需要重復審核,這在一定程度上減少了惡意小程序攻擊的機會。傳統的App直接運行在安卓系統或者IOS系統上,而微信小程序依附于微信的基本框架,相當于手機上的一個應用,攻擊微信小程序需要透過微信框架,因此攻擊微信小程序的難度巨大,同時開發微信的騰訊公司作為中國高新技術中的龍頭,在處理公司皇冠級產品微信時,不敢有任何疏漏,在小程序開發、測試、上線等步驟中設置了許多規定,以提高小程序的安全性。2001年4月,騰訊安全應急中心在微信官方賬號上正式宣布,騰訊將開放可疑黑灰產微信賬號反饋入口,且反饋入口將永久免費使用。騰訊將積極配合第三方平臺檢測風險信息,協調安全問題,保護用戶財產和人身安全。小程序只能在微信生態下運行,不能向個人開放(需要企業認證)。此外,小程序不允許跳轉到外部網站。小程序發布前,官方會對小程序進行審核,審核通過后才能上線。可見,騰訊在確保微信小程序的安全性上也下了很大的功夫。
4" 算法方面的解決方案
4.1 RSA算法介紹
RSA安全系數高,使用場景豐富,如網上銀行用戶身份驗證、網上交易加密連接、智能手機、各種信用卡使用的數字證書以及存儲卡的驗證功能芯片等,大部分都是采用RSA技術進行加密。RSA算法作為一種不對稱加密算法,不僅適用于數據加密,還能用于數字簽名,自1977年以來,經歷了各種各樣的測試,仍未被完全攻破,被譽為地球上最安全的加密算法,更因其操作方便和容易理解,被許多大公司采用[3-4]。
4.2 RSA算法的應用
4.2.1 實現數字簽名
實現身份認證作為數字簽名的重要手段,不僅可以確定簽名者唯一的信息標識,還可以通過第三方驗證,避免爭端的出現,例如,使用報文摘要的數字簽名技術,信息發送方截取報文摘要用作自己的私鑰加密,將加密摘要和報文同時發送給信息接收方[5]。
4.2.2 應用于數字簽名技術中的RSA算法
通過RSA私鑰和消息進行輸入,數據分組和簽名生成輸出。通過RSA算法對其進行改進,可以縮短數字簽名的時間,同時在一定程度上提高了信息的安全性[6]。
4.2.3 加密系統模型設計
隨著密碼技術的不斷進步,各種密碼技術的應用越來越廣泛,應用場景也越來越豐富,但單純采用同一種信息加密技術無法保證用戶大量數據在傳輸過程中能夠被完整接收。在保證網絡信息安全的前提下,既要對已有的RSA算法進行改進,又要將對稱加密方式和公開密鑰加密方式同時用于保護用戶的數據安全,設計出更加難以破解的加密模式。在這種思路下,信息安全保密系統分為登錄、加密、解密三大模塊。加密和解密模塊分別提供IDEA、RSA、Md5,以及綜合加密和解密功能[7]。
4.2.4 系統通信協議設計
在數據傳輸過程中,要制定好數據包格式、總長度、類型、加密的對稱會話密碼及加密報文等。規范好各個字段的順序,接收方則按設定好的順序進行解密,并驗證信息傳輸方的身份和信息的完整性。
4.3 RSA算法的實現
RSA公鑰密碼的基本原理是數論歐拉定理,其大數因子分解困難是保證RSA加密安全的重要因素[8]。下面是一個詳細的加密-解密算法的流程。
(1)隨機選擇兩個素數p和q,并且保密。
(2)通過計算p和q的乘積n,并將n獨立分開。
(3)通過計算(p-1)與(q-1)進行乘積運算,得出其結果為φ(n),并保密φ(n)這一結果。
(4)從整數中隨機抽取一個滿足大于1且小于φ(n),與φ(n)互為質數這兩個條件,命名為e的整數并公開e這一整數作為公鑰。
(5)根據e*d=1mod(φ(n))即d*e與1關于φ(n)同余求出d,并對d進行保密。
(6)設明文為A且小于n,密文為B,則加密算法:B=Aemodn
(7)解密算法則為A = Bdmodn。
(8)圖1為RSA加密算法具體流程圖。
由上述演算方法可知,對于RSA算法來說,加密密鑰是Ke=lt;n,egt;,而解密密鑰與多數的加密算法是相同的,它是不公開的。
(注:在本文中,φ(n)表達的含義是一種數論函數,也稱歐拉函數。在演示RSA算法的過程中,在小于n的一個正整數中,n的互素數的數目被表示為φ(n)。)
5" 同態加密
在云計算或者外包計算方面,開發人員往往會將大量的用戶數據外包到云服務供應商進行計算,可以充分利用云服務供應商的龐大計算資源,實現數據存儲、托管和處理等多種目的,從而節約成本。但將明文數據交給云服務器,又不通過任何的加密處理,這無異于把數據放在一個未上鎖的箱子里,毫無安全性可言,我們可以先對用戶所產生的大量數據進行加密處理再上傳至云服務提供商。傳統的算法是將密文掌握在開發者手里,這樣也導致了無法對用戶數直接計算,所以如何在保證數據的保密性的同時,又能夠兼顧對用戶數據進行計算,成了一個難題,而時同態加密這一方法便可以很好地解決這方面問題[9-10]。
6" 結束語
微信小程序因方便快捷并且實用性強而深受大眾歡迎,具有極高的用戶流量,因此,保護好用戶數據安全對于微信小程序來說非常重要。本文通過對微信小程序安全性的探討,介紹了目前微信小程序的基本框架結構。騰訊公司微信開發團隊對于微信小程序的相關安全措施,主要依靠微信官方團隊提供的源碼上線審核等一系列措施進行技術防護,還有開發者對數據庫信息調用接口,以及在各個有信息傳輸的位置采取一些算法的加密來維護安全。
參考文獻
[1] 馬濤.安卓平臺的小程序安全性研究與實現[D].北京:北京郵電大"學,2001.
[2] 郭晟南,蔣學勤.基于RSA信息安全加密系統的研究與實現[J].網絡安全技術與應用,2018(1):35,38.
[3] 楊建才.對計算機網絡安全中應用信息加密技術的研究[J].計算機光盤軟件與應用,2001(3):18-19.
[4] 王佳煜.有關信息加密技術在計算機網絡安全中的應用研究[J].計算機光盤軟件與應用,2001(3):22-23.
[5] 陳智罡,王箭,宋新霞.全同態加密研究[J].計算機應用研究,2014(6):1624-1631.
[6] 紀淑君,單磊敬,趙振華.信息加密技術在計算機網絡安全中的應用探討[J].中國新通信,2019,21(16):144.
[7] 徐康庭.網絡安全與網絡信息加密技術分析[J].數字通信世界,2018(2):102.
[8] 常曉偉.計算機網絡安全應用信息加密技術在石油行業中的運用[J].科技創新與應用,2016(24):116.
[9] 代嘉翊.新時代背景下網絡安全與網絡信息加密技術分析[J].電子元器件與信息技術,2022,6(2):238-240.
[10] 汪茹洋,戴祥華.關于網絡信息加密技術的運用研究[J].中國信息化,2018(6):66-67.