王舒 李佳駿
摘要:近年來隨著互聯(lián)網(wǎng)信息技術(shù)的高速發(fā)展,移動應(yīng)用層出不窮,現(xiàn)如今的移動應(yīng)用與人們的生活息息相關(guān),即時通訊、網(wǎng)上支付等功能在方便人們的同時,帶來了不容小覷的網(wǎng)絡(luò)安全問題,本文通過當(dāng)今熱門應(yīng)用和互聯(lián)網(wǎng)環(huán)境中不同密碼存儲與傳輸?shù)姆绞竭M行分析研究,探討如何選擇合適的移動應(yīng)用程序用戶密碼存儲與傳輸?shù)姆绞健?/p>
為了給用戶帶來更好的體驗,越來越多的移動應(yīng)用程序支持自動登錄等功能,用以保持用戶會話,這就不得不將可以標(biāo)識用戶身份的重要信息存儲在終端設(shè)備中,如何保證這些數(shù)據(jù)的安全性成為首要問題。近年來信息安全漏洞日益劇增,移動應(yīng)用密碼泄露事件層出不窮,對公眾的隱私和財產(chǎn)都產(chǎn)生了或多或少的影響。網(wǎng)絡(luò)信息安全也成為人們關(guān)注的焦點,而用戶密碼存儲與傳輸?shù)姆绞骄褪潜Wo用戶信息安全的第一道防線,作為開發(fā)者,我們有責(zé)任和義務(wù)探究密碼存儲與傳輸?shù)母鱾€環(huán)節(jié)可能出現(xiàn)的安全問題,并提出合理可靠的解決方案。
關(guān)鍵詞:移動應(yīng)用;密碼存儲;密碼傳輸
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2018)23-0091-02
1 密碼存儲現(xiàn)狀
1.1采取明文方式存儲密碼
這是最原始也是最簡單的密碼存儲的方式,開發(fā)者將用戶的密碼直接存儲在文件系統(tǒng)或數(shù)據(jù)表中。這種方式最大的問題是一旦系統(tǒng)被入侵且入侵者獲得了系統(tǒng)管理員權(quán)限,用戶所有的密碼信息將直接暴露給入侵者。
1.2采取非明文方式存儲密碼
1.2.1使用對稱或非對稱加密算法對密碼加密后存儲
使用DES等對稱加密算法或RSA等非對稱加密算法對明文密碼加密后存儲在文件系統(tǒng)或數(shù)據(jù)表中,使用密碼時采用密鑰進行解密。對稱加密算法在加密和解密時使用同一個密鑰,非對稱加密算法在加密和解密時使用不同密鑰,不過都需要開發(fā)者將密鑰存儲在終端設(shè)備中。這種方式在一定程度上保證了用戶的安全,但一旦入侵者獲取到密鑰信息即可解密用戶數(shù)據(jù)。這種密碼存儲做法也出現(xiàn)在早期手機淘寶中。
1.2.2使用哈希加密算法對密碼加密后存儲
使用哈希算法對明文密碼進行加密后存儲在文件系統(tǒng)或數(shù)據(jù)表中。哈希算法不能通過逆向運算得出明文數(shù)據(jù),但入侵者可以使用字典破解或彩虹表破解的方式對密文進行破解得到用戶數(shù)據(jù)。
1.2.3使用哈希加密算法對加鹽密碼加密后存儲
隨機鹽(隨機字符串)與明文密碼拼接后使用哈希算法進行加密后存儲在文件系統(tǒng)或數(shù)據(jù)表中。既避免了逆向運算得出明文數(shù)據(jù),同時增加了使用彩虹表等方式對密文破解的難度,即使數(shù)據(jù)泄露,也可以將影響降至最低。Linux系統(tǒng)正是使用這種方法存儲賬戶的密碼。
以上的兩種方法都避免了入侵者逆向運算從而得到用戶密碼等信息,但我們?nèi)圆幌M延脩粜畔⒅苯舆\算得出的數(shù)據(jù)存儲在終端設(shè)備中,同時還希望用于表示用戶身份的數(shù)據(jù)能夠時刻變換,這樣才能盡可能保證用戶密碼等信息的安全。
2 密碼傳輸現(xiàn)狀
2.1傳輸安全協(xié)議
現(xiàn)如今許多應(yīng)用已經(jīng)開始使用HTTPS(Secure Hypertext Transfer Protocol,安全超文本你傳輸協(xié)議)傳輸重要數(shù)據(jù),使用HTTPS可以有效防止數(shù)據(jù)在傳輸中途被竊取,同時數(shù)據(jù)在傳輸過程中不會被改變。
2.2傳輸數(shù)據(jù)加密
在用戶密碼傳輸這種安全性要求較高的過程中,通常會采用RSA非對稱加密算法對傳輸?shù)臄?shù)據(jù)進行加密。
以上做法對服務(wù)器資源的開銷較大,許多開發(fā)者不愿或不得不選用HTTP協(xié)議以及其他的加密方式傳輸重要數(shù)據(jù),降低了服務(wù)器壓力但卻提升了用戶信息傳輸?shù)娘L(fēng)險。
3 移動應(yīng)用用戶密碼存儲與傳輸?shù)恼w方案設(shè)計
3.1服務(wù)端用戶信息解決方案
3.1.1用戶密碼存儲方案
使用Base64算法將強隨機數(shù)生成器生成的定長隨機byte轉(zhuǎn)換為隨機鹽,與用戶明文密碼進行拼接,將拼接后的數(shù)據(jù)使用SHA-512算法進行加密,將密文和隨機鹽同時存入數(shù)據(jù)表。
3.1.2用戶訪問標(biāo)識生成方案
為了避免終端設(shè)備被木馬等惡意程序侵入并潛伏,故需要設(shè)計定期失效的用戶唯一標(biāo)識信息,當(dāng)系統(tǒng)檢測到用戶存在安全異常時立即刪除訪問標(biāo)識,可以有效防止由于個別用戶賬戶存在安全風(fēng)險影響其他用戶,同時受影響用戶不必升級客戶端或修改密碼,也可以保證用戶信息不被泄露。
當(dāng)用戶首次登陸成功后,服務(wù)器將生成隨機鹽,并與用戶名進行拼接,使用AES加密算法對拼接字符串進行加密后存儲,作為短期用戶標(biāo)識信息,同時存儲信息過期時間(根據(jù)軟件安全性需求定義,通常為7天)、終端設(shè)備IMEI標(biāo)識。在用戶以后的登陸請求中使用AES密文進行身份驗證,從而避免終端設(shè)備存儲用戶信息,同時降低RSA解密給服務(wù)器帶來的壓力,也使用戶控制更加靈活。
3.2移動應(yīng)用程序用戶信息解決方案
3.2.1用戶登錄解決方案
移動應(yīng)用程序不應(yīng)將用戶信息的明文數(shù)據(jù)進行存儲,而是將短期用戶唯一標(biāo)識進行存儲,使用3DES加密算法對短期用戶唯一標(biāo)識加密并存儲,當(dāng)標(biāo)識過期時清除標(biāo)識數(shù)據(jù)并要求用戶重新登錄,當(dāng)服務(wù)器因賬戶安全問題拒絕登錄時,清除標(biāo)識數(shù)據(jù)同時提示用戶原因,建議用戶修改密碼并要求用戶重新登錄。
移動應(yīng)用程序應(yīng)該在啟動時檢測當(dāng)前系統(tǒng)是否存在安全風(fēng)險(例如Android系統(tǒng)開放root權(quán)限),當(dāng)存在風(fēng)險時要求用戶重新登錄。
3.2.2用戶信息傳輸解決方案
針對用戶信息傳輸時務(wù)必要采用RSA-1024及以上位數(shù)的非對稱加密算法(推薦RSA-2048)進行加密并使用HTTPS協(xié)議進行傳輸,公共密鑰使用3DES加密算法加密并存儲。
4 結(jié)論
用戶信息安全是不會被終結(jié)的話題,無論是開發(fā)移動應(yīng)用程序還是網(wǎng)頁程序,作為開發(fā)者,都應(yīng)始終把用戶信息安全放在首要位置,根據(jù)應(yīng)用的需求選擇合適的安全性保障方案,既保證了用戶安全又能避免不必的資源開銷。隨著密碼學(xué)的不斷發(fā)展以及硬件設(shè)備的更新迭代,相信在不遠(yuǎn)的將來,會有更加理想的用戶密碼存儲與傳輸方案給更多的用戶提供更加可靠的安全網(wǎng)絡(luò)環(huán)境。
參考文獻:
[1] 張儼娜,周珂.基于用戶身份鑒別的密碼存儲方式[J]. 電腦知識與技術(shù),2007(9).
[2] 屈曉,梁進杰,莫秀玲,等.密碼存儲與傳輸?shù)陌踩蕴接慬J].黑龍江科技信息,2016(9).
[3] 楊淑菊.Hill密碼的加密解密矩陣的求法[J].價值工程,2016(8).
[4] 初羿瑩,施陽.基于Hash加密的軟件密碼認(rèn)證方案探究[J].微處理機,2017(7).
【通聯(lián)編輯:光文玲】