SSL / TLS без сертификатов

Я работаю над домашним проектом, который (в конечном итоге, когда он будет завершен) позволит осуществлять безопасную передачу файлов (это еще не все, но все остальное - нет). особенно актуально). Я хотел бы использовать библиотеку OpenSSL, поскольку она кажется наиболее полной бесплатной библиотекой криптографии (и мне нужна поддержка базового симметричного шифрования и хеширования в дополнение к SSL / TLS).

Я хочу реализовать схему безопасности , аналогичную SSH.Обычно пользователь подключается к моему компьютеру с помощью TLSv1 (SSLv3.1). Я бы хотел, чтобы соединение было успешным независимо от безопасности. Затем я хочу иметь возможность проверить открытый ключ (а не весь сертификат), который использовал пользователь. Этот ключ будет сравниваться с известными открытыми ключами, и в случае совпадения пользователю будет разрешен доступ к определенному набору команд. Если он не совпадает, у пользователя будет возможность использовать соединение, чтобы подать заявку на добавление его / ее открытого ключа в мою коллекцию, но кроме этого не сможет получить доступ к моим службам.

Мне здесь сертификаты особо не нужны. Для меня было бы намного проще, если бы я мог просто пропустить все детали сертификата и работать только с необработанными ключами шифрования. Это связано с тем, что эта модель следует модели сети доверия, а не иерархической модели, используемой большинством соединений SSL / TLS, поэтому мне не нужны сертификаты CA или подписанные сертификаты.

К сожалению, документации по большей части OpenSSL вообще нет. Все соответствующие статьи, которые я нахожу, похоже, посвящены настройке «стандартного» соединения SSL / TLS, при котором сертификат сервера проверяется на всем пути вплоть до набора корневых сертификатов. Это может быть полезно, но мне сложно понять, как запустить и запустить эти нетрадиционные SSL-соединения.

Может ли кто-нибудь предложить какие-либо статьи или документацию, которые могут помочь мне понять, как это сделать?

(Использование OpenSSL не предопределено, и я мог бы переключиться на другую библиотеку, если она предоставит лучший способ выполнения это, а также хеширование [SHA-512] и симметричное шифрование [AES]. Я нацелен на Linux, но было бы неплохо, если бы конечный продукт был переносимым на Windows, чтобы мои друзья тоже могли его использовать.)

8
задан Ethan 23 December 2011 в 18:41
поделиться