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