應用編程接口(API)密鑰是應用編程接口用來識別調用應用程序或用戶的唯一代碼。API密鑰用于追蹤和控制API的使用者及其使用方式,并驗證和授權應用程序,其運作原理與用戶名和密碼相似。API密鑰以單一密鑰或一組多個密鑰的形式出現。用戶應該遵循最佳實踐,改善整體安全性,以防止API密鑰被盜并避免API密鑰泄露的相關后果。
API與API密鑰
要了解什么是API密鑰,必須先知道什么是API。應用編程接口或API是允許兩個或多個應用程序共享信息的軟件中介。例如,CoinMarketCap的API允許其他應用程序檢索和使用價格、交易量和市值等加密貨幣數據。
API密鑰形式多樣,可以是單一密鑰或一組多個密鑰。不同的系統使用這些密鑰來驗證和授權應用程序,類似于用戶名和密碼的使用原理。API客戶端使用API密鑰來驗證調用API的應用程序。
例如,假設幣安學院要使用CoinMarketCap API,CoinMarketCap生成一個API密鑰,在幣安學院(API客戶端)請求API訪問權限時用于驗證其身份。幣安學院訪問CoinMarketCap的API時,應將此API密鑰連同請求一起發送給CoinMarketCap。
此API密鑰僅限幣安學院使用,不得與他人共享或發送給他人。共享此API密鑰,即為允許第三方以幣安學院的身份訪問CoinMarketCap,并且第三方的任何操作都將顯示為來自幣安學院。
CoinMarketCap API還能借助API密鑰來確認應用程序是否有權訪問所請求的資源。此外,API所有者用API密鑰能監控API活動,例如請求的類型、流量和數量。
什么是API密鑰?
API密鑰用于控制和追蹤API的使用者及其使用方法。“API密鑰”一詞對不同的系統而言含義有所不同。有些系統只有單一代碼,其他系統則有多個針對單一“API密鑰”的代碼。
因此,“API密鑰”是API用于驗證和授權調用用戶或應用程序的唯一代碼或一組唯一代碼。有些代碼用于驗證,有些則用于創建加密簽名以證明請求的合法性。
驗證代碼通常統稱為“API密鑰”,用于加密簽名的代碼則名稱各異,例如“加密密鑰”、“公鑰”或“私鑰”。 驗證需要識別所涉及的實體,并確認其身份是否與所聲稱的一致。
另一方面,授權指定允許訪問的API服務。API密鑰的作用類似于賬戶的用戶名和密碼,可以連接到其他安全功能,以提高整體安全性。
每個API密鑰通常由API所有者作為特定實體生成(詳情見下方),每次調用API端點時需要用戶驗證或授權(或二者并用),并且都會用到相關密鑰。
加密簽名
有些API密鑰將加密簽名用作附加驗證層。用戶要向API發送某些數據時,可將另一個密鑰生成的數字簽名添加到請求中。API所有者使用密碼學,即可驗證此數字簽名是否與發送的數據匹配。
對稱簽名與非對稱簽名
通過API共享的數據可通過加密密鑰進行簽名。以下為密鑰的類別:
對稱密鑰
此類密鑰涉及用一個加密密鑰同時執行數據簽名和簽名驗證。在對稱密鑰類別中,API密鑰和加密密鑰通常由API所有者生成,API服務必須用相同的加密密鑰驗證簽名。使用單一密鑰的主要優勢在于,生成和驗證簽名的速度更快,所需算力更少。散列消息認證碼(HMAC)就是對稱密鑰的典型代表。
非對稱密鑰
此類密鑰涉及到私鑰與公鑰兩種密鑰的使用。二者之間存在區別,但通過密碼學相關聯。私鑰用于生成簽名,而公鑰用于驗證簽名。API密鑰由API所有者生成,私鑰和公鑰對則由用戶生成。API所有者只需使用公鑰進行簽名驗證,私鑰即可保持本地加密。
使用非對稱密鑰的主要優勢在于,簽名生成與驗證密鑰獨立開來,安全性更高。這樣一來,外部系統可在無法生成簽名的情況下驗證簽名。另一個優勢則是,有些非對稱加密系統支持私鑰添加密碼。RSA密鑰對便是其中的典型代表。
API密鑰是否安全?
API密鑰的職能取決于用戶。API密鑰類似于密碼,同樣需要謹慎對待。共享API密鑰與共享密碼差不多。這樣做用戶的賬戶會面臨風險,因此不應該共享。
API密鑰能在系統中執行強大的操作,常常會成為網絡攻擊目標。各種操作包括請求個人信息或執行金融交易等。事實上,已經發生過網絡爬蟲攻擊在線代碼數據庫,竊取API密鑰得手的案例。
API密鑰遭竊的后果很嚴重,可能會導致重大經濟損失。此外,有些API密鑰不會過期。一旦被盜,只要密鑰本身未作廢,攻擊者就能無度使用。
使用API密鑰的最佳實踐
API密鑰能訪問敏感數據并普遍存在漏洞,因此使用安全至關重要。使用API密鑰提高整體安全性時,敬請遵循以下最佳實踐指南:
盡量頻繁變更API密鑰。這意味著應刪除當前的API密鑰并創建新密鑰。對于多個系統,生成和刪除API密鑰很容易。某些系統要求用戶每30天至90天更改密碼。與之相似,盡量按此頻率更換API密鑰。
使用IP白名單:創建API密鑰時,制定一份授權使用該密鑰的IP列表(即IP白名單),或者詳列IP屏蔽清單(即IP黑名單)。這樣即使API密鑰被盜,無法識別的IP則不得訪問。
使用多個API密鑰:擁有多個密鑰并劃分各個密鑰的職能將能降低安全風險,原因在于安全性不由具有廣泛權限的單一密鑰決定。您可以為每個密鑰設置不同的IP白名單,進一步降低安全風險。
安全存儲API密鑰:不要將密鑰存儲在公共場所或公共計算機上;不要以原始純文本格式存儲。相反,為了提高安全性,請加密或使用加密管理器單獨存儲各個密鑰,不要無意暴露。
請勿透露個人的API密鑰。共享API密鑰與共享密碼大同小異。共享即表示向另一方授予本人的驗證和授權權限。API密鑰泄露后,將會遭到竊取并用于侵入個人賬戶。API密鑰僅限本人與生成該密鑰的系統使用。
API密鑰泄露后,請先禁用以防造成更大的損失。如造成經濟損失,請將事件相關的關鍵信息截圖,聯系相關單位,并向警方報案。這是增加追回損失資金幾率的最佳做法。
結語
API密鑰提供核心的驗證和授權功能,用戶必須謹慎管理和保護自己的密鑰。保障API密鑰的安全使用應該考慮多層次、多方面的因素。總而言之,API密鑰應視作個人賬戶密碼。
該內容轉自幣安學院