◆崔喜萌 陳 明通訊作者
(遼寧科技大學(xué)自動(dòng)化系 遼寧 114000)
開(kāi)放API 接口如果沒(méi)有經(jīng)過(guò)安全處理,則很容易出現(xiàn)三類(lèi)安全問(wèn)題,包括信息截獲、篡改與泄露。首先是用戶(hù)密碼容易被截獲,比如某家公司在開(kāi)發(fā)開(kāi)放式API 時(shí),沒(méi)有對(duì)其進(jìn)行安全控制,那么該公司的客戶(hù)信息很容易被黑客截獲,黑客在掌握客戶(hù)的用戶(hù)名、密碼等相關(guān)信息與資料后,便能夠利用客戶(hù)的身份來(lái)登錄,使得客戶(hù)的隱私信息泄露,黑客便可以輕易地盜刷客戶(hù)信用卡,使得客戶(hù)承受損傷;其次是表單數(shù)據(jù)很容易被篡改,比如某家公司所開(kāi)發(fā)的開(kāi)放API 并沒(méi)有進(jìn)行過(guò)防篡改控制,有客戶(hù)在購(gòu)買(mǎi)1000 元產(chǎn)品后,其提交表單被黑客利用技術(shù)手段篡改為10 塊錢(qián),從而使得公司產(chǎn)生了經(jīng)濟(jì)損失;最后是業(yè)務(wù)數(shù)據(jù)會(huì)被輕易泄露,黑客有種程序叫爬蟲(chóng)程序,如果公司在開(kāi)發(fā)開(kāi)放式API 時(shí),其接口沒(méi)有采取安全控制措施,那么該程序便能夠?qū)﹂_(kāi)放式API 進(jìn)行調(diào)用,進(jìn)而能夠查詢(xún)到客戶(hù)信息的接口。同時(shí),如果公司沒(méi)有安全處理開(kāi)放式API 接口,那么黑客在調(diào)用客戶(hù)信息接口時(shí)也不需要安全驗(yàn)證,從而黑客能夠利用客戶(hù)信息查詢(xún)API 來(lái)大量搜集客戶(hù)數(shù)據(jù),而該公司的競(jìng)爭(zhēng)對(duì)手有了該客戶(hù)數(shù)據(jù)后,會(huì)對(duì)該公司的利用產(chǎn)生影響[1]。上述三例問(wèn)題都是因?yàn)殚_(kāi)放API 沒(méi)有對(duì)數(shù)據(jù)以及用戶(hù)信息進(jìn)行安全處理所造成的,因此軟件開(kāi)發(fā)開(kāi)放API 接口的安全處理就顯得尤為重要。
(1)非對(duì)稱(chēng)加密概述:非對(duì)稱(chēng)加密是加密算法中的一種,和對(duì)稱(chēng)加密算法只有一個(gè)密鑰文件不同的是,非對(duì)稱(chēng)加密有兩個(gè)密鑰文件,也就是公鑰與私鑰。顧名思義,公鑰是對(duì)外公開(kāi)狀態(tài),而私鑰則是屬于保密狀態(tài),如果黑客只有公鑰而沒(méi)有私鑰,及時(shí)截取到報(bào)文也沒(méi)有任何影響[2]。在1978 年,Ron Rivest、Adi Shamir、Leonard Adleman 三人共同提出了RSA 非對(duì)稱(chēng)加密技術(shù),該技術(shù)的名字便是取自于這三人的首字母。以現(xiàn)在的情況來(lái)看,RSA 非對(duì)稱(chēng)加密技術(shù)屬于最有影響力的加密算法,因?yàn)樵摷夹g(shù)能夠抵御已知大多數(shù)的密碼攻擊,所以被推薦為加密數(shù)據(jù)的標(biāo)準(zhǔn)[3]。開(kāi)放API 平臺(tái)在應(yīng)用非對(duì)稱(chēng)加密后,公鑰公開(kāi)給那些需要對(duì)接API 的人,這些對(duì)接API 的人然后通過(guò)公鑰將用戶(hù)的相關(guān)數(shù)據(jù)進(jìn)行加密和傳輸。如果想要對(duì)其解密,那么就必須要用API 平臺(tái)的私鑰,這個(gè)過(guò)程中,即便有黑客利用抓包工具將報(bào)文截取、即便是報(bào)文相關(guān)數(shù)據(jù)被泄露出去,對(duì)方?jīng)]有私鑰來(lái)解密,那么就算有報(bào)文數(shù)據(jù)也沒(méi)有任何意義。因此,為了防止用戶(hù)的一些敏感信息被泄露,便可以將非對(duì)稱(chēng)加密應(yīng)用其中,能夠很好地解決問(wèn)題。
(2)非對(duì)稱(chēng)加密流程:如果在有條件的情況下,開(kāi)放API接口則是可以使用HTTPS 協(xié)議來(lái)將數(shù)據(jù)進(jìn)行傳輸,因?yàn)橄啾扔赗SA 加密技術(shù),HTTPS 的傳輸更為安全。HTTPS 解決傳輸數(shù)據(jù)安全問(wèn)題的方式是對(duì)雙方身份進(jìn)行確定,從而在兩者之間建立其安全通道,而且HTTPS 協(xié)議相比于RSA 非對(duì)稱(chēng)加密技術(shù)要更為完善,后者所具備的技術(shù),前者都能夠?qū)崿F(xiàn),并且前者還應(yīng)用到了對(duì)稱(chēng)加密。不過(guò)該項(xiàng)技術(shù)也有著一定的不足,主要包括需要購(gòu)買(mǎi)證書(shū)、服務(wù)器開(kāi)銷(xiāo)大、維護(hù)成本高、性能較低等,所以在考慮成本的情況下,HTTPS 不是最優(yōu)選,而RSA 加密算法是最適宜的選擇[4]。
(1)信息摘要算法5 概述:信息摘要算法5(Message-Digest Algorithm 5)最大的特點(diǎn)就是其算法不可逆,主要方法是對(duì)任意一段字符串生成摘要,所以,信息摘要算法5 大多時(shí)候是被用來(lái)存儲(chǔ)用戶(hù)的登錄密碼,并且還能夠用來(lái)比對(duì)信息是否一致。信息摘要算法5 在目前是不會(huì)被真正破解的,所謂的破解方法也只不過(guò)是利用非常龐大的一個(gè)數(shù)據(jù)量來(lái)對(duì)其進(jìn)行碰撞,簡(jiǎn)單一點(diǎn)說(shuō),就是一個(gè)擁有著巨大數(shù)據(jù)的彩虹表中存了許多與信息摘要算法5字符串相對(duì)應(yīng)的字符串,因此在破解信息摘要算法5 時(shí),需要在這個(gè)基礎(chǔ)數(shù)據(jù)非常龐大的表里檢索加密好的信息摘要算法5 字符串,檢索的時(shí)間是與該表中的數(shù)據(jù)成正比的,因此檢索所需要的時(shí)間會(huì)非常漫長(zhǎng),就算是通過(guò)反推法來(lái)破解信息摘要算法5 的密碼,那也要耗費(fèi)大量的精力與時(shí)間,所以信息摘要算法5 算是比較安全的加密算法。
(2)信息摘要算法5 方法:一般情況下,API 設(shè)計(jì)者首先需要在對(duì)外接口文檔中約定好信息摘要算法5 的加密字段和順序,在對(duì)API 接口進(jìn)行調(diào)用時(shí),則需要通過(guò)文檔中API 設(shè)計(jì)者所約定好的順序來(lái)對(duì)信息摘要算法5 進(jìn)行加密,而且為了能夠保證對(duì)比有意義,API 后臺(tái)也需要根據(jù)約定的順序進(jìn)行加密。在對(duì)比時(shí),如果發(fā)現(xiàn)接收到的信息摘要算法5 摘要和獲取參數(shù)所生成的信息摘要算法5 摘要不一致,如果不是在調(diào)用API 接口時(shí)出現(xiàn)操作錯(cuò)誤,那么便能夠確定與之相關(guān)的數(shù)據(jù)已經(jīng)處于篡改狀態(tài),因此便需要拒絕處理這批數(shù)據(jù)[5]。相反的,如果所接收到的信息摘要算法5 摘要和獲取參數(shù)生成的信息摘要算法5 摘要一致,那么便能夠確認(rèn)數(shù)據(jù)并未被篡改。舉例來(lái)說(shuō),某家公司對(duì)外提供了客戶(hù)下訂單的接口,接口中含有產(chǎn)品的編碼參數(shù)與購(gòu)買(mǎi)數(shù)目的參數(shù)。產(chǎn)品的編碼參數(shù)是能夠確定所購(gòu)買(mǎi)的產(chǎn)品信息,同時(shí)公司需要將一個(gè)信息摘要算法5 參數(shù)加入數(shù)據(jù)當(dāng)中來(lái)預(yù)防數(shù)據(jù)被篡改的可能性,而且需要規(guī)定在調(diào)用API 接口時(shí)需要按照產(chǎn)品編碼與購(gòu)買(mǎi)數(shù)據(jù)來(lái)進(jìn)行信息摘要算法5 摘要,摘要文件也就是信息摘要算法5 乘以產(chǎn)品編碼加購(gòu)買(mǎi)數(shù)量之和。所以,在調(diào)用API 接口時(shí),需要按照公司的要求傳入產(chǎn)品編碼、購(gòu)買(mǎi)數(shù)量以及信息摘要算法5 摘要3 個(gè)參數(shù)。公司在接到傳來(lái)的相關(guān)參數(shù)之和,需要通過(guò)同樣的方法來(lái)進(jìn)行信息摘要算法5,之后對(duì)兩者之間的摘要文件進(jìn)行比對(duì),不對(duì)等則表示有篡改風(fēng)險(xiǎn),需要放棄該接口請(qǐng)求[6]。
(1)令牌鑒權(quán)概述:公網(wǎng)暴露開(kāi)放API 接口之后,便相當(dāng)于豪宅的大門(mén)被敞開(kāi)了一般,任何人都能夠自由出入,這也就使得豪宅內(nèi)的財(cái)產(chǎn)變得非常不安全,因此就需要有安保人員來(lái)查看進(jìn)出人員的通行證,令牌便可以理解為該通行證,只有獲得了令牌的人才能夠進(jìn)出,而沒(méi)有令牌的人則嚴(yán)禁入內(nèi),一律攔截在大門(mén)外。
(2)令牌鑒權(quán)機(jī)制:放API 接口服務(wù)器會(huì)用戶(hù)在登錄之后生成一組不重復(fù)的字符,從而形成登錄人的令牌,令牌作為KET在REDIS 緩存放置在服務(wù)器。而VALUE 則存放登錄用戶(hù)的基本信息,同時(shí)對(duì)token 失效時(shí)間進(jìn)行設(shè)置。
(3)令牌鑒權(quán)校驗(yàn):在調(diào)用開(kāi)放API 時(shí)需要攜帶令牌,而服務(wù)器來(lái)對(duì)令牌進(jìn)行校驗(yàn),包括存在與否、過(guò)期與否等,如果令牌過(guò)期或者不存在,則直接返回異常信息,強(qiáng)制客戶(hù)重新登錄獲取新令牌。
簡(jiǎn)而言之,數(shù)據(jù)安全是一場(chǎng)攻防持久戰(zhàn),需要不斷對(duì)其進(jìn)行改進(jìn)與完善,才能夠有效保障客戶(hù)權(quán)益與數(shù)據(jù)安全。
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2020年4期