Как ключи API и Секретные ключи работают? Это было бы безопасно, если я должен передать свои ключи API и секретные ключи к другому приложению?

Я только начинаю думать о том, как работают ключи API и секретные ключи. Всего 2 дня назад я зарегистрировался в Amazon S3 и установил Плагин S3Fox. Они попросили у меня и моего Ключа доступа и Секретного Ключа доступа, оба из которых требуют, чтобы я вошел в доступ.

Таким образом, я задаюсь вопросом, если они просят у меня мой секретный ключ, они должны хранить его где-нибудь право? Это не в основном то же самое как выяснение у меня для моих номеров кредитных карт или пароля и хранения это в их собственной базе данных?

Как секретные ключи и ключи API, как предполагается, работают? Насколько секретный они должны быть? Эти приложения, которые используют секретные ключи, хранящие его так или иначе?

134
задан Honey 25 July 2019 в 18:56
поделиться

2 ответа

В основном развивая то, что изложено здесь.

Вот как это работает: предположим, у нас есть функция, которая принимает число от нуля до девяти, складывает три и, если результат больше десяти, вычитает десять. Таким образом, f(2) = 5, f(8) = 1 и т.д. Теперь мы можем сделать другую функцию, назвать ее f', которая идет в обратном направлении, добавив семь вместо трех. f'(5) = 2, f'(1) = 8 и т.д.

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

Прием входных данных и применение односторонней функции называется «хешированием» входных данных, а то, что Amazon хранит в своей системе, является «хэшом» вашего секретного ключа. SHA1 является примером такого рода «односторонней» функции, она также усилена против атак.

Функция HMAC основана на установленных хэш-функциях для использования известного ключа для проверки подлинности строки текста. Это работает следующим образом:

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

Разница между этим и PKI заключается в том, что этот метод RESTful, позволяющий минимальное количество обменов между вашей системой и серверами Amazon.

Разве это не то же самое, что запрашивать номера моих кредитных карт или пароль и хранение его в своих собственная база данных?

Да, хотя ущерб, который кто-то может нанести с S3, кажется, ограничивается опустошением вашей учетной записи.

Насколько секретными они должны быть?Ар Эти приложения, использующие секрет ключи, хранящие его каким-то образом?

В какой-то момент вам придется загрузить секретный ключ, и в большинстве unix-систем, если злоумышленник может получить root-доступ, он может получить ключ. Если вы шифруете ключ, у вас должен быть код для его расшифровки, и в какой-то момент код расшифровки должен быть обычным текстом, чтобы его можно было выполнить. Это та же проблема, с которыми имеет DRM, за исключением того, что вы владеете компьютером.

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

90
ответ дан 23 November 2019 в 23:57
поделиться

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

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

Проверка подлинности с открытым ключом статистически неуязвима для грубой силы. Пароли часто представляют собой словарные слова, которые можно быстро взломать. Однако закрытый ключ - это огромное количество, которое нелегко угадать. Если бы у злоумышленника был открытый ключ, он мог бы выполнять многие догадки «в автономном режиме» на суперкомпьютере, но даже тогда для взлома ключа потребовалось бы много времени и денег.

7
ответ дан 23 November 2019 в 23:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: