Так что я полагаю, ну ладно; Я даю каждому узлу пару закрытый/открытый ключ, использую гибридное шифрование для шифрования сообщения открытым ключом получателя и использую цифровую подпись для подписи сообщения закрытым ключом отправителя.
Остерегайтесь, что это зашифровать, затем подписать. Это нормально, только если вы доверяете только определенному набору участников и доверяете участникам не заменять подпись любого другого участника.
1. Является ли это фундаментальным свойством задействованных криптографических механизмов?
Нет, это не так. И забыли показать гибридное шифрование с использованием RSA.
2. Действительно ли нет способа использовать одну и ту же пару ключей для подписи и шифрования или, возможно, даже между любыми двумя из приведенных здесь симметричных механизмов?
Да, вы можете использовать RSA для обоих, а пары ключей ECDH, как правило, также совместимы с ECDSA. Однако этот API предназначен для безопасного использования криптографии и использования одного и того же ключа для генерации подписи. и расшифровка не считается лучшей практикой.
3. Нужно ли мне просто отслеживать несколько ключей на узел? Я лелеял надежды идентифицировать узлы по их открытому ключу; это казалось особенно элегантным решением....
Это не так. Обычно вам нужно иметь управление ключами. Ключи обычно имеют определенный период времени, в течение которого они действительны. Например, сертификаты не раньше, чем
и непосле
поля, которые не только указывают, когда сертификат действителен, но и как долго можно использовать закрытый (и обычно открытый ключ).
Кажется, что эта библиотека является вспомогательной библиотекой для разработчиков. На самом деле он не указывает какой-либо протокол.Честно говоря, я думаю, что такого рода «библиотеки-оболочки», которые не реализуются и/или не являются специфическими для приложения, имеют ограниченное применение.
Я настоятельно рекомендую вам использовать две пары ключей, одну для шифрования и подписи. Чтобы создать структуру доверия, вы можете использовать PKI. Наконец, кажется, вам нужна транспортная безопасность; в этом случае я бы рекомендовал TLS.