Я работаю над любимым проектом, который (в конце концов, когда это будет сделано) обеспечит безопасную передачу файлов (это больше, чем просто, но остальное не имеет особого значения).Я хотел бы использовать библиотеку OpenSSL, так как она кажется наиболее полной бесплатной библиотекой криптографии (и мне нужна поддержка базового симметричного шифрования и хеширования в дополнение к SSL / TLS).
I'mищу реализацию схемы безопасности , аналогичной SSH.Обычно пользователь подключается к моему компьютеру по протоколу TLSv1 (SSLv3.1).Я бы хотел, чтобы соединение было успешным независимо от безопасности.Затем я хочу иметь возможность проверять открытый ключ (не полный сертификат), который использовал пользователь.Этот ключ сравнивается с известными открытыми ключами, и если он совпадает, то пользователю будет разрешен доступ к определенному набору команд.Если он не совпадает, у пользователя будет возможность использовать соединение, чтобы подать заявку на добавление его / ее открытого ключа в мою коллекцию, но в противном случае он не сможет получить доступ к моим услугам.
У меня нет особой необходимости в сертификатах здесь.Для меня было бы намного проще, если бы я мог просто пропустить все детали сертификата и работать только с необработанными ключами шифрования.Это связано с тем, что эта модель следует модели веб-доверия, а не иерархической модели, используемой большинством соединений SSL / TLS, поэтому мне не нужны какие-либо ЦС или подписанные сертификаты.
К сожалению, документация большинстваOpenSSL, ну, в общем, не существует.Все соответствующие статьи, которые я нахожу, кажутся занятыми настройкой «стандартного» соединения SSL / TLS, при котором сертификат сервера проверяется вплоть до набора корневых сертификатов.Это может быть полезно, но мне сложно понять, как настроить и запустить эти нетрадиционные соединения SSL.
Может кто-нибудь предложить какие-либо статьи или документацию, которые могут помочь мне понять, как этого добиться?
(Использование OpenSSL в камне не установлено, и я мог бы переключиться на другую библиотеку, если бы она обеспечивала лучший способ сделать это, а также хэширование [SHA-512] и симметричное шифрование [AES].Я нацеливаюсь на Linux, но было бы неплохо, если бы конечный продукт был переносим на Windows, чтобы мои друзья тоже могли его использовать.)