Я разрабатываю систему API, для которой требуется этот тип аутентификации. Пользователь отправит HTTP-запрос со своим идентификатором, данными и хэшем (данные, хэшированные с помощью закрытого ключа), а затем на сервере я проверяю, совпадает ли хэш с тем же процессом здесь.
Это похоже на реализация должна быть?
И я собираюсь использовать в качестве открытого ключа идентификатор клиента, но как лучше всего сгенерировать закрытый ключ, sha256 идентификатора, случайного числа?
Публичные и закрытые ключи API
Ответы (2)
проверка того, что amazon s3 делает для аутентификации, может быть хорошее начало
в основном они делают то же самое, что вы предложили, и используют RFC 2104HMAC-SHA1 для хеширования. Реализация зависит от вашего выбора языков.
Это не криптография с закрытым/открытым ключом. В такой системе клиент зашифрует все данные, а вы затем расшифруете их с помощью своего закрытого ключа. Вы бы никогда не дали свой закрытый ключ клиенту.
То, что вы делаете, это запрос подписи. Вы даете «секрет» (то, что вы называете «закрытым ключом»), затем они используют его для генерации хэша. Затем вы можете проверить хеш на своем сервере, так как вы также знаете секрет.
В такой системе не было бы открытого ключа. Обычно вы идентифицируете клиента с помощью сеансового ключа или токена, поэтому клиент должен сначала пройти аутентификацию (что означает, что вам нужен какой-то метод аутентификации). По сути, вы пытаетесь реализовать OAuth. Возможно, взгляните на библиотеку и посмотрите, сможете ли вы использовать ее напрямую — http://oauth.net/documentation/getting-started/