陳璐 吳鵬 張錦祥 方美玉
摘 要: 以Android系統(tǒng)為平臺,設計開發(fā)了一個青少年防沉迷手機軟件。采用了RSA(Rivest-Shamir-Adleman)非對稱密鑰算法以增加登入驗證的破解難度,并對娛樂軟件和上網總時間加以防沉迷管理。該軟件主要包括軟件前臺、軟件后臺、RSA驗證和防沉迷管理等模塊。
關鍵詞: Android系統(tǒng); 防沉迷管理; 防沉迷軟件; RSA算法
中圖分類號:TP311.1 文獻標志碼:A 文章編號:1006-8228(2016)01-33-03
Design and realization of anti-addiction mobile software based on RSA algorithm
Chen Lu, Wu Peng, Zhang Jinxiang, Fang Meiyu
(School of Science and Technology, Zhejiang International Studies University, Hangzhou, Zhejiang 310012, China)
Abstract: On Android platform, the teen anti-addiction mobile software is developed. The RSA (Rivest-Shamir-Adleman) asymmetric key algorithm is used to increase the difficulty of login validation cracking, and to manage the total time of the entertainment software and the Internet to prevent indulging. The software mainly includes software foreground, software background, RSA verification and anti-addiction management.
Key words: Android; anti-addiction management; anti-addiction software; RSA
0 引言
智能手機已進入人們的生活,手機智能化在給用戶帶來方便和娛樂的同時,也帶來不少問題,如青少年沉迷于手機問題。研究發(fā)現,青少年的手機依賴率達到16.7%-27.4%[1],而手機依賴導致的沉迷會給他們的學習成長帶來各種負面影響[2],因此手機防沉迷問題亟需社會關注。
近年來,我國手機防沉迷軟件的開發(fā)逐步形成了一定市場規(guī)模,主要有由ZIPXIN開發(fā)的“防沉迷手機助手”和博園無線的“寶貝助理”等。這些防沉迷軟件對擺脫手機沉迷現象起到了積極性的作用。但是如何對被監(jiān)控手機進行有效的防沉迷管理是一個關鍵的問題。在這個背景下,我們設計和開發(fā)了一個防沉迷手機軟件,采用RSA加密算法增加軟件登入密碼的破解難度,并對娛樂軟件和上網總時間加以管理。
1 軟件的構架與設計
1.1 開發(fā)技術概述
防沉迷軟件開發(fā)是在Windows系統(tǒng)下采用的eclipse+ADT+SDK模式。開發(fā)環(huán)境采用操作系統(tǒng):Windows 7;開發(fā)語言:Java;開發(fā)工具:eclipse;開發(fā)工具包:Android SDK。軟件采用RSA加密算法設置防沉迷軟件登入密碼和短信設置。
1.2 總體功能
軟件總體功能主要包括軟件前臺、軟件后臺等功能模塊。其中,軟件前臺包括RSA驗證登入、軟件監(jiān)控選擇、時間設置、密碼修改、短信發(fā)送設置等功能;軟件后臺包括開機自啟、線程監(jiān)控、短信控制RSA驗證、防沉迷時間提醒等操作。
各模塊的邏輯關系見圖1。
1.3 系統(tǒng)用例圖
用例圖是由參與者(Actor)、用例(Use Case)以及它們之間的關系構成。在本軟件中,監(jiān)護人是主要參與者。監(jiān)護人通過登入后實現對青少年的手機游戲或上網功能的防沉迷管理。
本防沉迷軟件的用例圖如圖2。
2 RSA算法的應用
2.1 RSA算法原理
本軟件采用RSA[3]加密算法,對軟件密碼和短信發(fā)送進行設置。RSA加密算法是由Rivest、Shamir和Adleman在1978年提出的,并以他們的名字命名的一種典型的公鑰密碼算法[4]。在公鑰密碼算法中,加密秘鑰可以公開作為公鑰,而解密秘鑰作為私鑰。RSA算法的理論基礎是初等數論中的質數分解因子。
2.2 RSA算法流程
RSA算法流程圖如圖3所示。
2.2.1 產生密鑰對過程
⑴ 選擇兩個大素數p和q。
⑵ 計算:n=p×q,(n)=φ(q-1)(q-1)。
⑶ 隨機選擇一整數e,滿足(e,(n))=1,即要求e和φ(n)互素。
⑷ 計算d=e-1(modφ(n))。即d是e在模φ(n)下的乘法逆元。由于e和φ(n)互相為素數,由模運算可知,它的乘法逆元一定存在。
⑸ 以(n,e)作為該加密算法的公鑰,d為私鑰。此時p和q不再需要,它們應該被舍棄掉,但絕不可泄露。
⑹ 加密過程:發(fā)送方把明文m進行加密生成密文C,C=Me(modn),并將密文c發(fā)送。
⑺ 解密過程:接收方收到密文C后,用私鑰d計算m=Cd(modn),從而獲取明文。
2.2.2 RSA算法具體加密解密過程
假設需要加密的明文為m=6882326879666683,用RSA算法對其進行加密。
⑴ 選取兩個素數p=47,q=71,則有p×q=3337。
⑵ 由于加密密鑰e與(p-q)(q-1)=3320互素,隨機選取加密密鑰e=79。
⑶ 按下式計算解密密鑰d。
d=(79φ(3320)-1)mod3320=1019
⑷ 至此,公開e和n,將d保密,丟棄p和q。
⑸ 將待加密消息m=6882326879666683按三位一組分成6組,每組的明文分別為:
m1=688,m2=232,m3=687,m4=966,m5=668,m6=003
第1分組加密為:c1=68879mod3337=1570
其余5組按同樣的操作產生加密后的密文分別為:2756,2091,2276,2423,158。這樣,明文m經加密后變成密文:15702756209122762423158。
⑹ 解密消息時需要用解密密鑰1019進行相同的指數運算。例如對第1組密文的解密結果是:
15701091mod3337=688=m1
同理,明文的其余部分可用同樣的方法恢復出來。
2.3 RSA算法在軟件中的應用
⑴ 監(jiān)護人的軟件登入密碼,增加了破解密碼的難度。
⑵ 進行防沉迷管理的控制短信,由于不同的家長有不同的數字簽名,所以每個人的密鑰各異。
3 防沉迷軟件的實現
3.1 防沉迷管理的總體實現
本軟件的防沉迷管理主要有五個功能:通過RSA加密登入密碼,使破解難度得到提升;不定時對被監(jiān)控手機進行掃描以檢測是否有新的游戲軟件安裝,若有則加入監(jiān)控行列;多線程管理并記錄游戲軟件使用時長;動態(tài)獲取手機游戲信息,并與數據庫中原有的游戲軟件相比較;監(jiān)護人或家長可根據提示短信選擇關閉被監(jiān)控手機上的游戲軟件,若三次以上強行開啟手機游戲則關閉除手機急救撥號外的所有應用程序。
3.2 總體類圖設計
軟件主要為三個類:被監(jiān)控手機、防沉迷軟件、監(jiān)護人手機(見圖4)。被監(jiān)控手機類主要有兩個屬性:游戲軟件編號和瀏覽器使用時長。另外包括提示信息操作等方法。防沉迷軟件類包括密碼和防沉迷兩個屬性;還包括一系列防沉迷管理如設置游戲時長、選擇監(jiān)控軟件、發(fā)送提醒短信等。監(jiān)護人手機類主要有獲取提示信息和發(fā)送禁止短信方法。
本防沉迷軟件的類圖如圖4所示。
3.3 獲取與選擇被監(jiān)控程序清單
第一步,創(chuàng)建SoftwareSearch類用以獲取已安裝的軟件信息。其中,構造用來顯示的列表(List)對象,利用getPackageManager()獲取手機已安裝應用程序包的所在并創(chuàng)建CheckBox復選框用以選擇被監(jiān)控的程序。
第二步,創(chuàng)建onCreateOptionsMenu和MyAdapter類,即創(chuàng)建了一個菜單和適配器的類,其中適配器用于獲取列表中的數據與復選框選中狀況。
第三步,使用之前定義的適配器中的getView方法刷新它所在的ListView,依次獲得每個軟件的包名與圖標,并把圖標和包名放到一個文本視圖textview中。
3.4 主要界面設計
⑴ 主設置界面展示圖
給予軟件的描述和使用提示,通過這個界面上的按鍵選擇,進入時間設置、短信發(fā)送設置、軟件選擇和密碼修改的子界面見圖5。
⑵ 軟件選擇功能子界面展示
進行游戲軟件的選擇控制和后臺可控制軟件的及時更新的子界面見圖6。
4 結束語
基于RSA算法的防沉迷手機軟件通過對監(jiān)護人登入密碼和控制短信的加密,有效控制了青少年沉迷手機問題。除此之外,防沉迷系統(tǒng)還保證了其強制執(zhí)行力,不能被自制力欠缺的青少年破解密碼的行為影響到防沉迷功能的正常實現。但是由于尋找大素數所需要的計算量比較大,從而降低了RSA加密算法的效率[5]。對于如何提高效率這個問題還有待進一步研究。
參考文獻(References):
[1] 祝月婷,張成.青少年手機沉迷與應對策略[J].鄖陽師范高等
??茖W校學報,2015.2:100-102
[2] 莫梅鋒,張錦秋.手機沉迷對大學生移動學習的影響與引導[J].
現代遠距離教育,2012.5:80-84
[3] 司光東,楊加喜,譚示崇,肖國鎮(zhèn).RSA算法中的代數結構[J].
電子學報,2011.1:242-246
[4] 楊義先,鈕心忻.現代密碼學[M].北京郵電大學出版社,2005.
[5] 周玉潔,馮登國.公開密鑰密碼算法及其快速實現[M].國防工
業(yè)出版社,2002.