私は、最終的には安全なファイル転送を可能にするペットプロジェクトに取り組んでいます(これ以上のことはありますが、それ以外は特に重要ではありません)。私はOpenSSLライブラリを使用したいと思っています。なぜなら、これは最も完全な無料の暗号ライブラリであるようです(そして、SSL/TLSに加えて、基本的な対称暗号化とハッシングのサポートが必要です)。証明書のないSSL/TLS
セキュリティー・スキームと同様のをSSHに実装する予定です。基本的に、ユーザーはTLSv1(SSLv3.1)で自分のコンピュータに接続します。私は接続がセキュリティに関係なく成功するようにしたいと思います。次に、ユーザーが使用した公開キー(証明書全体ではない)を検査できるようにします。そのキーは既知の公開キーと比較され、一致した場合、ユーザーは特定の一連のコマンドにアクセスできます。一致しなかった場合は、接続を使用して自分の公開鍵を自分のコレクションに追加するために接続を使用するオプションがありますが、それ以外の場合は自分のサービスにアクセスできません。
私はここで証明書を特に必要としません。すべての証明書の詳細をスキップして、生の暗号化キーでしか作業できない場合は、はるかに簡単です。これは、このモデルがほとんどのSSL/TLS接続で使用されている階層モデルではなく、web-of-trustモデルに準拠しているため、CAまたは署名付き証明書は必要ありません。
残念ながら、ほとんどのOpenSSLのドキュメントは、まったく存在しません。私が見つけたすべての関連記事は、 "標準" SSL/TLS接続を設定することで占められているようです。サーバーの証明書は一連のルート証明書まですべて検証されます。これは便利ですが、これらの非伝統的なSSL接続をどのように稼働させるかを理解することは難しいです。
誰でも、これを達成する方法を理解するのに役立つ記事やドキュメントを提案できますか?
(OpenSSLの使用は石で設定されていません。これを実行するためのより良い方法があれば、別のライブラリに切り替えることができます。また、SHA-512と対称暗号[AES] Linuxをターゲットにすることを目指していますが、最終製品がWindowsに移植されていれば友だちも使えるのでいいです)。
パブリックキーのリストと公開キーのリストを比較することは、基本的にパスワードを使用しているため、httpsとsslのPKI全体が破られます。自己署名証明書を作成して使用することの提案は、クライアントソフトウェアとサーバーソフトウェアの両方を制御する(信頼関係を構成できるようにする)場合に適しています。 –
@AdamLiss、いいえ、それはパスワードと同じではありません。ユーザーは秘密鍵を送信する必要はありませんが、ユーザーはパスワードを送信する必要があります。 (そして、自己署名証明書をリスト内で比較することは、公開鍵を比較することとほとんど同じです。) – Bruno
私はPKIを使用していません。あなたが私の "友人"(あなたの公開鍵/証明書を持っている)であれば、私の友人からダウンロードできるコンピュータのPLUSファイルからファイルをダウンロードすることができます。キャッチは、ファイルがどこから来ているのかを見ることができないということです(つまり、AとBが友達で、BとCが友達で、AがCからBまでダウンロードできますが、Cについてはまったく知りません) 。少なくとも、それは一言で言えば、アイデアです。 [OneSwarm](http://www.oneswarm.org/)は私にこのプロジェクトのインスピレーションを与えました。 – Ethan