2014-12-12 4 views
1

Я пытаюсь использовать Qt Cryptographic Architecture для генерации пар открытого/закрытого ключа для узлов и хочу иметь протокол, в котором узлы подтверждают, что сообщение поступало от данного источника (открытый ключ), выдавая вызов, чтобы убедиться, что они владельцы соответствующего закрытого ключа. Я немного застрял на фактический синтаксис для QCA, хотя ...Qt Crypto - Как проверить ключ RSA?

Это должно заставить меня секретный ключ, из которого я могу также получить открытый ключ:

QCA::KeyGenerator generator; 
QCA::PrivateKey privateKey = generator.createRSA(1024); 

ли ККА уже есть некоторые встроенный протокол? Если да, то как я могу его использовать? Если нет, как я могу применить некоторые стандартные протоколы криптографических вызовов, используя эти ключи? Я просто пытаюсь продемонстрировать простую концепцию безопасности - я не ищу ничего сложного или даже особо надежного.

Кроме того, это побочный вопрос, но поскольку мне не требуется шифрование, следует ли мне выбирать DSA, а не RSA?

ответ

0

Есть более чем один из них. Но поскольку у всех клиентов уже есть свои асимметричные пары ключей, вы можете развернуть two-way TLS при установлении соединения. В этой схеме клиент и сервер разрешают устанавливать соединение только, если доверяют сертификаты (открытые ключи) друг друга. Это гарантирует аутентификацию клиента и отказ от него.

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

В QCA есть примеры для TLS client и server.

Смежные вопросы