ssh-rsa公開鍵を使用してテキストを暗号化する方法は?


55

したがって、シナリオは次のとおりです。私がボブだとすると、アリスのメッセージを暗号化したいと思います。私が持っている唯一の公開鍵は、次のssh-rsaようなid_rsa.pubです。

SSH-RSA AAAAB3NzaC1yc2EAAAABIwAAAQEAyb + qaZLwgC7KAQJzYikf3XtOWuhlMXVv2mbTKa5dp0sHPRd2RaYnH8ZRkt7V8bjqct1IHGCuxI8xyoEp4at3FHe6j9RfWiarc1ldLUCmTtryI0GGpRs6Zpvqdtpcq / 1NCIYtUQAvsImyEFCtqmB2suDo1ZSllZQ0x9TCKHdCANYIOeaniuFzR57POgE3vxk / r6PO24oy8BIWqxvi29r0n1LUigVBJ7CmMHuzb4 / + i1v6PxV1Lqnj6osPP9GpXpsh8kLUCby / KcmcryWNdSP0esyCdDxkA5hlIuk8qL1vzsyPluUQuc0BEHu6nuw8WQlCF1mFFxcpJL + MhWEr01WIIw == sikachu@Sikachus-Notebook.local

それでは、この公開鍵を使用して文字列を暗号化して、彼女の秘密鍵id_rsa(から生成ssh-keygen)を使用してメッセージを復号化する方法はありますか?

.pemキーペアファイルを使用している場合、すぐにそれが可能であることを知っています。これをopensslサポートする形式に変換する方法を教えていただければ、それも素晴らしいことです!)

ありがとう!


5
あなたとアリスは本当にGPG ...調査する必要がありますgnupg.orgを ; D
ティンク

4
ハハハ、確かに!しかし、私がここに持っているシナリオは、私は彼らへのアクセスがあるということですssh-rsaすでに公開鍵を、と私は(など、GPGをインストール行くために受信者を求めて、のような)複雑さの別の層を追加する必要はありません
sikachu

回答:


71

ssh公開鍵をPEM形式に変換することが可能です(「openssl rsautl」が読み取れる):

例:

ssh-keygen -f ~/.ssh/id_rsa.pub -e -m PKCS8 > id_rsa.pem.pub

「myMessage.txt」が公開鍵暗号化されるべきメッセージであると仮定します。

次に、通常のように、openssl rsautlと変換されたPEM公開鍵でメッセージを暗号化します。

openssl rsautl -encrypt -pubin -inkey id_rsa.pem.pub -ssl -in myMessage.txt -out myEncryptedMessage.txt

結果は、「myEncryptedMessage.txt」の暗号化されたメッセージです。

アリスの秘密鍵で復号化する作業をテストするには:

openssl rsautl -decrypt -inkey ~/.ssh/id_rsa -in myEncryptedMessage.txt -out myDecryptedMessage.txt

5
これをGitHubからユーザーの公開キーを取得するスクリプトでラップしました。github.com/twe4ked/catacomb
twe4ked

これは私には機能しません。私にssh-keygen-mオプションがありません。(バージョンをssh-keygenに尋ねる方法がわかりません。)Worksに置き換える-m-topenssl「公開キーをロードできません」と表示されます。stackoverflow.com/questions/18285294/…を参照してください。
ジェイソングロス

1
JasonがMaxOS Mavericksで持っているのと同じ問題。keygen対応のキー生成の-mを-tに置き換えました。
ロバートクリスチャン

8
これは、ファイルが十分に小さい場合にのみ機能することに注意してください。例:200バイト。stackoverflow.com/questions/7143514/…を
h__ 14

1
@hyhが言ったことを反映して、これは入力ファイルが小さい場合にのみ機能します(行が約254バイトのどこかにある場合、そうでない場合は「rsaルーチン:RSA_padding_add_SSLv23:キーサイズに対して大きすぎるデータ:/SourceCache/OpenSSL098/OpenSSL098-52.20。 2 / src / crypto / rsa / rsa_ssl.c:73 "エラー
。– Devy

1

ssh-rsa公開鍵を使用して「vaultの作成」を暗号化し、ssh-rsa秘密鍵を使用して「vaultのコンテンツの表示」を復号化するssh-vaultを試行します


-3

独自の暗号をローリングする必要のない非常に明白な方法でこれを行ってはどうですか。

アリスはalice@bobserver.comにftpし、アカウントaliceの公開鍵認証のみを許可するように設定します。sshのプロパティにより、アリスのみが認証できるようになります。(ssh1を無効にして適切な設定を要求する場合)DHを使用した最初の通信はaliceとbobの両方に知られている値を作成しますが、これは中間者には認識されず、認証に使用できるため、中間者の攻撃でも失敗します返信やMITM攻撃では、communicatinoの内容を見ることができません。

それであなたの箱にアリスsftpを持ってファイルをダウンロードしてください。


9
opensslを使用して独自の暗号をローリングする方法は?
cmc 14

たとえば、RSAを使用して1024文字の文字列を暗号化すると、メッセージサイズが原因で失敗します。この問題を克服するために、特にメッセージが繰り返される場合、実装者は不安定な状況にあります。RSAを使用して、繰り返される可能性が低い新しい対称暗号キーと初期化ベクトルを暗号化する方が安全であるため、送信されるメッセージごとに一意の暗号テキストを生成し、対称暗号の速度を上げ、暗号とプレーンテキストの量を減らしますRSAキーを攻撃します。それが理にかなっていることを願っています。:)
サム

この方法では、BobがAliceを信頼するか、bobserver.comをロックダウンして、Aliceが悪意のあることをできないようにする必要があります。
mwfearnley

アリスは自分自身を転がすという意味で、あなた自身を転がすということは、基礎となる数学があなた自身を転がすという意味ではなく、解読するためにかなりの量の異常な操作を投げなければなりません。これは、APIや理論的観点ではなくコマンドラインユーティリティの観点から尋ねられたため、個人が実際にsshの上に新しいプロトコルをピギーバックせずに具体的な情報を転送したいと考えていました。そのため、実際にはsftpの方がはるかに簡単に思えたので、サーバーを見下ろすか、Aliceを信頼するか、後でサーバーを消去する必要があります。
ピータージェルデス

上記では、実際に誰かがこの異常なメッセージを解読する方法をアリスに正確に説明し、代わりにチャーリーのMITMメッセージを安全に解読する一連のコマンドを彼女に説明する電子メールを傍受することに対して脆弱であるようです(opensslコマンドは魔法のようなものです多くの呪文)サーバーのアイデアは、多くの人がよく知っている標準コマンドを優先してこれをすべて回避しますが、bobが暗号化するコンピューターから実行する場合、とにかくそれを信頼しています。明らかに、最良の答えは脅威モデルに依存しますが、qコンテキストからこれはおそらくそれらにより良いサービスを提供するでしょう。
ピーターゲルデス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.