高延慶


如今智能手機越來越普及,幾乎人手一部,它已經不僅僅是一個通信工具,而是成為我們生活、工作和學習中不可分割的一部分。有人說現代社會人出門必帶三樣東西:手機、錢包和鑰匙,據說很多人上廁所也要帶上手機,由此可見手機的魔力非同一般了。
作為我們的親密伙伴,手機里面存放了大量的私密信息,這些信息如果無意中流失出去,豈不是很尷尬?更壞的情況是,如果手機里面有一些賬戶信息,那豈不是很容易被壞人利用?不過幸好我們可以設定密碼,這樣即使無意中手機落入壞人手中也不怕隱私泄露。
那么手機密碼安全性如何?是不是很容易被破解?我們的手機一共可以設置多少種密碼呢?
一個基礎的排列組合公式
先給大家普及一點基礎的數學知識吧。從1、2、3、4這4個數中取3個數排成一列,一共能得到幾種不同的排列?答案是24種。如果用列舉法,答案就是:
123,132,213,231,312,321,124,142,214,241,412,421,234,243,324,342,423,432,134,143,314,341,413,431
那么這個如何用快捷的方法計算出來呢?過程是這樣的:假設最終得到的三個數排列是ABC,A、B、C必須從1、2、3、4中取,A有幾種可能呢?很顯然A可以取1、2、3、4中的任意值,因此有4種可能。那么B有幾種可能呢?假設之前A取的值為2,那么B只能從1、3、4中取,因此有3種取法。依次類推C有2種取法,所以ABC一共有4*3*2=24種可能。其實在數學中這是個基礎的排列問題,可以用A(4,3)表示,由此我們可以推導出公式:
A(n,m)=n(n-1)(n-2)…(n-m+1)
表示從n個元素中取m個排成一列所能組成的不同排列數。
Iphone有10000種密碼
言歸正傳,現在我們來分析下智能手機到底有多少種密碼組合。目前市場上主要流行兩種手機,一種是ios系統的,主要就是iPhone,還有一種是Android系統的。
先看看大家最關注的iPhone吧。大家都知道iPhone密碼固定為四位,每一位可以取0到9這10個數字中的任一個,那么總的排列數為10*10*10*10=10000。這個密碼相對于計算機來說還是太簡單了,不過若是防御手工破解的話還是綽綽有余的。不過話又說回來了,如果設定密碼的數字不能重復,那又有多少種呢,答案是A(10,4)=5040,差不多是上面的一半。看來喬幫主這樣設定密碼還是有道理的。
Android有389112種圖案密碼
現在我們來分析下Android。Android系統允許用戶設置數字密碼和圖案密碼。數字密碼最少4位最多不超過16位,則所有可能的密碼種類數為:
這數字大約是iPhone密碼數的10000億倍,真是秒殺iPhone啊。
然而,這個仍然不是Android引以為傲的。Android的經典鎖屏密碼乃是圖案密碼,如下圖所示。這種密碼相對前面的數字密碼是不是很高大上?據說當年美國FBI想要從一個嫌疑犯的手機上獲得數據信息,技術人員花了一周時間仍是解不開圖案鎖屏界面。接下來我們就分析一下這種密碼有多少種組合。
這種密碼是3*3的點陣中的一條路徑,這條路徑最少連接4個點,最多連接9個點。因而,符合要求的路徑數最多可以達到A(9,4)+A(9,5)+A(9,6)+ A(9,7)+A(9,8)+A(9,9)=985824種。這差不多是iPhone密碼數的98倍。不過,這只是Android密碼數的一個上限,Android設置密碼時有一定的限制,主要是不能跳過路徑中間必須經過的點。
為了方便分析,我們用九宮格的方式來表示上述圖案,把點陣中的九個點分別用數字1到9編號。
按照上述規則,2178、1987都是不合法的,但15987則是可行的。看起來問題越來越復雜了,強大的組合數學在這里都派不上用場了。怎么辦呢?還好有計算機,我們可以編寫一個小程序來達到目的:
首先生成所有985824種沒有限制的排列:
再記下不能直接連接的點對:
然后我們刪除集合A中存在非法點對的元素:
以<1,3>為例,在集合A的所有元素中,我們刪除所有形如*13*2*的元素,其中*代表零個或多個數字;
對于點對<9,1>,我們刪除所有形如*91*5*的元素……
依次類推,集合A中剩下的元素將都是合法的,這樣我們就得到了Android圖案密碼的數目,到底是多少呢?一共有389112種,差不多是總數的三分之一。
如果一個人試一種密碼需要一秒鐘的話,大概需要108個小時,差不多四天半。相信沒有哪個人堅持四天四夜不眠不休地試密碼吧?
通過上面的分析,大家是不是對自己的智能手機密碼的安全性有了一定的了解?你們一定有人會問,如果我把密碼忘了怎么辦?這里我教你一個小竅門,你可以申請個賬戶,當忘記密碼時登錄賬戶重置,很多手機運營商都提供了這個服務。
(責任編輯/冷林蔚)