MNetキー

公開鍵暗号化

公開鍵暗号化は難しい話題です。それを使用するのに「ちょうど十分」を理解するのは簡単ですがプロセスがあなたに言うことに本当の信頼を開発するのに十分理解するのが難しいかもしれないのでそれは難しい話題です。

しかし、多くのことと同じように、良いことには時間/お金/頭脳力がかかります(1つ選んでください)。 mnet [*]の中心的な柱として、公開鍵暗号化の主な概念は理解する価値があります。

キー

Mnetを有効にすると、あなたのMoodleは公開/秘密鍵ペアを生成します。 2つの鍵(公開鍵と秘密鍵)は密接に関連していますが、それらの機能は非常に異なります。

  • 秘密鍵は秘密であり、あなたのmoodleサーバはこれを自分自身に保持します。これを管理者に見せることすらありそうもない(彼らはそれを知る必要はないので)が、それは舞台裏に隠されており、非常に重要である。
  • 公開鍵は自由に配布できます。メインページの[サイト管理]ブロックで[ネットワーク] - > [設定]をクリックすると、あなたのMoodleの公開鍵を見ることができます。

使い方

署名

  • あなたの秘密鍵と暗号の数学を使って、あなたはバイト列(例えばテキストメッセージ)を読み、そのバイト列のための署名を出力することができます。あなたの秘密鍵を持っていなくても、あなたの公開鍵を持っている人なら誰でも、メッセージ、署名、そして公開鍵の組み合わせを処理して、それが署名を生成したのがあなたの秘密鍵であることを確認できます。誰かがメッセージまたは署名を改ざんした(または実際にメッセージと署名を完全に作成した)場合、署名チェックは失敗し、メッセージが信頼できないことがわかります。小切手に合格した場合、署名を生成した人は誰でも秘密鍵を所有していることに疑いの余地はありません。
  • メッセージに署名すると、リモートエンドは自分からのメッセージであることを認識できます。署名を生成するには秘密鍵が必要ですが、署名が本物であることを確認するには対応する公開鍵だけが必要です - これがメッセージが本物であることを知っている方法です。

暗号化

  • 公開鍵とさまざまな暗号化数学を使用して、公開鍵を持っている人はだれでも、秘密鍵でしか復号化できないようにバイト文字列を変換できます。変換されたテキストを所有している他の人(特に安全でない送信経路にいる人)はそれを読むことができません。メッセージを暗号化した場合、そのメッセージを復号化できる人は誰でも秘密鍵を所有していることが確実にわかります。
  • メッセージを暗号化すると、指定された送信先だけがメッセージを読むことができます。メッセージを暗号化するために必要なのは公開鍵だけですが、これを実行した後は、対応する秘密鍵のみが復号化できます。これは、宛先だけがメッセージを読むことができるということをあなたが知っている方法です - 他に誰もそれを解読するための秘密鍵を持っていません。

これがMNETにどのように当てはまるか

セットアップ

2つのノード(MoodleAとMoodleB)が互いに接続するように指示すると、それらは公開鍵を交換し、各ノードのボタンをクリックして「はい、この公開鍵はリモートノードから変更されていないことを信頼します」と言います。

実行中

  • MoodleAについて
    • MoodleAは送信しているXML-RPCリクエストに署名します(プライベートキーを使用)。
    • そして、MoodleAはMoodleBの公開鍵の記録を使用して結果(メッセージ+署名)を暗号化します。
  • 輸送中
    • (暗号化された(メッセージ+署名))インターネット経由でMoodleAからMoodleBに送信されます(すなわち、安全でない媒体)。
  • Moodle Bについて
    • MoodleBは秘密鍵を使用してメッセージを復号化します。
    • MoodleAの公開鍵の記録を使用して、MoodleBはメッセージの署名をチェックし、チェックアウトした場合はリクエストを処理します。
    • Moodle Bは暗号化された(署名された(結果))返答をします

公開鍵暗号化のマジックを通して、MoodleBはxmlrpcリクエストがMoodleAから来たことを確実に知っています、そして、2つのmoodleの間で誰も言われたことを知りません。

うそ

上記の説明は、1つの小さな単純化をします。公開鍵暗号化は対称鍵暗号化よりも計算集約的です。このため、MoodleBの公開鍵を使用してxmlrpcリクエスト全体を暗号化するのではなく、MoodleAは対称鍵暗号化を使用してリクエストを暗号化し、対称鍵の暗号化にMoodleBの公開鍵を使用して対称暗号化リクエストと共に送信します。関連する段階がMoodleBに導入されました。秘密鍵を使用して対称鍵を復号化し、次に対称鍵を使用してxmlrpc要求を復号化します。

大きな絵

下の図は、mnetメッセージ内の関連レイヤを示しています。元のxmlrpc要求は紫色で、黄色いxml封筒の署名でまとめられています。この黄色い封筒は対称鍵によって暗号化され、公開鍵暗号化された対称鍵とともに別の封筒に入れられます。 mnetkeyslayers.png

XMLENCの仕様

MNETはXML-ENCのサブセットを使用します 。具体的には、ランダムに生成された使い捨ての128ビットキーを使用して、暗号化されたデータにRC4暗号化を使用します。その後、キーはPKCS1エンコーディングを使用して、リモートサーバーのパブリックRSA-v1.5を使用して暗号化されます。 MNETはRC4 / RSA暗号化以外はサポートしていません。送信されるXMLファイルでは、暗号化されたキーは暗号化されたデータの後のファイルに含まれている必要があります。それ以外の場合、MNETは要求を理解できません。

[1] shebang全体は、元の公開鍵の交換と同じくらい安全です。射撃の試合全体を失った公開鍵を交換したときに誰かが中間者攻撃を仕掛けていると、実際には攻撃者があなたに見てもらいたい公開鍵になってしまいます。攻撃者はMoodleAとMoodleBのすべてのメッセージ交換を読み取り、再暗号化しています。

[*]他にもたくさんのものの中心の柱。