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