張亞娟 劉寒冰 史建國(guó)
(黃河科技學(xué)院信息工程學(xué)院 鄭州 450063)
基于身份驗(yàn)證技術(shù)的智能鬧鐘軟件?
張亞娟 劉寒冰 史建國(guó)
(黃河科技學(xué)院信息工程學(xué)院 鄭州 450063)
傳統(tǒng)的鬧鐘一般包括鬧鐘的設(shè)置,以及一些系統(tǒng)的時(shí)間記錄,僅僅具備提醒的功能,沒有任何自定義設(shè)置?;谏矸蒡?yàn)證技術(shù)的智能鬧鐘軟件除了具有鬧鐘的設(shè)置、提醒時(shí)間、記錄紀(jì)念日、添加背景以及心情描述設(shè)置,還在用戶登錄注冊(cè)時(shí)采用MD5對(duì)用戶信息進(jìn)行加密,從而保護(hù)了用戶的隱私,便于軟件的推廣使用。在給出各個(gè)功能模塊具體實(shí)現(xiàn)后,總結(jié)了本款軟件的優(yōu)缺點(diǎn),并對(duì)下一步的改進(jìn)方向進(jìn)行分析。
鬧鐘;身份驗(yàn)證;MD5;隱私保護(hù)
隨著iPhone的風(fēng)靡,基于iOS的應(yīng)用程序也大量涌現(xiàn)。要使應(yīng)用程序推廣利用,一方面要考慮功能齊全、操作簡(jiǎn)單,蘋果系統(tǒng)自帶的鬧鐘僅僅包括鬧鐘的設(shè)置以及一些系統(tǒng)的時(shí)間記錄,沒有用戶自定義模塊,不能滿足個(gè)性化的需要。另一方面,也是現(xiàn)在大部分用戶關(guān)心的物聯(lián)網(wǎng)安全問題。盡管iOS維持了較好的安全記錄,但一些新的漏洞暴露出iOS系統(tǒng)也存在嚴(yán)重的安全隱患[1]。
目前,物聯(lián)網(wǎng)已經(jīng)在智慧電力、智能家居、醫(yī)療健康、環(huán)境檢測(cè)等領(lǐng)域得到了初步應(yīng)用[2]。人們?yōu)榱死梦锫?lián)網(wǎng)的便利性,還是比較愿意安裝應(yīng)用程序的,比如,小區(qū)門禁開門軟件,不用帶門禁卡,使用手機(jī)操作軟件就能開門。但是人們?cè)讷@得服務(wù)的過程中,個(gè)人隱私信息與物品信息[3]等敏感的信息將會(huì)暴露在物聯(lián)網(wǎng)環(huán)境中,就有可能造成隱私泄露。
無論是物聯(lián)網(wǎng)的哪種類型的隱私泄露,都可能涉及個(gè)人位置、興趣愛好甚至社會(huì)關(guān)系等敏感信息,一旦此類數(shù)據(jù)被惡意監(jiān)聽或篡改,使個(gè)人隱私暴露于公眾,都可能造成無法挽回的損失。
許多智能設(shè)備的開發(fā)商都是小型創(chuàng)業(yè)公司,沒有資源或經(jīng)驗(yàn)去提供復(fù)雜的安全功能,最明顯的體現(xiàn)就是弱密碼問題,這將導(dǎo)致設(shè)備容易被黑客攻擊[4]。因此,解決好物聯(lián)網(wǎng)應(yīng)用過程中的隱私保護(hù)問題,是物聯(lián)網(wǎng)得到廣泛應(yīng)用的必要條件之一[5]。
智能鬧鐘軟件,主要優(yōu)點(diǎn)不僅在于給用戶提供更多的自定義設(shè)置,有更高的選擇性,讓用戶體會(huì)到它不僅僅是一款提醒時(shí)間的鬧鐘,更重要的是,在注冊(cè)登錄的過程中采用MD5進(jìn)行身份驗(yàn)證,而且將加密數(shù)據(jù)放在本地,充分考慮了用戶的隱私不被輕易泄露。
MD5[6~7]的工作原理是對(duì)任意輸入的信息進(jìn)行補(bǔ)位處理,將得到的字符串以512位進(jìn)行分組,每一分組又劃分為16個(gè)32位二進(jìn)制數(shù)的子分組,最后算法輸出一個(gè)將4個(gè)32位分析級(jí)聯(lián)成的128位的哈希值。
MD5廣泛應(yīng)用于信息安全和身份認(rèn)證上。在注冊(cè)的時(shí)候,用戶的密碼是用MD5加密在本地保存;用戶登錄的時(shí)候,系統(tǒng)先把用戶輸入的密碼計(jì)算成MD5值,然后再去和系統(tǒng)中保存的MD5值進(jìn)行比較[8],進(jìn)而確定輸入的密碼是否是正確的。由于MD5較好的性價(jià)比,使它比較適合于智能手機(jī)軟件的加密和解密。
3.1 系統(tǒng)需求分析
經(jīng)調(diào)查,在APP Store上評(píng)分最高的一款智能鬧鐘軟件是由runtastic開發(fā)的“優(yōu)質(zhì)睡眠”鬧鐘,它可提醒你的待辦事項(xiàng)以及記錄你的睡眠時(shí)長(zhǎng),此外更重要的一個(gè)優(yōu)點(diǎn)是它可以和蘋果系統(tǒng)自帶的軟件Health——這一可以高度滿足個(gè)性化需求的平臺(tái)完美地整合。但是非常遺憾的是,這款軟件在2015年4月已經(jīng)停止了更新。
基于身份驗(yàn)證技術(shù)的智能鬧鐘APP,在APP Store中的嚴(yán)重缺乏,有近62%的人們對(duì)智能鬧鐘APP都不太滿意,而個(gè)人認(rèn)為,其主要原因可能在于智能鬧鐘APP的設(shè)計(jì)在人性化方面和隱私保護(hù)方面沒有引起開發(fā)商的真正重視。
這款智能鬧鐘軟件,除了包括鬧鐘的主要功能提醒人們時(shí)間之外,還增加了一些更加任性化的功能,比如說心情描述設(shè)置,紀(jì)念日的設(shè)置,自己實(shí)現(xiàn)鈴聲的錄制功能,為自己的鬧鐘設(shè)置名字等。
3.2 設(shè)計(jì)思想
在此款軟件的整個(gè)設(shè)計(jì)實(shí)現(xiàn)的過程中,將Modal和Controller進(jìn)行了分離,而view和Controller則統(tǒng)一到了一起。界面間的交互,通過傳值來實(shí)現(xiàn),例如通知、代理、block等傳值方式,實(shí)現(xiàn)三者之間的交互,最終完成整個(gè)設(shè)計(jì)。
首先我們需要在蘋果的開發(fā)者網(wǎng)站上下載我們需要的Xcode版本,以及我們需要的SDK,之后就可以安裝了。
如果你的Mac的版本是10.6.7以上,那么安裝Xcode對(duì)你來說將是一件非常簡(jiǎn)單的事情。你只需要把下載的Xcode的安裝包拖拽名字為“應(yīng)用程序”的文件夾形狀里,在Mac電腦上雙擊安裝dmg鏡像即可,等待片刻,iOS開發(fā)環(huán)境的安裝就已經(jīng)完成了。
此款軟件主要實(shí)現(xiàn)的模塊包括:注冊(cè)登錄、我的鬧鐘、添加鬧鐘、鈴聲選擇、紀(jì)念日添加、個(gè)人中心、錄音設(shè)置等九大子模塊。詳細(xì)實(shí)現(xiàn)如下。
4.1 注冊(cè)登錄
在注冊(cè)界面,填寫用戶的用戶名、密碼,點(diǎn)擊注冊(cè)按鈕的時(shí)候,將用戶名和密碼存儲(chǔ)到數(shù)據(jù)庫中,并將密碼使用MD5加密。加密代碼[9~10]如下。
@implementation NSString(MD5)
-(NSString*)md5str
{
const char*cStr=[self UTF8String];
unsigned char digest[CC_MD5_DIGEST_LENGTH];CC_MD5(cStr,strlen(cStr),digest);
NSMutableString*output=[NSMutableString string-WithCapacity:CC_MD5_DIGEST_LENGTH*2];
for(int i=0;i<CC_MD5_DIGEST_LENGTH;i++)
{
[output appendFormat:@“%02x”,digest[i]];
return output;
}
@end
存儲(chǔ)到數(shù)據(jù)庫中時(shí),都轉(zhuǎn)變?yōu)榇髮憽?/p>
[database executeUpdate:@“CREATE TABLE user(Name text,password text)”];
//md5轉(zhuǎn)大寫給密碼加密
NSString*jiaMiPassword=[_password.text md5str]。uppercaseString;
//插入數(shù)據(jù)
BOOL insert=[database executeUpdate:@“insert into user values(?,?)”,_nickName.text,jiaMiPassword];
if(insert){
[self addAlertController:@“恭喜你,注冊(cè)成功”];}
[rs close];
[database close];
圖1 數(shù)據(jù)加密圖
登錄界面包括用戶的用戶名和密碼設(shè)置,整個(gè)界面通過代碼加第三方庫Massory創(chuàng)建完成。UI的層次結(jié)構(gòu)為給self.View.backgroundColor設(shè)置為灰色,在self.view上添加子視圖View設(shè)置背景顏色為白色,然后在view刪添加子View,將子view的高設(shè)置為1像素,顏色設(shè)置為灰色,當(dāng)做中間線條使用。最后在view上添加label和UITextField來實(shí)現(xiàn)用戶名和密碼的輸入。點(diǎn)擊登錄按鈕的時(shí)候,首先判斷用戶名和密碼是否為空,其次將輸入的值用MD5加密轉(zhuǎn)換為大寫判斷和數(shù)據(jù)庫中存儲(chǔ)的是否一致[11]。
4.2 我的鬧鐘
此功能模塊的界面主要通過UItableview結(jié)合UINavigationController+UITabBarCotroller實(shí)現(xiàn)整體布局,在UITableView的上部為一個(gè)UILable,用來顯示當(dāng)前的時(shí)間。UITableView的cell通過重用方法函數(shù)dequeueReusableCellWithIdentifier:實(shí)現(xiàn),優(yōu)化代碼,省去不必要的多次創(chuàng)建,優(yōu)化內(nèi)存。Cell使用的是系統(tǒng)自帶的默認(rèn)樣式三。左側(cè)負(fù)責(zé)顯示鬧鐘的名稱以及時(shí)間,右側(cè)負(fù)責(zé)顯示鬧鐘的開啟和關(guān)閉。鬧鐘的時(shí)間和名稱通過屬性的傳值從二級(jí)界面添加鬧鐘頁面?zhèn)髦档玫?。而鬧鐘的開啟按鈕,是由開關(guān)控件UISwitch控制。開關(guān)控件的功能類似于Windows的復(fù)選框,它只有兩種狀態(tài):ture(或者yes)和FALUS(或者NO),兩種狀態(tài)的切換方式是:setOn:animate:。通過BOOL值來標(biāo)記當(dāng)前的開關(guān)狀態(tài)。在開啟狀態(tài)下,通過比對(duì)當(dāng)前時(shí)間和鬧鐘的時(shí)間,來控制本地通知的發(fā)送。如圖2所示。
4.3 添加鬧鐘
該頁面包括鬧鐘名字的添加設(shè)置、鬧鈴的設(shè)置以及鬧鐘的時(shí)間設(shè)置。該界面中鬧鐘鈴聲的設(shè)置包括兩個(gè)方面,分別為鬧鈴的錄制和選擇。此頁面,首先使用[datePicker date]方法獲取當(dāng)前時(shí)間,通過numberOfComponentsInPickerView:來設(shè)置顯示的行數(shù)。如圖3所示。
圖2 我的鬧鐘
圖3 添加鬧鐘
4.4 鈴聲選擇
鈴聲選擇包括鈴聲的錄制,以及鈴聲的自選。其中鬧鈴的錄制,是通過調(diào)用系統(tǒng)的聲音系統(tǒng)以及Xcode自帶的音頻API來實(shí)現(xiàn)錄一段音頻保存起來。而另外一個(gè)則是選擇自帶的鈴聲,這些鈴聲是事先下載好的鈴聲,直接導(dǎo)入到項(xiàng)目工程中的,通過以表的形式展現(xiàn)出來,右側(cè)為鈴聲的名稱,右側(cè)為播放鈴聲的按鈕,通過點(diǎn)擊按鈕來實(shí)現(xiàn)鈴聲的播放試聽,如圖4所示。
4.5 紀(jì)念日設(shè)置
紀(jì)念日設(shè)置界面,如圖5所示。界面負(fù)責(zé)顯示所有紀(jì)念日,點(diǎn)擊頁面右上角的加號(hào)跳轉(zhuǎn),跳轉(zhuǎn)界面 通 過[Self.navgationControllerpushViewController:animation:]來實(shí)現(xiàn),cell的側(cè)滑刪除通過-(void)tableView:(UITableView*)tableViewCommitEdittingStyle:(UITableViewCellEditingStyle)editingStyleforRowAtIndexPath:(NSIndexPath*)index-Path函數(shù)實(shí)現(xiàn),在某次刪除的時(shí)候調(diào)用[tableView reloadData]來刷新表。
圖4 鈴聲選擇
圖5 紀(jì)念日設(shè)置
4.6 紀(jì)念日添加
該界面通過使用NSUserDefualut來存儲(chǔ)添加的紀(jì)念日的所有信息,包括紀(jì)念日時(shí)間,紀(jì)念日名稱。此款A(yù)PP的名稱添加均采用UITextField實(shí)現(xiàn)輸入,在UIKit框架中,TextField控件由UITextField類創(chuàng)建,此外,它還有對(duì)應(yīng)的UITextFieldDelegate委托協(xié)議。委托可以幫助響應(yīng)事件處理。進(jìn)入紀(jì)念日添加界面,首先獲取當(dāng)前日期時(shí)間,在UIPicker-View上默認(rèn)顯示當(dāng)前時(shí)間,修改UIDataPiker的模式為DateAndTime。
4.7 個(gè)人中心
個(gè)人中心界面包括頭像上傳、點(diǎn)擊“你還沒有登錄,點(diǎn)擊登錄”跳轉(zhuǎn)登錄界面、心情設(shè)置、背景設(shè)置、清空鬧鐘、幫助中心。頭像上傳是通過UIImagePikerViewController以及遵循UIImagePikerView-Controller協(xié)議來調(diào)用系統(tǒng)相冊(cè),選擇一張照片并將選擇的圖片作為頁面HeaderImg的背景顯示。點(diǎn)擊“你還未登錄,請(qǐng)點(diǎn)擊登錄”按鈕跳轉(zhuǎn)登錄界面,此界面上部分為tableView的headerView,下部分為系統(tǒng)cell,用來顯示其他目錄,通過UITableView的delegate協(xié)議方法 didSelectCell:(NSInterger)index-Path來獲取當(dāng)前點(diǎn)擊的是哪個(gè)cell,根據(jù)cell的index來決定跳轉(zhuǎn)的頁面。
4.8 心情設(shè)置
心情設(shè)置,點(diǎn)擊跳轉(zhuǎn)添加心情頁面,該頁面包括七個(gè)button,分別設(shè)置為周一,周二等,點(diǎn)擊按鈕彈出自定義View,在View添加TextView為子視圖,以便輸入心情描述文字。自定義view下部分添加Button,用來保存編輯的文字,同時(shí)將文字存入數(shù)據(jù)庫。如圖6所示。
4.9 背景設(shè)置
圖6 設(shè)置心情
圖7 設(shè)置背景
此界面通過for循環(huán)創(chuàng)建7個(gè)按鈕,負(fù)責(zé)顯示添加的圖片,同時(shí)將圖片添加到數(shù)據(jù)庫中存儲(chǔ)。點(diǎn)擊“點(diǎn)我添加圖片按鈕”來向divce設(shè)備注冊(cè)權(quán)限,如果用戶允許,則跳轉(zhuǎn)用戶相冊(cè)界面,調(diào)用UIImagePikerView對(duì)象協(xié)議方法,來實(shí)現(xiàn)選擇圖片功能。通過一個(gè)BOOL數(shù)組,來分別標(biāo)記每一個(gè)按鈕是否已經(jīng)添加過背景顏色。
在基于身份驗(yàn)證技術(shù)的智能鬧鐘的實(shí)現(xiàn)與設(shè)計(jì)的過程中,充分的考慮了用戶的需求,同時(shí)也考慮到了蘋果手機(jī)的呆板枯燥,不能自定義設(shè)置自己想要的聲音、名稱等。本軟件具有很高的自定義性,更加的人性化。真正滿足提供給用戶一款可以根據(jù)自己的個(gè)人喜好來設(shè)置自己的鬧鐘,使它具有不同的鈴聲,以及自己錄制聲音的功能。而且登錄的過程中采用MD5進(jìn)行加密,并把加密數(shù)據(jù)存放在本地,充分考慮了用戶的隱私不被輕易泄露。
由于蘋果系統(tǒng)的限制性,不允許開發(fā)者隨意更改系統(tǒng)聲音以及硬件設(shè)置,所以程序不能在后臺(tái)一直處于改期狀態(tài)。另外,由于MD5是通用算法,攻擊者可以通過生日攻擊法、差分攻擊法、網(wǎng)站查字典暴力破解等多個(gè)方法獲取MD5碼相應(yīng)的原文,進(jìn)而進(jìn)入系統(tǒng),竊取用戶的信息,進(jìn)而推測(cè)用戶的行為。已經(jīng)有文獻(xiàn)提出,要對(duì)MD5算法進(jìn)行改進(jìn),由于計(jì)算機(jī)的運(yùn)算速度越來越快,可以加大經(jīng)過MD5算法加密后的值的位數(shù),但智能手機(jī)的運(yùn)算能力相對(duì)較差,因此,下一步考慮在算法中加入隨機(jī)數(shù)的方法進(jìn)行二次驗(yàn)證,加大破解的難度,提高破解的成本,進(jìn)而彌補(bǔ)MD5的不足。
因此,如何充分考慮智能手機(jī)的特點(diǎn),設(shè)計(jì)更適合的算法,保護(hù)用戶的隱私,是智能終端軟件能否被廣泛推廣的重要因素,也是下一步要研究的方向。
[1]Tielei Wang,Yeongjin Jang,Yizheng Chen,Simon P.Chung,Billy Lau,Wenke Lee.On the Feasibility of Large-Scale Infection of iOS Devices[C]//Proceedings of the 23rdUSENIX Security Symposium,San Diego,USA,2014:79-93.
[2]王和平,景鳳宣.物聯(lián)網(wǎng)安全與隱私保護(hù)研究[J].微型機(jī)及應(yīng)用,2015,34(5):9-12.WANG Heping,JING Fengxuan.Research on Security and Privacy Preservation in Internet of Things[J].Microcomputer&its Application,2015,34(5):9-12.
[3]張建軍,吳啟武.物聯(lián)網(wǎng)中的隱私保護(hù)問題研究[J].計(jì)算機(jī)應(yīng)用與軟件,2015,32(6):278-279,327.ZHANG Jianjun,WU Qiwu.Research on Privacy Protection in Internet of Things[J].Computer Application and Software,2015,32(6):278-279,327.
[4]騰訊科技.智能設(shè)備數(shù)據(jù)泄露嚴(yán)重物聯(lián)網(wǎng)安全性受質(zhì)疑[EB/OL].http://tech.qq.com/a/20160121/033354.htm Artesyn.Intelligent device data leakage is serious,the security of the Internet of things is questioned[EB/OL].http://tech.qq.com/a/20160121/033354.htm.
[5]錢萍,吳蒙.物聯(lián)網(wǎng)隱私保護(hù)研究與方法綜述[J].計(jì)算機(jī)應(yīng)用研究,2013,30(1):13-20.QIAN Ping,WU Meng.Survey on Privacy Preservation in IoT[J].Application Research of Computers,2013,30(1):13-20.
[6]毛熠,陳娜.MD5算法的研究與改進(jìn)[J].計(jì)算機(jī)工程,2012,38(24):111-114,118.MAO Yi,CHEN Na.Research and Improvement of MD5 Algorithm[J].Computer Engineering,2012,38(24):111-114,118.
[7]喻謙.基于MD5算法的用戶身份認(rèn)證系統(tǒng)研究[D].北京:華北電力大學(xué),2013.YU Qian.Research on User Authentication System Based on MD5[D].Beijing:School of Electrical and Electronic Engineering,2013.
[8]劉嘯.MD5算法在Web開發(fā)中的應(yīng)用[J].計(jì)算機(jī)安全,2014(8):51-54.LIU Xiao.Application of MD5 in Web Exploriation[J].Computer Security,2014(8):51-54.
[9]張凱.編寫 Objective-C 代碼[EB/OL].http://blog.sina.com.cn/s/blog_54b0c0ab0102enyv.html ZHANG Kai.Writing Code in Objective-C [EB/OL].http://blog.sina.com.cn/s/blog_54b0c0ab0102enyv.html.
[10]iOS Objective-c的MD5/SHA1加密算法的實(shí)現(xiàn)[EB/OL].http://www.111cn.net/sj/iOS/53370.htm iOS.Implementation of Encryption Algorithm of Objective-c Based on MD5/SHA1.
[11]丁丁.基于Web住宅小區(qū)智能化系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2014.DING Ding.Design and Implementation of the Resigential Intelligent System Based on Web[D].Chengdu:University of Electronic Science and Technology of China,2014.
Smart Alarm Clock Software Based on User Authentication
ZHANG Yajuan LIU Hanbing SHI Jianguo
(School of Information Engineering,College of Huanghe Science and Technology,Zhengzhou 450063)
Traditional alarm clocks generally include clock settings and some systematic time recordings.They can only remind time but not support custom settings.While the alarm clock with user authentication not only has the functions of clock setting,time reminding,memorial day recording,background adding and mood description setting,but also is capable of encrypting users,information through MD5 when login and register so as to protect user'privacy and facilitate the promotion and utilization of the application.After the concrete realization of all function modules is provided,the advantages and disadvantages of the software are summarized and the next improvement orientation is analyzed.
alarm clock,user authentication,MD5,privacy protection
TP391.43
10.3969/j.issn.1672-9722.2017.11.025
Class Number TP391.43
2017年5月20日,
2017年6月27日
河南省基礎(chǔ)與前沿技術(shù)研究計(jì)劃項(xiàng)目(編號(hào):162300410193);鄭州市科技局科技發(fā)展計(jì)劃項(xiàng)目(編號(hào):20141371);鄭州市嵌入式系統(tǒng)應(yīng)用技術(shù)重點(diǎn)實(shí)驗(yàn)室資助項(xiàng)目(編號(hào):121PYFZX177)資助。
張亞娟,女,碩士,副教授,研究方向:物聯(lián)網(wǎng)安全、數(shù)據(jù)管理技術(shù)、網(wǎng)絡(luò)軟件。劉寒冰,女,碩士,副教授,研究方向:算法分析與設(shè)計(jì)。史建國(guó),男,博士,教授,研究方向:系統(tǒng)工程。