[張洪飛 朱海濤 王駿]
數(shù)字時(shí)代,口令、密碼與我們?nèi)缬半S行,生活中眾多場(chǎng)景都需要驗(yàn)證口令和密碼??诹詈兔艽a時(shí)?;煊没虻韧欢?,二者是有區(qū)別的。中國(guó)科學(xué)院院士、密碼學(xué)家王小云曾通俗解釋說(shuō),當(dāng)你輸入一串字符,如果不經(jīng)過(guò)任何處理直接送到服務(wù)器來(lái)驗(yàn)證,它一定不是密碼,只是一個(gè)口令。如果輸進(jìn)去的字符,通過(guò)密碼算法運(yùn)算得出另外一個(gè)結(jié)果,這個(gè)結(jié)果可以驗(yàn)證你是否是合法的用戶(hù)時(shí),這個(gè)口令就變成了密碼[1]?!吨腥A人民共和國(guó)密碼法》對(duì)密碼的定義是采用特定變換的方法對(duì)信息等進(jìn)行保護(hù)、認(rèn)證的技術(shù)、服務(wù)和產(chǎn)品。
口令安全是信息系統(tǒng)安全運(yùn)行和業(yè)務(wù)數(shù)據(jù)安全的重要保障。然而,由于網(wǎng)絡(luò)安全意識(shí)不強(qiáng)、管理不到位,代碼缺陷、技術(shù)約束不健全,政務(wù)信息系統(tǒng)口令安全隱患時(shí)有發(fā)生。以鎮(zhèn)江市電子政務(wù)外網(wǎng)核心網(wǎng)絡(luò)設(shè)備全流量樣本分析為例,2021 年全年共有政務(wù)信息系統(tǒng)口令安全隱患192條/批次,其中弱口令28 條、口令明文存儲(chǔ)/傳輸94 條、多次登陸嘗試60 條。作者作為設(shè)區(qū)市電子政務(wù)外網(wǎng)網(wǎng)絡(luò)安全工程師,直接處置、協(xié)助指導(dǎo)多個(gè)政務(wù)信息系統(tǒng)口令安全隱患整改,提出了系統(tǒng)的管理對(duì)策與技術(shù)對(duì)策。
普通人對(duì)無(wú)規(guī)律隨機(jī)字符串記憶能力有限,一般不超過(guò)9 位,加之記憶惰性,弱口令現(xiàn)象普遍存在。弱口令是指易于被破解或被猜中的口令,例如123456、admin、111111、5201314、a123456、abc123、iloveyou 等僅包含簡(jiǎn)單數(shù)字和字母的口令。還有部分口令看起來(lái)復(fù)雜,但符合鍵盤(pán)分布規(guī)律,例如q1w2e3r4t5y6、qazwsx、gfrtyhbv、12qwaszx,實(shí)際上還是弱口令。信息系統(tǒng)批量開(kāi)通的用戶(hù)默認(rèn)密碼也是弱口令。弱口令容易被暴力破解,直接危害信息系統(tǒng)及數(shù)據(jù)安全。
用戶(hù)口令未作任何形式密碼運(yùn)算,直接明文存儲(chǔ),隱患有三,首先口令明文存儲(chǔ),用戶(hù)數(shù)據(jù)庫(kù)一旦被泄露,明文口令將直接暴露;其次,明文口令在傳輸過(guò)程中易被監(jiān)聽(tīng)獲?。蛔詈?,數(shù)據(jù)庫(kù)運(yùn)維人員可直接瀏覽用戶(hù)敏感口令信息,不利于程序開(kāi)發(fā)與數(shù)據(jù)庫(kù)運(yùn)維分權(quán)操作,存在運(yùn)維風(fēng)險(xiǎn)。2011 年,天涯網(wǎng)、CSDN、人人網(wǎng)等泄露超過(guò)8 000萬(wàn)條用戶(hù)名及明文口令[2]。為方便記憶,普通網(wǎng)民往往會(huì)在多個(gè)不同網(wǎng)站使用相同口令。用戶(hù)數(shù)據(jù)庫(kù)通常包含用戶(hù)名、手機(jī)號(hào)號(hào)碼等信息,口令信息如果明文存儲(chǔ),一旦用戶(hù)數(shù)據(jù)庫(kù)泄露,不法分子通過(guò)“撞庫(kù)”攻擊方式,將進(jìn)一步放大口令明文存儲(chǔ)危害。2014 年,12306 網(wǎng)站13 萬(wàn)多條用戶(hù)信息泄露事件的主要原因就是口令明文存儲(chǔ)與泄露,黑客利用多個(gè)網(wǎng)站泄露的用戶(hù)名與明文口令,通過(guò)自動(dòng)化登陸工具登陸12306 網(wǎng)站獲取用戶(hù)個(gè)人信息[3]。
通過(guò)加密算法,明文口令轉(zhuǎn)換成加密密文。若密碼算法過(guò)于簡(jiǎn)單,密文就容易被破解。不安全的密碼算法有BASE64、MD5、SHA1。
(1)BASE64 編碼經(jīng)過(guò)簡(jiǎn)單二進(jìn)制轉(zhuǎn)換,適合HTTP環(huán)境下傳遞較長(zhǎng)的標(biāo)識(shí)信息,BASE64 編碼不能直接閱讀,形似密文,例如,“zhenjiang”的BASE64 編碼為“emhlbmppYW5n”。BASE64 編碼可人工逆向計(jì)算還原,也可通過(guò)在線工具傻瓜式還原,例如站長(zhǎng)之家(CHINAZ.COM)的“站長(zhǎng)工具>Base64 編碼解碼”。
(2)MD5 是一種單向散列算法,由圖靈獎(jiǎng)得主、著名密碼學(xué)家R.L.Rivest 在1992 年提出,散列摘要長(zhǎng)度為128 位,很難逆向破解。通過(guò)密文字典可檢索出密文對(duì)應(yīng)的口令,例如CMD5 網(wǎng)站(www.cmd5.com)通過(guò)窮舉字符組合的方式,創(chuàng)建了明文密文對(duì)應(yīng)查詢(xún)數(shù)據(jù)庫(kù)。該站宣稱(chēng)記錄約90 萬(wàn)億條,查詢(xún)成功率95%以上,1-6 位大小寫(xiě)字母+數(shù)字+特殊字符、8 位小寫(xiě)字母+數(shù)字組合口令對(duì)應(yīng)密文已100%收集。
(3)SHA-1 是一種密碼散列算法,于1995 年發(fā)布,該算法散列摘要長(zhǎng)度為160 位,散列值通常呈現(xiàn)為40 個(gè)十六進(jìn)制字?jǐn)?shù)。與MD5 相比,SHA-1 安全性更高些,但運(yùn)行速度略低。王小云教授帶領(lǐng)的研究小組于2004 年、2005 年先后破解了MD5 與SHA-1 算法。
未限制登陸失敗次數(shù),黑客可以采用暴力破解方式獲取口令。暴力破解一般利用爆破或滲透測(cè)試工具,通過(guò)大量猜測(cè)和窮舉方式嘗試獲取用戶(hù)口令。常見(jiàn)的猜測(cè)、窮舉方法有二,其一是利用網(wǎng)絡(luò)上已公開(kāi)的弱口令集,其二是通過(guò)社會(huì)工程方法獲取目標(biāo)用戶(hù)基本信息后使用口令生成器生成口令字典進(jìn)行嘗試破解。未限制登陸失敗次數(shù),為黑客暴力破解一個(gè)用戶(hù)或多個(gè)用戶(hù)的口令提供可乘之機(jī)。
口令策略是口令管理的有效手段??诹畈呗酝ǔ0海?)口令長(zhǎng)度,限定口令最小長(zhǎng)度及最大允許長(zhǎng)度;(2)口令強(qiáng)度要求,口令必須包含的字符類(lèi)型及種類(lèi)要求;(3)重復(fù)口令使用限制,禁止用戶(hù)重復(fù)使用指定數(shù)量的舊口令;(4)口令有效期,限定口令的有效期,口令到期后強(qiáng)制用戶(hù)修改口令;(5)登陸失敗次數(shù)限制,用戶(hù)登陸失敗達(dá)到指定次數(shù)后阻止用戶(hù)在特定時(shí)間內(nèi)再次登陸。
強(qiáng)口令通常包含大寫(xiě)字母、小寫(xiě)字母、數(shù)字以及特殊符號(hào)等,長(zhǎng)度不低于8 位,不類(lèi)似于以前使用過(guò)的密碼,不包含個(gè)人姓名、登錄名、常見(jiàn)人名、寵物名等,不是鍵盤(pán)上連續(xù)敲擊的字符串。為了便于記憶,口令設(shè)置可采用中文句法的口令助記策略。用戶(hù)設(shè)置口令時(shí),選擇一句對(duì)用戶(hù)本人有意義,不包含個(gè)人敏感信息,其他人不太可能用到的中文語(yǔ)句,利用預(yù)定義規(guī)則或基于用戶(hù)的選擇,將其轉(zhuǎn)換為用戶(hù)口令[4]。例如,助記語(yǔ)句是“我和她相識(shí)于2008”,可轉(zhuǎn)換得到口令為“w&Txsy2008”、“i&SHExsy2008”??诹钍欠穹蠌?qiáng)度要求,也可借助互聯(lián)網(wǎng)在線密碼安全性檢測(cè)程序。
口令要妥善保存,不得將口令轉(zhuǎn)告他人;若確因工作需要,必須對(duì)外告知口令,要掌握、控制口令知曉范圍,提醒、監(jiān)督口令合規(guī)使用,必要時(shí)可通過(guò)安全設(shè)備采取賬戶(hù)限源訪問(wèn);對(duì)外提供口令時(shí),可將口令修改為臨時(shí)口令并約定使用期限,到期后及時(shí)作更換。用戶(hù)口令登記與整理不得使用互聯(lián)網(wǎng)上運(yùn)行的辦公電腦整理編輯,可采取手工填寫(xiě)方式,填寫(xiě)內(nèi)容至少包括密碼更換時(shí)間、使用人等信息。重要口令登記表應(yīng)存放在密碼柜中,不得將密碼貼在辦公桌上或記在易被發(fā)現(xiàn)的記事本上。
從筆者實(shí)踐來(lái)看,為保障信息系統(tǒng)用戶(hù)口令安全,常見(jiàn)的技術(shù)對(duì)策有:口令強(qiáng)度檢測(cè)、口令加密、限制登陸失敗次數(shù)、部署數(shù)字證書(shū)、限源訪問(wèn)等。
信息系統(tǒng),尤其是大型信息系統(tǒng),用戶(hù)類(lèi)型眾多、數(shù)量龐大,再?lài)?yán)格的行政管理措施也無(wú)法保證每一個(gè)用戶(hù)設(shè)置、更改用戶(hù)口令時(shí)一定會(huì)設(shè)置強(qiáng)口令,唯有通過(guò)技術(shù)手段,在用戶(hù)登陸、設(shè)置、更改等環(huán)節(jié)設(shè)置口令強(qiáng)度檢測(cè),從源頭上杜絕弱口令的產(chǎn)生與使用。從程序編碼角度來(lái)說(shuō),進(jìn)行弱口令檢測(cè)簡(jiǎn)便易行,通過(guò)一條密碼強(qiáng)度檢測(cè)的正則表達(dá)式和幾行代碼即可實(shí)現(xiàn)。以PHP 程序設(shè)計(jì)語(yǔ)言為例:
加密算法可分為對(duì)稱(chēng)密鑰算法、公鑰算法和散列算法??诹钤O(shè)置的主要意義是確認(rèn)用戶(hù)身份,因此口令加密多采用散列算法。校驗(yàn)用戶(hù)身份時(shí)只需采用相同加密,校驗(yàn)密文是否相同即可確認(rèn)用戶(hù)身份。常見(jiàn)的散列算法有MD5、SHA 系列、PBKDF2。散列算法很難逆向破解,幾乎不可能根據(jù)口令密文直接推導(dǎo)還原出口令明文。破解散列密文的常見(jiàn)方式有暴力破解、密文字典、彩虹表等。暴力破解通過(guò)窮舉明文口令計(jì)算散列密文正向碰撞。密文字典通過(guò)預(yù)先存儲(chǔ)的“明文-密文”數(shù)據(jù)庫(kù)字典反向檢索出口令明文,密文字典需要驚人的存儲(chǔ)空間。彩虹表通過(guò)預(yù)先計(jì)算的散列鏈,以一定的計(jì)算量降低存儲(chǔ)空間,是目前破解散列密文的常用方式。
為防范“彩虹表”、“密文字典”,可采用附加“鹽值”的散列算法。國(guó)內(nèi)知名Discuz!論壇用戶(hù)口令加密方采用常用的MD5 算法,“鹽值”為長(zhǎng)度為6Byte 的隨機(jī)數(shù),表達(dá)式是MD5(MD5(明文口令)||salt)[5]。各類(lèi)編程語(yǔ)言一般自帶各種加密算法與函數(shù),以PHP 為例,函數(shù)password_hash(string $password,PASSWORD_BCRYPT,["cost"=>$cost])自動(dòng)生成鹽值,設(shè)置hash 遞歸次數(shù)為11,可有效防范“彩虹表”暴力破解。例如“zhenjiang”對(duì)應(yīng)的密文可以為:
對(duì)于用戶(hù)登陸失敗次數(shù)達(dá)到一定數(shù)量,例如6 次以上的,暫停此用戶(hù)登陸嘗試或啟用圖形類(lèi)驗(yàn)證碼,可有效防范暴力破解,是常見(jiàn)的賬戶(hù)保護(hù)策略。登陸失敗提示信息不要區(qū)分用戶(hù)名錯(cuò)誤和密碼錯(cuò)誤。用戶(hù)登陸界面須防范用戶(hù)口令跨站腳本攻擊(XSS),例如在登陸界面設(shè)置隨機(jī)數(shù)的MD5 碼作為提交頁(yè)面來(lái)源驗(yàn)證暗口令,通過(guò)會(huì)話(session)等方式傳輸?shù)接脩?hù)口令檢測(cè)頁(yè)面。檢測(cè)頁(yè)面在檢查用戶(hù)口令正確性之前首先檢查暗口令是否正確,如不正確,說(shuō)明存在跨站腳本攻擊,應(yīng)停止檢查該用戶(hù)登陸信息。
HTTP 協(xié)議在客戶(hù)端和網(wǎng)站服務(wù)器之間以明文傳輸信息,存在信息泄露被篡改、流量劫持、釣魚(yú)攻擊等隱患,不適合傳輸用戶(hù)名、密碼、信用卡號(hào)等敏感信息。微信公眾號(hào)API 接口調(diào)用在2017 年12 月就強(qiáng)制要求使用加密傳輸?shù)腍TTPS,不再支持HTTP。部署HTTPS 數(shù)字證書(shū),自動(dòng)激活瀏覽器中顯示“鎖”型安全標(biāo)志,可實(shí)現(xiàn)口令及客戶(hù)數(shù)據(jù)的加密傳輸,保障數(shù)據(jù)傳輸安全。中央人民政府、阿里巴巴、百度、京東等門(mén)戶(hù)網(wǎng)站使用通用公鑰證書(shū),采用RSA256 及AES256 加密算法。
其它措施主要包括多因子登陸、密文變形、日志分析、密碼應(yīng)用評(píng)估、限源訪問(wèn)等。
(1)多因子登陸:用戶(hù)登陸驗(yàn)證環(huán)節(jié),增加短信驗(yàn)證、數(shù)字證書(shū)、手機(jī)令牌等登陸因子。防范暴力破解,可增加圖形驗(yàn)證碼等因子。
(2)密文變形:借鑒密碼算法中的置換與替換思路,對(duì)通用密碼算法產(chǎn)生的密文進(jìn)行簡(jiǎn)單的替換或置換。密文校對(duì)時(shí),只需采用同樣的替換或置換方法。簡(jiǎn)單密文變形,有效提升破解難度,可防范“密文字典”及彩虹表破解方式。
(3)日志分析:用戶(hù)每次登錄,無(wú)論成功、失敗,記錄登錄時(shí)間、ip 地址、瀏覽器版本、登錄成功與否等。登錄信息可用于用戶(hù)登錄頻率、使用環(huán)境、是否合規(guī)等分析;
(4)定期商用密碼應(yīng)用安全性評(píng)估:《商用密碼管理?xiàng)l例》(修訂草案征求意見(jiàn)稿)第三十八條規(guī)定:非涉密的關(guān)鍵信息基礎(chǔ)設(shè)施、國(guó)家政務(wù)信息系統(tǒng)等網(wǎng)絡(luò)與信息系統(tǒng),其運(yùn)營(yíng)者應(yīng)當(dāng)使用商用密碼進(jìn)行保護(hù),自行或委托開(kāi)展商用密碼應(yīng)用安全性評(píng)估[6]。評(píng)估密碼應(yīng)用的合規(guī)性、正確性和有效性。
(5)限源訪問(wèn):指根據(jù)用戶(hù)分布特點(diǎn),合理設(shè)置防火墻、安全網(wǎng)關(guān)訪問(wèn)策略,阻斷非目標(biāo)用戶(hù)訪問(wèn)。例如,鎮(zhèn)江市政府網(wǎng)站群內(nèi)容發(fā)布后臺(tái)僅面向本市政務(wù)單位,通過(guò)設(shè)置白名單訪問(wèn)策略,阻斷市外用戶(hù)訪問(wèn),有效降低安全風(fēng)險(xiǎn);
筆者在2021 年上半年處置一例政務(wù)信息系統(tǒng)口令隱患問(wèn)題。該系統(tǒng)是多年前建設(shè)的綜合性業(yè)務(wù)系統(tǒng),政務(wù)部門(mén)用戶(hù)數(shù)12603 個(gè)。由于機(jī)構(gòu)整合、崗位調(diào)整、人員變動(dòng)等原因,眾多用戶(hù)賬戶(hù)處于停用狀態(tài),逐一核對(duì)用戶(hù)信息難度較大,為盡快完成口令隱患整改,以行政管理對(duì)策為輔助、技術(shù)對(duì)策為主。為此,行政上通知各用戶(hù)單位限期整改弱口令。技術(shù)上分析密文值,發(fā)現(xiàn)大量密文相同的用戶(hù),例如密文同為“7B21848AC9AF35BE0DDB2D6B9FC 3851934DB8420”的用戶(hù)12368 個(gè),密文同為“7C4A8D 09CA3762AF61E59520943DC26494F8941B”的用戶(hù)160個(gè),密文同為“96DF87DDD01EA68DD2E880888DCBD0 82B3089935”的用戶(hù)5 個(gè)。上述密文顯著特征是長(zhǎng)度40位16 進(jìn)制字符,符合SHA-1 算法密文特征。通過(guò)在線SHA-1 密文反查,上述3 個(gè)密文對(duì)應(yīng)的口令明文分別是“11111”、“123456”、“88983035”。密文值相同且超過(guò)2 個(gè)的用戶(hù)以及近半年未登錄的用戶(hù)口令集中批量替換成強(qiáng)口令密文。結(jié)合口令隱患整改實(shí)踐,筆者認(rèn)為,解決政務(wù)信息系統(tǒng)口令安全問(wèn)題,三分管理,七分技術(shù),重在技術(shù)對(duì)策。一切忽略人性的管理手段都會(huì)失效,一切沒(méi)有技術(shù)手段保障的管理措施都會(huì)失效[7]。技術(shù)對(duì)策配置合理、科學(xué),可有效降低口令管理難度,起到事半功倍的作用。