Лучший способ создать криптографический ключ API - PullRequest
1 голос
/ 28 октября 2010

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

Желательно, чтобы я мог проверять подлинность входящего запроса, используя только предоставленные данные и не проверяя какую-либо базу данных (очень просто, очень быстро!)

Если бы я использовал md5 для генерации ключа API из идентификатора ресурса, идентификатора пользователя и соли, это могло бы выглядеть примерно так ...

authentic_request = md5(user_id + resource_id + salt) == api_key

Мой вопрос действительно одиннасколько я должен быть параноикомХватит ли чего-то подобного выше с простым старым md5?Другим вариантом было бы использовать openssl для генерации ключа против pem, а затем, возможно, md5 результат, чтобы сделать его кратким, это звучит чересчур параноидально или даже добавить уровень безопасности в реальности?с благодарностью получил!

Спасибо

Ответы [ 2 ]

3 голосов
/ 28 октября 2010

Это, по сути, упрощенная реализация кода аутентификации сообщений на основе хеша .

Предполагая, что вы собираетесь раздавать эти ключи на основе пары (user_id, resource_id) и держать в секрете значение, которое вы называете salt, и вы не ожидаете серьезной попытки атаки, это должно Работа. Тем не менее, лучшие практики требуют, чтобы вы использовали более безопасный алгоритм, чем простая конкатенация, для объединения ключа и данных, и более сильный алгоритм дайджеста, такой как SHA-1; Существует стандартный комбинированный алгоритм HMAC-SHA1, который прекрасно подходит для этого.

Третье значение - это ключ, а не соль; владение этим ключом позволяет генерировать и проверять код аутентификации.

0 голосов
/ 28 октября 2010

Это зависит от того, от чего вы пытаетесь защитить.Само по себе это предотвратит случайное неправильное использование вашего API, но не предотвратит повторные атаки.Если кто-то отслеживает ваш трафик, он увидит ключ и сможет получить доступ к ресурсу, используя его повторно.Добавление SSL к решению предотвратит этот тип атаки.

Пока вы на нем, вы также можете изменить MD5 на SHA-256.

...