Ключ программного интерфейса приложения (API) — это уникальный код, используемый API для идентификации приложения или пользователя. API-ключи используются для отслеживания и контроля того, кто и как использует API, а также для аутентификации и авторизации приложений аналогично паролям и логинам. API-ключ может представлять собой один ключ или набор из нескольких ключей. Пользователям стоит уделять внимание их безопасности, чтобы защититься от кражи и утечки данных.

API и API-ключ

Чтобы понять, что такое API-ключ, необходимо сначала рассмотреть сам API. Программный интерфейс приложения, или API, — это программный посредник, обеспечивающий обмен информацией между двумя или более приложениями. Например, API CoinMarketCap позволяет другим приложениям получать и использовать данные о криптовалютах, такие как цена, объем и рыночная капитализация.

API-ключ может представлять собой один ключ или набор из нескольких ключей. Различные системы используют эти ключи для аутентификации и авторизации приложений, подобно логинам и паролям. API-ключ используется клиентом API для аутентификации приложения, вызывающего API. 

Например, если Binance Academy хочет использовать API CoinMarketCap, то CoinMarketCap сгенерирует API-ключ и использует его для аутентификации Binance Academy (клиента API), который запрашивает доступ к API. Когда Binance Academy обращается к API CoinMarketCap, API-ключ отправляется в CoinMarketCap вместе с запросом. 

В этом примере только Binance Academy может использовать API-ключ, не передавая его третьим лицам. Передача этого API-ключа позволит третьей стороне получить доступ к CoinMarketCap и выполнять действия от лица Binance Academy.

Помимо этого, API 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. Основное преимущество использования единичного ключа заключается в том, что это ускоряет процесс генерации и проверки подписи и требует меньше вычислительной мощности. В качестве примера хорошего симметричного ключа можно привести HMAC.

Асимметричные ключи

Они предполагают использование двух ключей: приватного и публичного, которые отличаются друг от друга, но имеют криптографическую связь. Приватный ключ используется для генерации подписи, а публичный — для ее проверки. Владелец API генерирует API-ключ, а пользователь — приватный и публичный ключи. Для проверки подписи владелец API использует только публичный ключ, тогда как приватный ключ хранится в секрете. 

Основное преимущество использования асимметричных ключей — повышенная безопасность за счет разделения задач генерации и проверки подписи. Это позволяет внешним системам проверять подписи без возможности генерировать их. Помимо этого, некоторые системы асимметричного шифрования поддерживают добавление пароля к приватным ключам. В качестве примера можно привести пару ключей RSA. 

Безопасность API-ключей 

Ответственность за безопасность API-ключа лежит на пользователе. API-ключи выполняют функцию паролей и требуют такого же осторожного обращения. Не стоит передавать API-ключ третьим лицам, так как это будет аналогично передаче пароля и может подвергнуть аккаунт риску. 

API-ключи нередко становятся мишенью кибератак, поскольку они могут использоваться для выполнения важных системных операций, таких как запрос личной информации или выполнение финансовых транзакций. Уже бывали случаи, когда злоумышленники атаковали онлайн-базы данных с кодами и похищали API-ключи.

Хищение API-ключей может привести к негативным последствиям и значительным финансовым потерям. Более того, некоторые API-ключи не имеют срока действия, поэтому злоумышленники могут использовать их до отключения ключей.

Советы по безопасному использованию API-ключей

API-ключи открывают доступ к конфиденциальным данным, поэтому крайне важно использовать их безопасным образом. Следуйте следующим рекомендациям по надежному применению API-ключей: 

  1. Старайтесь периодически менять API-ключи. Для смены ключа необходимо удалить текущий API-ключ и создать новый. При использовании нескольких систем операции по удалению и генерации API-ключей не составляют труда. Подобно тому, как некоторые системы требуют менять пароль каждые 30-90 дней, владельцы ключей должны по возможности менять API-ключи с такой же периодичностью.

  2. Составьте белый список IP-адресов. При создании нового API-ключа составьте список IP-адресов, которым будет разрешено использовать этот ключ (белый список IP-адресов). Помимо этого, также можно указать перечень заблокированных IP-адресов (черный список IP-адресов). Тогда в случае хищения ключа нераспознанный IP-адрес не сможет им воспользоваться.

  3. Используйте несколько API-ключей. Наличие нескольких ключей и распределение задач между ними снижает риски, поскольку безопасность аккаунта не будет зависеть от одного ключа, используемого сразу для всех задач. Помимо этого, для каждого ключа можно составить различные белые списки IP-адресов, тем самым значительно повысив уровень безопасности. 

  4. Обеспечьте безопасное хранение API-ключей. Не храните ключи в общественных местах, на общедоступных компьютерах или в исходном текстовом формате. Для повышения безопасности каждого ключа используйте шифрование или сервис управления конфиденциальными данными и будьте внимательны, чтобы случайно их не раскрыть. 

  5. Ни с кем не делитесь своими API-ключами. Предоставить кому-либо API-ключ — все равно что предоставить пароль. В этом случае третья сторона получает те же возможности аутентификации и авторизации, что и вы. В случае утечки данных API-ключ может быть украден и использован для взлома аккаунта. API-ключ должен применяться только вами и системой, которая его генерирует.

Если API-ключ попал в руки третьих лиц, обязательно отключите его для предотвращения дальнейшего ущерба. В случае финансовых потерь сделайте скриншоты ключевой информации об этом инциденте и свяжитесь с соответствующими организациями, а также подайте заявление в полицию. Так вы сможете повысить свои шансы на возврат потерянных средств. 

В заключение

API-ключи выполняют функции аутентификации и авторизации, поэтому пользователи должны хранить их в надежном месте и пользоваться ими с осторожностью. Существует множество уровней и способов обеспечения безопасности API-ключей. С API-ключом необходимо обращаться так же, как и с паролем к вашему аккаунту.

Рекомендуемая литература