Основываясь на том, что обозначено here.
Вот как это работает: допустим, у нас есть функция, которая принимает число от нуля до девяти, добавляет три и, если результат больше десяти, вычитает десять. Итак, f (2) = 5, f (8) = 1 и т. Д. Теперь мы можем сделать другую функцию, назовем ее f ', которая идет назад, добавив семь вместо трех. f '(5) = 2, f' (1) = 8 и т. д.
Это пример двухсторонней функции и ее инверсии. Теоретически любые математические функции, которые отображают одну вещь в другую, могут быть отменены. На практике, однако, вы можете сделать функцию, которая скремблирует ее вход так хорошо, что ее невероятно сложно отменить.
Взятие ввода и применение односторонней функции называется «хешированием» ввода, и то, что Amazon хранит в своей системе, является «хэшем» вашего секретного ключа. SHA1 является примером такого рода «односторонней» функции, он также ожесточен от атак.
HMAC function основывается на установленных хэш-функциях, чтобы использовать известный ключ для аутентификации строки текста. Он работает следующим образом:
- Вы берете текст вашего запроса и свой секретный ключ и применяете функцию HMAC.
- Вы добавляете этот заголовок аутентификации в свой запрос и отправляете его в Amazon.
- Amazon просматривает свою копию секретного ключа и текст, который вы только что отправили, и применяет функцию HMAC.
- Если результат совпадает, они знают, что у вас есть тот же секретный ключ.
Разница между этим и PKI заключается в том, что этот метод равен RESTful, что позволяет минимальное количество обменов между вашей системой и серверами Amazon.
Не, что в принципе то же самое, просят меня за номера кредитных карт или пароля и хранения, которые в своей собственной базе данных ?
Да, хотя ущерб, который может быть у кого-либо, связанный с S3, по-видимому, ограничивается исчерпанием вашей учетной записи.
Насколько секретно они должны быть? Являются ли этими приложениями, которые используют секретные ключи ?
В какой-то момент вам придется загружать секретный ключ, а с большинством систем на основе Unix, если злоумышленник может получить доступ с правами root, они могут получить ключ. Если вы зашифруете ключ, у вас должен быть код для его расшифровки, и в какой-то момент код дешифрования должен быть простым текстом, чтобы он мог быть выполнен. Это та же проблема, что и DRM, за исключением того, что у вас есть компьютер.
Во многих случаях я просто кладу секретные ключи в файл с ограниченными разрешениями и принимаю обычные меры предосторожности, чтобы предотвратить укоренение моей системы. Существует несколько трюков, чтобы заставить его работать с многопользовательской системой, например, избегать временных файлов и т. Д.
«Взятие ввода и применение односторонней функции называется« хэшированием »ввода, и то, что Amazon хранит в своей системе, является« хэшем » ваш секретный ключ ». Если Amazon хранит HASH вашего секретного ключа, как Amazon может использовать текст, отправленный им? – Franklin
Сначала вы говорите: «Какие магазины Amazon в их системе являются« хэшем »вашего секретного ключа», а затем «Amazon просматривает свою копию секретного ключа». Кажется, они противоречат друг другу. Я считаю, что первое утверждение неверно. Например, у – Sean
есть четыре идентификатора клиента и секрет клиента, который вы получаете при регистрации. И мне нужно отправить обоих, чтобы получить ответ. Так разве это не будет, чтобы быть увиденным и перехваченным на «проводе». Они не упоминают о создании или принуждении https. В наши дни также существует распространенный сценарий безсерверного приложения, поэтому было a) отправить запрос в FS через сервер (все еще можно увидеть перехваченный) b) отправить через браузер клиента в FS (очень легко определить ключ клиента и секрет.) Чего мне не хватает ... секрет, безусловно, как пароль, вы никогда не должны ОТПРАВИТЬ его всегда http https. – landed