(EFF) エンド・ツー・エンドの暗号化を徹底解説。公開鍵暗号化システムの仕組みとは?

Categories
< Back
You are here:
Print

(EFF) エンド・ツー・エンドの暗号化を徹底解説。公開鍵暗号化システムの仕組みとは?



以下は、電子フロンティア財団の「SURVEILLANCE SELF-DEFENSE」のサイトからエンド・ツー・エンド暗号化についての解説を訳したものです。


最終更新日 11-29-2018
エンド・ツー・エンドの暗号化は、正しく使用すれば、メッセージ、テキスト、さらにはファイルの内容が、意図した受信者以外に理解されないように保護することができます。また、あるメッセージが特定の人からのものであり、改ざんされていないことを証明するためにも使用できます。

ここ数年、エンド・ツー・エンドの暗号化ツールは、より使いやすくなっています。Signal」(iOS版またはAndroid版)のようなセキュア・メッセージング・ツール(音声通話、ビデオ通話、チャット、ファイル共有が可能)は、エンド・ツー・エンド暗号化を使用して送信者と受信者の間のメッセージを暗号化するアプリの良い例です。これらのツールは、ネットワーク上の盗聴者やサービス・プロバイダー自身がメッセージを読めないようにします。

しかし、エンド・ツー・エンド暗号化の実装の中には、理解や使用が難しいものもあります。エンド・ツー・エンドの暗号化ツールを使い始める前に、公開鍵暗号方式の基本を理解することを強くお勧めします。

このガイドで説明するエンド・ツー・エンドの暗号化ツールが採用している暗号化方式は、公開鍵暗号方式と呼ばれています。他のタイプの暗号化については、「暗号化について知っておくべきこと」をご覧ください。

公開鍵暗号の基本的な原理を理解することは、これらのツールをうまく利用するのに役立ちます。公開鍵暗号方式には、できることとできないことがあり、いつ、どのように使用するかを理解することが重要です。

暗号化とは?

秘密のメッセージを送るときの暗号化の仕組みを説明します。

1. はっきりと読めるメッセージ(”hello mum”)を、誰が見ても理解できないようなスクランブルされたメッセージ(”OhsieW5ge+osh1aehah6″)に暗号化します。
2.暗号化されたメッセージはインターネットで送信され、他の人は「OhsieW5ge+osh1aehah6」というスクランブルされたメッセージを見ます。
3.暗号化されたメッセージが目的地に到着すると、目的の受信者だけが、元のメッセージに復号する方法を持っています(”hello mum”)。

対称暗号化。一つの鍵で秘密のメモを渡す話

Juliaは友人のCésarに「庭で会おう」というメモを送りたいのですが,クラスメートには見られたくありません.

Juliaのメモは、Césarに届くまでに、たくさんの仲介者であるクラスメートを経由します。仲介者は中立的な立場ですが、おせっかいなので、メッセージを渡す前に簡単に覗き見ることができます。彼らはまた、メッセージを渡す前にそのコピーを取り、JuliaがこのメッセージをCésarに送る時間を記録したりします。

ジュリアはメッセージを3というキーで暗号化し、アルファベットを3つずつずらしていくことにしました。つまり、AはD、BはEといった具合です。ジュリアとセザールが暗号化に3の鍵、復号化に3の鍵という単純な鍵を使った場合、二人のちんぷんかんぷんな暗号化されたメッセージを解読するのは簡単です。誰かが可能な組み合わせをすべて試すことで、鍵を「ブルートフォース(力づくで解読すること)」することができます。言い換えれば、メッセージをしつこく推測することで解読するための答えを得ることができます。

アルファベットを3文字ずつずらす方法は、ジュリアス・シーザーが使った暗号の歴史的な例である「シーザー暗号」です。この例のように、暗号化と復号化のための鍵が1つで、それが3という単純な数字である場合、対称暗号と呼ばれます。

シーザー暗号は、対称暗号の中でも特に弱い暗号です。ありがたいことに、暗号化はシーザー暗号からずいぶんと進歩しました。驚異的な数学とコンピュータの助けを借りて、はるかに大きく、はるかに推測が困難な鍵を生成することができます。対称型暗号は長い道のりを歩んできており、多くの実用的な目的があります。

しかし,対称暗号は次のような問題には対応していません.誰かが盗聴して,JuliaとCésarが鍵を共有するのを待ち,その鍵を盗んで彼らのメッセージを解読することができたらどうでしょうか?JuliaとCésarが彼らのメッセージを復号するための秘密の鍵が3だと言うのを待っていたとしたら?JuliaとCésaが世界の別の場所にいて,直接会う予定がなかったとしたら?

CésarとJuliaはこの問題をどのように回避することができるでしょうか?

JuliaとCésarが公開鍵暗号方式について学んだとします。ジュリアとセザールが復号鍵を共有していることを盗聴者が発見する可能性は低いでしょう。なぜなら、彼らは復号鍵を共有する必要がないからです。公開鍵暗号方式では、暗号鍵と復号鍵が異なります。

公開鍵暗号。2つの鍵の物語

この問題をもう少し詳しく見てみましょう。送信者が受信者に対称性のある復号鍵を送るとき、誰かにその会話も盗み見られないようにするにはどうしたらよいでしょうか。特に、送信者と受信者が物理的に離れていても、誰にも見られずに会話をしたい場合はどうすればよいのでしょうか。

公開鍵暗号方式(非対称暗号方式とも呼ばれる)には、このような問題を解決する方法があります。これは、会話をする人がそれぞれ公開鍵と秘密鍵の2つの鍵を作成するというものです。2つの鍵はつながっていて、実際には特定の数学的性質を持つ非常に大きな数字です。ある人の公開鍵を使ってメッセージをエンコード(暗号化)すると、その人は一致する秘密鍵を使ってメッセージをデコード(復号化)することができます。

JuliaとCésarは今、ノートを渡す代わりに、2台のコンピュータを使って公開鍵暗号方式で暗号化されたメッセージを送っています。ノートを渡していた彼らのクラスメートは,今ではコンピュータに置き換えられています.JuliaとCésarの間には仲介者がいます。ジュリアとセザールの間には、ジュリアとセザールそれぞれのWi-Fiポイント、インターネットサービスプロバイダ、メールサーバなどの仲介者がいます。実際には、ジュリアとセザールの間にある何百台ものコンピュータがこの会話を促進しているかもしれません。これらの仲介者は、ジュリアとセザールのメッセージが通過するたびに、そのコピーを作成して保存しています。

二人は、通信しているところを仲介者に見られても構いませんが、メッセージの内容は秘密にしておきたいのです。

まず、JuliaはCésarの公開鍵を必要とします。Césarは、自分の公開鍵(ファイル)を、暗号化されていない電子メールのような安全ではない経路で送信します。公開鍵は自由に共有できるものなので、仲介者がアクセスしても気にしません。公開鍵を文字通りの鍵と考えるのは正しいことではありません。Césarは公開鍵を複数のチャンネルで送信し、仲介者が自分の公開鍵を代わりにJuliaに送信できないようにします。

JuliaはCésarの公開鍵ファイルを受け取ります。これでJuliaはCésarへのメッセージを暗号化することができます。彼女はメッセージを書きます。”Meet me in the garden.”

彼女は暗号化されたメッセージを送信します。暗号化されたメッセージはCésarだけに届きます。

JuliaとCésarはメッセージを理解できますが,他の人が読もうとすると訳の分からないメッセージになります.仲介者は、件名、日付、送信者、受信者などのメタデータを見ることができます。

メッセージはCésarの公開鍵で暗号化されているので、Césarと送信者(Julia)だけがメッセージを読むことができます。

Césarは自分の秘密鍵を使ってメッセージを読むことができます。

おさらいです。

●公開鍵暗号方式は、誰かが自分の公開鍵を安全ではないオープンなチャネルで送信することを可能にします。
●友人の公開鍵を持っていると,友人へのメッセージを暗号化することができます.
●自分の秘密鍵は、自分宛に暗号化されたメッセージを復号化するために使用されます。
●仲介者(メールサービスプロバイダー、インターネットサービスプロバイダー、およびそれらのネットワーク上の人々)は、誰が誰に何を送っているのか、いつ、何時に受信したのか、件名は何か、メッセージは暗号化されているか、などのメタデータをずっと見ることができます。


もうひとつの問題は、「なりすまし」の問題です。

JuliaとCésarの例では、仲介者はずっとメタデータを見ることができます。

その仲介者の一人が悪者だったとします。悪者とは、あなたの情報を盗んだり、妨害したりすることで、あなたに危害を加えようとする人のことです。何らかの理由で、この悪者はJuliaのCésarへのメッセージをスパイしたいとします。

この悪者がJuliaを騙して、Césarのために間違った公開鍵ファイルを手に入れたとしましょう。Juliaはそれが実際にはCésarの公開鍵ではないことに気づきません。悪役はJuliaのメッセージを受け取り、それを覗き見してCésarに伝えます。

悪者はCésarに渡す前にファイルの内容を変更することもできます。

ほとんどの場合,悪者はファイルの内容を変更しないでおくことにします.そのため,悪役はJuliaのメッセージを何事もなかったかのようにCésarに転送し,CésarはJuliaと庭で会うことを知り,なんと悪役もそこにいることになります.

これは「中間者攻撃man-in-the-middle」と呼ばれています。また、マシン・イン・ザ・ミドル・アタックmachine-in-the-middleとしても知られています。

幸い、公開鍵暗号方式には、中間者攻撃を防ぐ方法があります。

公開鍵暗号方式では、”指紋認証 “と呼ばれる方法で、誰かのデジタルIDと現実のIDをダブルチェックすることができます。これは、実際に友人と会うことができる場合に最適な方法です。あなたは公開鍵のフィンガープリントを用意し、友人はあなたの公開鍵のフィンガープリントに含まれるすべての文字が、あなたの公開鍵の指紋に含まれる文字と一致するかどうかをダブルチェックします。少し面倒ですが、やる価値は十分にあります。

他のエンド・ツー・エンドの暗号化されたアプリにも、フィンガープリントをチェックする方法がありますが、そのやり方の名称や実装方法にはいくつかのバリエーションがあります。ある場合は、フィンガープリントの一文字一文字を非常に注意深く読み、自分の画面に表示されているものと、友人の画面に表示されているものが一致するかどうかを確認します。また、他の人の携帯電話のQRコードをスキャンして、その人のデバイスを「確認」する場合もあります。” 下の例では、JuliaとCésarは、実際に会って、携帯電話のカメラを使って互いのQRコードをスキャンすることで、携帯電話のフィンガープリントを確認することができます。

直接会うことができない場合は、エンドツーエンドで暗号化された他のメッセージングアプリやチャットシステ ム、または HTTPS サイトなど、別の安全なチャネルを通じて指紋を公開することができます。

下の例では、セザールはスマートフォンで別のエンドツーエンドの暗号化アプリを使って、ジュリアに公開鍵の指紋を送信しています。

おさらいです。

●中間者攻撃とは、あなたが誰かに送るメッセージを誰かが傍受することです。攻撃者は、メッセージを変更して送信することも、単に盗聴することもできます。
●公開鍵暗号方式では、受信者と送信者の身元を確認する方法を提供することで、中間者攻撃に対処することができます。これは、指紋認証によって行われます。
●友人の公開鍵には、友人へのメッセージを暗号化するだけでなく、”公開鍵指紋 “と呼ばれるものが付いています。フィンガープリントを使って、友人の身元を確認することができます。
●秘密鍵は、メッセージを暗号化するために使用され、また、メッセージにあなたとしてのデジタル署名をするためにも使用されます。

Sign of the Times

公開鍵暗号方式では、秘密のメッセージを受け取った人がすでに復号鍵を持っているので、復号鍵を密輸する必要がありません。復号鍵はその人の秘密鍵です。したがって、メッセージを送信するために必要なのは、受信者の一致する公開鍵、暗号化鍵だけです。公開鍵はメッセージの暗号化にのみ使用され、復号化には使用されないため、受信者は誰とでも公開鍵を共有することができるので、簡単に入手することができます。

しかし、それだけではありません。ある公開鍵でメッセージを暗号化すると、それに対応する秘密鍵でしか復号化できないことがわかっています。しかし、その逆もまた真なり。あるメッセージをある秘密鍵で暗号化すると、それに対応する公開鍵でしか復号できないのです。

なぜこのようなことが可能なのでしょうか?一見すると、自分の秘密鍵で秘密のメッセージを送信しても、自分の公開鍵を持っている人なら誰でも復号できるというメリットはないように思えます。しかし、「I promise to pay Aazul $100」というメッセージを書き、それを秘密鍵を使って秘密のメッセージにしたとします。誰でもそのメッセージを解読することができますが、そのメッセージを書いたのは、あなたの秘密鍵を持っている一人の人間だけです。つまり、あなたの秘密鍵を持っている人です。あなたが自分の秘密鍵をきちんと守っていれば、あなただけがメッセージを書くことができるということです。つまり、自分の秘密鍵でメッセージを暗号化することで、そのメッセージが自分からしか発信できないことを確認したことになります。つまり、現実の世界でメッセージに署名するのと同じことを、このデジタルメッセージに対して行っているのです。

また、署名をすることで、メッセージの改ざんを防ぐことができます。もし誰かがあなたのメッセージを「I promise to pay Aazul $100」から「I promise to pay Ming $100」に変えようとしても、あなたの秘密鍵を使って再署名することはできません。つまり、署名されたメッセージは、それが特定の送信元から発信されたものであり、送信中に変更されていないことを保証するものなのです。

おさらいです。公開鍵暗号方式の利用

おさらいしておきましょう。

公開鍵暗号方式とは,公開鍵を知っている人にメッセージを暗号化して安全に送信する方式です.

他人があなたの公開鍵を知っていれば

●他人はあなたに秘密のメッセージを送ることができ、あなただけが一致する秘密鍵を使って解読することができます。
●自分の秘密鍵でメッセージに署名することで、受信者はそのメッセージが自分からしか発信されていないことを知ることができます。

また、他人の公開鍵を知っている場合は

●他人の公開鍵を知っていれば、その人が署名したメッセージを解読し、そのメッセージがその人からしか来ていないことを知ることができます。

公開鍵暗号は、より多くの人が自分の公開鍵を知っていれば、より便利になることはもうお分かりでしょう。公開鍵は共有可能です。つまり、電話帳の住所のように扱えるファイルです。公開されているので、人々はそこからあなたを見つけることができ、広く共有することができ、人々はそこからあなたへのメッセージを暗号化することを知っています。公開鍵は、あなたとコミュニケーションを取りたい人なら誰とでも共有でき、誰が見ても構いません。

公開鍵は、秘密鍵と呼ばれるファイルと対になっています。秘密鍵は、あなたが保護しなければならない実際の鍵のようなものと考えることができます。秘密鍵は、メッセージの暗号化と復号化に使用されます。

また、秘密鍵を非常に安全に保つ必要があることは明らかでしょう。誤ってデバイスから秘密鍵を削除してしまうと、暗号化されたメッセージを解読することができません。誰かがあなたの秘密鍵をコピーした場合(コンピュータへの物理的なアクセス、デバイス上のマルウェア、またはあなたが誤って秘密鍵を投稿したり共有したりした場合)、他の人はあなたの暗号化されたメッセージを読むことができます。また、あなたになりすまして、あなたが書いたと主張するメッセージに署名することもできます。

政府が特定の人のコンピュータから秘密鍵を盗むことも珍しくありません(コンピュータを奪ったり、物理的なアクセスやフィッシング攻撃でマルウェアを仕込んだりします)。これでは、秘密鍵暗号の保護機能が失われてしまいます。これは、ドアにピッキングできない鍵をかけていても、誰かが路上でスリをして鍵を奪い、その鍵をコピーしてポケットに忍ばせれば、鍵を開けずに家に入ることができるのと同じです。

これは脅威のモデル化と同じで、自社のリスクを特定し、適切に対処することです。誰かが自分の秘密鍵を手に入れようと大変な苦労をすると思うなら、ブラウザ内でエンドツーエンドの暗号化を行うソリューションは使用しない方がいいでしょう。代わりに、秘密鍵を他人のコンピュータ(クラウドやサーバーなど)ではなく、自分のコンピュータや携帯電話に保存しておくことを選択することもできます。

公開鍵暗号方式の概要と具体例。PGP。アンカーリンク

さて、ここまでは対称暗号と公開鍵暗号を別々に解説してきました。しかし、公開鍵暗号も対称暗号を使っていることに注意しなければなりません。 公開鍵暗号は、実際には対称鍵を暗号化し、それを使って実際のメッセージを復号化するだけです。

PGPは、対称暗号と公開鍵暗号(非対称)の両方を使用するプロトコルの一例です。機能的には、PGPのようなエンドツーエンドの暗号化ツールを使うことで、公開鍵暗号の実践を強く意識することができます。

鍵とは一体何なのか。そして鍵はどのように結びついているのか?

公開鍵暗号方式は、暗号化するための鍵と復号化するための鍵の2つの鍵があることを前提としています。基本的な仕組みは、インターネットのような安全ではないチャンネルで鍵を送ることができます。この鍵を「公開鍵」と呼びます。この公開鍵を公共の場に掲示しても、暗号化されたメッセージの安全性は損なわれません。

この共有可能な鍵が公開鍵であり、電話帳の住所のように扱うことができるファイルです。公開されているので、人々はそこであなたを見つけることができ、広く共有することができ、人々はそこであなたに暗号をかけることができるのです。

公開鍵は、秘密鍵と呼ばれるファイルと対になっています。秘密鍵は、あなたが保護し、安全に保管しなければならない実際の鍵のようなものと考えることができます。秘密鍵は、メッセージの暗号化と復号化に使われます。

ここでは、RSA(Rivest-Shamir-Adleman)と呼ばれる一般的に使用されている公開鍵暗号アルゴリズムでの鍵生成を検証します。RSAはPGP暗号化メールの鍵ペアの生成によく使われます。

公開鍵と秘密鍵は一緒に生成され、結びつけられています。どちらも同じ非常に大きな秘密の素数に依存しています。秘密鍵は、2つの非常に大きな秘密の素数の表現です。喩えて言えば、公開鍵は積数であり、秘密鍵を作るのに使われたのと同じ2つの非常に大きな素数で構成されています。驚くべきことに、公開鍵を作った2つの大きな素数を特定することは非常に困難です。

この問題は素因数分解として知られており、公開鍵暗号の実装の中には、コンピュータがこの困難さを利用して、構成素数が何であるかを解決するものがあります。現代の暗号技術では、人間にもコンピュータにも推測しにくい、ランダムに選ばれたとんでもなく巨大な素数を使うことができます。

そして、ここでの強みは、人々が公開鍵を安全でないチャンネルで共有して、お互いに暗号化できることです。その際、自分の秘密鍵(秘密の素数)が何であるかを明かすことはありません。なぜなら、そもそもメッセージを復号するために秘密鍵を送る必要がないからです。

覚えておいてください。公開鍵暗号が機能するためには、送信者と受信者がお互いの公開鍵を必要とします。

別の考え方もできます。公開鍵と秘密鍵は、陰陽のシンボルのように一緒に生成されます。絡み合っているのです。

公開鍵は検索可能で、共有可能です。誰にでも配布することができます。メールアドレスの存在が明らかになっても構わないのであれば、自分のソーシャルメディアに掲載することもできます。個人のウェブサイトに掲載することもできます。配布しても構いません。

秘密鍵は大切に保管しておく必要があります。あなたは1つしか持っていません。紛失したり、共有したり、コピーを作って出回ったりすると、プライベートメッセージの秘密保持が難しくなります。

PGPの仕組み

PGPを例に、公開鍵暗号方式がどのように機能するかを見てみましょう。例えば、あなたがAaravに秘密のメッセージを送りたいとしましょう。

1.Aaravは秘密鍵を持っていて、公開鍵暗号化の上手なユーザのように、接続された公開鍵を自分の(HTTPS)Webページに置いています。
2.あなたは彼の公開鍵をダウンロードする。
3.Aarav の公開鍵を使って自分の秘密メッセージを暗号化し、彼に送信する。
4.Aaravは対応する秘密鍵を持つ唯一の人物であるため、Aaravだけがあなたの秘密メッセージを解読することができます。

Pretty Good Privacy(PGP)は、公開鍵と秘密鍵の作成と使用に関する詳細な情報を提供します。公開鍵と秘密鍵のペアを作成し、秘密鍵をパスワードで保護し、秘密鍵と公開鍵を使ってテキストの署名や暗号化を行うことができます。

この概要から得るべきものがあるとすれば、それは次の通りです。秘密鍵は安全な場所に保管し、長いパスフレーズで保護しましょう。

メタデータ。公開鍵暗号化ではできないこと

公開鍵暗号化は、メッセージの内容が秘密であり、本物であり、改ざんされていないことを確認するためのものです。しかし、プライバシーに関する懸念は、それだけではありません。これまで述べてきたように、メッセージに関する情報は、その内容と同様に明らかになることがあります(「メタデータ」参照)。

自分の国で知られている反体制派と暗号化されたメッセージを交換した場合、たとえそのメッセージが解読されなくても、彼らと通信しただけで危険にさらされる可能性があります。国によっては、暗号化されたメッセージの解読を拒否しただけで、投獄されることもあります。

特定の相手と通信しているように偽装するのはもっと難しい。PGPの例では、二人とも匿名のメールアカウントを使い、Torを使ってアクセスするという方法があります。このようにしても、PGPは他の人からメールメッセージを秘密にするためにも、メッセージが改ざんされていないことをお互いに証明するためにも有効です。

公開鍵暗号方式について学んだ後は、iOSやAndroid用のSignalのようなエンドツーエンドの暗号化ツールを使ってみましょう。

出典:https://ssd.eff.org/en/module/deep-dive-end-end-encryption-how-do-public-key-encryption-systems-work

Table of Contents