應用程式介面 (API) 金鑰是一種唯一程式碼,使用 API 金鑰可辨識呼叫的應用程式或用戶。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 擁有者產生,而 API 服務須使用相同密鑰進行簽章驗證。使用單一金鑰的主要優勢為:速度快、且產生簽章和驗證的算力要求較低。對稱金鑰的絕佳例子為 HMAC。
非對稱金鑰
非對稱金鑰會使用兩組金鑰:一個私鑰和一個公鑰,兩種金鑰並不相同,但使用密碼學連結。私鑰用來產生簽章,而公鑰則用來驗證簽章。API 金鑰由 API 擁有者產生,但私鑰和公鑰對則由用戶產生。API 用戶僅須使用公鑰就能夠驗證簽章,因此私鑰可以隱密地保留在本機。
使用非對稱金鑰的主要優勢為,分離產生簽章和驗證簽章的金鑰可以提高安全性。非對稱金鑰可以讓外部系統得以驗證簽章但無法產生簽章。另一項優勢是某些非對稱加密系統支援在私鑰上加入密碼。非對稱金鑰的絕佳例子為 RSA 金鑰對。
API 金鑰安全嗎?
用戶須承擔 API 金鑰的保密責任。API 金鑰類似密碼,必須以相同方式謹慎處理。共享 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 金鑰使用安全,需要注意許多層面。總結來說,您應該將 API 金鑰視為您的帳戶密碼。