App登錄模塊密碼加密方案


序言

作為一個(gè)軟件開(kāi)發(fā)者兰英,提高軟件的安全性是每個(gè)人都需要關(guān)注的叙凡。安全性涉及的面很廣正驻,比如Apk包是否做了代碼混淆(提高反編譯難度)厌蔽,數(shù)據(jù)傳輸過(guò)程是否安全牵辣,數(shù)據(jù)庫(kù)存儲(chǔ)的數(shù)據(jù)是否安全等。
今天奴饮,我們來(lái)探討一下App登錄模塊密碼傳輸?shù)陌踩浴?/p>

可行方案

先給出一個(gè)比較可行的方案纬向,后面會(huì)分析安全性是怎么體現(xiàn)的。

  1. 用戶(hù)注冊(cè)過(guò)程戴卜,客戶(hù)端通過(guò)rule1(pass)得到一個(gè)編碼后的密碼串passStr逾条,然后調(diào)用注冊(cè)接口把name/passStr傳給服務(wù)器保存(不能用明文密碼傳輸保存
  2. 用戶(hù)在登錄頁(yè)面填寫(xiě)了用戶(hù)name和密碼pass后,點(diǎn)擊登錄按鈕叉瘩,客戶(hù)端通過(guò)rule1(pass)把明文密碼轉(zhuǎn)換為passStr
  3. 客戶(hù)端發(fā)送請(qǐng)從服務(wù)器查詢(xún)一個(gè)時(shí)間戳ts和隨機(jī)鹽salt
  4. 客戶(hù)端按照一定規(guī)則rule2(pass, salt)生成一個(gè)加密字符串encryptStr1膳帕,調(diào)用登錄接口粘捎,把name/encryptStr1/ts傳給服務(wù)端
  5. 服務(wù)器接收到請(qǐng)求薇缅,根據(jù)name獲取passStr/salt,然后按照同樣的規(guī)則rule2(pass, salt)得到密碼串encrptStr2
  6. 然后用encryptStr2與客戶(hù)端傳來(lái)的encryptStr1進(jìn)行比對(duì)攒磨,如果兩者相同泳桦,則登錄成功,返回一個(gè)會(huì)話給客戶(hù)端娩缰。

上面的步驟中有些地方需要做一些說(shuō)明:

  • 服務(wù)端不能存儲(chǔ)明文密碼灸撰,但可以存儲(chǔ)一個(gè)編碼后的密文passStr,這個(gè)密文在用戶(hù)注冊(cè)的過(guò)程中客戶(hù)端生成(根據(jù)用戶(hù)輸入的密碼pass按一定的規(guī)則rule1生成)拼坎,通過(guò)注冊(cè)接口傳給服務(wù)端浮毯,服務(wù)端保存在用戶(hù)表中。
  • salt應(yīng)該具有時(shí)效性泰鸡,可以設(shè)置一個(gè)比較短的有效期(如1分鐘)债蓝,一旦超過(guò)這個(gè)時(shí)間,salt失效盛龄,通過(guò)salt生成的加密串也驗(yàn)證不通過(guò)饰迹。

這么說(shuō)可能不夠形象,下面我用一張圖來(lái)表示:


image.png

模擬盜取用戶(hù)信息登錄

針對(duì)上面提出的登錄加密方案余舶,我們考慮一下如何能夠盜取用戶(hù)的登錄信息啊鸭。

  1. 首先,我要說(shuō)的是Https請(qǐng)求可以通過(guò)抓包工具獲取通信內(nèi)容匿值,所以?xún)H僅通過(guò)Https來(lái)保證安全是不可靠的
  2. 在手機(jī)中植入病毒赠制,獲取用戶(hù)的輸入行為,這種方式毫無(wú)疑問(wèn)可以直接拿到用戶(hù)的用戶(hù)名跟密碼挟憔,直接冒充用戶(hù)身份登錄
  3. 攔截用戶(hù)的注冊(cè)請(qǐng)求獲取passStr憎妙,不過(guò)用戶(hù)注冊(cè)的行為是一次性的库正,所以不那么好攔截,我們就認(rèn)為無(wú)法獲取passStr
  4. 攔截獲取隨機(jī)鹽接口厘唾,那么攻擊者就可以修改參數(shù)獲取用戶(hù)的隨機(jī)鹽
  5. 攔截登錄接口褥符,攻擊者可以獲取當(dāng)次請(qǐng)求的encryptStr1/name/ts,用這些參數(shù)可以在salt有效期內(nèi)冒充用戶(hù)進(jìn)行登錄
  6. 攻擊者反編譯Apk抚垃,獲取rule1rule2茉兰,但攻擊者還是無(wú)法推算出passStr夜赵,所以還是無(wú)法冒充用戶(hù)身份進(jìn)行登錄

綜上所述,攻擊者可以做的事情如下:

  1. 往用戶(hù)手機(jī)中植入惡意病毒,監(jiān)聽(tīng)用戶(hù)輸入操作歇万,獲取用戶(hù)名密碼,可冒充用戶(hù)登錄
  2. 攔截用戶(hù)注冊(cè)請(qǐng)求乾吻,獲取passStr燃观,攔截獲取隨機(jī)鹽請(qǐng)求,知道獲取salt規(guī)則追他,反編譯Apk坟募,獲取rule2。知道這些信息的情況下邑狸,也可以冒充用戶(hù)進(jìn)行登錄懈糯。但這種方式難度極大,主要存在以下幾個(gè)難點(diǎn):注冊(cè)操作是一次性的单雾,不太可能被攔截赚哗;要抓取Https請(qǐng)求包,需要在用戶(hù)手機(jī)上安裝證書(shū)硅堆,或者讓用戶(hù)在自己安裝證書(shū)的手機(jī)上登錄賬號(hào)屿储;APK會(huì)加入混淆規(guī)則,所以反編譯難度比較高渐逃」宦樱總結(jié)來(lái)說(shuō),這種方式不太可行朴乖。
  3. 攔截用戶(hù)登錄接口祖屏,獲取此次登錄參數(shù),在salt有效時(shí)間內(nèi)买羞,可以冒充用戶(hù)登錄袁勺,如果用戶(hù)體系存在互踢機(jī)制,那么用戶(hù)會(huì)發(fā)覺(jué)賬號(hào)被踢畜普,及時(shí)修改密碼

總結(jié)

從以上分析可以看出期丰,這種登錄方案還是比較安全可靠的,用戶(hù)密碼和登錄信息不易泄漏。當(dāng)然钝荡,除了這種方式街立,還有很多其他方式也可以保證安全,比如非對(duì)稱(chēng)加密RSA算法埠通,對(duì)稱(chēng)加密算法(用RSA加密秘鑰)等赎离。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市端辱,隨后出現(xiàn)的幾起案子梁剔,更是在濱河造成了極大的恐慌,老刑警劉巖舞蔽,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荣病,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡渗柿,警方通過(guò)查閱死者的電腦和手機(jī)个盆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)朵栖,“玉大人颊亮,你說(shuō)我怎么就攤上這事』旎保” “怎么了编兄?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵轩性,是天一觀的道長(zhǎng)声登。 經(jīng)常有香客問(wèn)我,道長(zhǎng)揣苏,這世上最難降的妖魔是什么悯嗓? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮卸察,結(jié)果婚禮上脯厨,老公的妹妹穿的比我還像新娘。我一直安慰自己坑质,他們只是感情好合武,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著涡扼,像睡著了一般稼跳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吃沪,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天汤善,我揣著相機(jī)與錄音,去河邊找鬼。 笑死红淡,一個(gè)胖子當(dāng)著我的面吹牛不狮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播在旱,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼摇零,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了桶蝎?” 一聲冷哼從身側(cè)響起遂黍,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎俊嗽,沒(méi)想到半個(gè)月后雾家,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绍豁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年芯咧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片竹揍。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡敬飒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芬位,到底是詐尸還是另有隱情无拗,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布昧碉,位于F島的核電站英染,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏被饿。R本人自食惡果不足惜四康,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狭握。 院中可真熱鬧闪金,春花似錦、人聲如沸论颅。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)恃疯。三九已至漏设,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間澡谭,已是汗流浹背愿题。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工损俭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人潘酗。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓杆兵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親仔夺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子琐脏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容