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 для всего сеанса , большинство программистов веб-приложений не осознают этого.