REST-аутентификация S3, такая как сигнатура hmac sha1 против симметричного шифрования данных - PullRequest
4 голосов
/ 29 мая 2010

Я спорил о подходе, подобном S3, используя хэш авторизации с секретным ключом в качестве начального числа и некоторые данные в запросе в виде сообщения, подписанного с помощью hmac sha1 (способ Amazon S3), против другого разработчика, поддерживающего симметричное шифрование данных секретный ключ, известный отправителю и серверу.

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

Что было бы сложнее всего сломать? симметричное шифрование или хеширование sha1 в S3?

Если все крупные игроки используют oauth и аналогичные без симметричного ключа, то, безусловно, есть очевидные преимущества, что это такое?

Ответы [ 2 ]

5 голосов
/ 29 мая 2010

HMAC и симметричный шифр не являются взаимоисключающими идеями. На самом деле AES-CMAC , который является одновременно MAC (не хэшированным) и симметричным шифром, AES-CMAC является криптографическим примитивом, обеспечивающим безопасность WPA. (Хотя WPA все еще можно сломать, используя радужный стол ).

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

Однако с точки зрения аутентификации я считаю, что асимметричная криптография, такая как RSA, является наиболее безопасной. (Amazon использует асимметричную криптографию для ssh-соединений по умолчанию.) Это позволяет хранить только открытые ключи, поэтому, если ваш сервер будет скомпрометирован, никакие учетные данные для аутентификации использоваться не будут. Он также защищает от атак MITM. Во многих случаях это может быть легко внедрено с REST, потому что HTTPS уже поддерживает клиентские сертификаты. Вы можете бесплатно подписать сертификаты клиентов, а затем подтвердить их самостоятельно.

При правильном применении сила шифрования hmac против симметричного кода в основном сводится к силе секрета. Если вы используете секрет, такой как пароль, то обе системы одинаково очень слабы. Эти секреты должны быть большими, Криптографически безопасные псевдослучайные числа . Следует также помнить, что симметричные шифры очень сложно реализовать должным образом. Большинство программистов не понимают этого и заканчивают тем, что повторно используют PRNG при использовании потокового шифра или при использовании блочного шифра, они используют неправильный режим и оставляют IV пустым. В отличие от этого, HMACS очень прост в реализации , и меньше может пойти не так. Если все передается по протоколу HTTPS, а вы используете hmac, тогда легко внедрить безопасную систему аутентификации. Если вы действительно хотите внедрить симметричный шифр, вы должны получить копию Пиратская криптография , есть несколько глав, посвященных только симметричным шифрам, потому что так много может пойти ужасно неправильно. Вы также должны принять во внимание распределение ключей, ssl использует DH-Key Exchange для своих симметричных ключей.

Обязательно прочитайте ТОП-10 OWASP, особенно Сломанная аутентификация и управление сеансами . Это требует использования https для всего сеанса , большинство программистов веб-приложений не осознают этого.

4 голосов
/ 29 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...