前言:如今具有開放式的業務體系結構將是下一代網絡的重要特征之一。其中,關鍵的技術之一就是網絡控制與應用層之間的應用程序接口(API)。面對API接口的安全問題,我們可以采取幾種安全措施。
近日,網絡安全研究人員發現一組異常的移動應用程序,這些應用程序向民眾公開了 Twitter API 密鑰。據統計,此類應用程序多達3200個。
網絡安全公司CloudSEK首次發現了這一問題,該公司在檢查大型應用程序集合是否存在數據泄漏時,發現了大量應用程序泄露了Twitter API密鑰。
據悉,造成這一現象的主要原因是開發者在整合移動應用與Twitter 時,會得到一個特殊的認證密鑰,允許其移動應用與 Twitter API交互。當用戶使其 Twitter賬戶與移動應用聯系起來時,這些密鑰允許其他人代表用戶行事,例如通過 Twitter 登錄,創建推文,發送 DM 等。
當攻擊者設法得到這些密鑰后,就能夠以關聯的 Twitter 用戶身份進行操作,建議大家不要將密鑰直接存儲在移動應用中,避免攻擊者找到并利用它們。CloudSEK 強調,API 密鑰泄漏一般是應用程序開發人員造成的,他們在開發過程中將認證密鑰嵌入到Twitter API 中,但是之后并未刪除。
那么API到底是一種什么技術呢?
如今具有開放式的業務體系結構將是下一代網絡的重要特征之一。其中,關鍵的技術之一就是網絡控制與應用層之間的應用程序接口(API)。通過應用程序接口,業務開發商 、獨立軟件提供商 (ISV)等第三方應用可以獲得使用現有網絡資源的能力 ,從而方便 、靈活地為客戶提供所需的業務。API接口已經深入應用到各個網頁與App中。
API其實就是應用程序接口(Application Programming Interface)的簡稱。API 是一些功能、定義或者協議的集合,提供應用程序或者程序開發人員基于軟件訪問一組例程的能力,對外封裝完善,調用時無需學習 API內部源碼,依據 API文檔功能說明書來使用即可。
API接口的數據格式有哪些?
目前 API 接口支持 XLSX、JSON、XML、CSV、RDF 等數據格式,其中 JSON 和 XML 是主流的數據格式,幾乎所有 API 接口都支持這兩種數據格式。
JSON (JAVAScript Object Notation)是一種輕量級的數據交換格式,具有良好的可讀和便于快速編寫的特性,可在不同平臺之間進行數據交換。
XML 是擴展標記語言(Extensible Markup Language),用于標記電子文件使其具有結構性的標記語言,可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。
JSON與XML相比,兩者各有不同的特點。
JSON與XML 相比是一種更加輕量級的數據格式,而且更加易于解析,支持多種語言,這使得 JSON 在大數據時代備受歡迎,而且隨著應用程序和平臺的不斷發展,應用程序的功能變得越來越復雜,但為了保證用戶體驗的優化,需要通過重構代碼,將復雜的邏輯封裝在內部,保持其對外提供的 API 仍然簡潔。JSON 也正因為簡潔這一優勢逐漸超越了XML,成為了應用間的首選數據交換格式。
API接口的安全問題
如今API接口的運用已經十分廣泛,API 接口如果沒有經過安全處理,則很容易出現三類安全問題:信息截獲、篡改與泄露。Twitter API 密鑰泄露事件就是如此,所以API 接口的安全問題不容小覷。
面對API接口的安全問題,我們可以采取以下安全措施:
一、非對稱加密
非對稱加密是加密算法中的一種,和對稱加密算法只有一個密鑰文件不同的是,非對稱加密有兩個密鑰文件,也就是公鑰與私鑰。顧名思義,公鑰是對外公開狀態,而私鑰則是屬于保密狀態,如果黑客只有公鑰而沒有私鑰,及時截取到報文也沒有任何影響。在1978年,Ron Rivest、Adi Shamir、Leonard Adleman 三人共同提出了RSA非對稱加密技術,該技術的名字便是取自于這三人的首字母。以現在的情況來看,RSA 非對稱加密技術屬于最有影響力的加密算法,因為該技術能夠抵御已知大多數的密碼攻擊,所以被推薦為加密數據的標準。
開放API 平臺在應用非對稱加密后,公鑰公開給那些需要對接 API 的人,這些對接 API 的人然后通過公鑰將用戶的相關數據進行加密和傳輸。如果想要對其解密,那么就必須要用 API 平臺的私鑰,這個過程中,即便有黑客利用抓包工具將報文截取、即便是報文相關數據被泄露出去,對方沒有私鑰來解密,那么就算有報文數據也沒有任何意義。因此,為了防止用戶的一些敏感信息被泄露,便可以將非對稱加密應用其中,能夠很好地解決問題。
非對稱加密流程:
如果在有條件的情況下,API接口則是可以使用 HTTPS 協議來將數據進行傳輸,因為相比于RSA 加密技術,HTTPS 的傳輸更為安全。
HTTPS 解決傳輸數據安全問題的方式是對雙方身份進行確定,從而在兩者之間建立其安全通道,而且 HTTPS 協議相比于 RSA 非對稱加密技術要更為完善,后者所具備的技術,前者都能夠實現,并且前者還應用到了對稱加密。
不過該項技術也有著一定的不足,主要包括需要購買證書、服務器開銷大、維護成本高、性能較低等,所以在考慮成本的情況下,HTTPS 不是最優選,而 RSA 加密算法是最適宜的選擇。
二、信息摘要算法5(MD5)
信息摘要算法5也叫MD5全稱為Message-Digest Algorithm 5。最大的特點就是其算法不可逆,主要方法是對任意一段字符串生成摘要。所以,信息摘要算法5大多時候是被用來存儲用戶的登錄密碼,并且還能夠用來比對信息是否一致。信息摘要算法5在目前是不會被真正破解的,所謂的破解方法也只不過是利用非常龐大的一個數據量來對其進行碰撞,簡單一點說,就是一個擁有著巨大數據的彩虹表中存了許多與信息摘要算法 5字符串相對應的字符串,因此在破解信息摘要算法5時,需要在這個基礎數據非常龐大的表里檢索加密好的信息摘要算法5字符串,檢索的時間是與該表中的數據成正比的,因此檢索所需要的時間會非常漫長,就算是通過反推法來破解信息摘要算法5的密碼,那也要耗費大量的精力與時間,所以信息摘要算法5算是比較安全的加密算法。
信息摘要算法如何保護API接口?
一般情況下,API設計者首先需要在對外接口文檔中約定好信息摘要算法5的加密字段和順序,在對API接口進行調用時,則需要通過文檔中API設計者所約定好的順序來對信息摘要算法5進行加密,而且為了能夠保證對比有意義,API后臺也需要根據約定的順序進行加密。
在對比時,如果發現接收到的信息摘要算法5摘要和獲取參數所生成的信息摘要算法5摘要不一致,如果不是在調用API接口時出現操作錯誤,那么便能夠確定與之相關的數據已經處于篡改狀態,因此便需要拒絕處理這批數據。
相反的,如果所接收到的信息摘要算法5摘要和獲取參數生成的信息摘要算法5摘要一致,那么便能夠確認數據并未被篡改。舉個例子,某公司在調用API接口時,需要按照公司的要求傳入產品編碼、購買數量以及信息摘要算法5摘要3個參數。公司在接到傳來的相關參數之和,需要通過同樣的方法來進行信息摘要算法5,之后對兩者之間的摘要文件進行比對,不對等則表示有篡改風險,需要放棄該接口請求。
三、令牌鑒權
公網暴露API接口之后,便相當于豪宅的大門被敞開了一般,任何人都能夠自由出入,這也就使得豪宅內的財產變得非常不安全,因此就需要有安保人員來查看進出人員的通行證,令牌便可以理解為該通行證,只有獲得了令牌的人才能夠進出,而沒有令牌的人則嚴禁入內,一律攔截在大門外。
令牌鑒權機制其實就是放API接口服務器會用戶在登錄之后生成一組不重復的字符,從而形成登錄人的令牌,令牌作為KET在redis緩存放置在服務器。而 VALUE 則存放登錄用戶的基本信息,同時對token失效時間進行設置。
令牌鑒權校驗則更為快速有效,在調用開放API時需要攜帶令牌,而服務器來對令牌進行校驗,包括存在與否、過期與否等,如果令牌過期或者不存在,則直接返回異常信息,強制客戶重新登錄獲取新令牌。
數據安全是一場攻防持久戰,需要不斷對其進行改進與完善,才能夠有效保障客戶權益與數據安全。如果等到數據泄露事件發生,再去應急的話,就已經錯過了最好的時機。