Я рассматриваю возможность создания системы API, использующей HMAC. У сервера и клиента будет общий секрет, клиент будет подписывать запросы, сервер будет проверять и продолжать, если все будет хорошо. Проблема с такой системой заключается в том, что секрет должен храниться таким образом, чтобы его можно было найти, например, базу данных. Если кто-то украл секрет, у них есть ключ, необходимый для того, чтобы делать в основном все, что разрешено пользователю.Безопасный общий секрет HMAC путем шифрования авторизации с помощью RSA
Я думал, что должна быть более безопасная альтернатива. Есть ли недостатки в использовании RSA?
- У клиента есть «открытый» ключ, а не общий секрет. (Открытый ключ все равно должен храниться в секрете для моего случая использования.)
- Клиент получит сообщение с SHA-1 или как обычно.
- Вместо того, чтобы добавлять хэш к сообщению напрямую, хэш будет зашифрован через его открытый ключ, а затем отправлен с сообщением.
- У сервера есть «закрытый» ключ (для расшифровки сообщений), но он не знает «открытого» ключа. (Это та часть, которая делает ее более безопасной, чем обычный подход. Если база данных украдена, никакие ключи не украдены, которые могут олицетворять пользователя.)
- Сервер расшифровывает хэш и проверяет сообщение как обычно.
Есть ли что-то не так с этим подходом? Известны ли реализации этого или что-то подобное?
Этот вопрос немного не по теме для переполнения стека. Рассматривали ли вы размещение на http://security.stackexchange.com или http://crypto.stackexchange.com? (Очевидно, проверьте их справочные центры, чтобы узнать, какая из них лучше подходит, если вообще). Вам нужно будет предоставить дополнительную информацию о целях и угрозах безопасности, чтобы другие могли анализировать, соответствует ли предлагаемое решение этим целям.Вероятно, эта проблема была решена должным образом, поэтому я сомневаюсь, что вы должны изобретать свою собственную схему. –
Я голосую, чтобы закрыть этот вопрос как вне темы, потому что речь идет о безопасности/криптографии и не содержит вопрос программирования. –
@ Duncan Да, моя цель - не изобретать мою собственную схему, поэтому, когда я думал об этом, я должен увидеть, что с ней не так, или если существует существующая реализация. Я рассмотрел публикацию на http://security.stackexchange.com, но решил, что Stack Overflow был таким же хорошим местом, поскольку здесь есть много других подобных вопросов. Я думаю, что это очень актуально для обоих. – Brad