インターネット通信に関わる脅威
盗聴・改ざん・なりすまし
インターネット通信には、さまざまな危険性が存在します。特に「盗聴」「改ざん」「なりすまし」は最も被害が多いリスクです。
盗聴
盗聴は、データを送受信する通信経路上で、第三者が許可なく情報を傍受・取得する行為を指します。
例えば、ある人が電子メールで重要な情報を送信するとします。メールはインターネットを通じて送信され、その途中で多くのネットワーク機器を経由します。盗聴者がこれらのネットワーク機器のいずれかにアクセスできれば、そのメールの内容を見ることができます。これが盗聴の一例です。
Wi-Fiなどの無線通信は、物理的な接続がないため、特に盗聴の対象となりやすいです。信号が空中を通過する際に、盗聴者がその信号を傍受することで、通信内容を取得することができます。
盗聴はプライバシーの侵害であり、機密情報の漏洩につながる可能性があるため、適切なセキュリティ対策を講じることが重要です。
![](https://it-school.te2software.com/wp-content/uploads/2023/08/暗号化_盗聴.png)
改ざん
改ざんは、情報が送受信される過程で、その内容が第三者によって意図的に書き換えられる行為を指します。
例えば、ある企業が別の企業に対して、電子メールによる注文を行うとします。このメールが送信され、通信経路を通過している最中に、第三者がそのメールを捉えて内容を書き換え、注文の量や内容を変更した場合、これは改ざんと言えます。
改ざんは、事実と異なる情報が伝達されることで、受信者を誤った行動に導いたり、混乱を引き起こしたりします。また、金銭的損失や信頼性の損失にもつながります。
したがって、送信者と受信者は、情報が途中で改ざんされないような通信手段を選び、適切なセキュリティ対策を講じることが重要です。
![](https://it-school.te2software.com/wp-content/uploads/2023/08/暗号化_改ざん.png)
なりすまし
なりすましは、第三者が別の人物やシステムになりすまして通信を行う行為を指します。
例えば、あるユーザーが他人のメールアドレスやIPアドレスを使い、その人物やデバイスになりすまして通信を行うという事例があります。
また、インターネット上で偽のWebサイトを作り、本物のWebサイトになりすましてユーザーから個人情報やパスワードを盗む詐欺行為(フィッシング)も、なりすましの一例と言えます。
なりすましによって、誤った情報が送られたり、個人情報が盗まれたりするなど、様々な問題が生じます。
特にインターネットの世界では、相手の正体を直接確認することが難しいため、なりすましに対する警戒が求められます。
![](https://it-school.te2software.com/wp-content/uploads/2023/08/暗号化_なりすまし.png)
デジタル署名(電子署名)
デジタル署名とは、電子文書の送信者が、文書の改ざん・なりすましを防ぐために付加する電子的な署名のことで、公開鍵暗号方式を使用して生成されます。
公開鍵暗号方式では、受信者の公開鍵を使用して暗号化し、受信者の秘密鍵を使用して復号化するのに対し、デジタル署名では、送信者の秘密鍵を使用して暗号化し、送信者の公開鍵を使用して復号化します。
デジタル署名を付与された情報は、署名を行った者以外が改ざんしたり、なりすましを行ったりすることが非常に困難になります。すなわち「改ざんされていないこと」、「本人であること」が保証されます。
また、デジタル署名は法的にも認められており、電子契約や電子申請などの場面で広く利用されています。
![](https://it-school.te2software.com/wp-content/uploads/2023/08/暗号化_デジタル署名.png)
デジタル署名と暗号化は用途が異なります。
- デジタル署名: メッセージの改ざんやなりすましを検知します。(完全性、真正性の保証)
- 暗号化: メッセージの盗聴を防ぎます。(機密性の保証)
これらの技術はしばしば組み合わせて使用され、デジタルコミュニケーションのセキュリティを強化します。
ハッシュ関数
関数とは、入力として与えられた値を処理し、なんらかの値を出力する手続きのことです。
![](https://it-school.te2software.com/wp-content/uploads/2023/10/関数4.png)
ハッシュ関数は、入力としてテキストを受け取り、ハッシュ値※を出力することができます。
※メッセージダイジェストとも言います。数字またはアルファベットと数字の組み合わせです。ダイジェスト(digest)には、「要約する」「整理する」「消化する」などの意味があります。
デジタル署名では、このハッシュ関数が重要な役割を果たします。
ここでは広く利用されている「SHA-256」(入力値に対して、256ビットのハッシュ値を出力する関数)を用いて実際にハッシュ値を生成してみましょう。
ここでは、「あいうえお」と入力します。
あいうえお → fdb481ea956fdb654afcc327cff9b626966b2abdabc3f3e6dbcb1667a888ed9a
ハッシュ関数には、同じデータに対してハッシュ関数を適用すると、常に同じハッシュ値が生成されるという特徴があります。
つまり、同じ「あいうえお」であれば常に同じ文字列が生成されます。
しかし、最初の「あ」を「か」に変えるとどうなるでしょうか?
かいうえお → 85cc1e03a34a8bc4266bb71dcffcc32f6fd72547984b64fafbbd640c401588f4
このように、一文字違うだけでも全く異なる文字列を出力していることが分かります。
つまり、ハッシュ値を比較すれば入力された文字列が同じ物かどうか容易に判別することができます。
なお、ハッシュ関数は一方向性関数であるため、生成されたハッシュ値から元のテキストを復元することはできません。
※参考ホームページ:https://lazesoftware.com/ja/tool/hash/
![](https://it-school.te2software.com/wp-content/uploads/2023/06/sc-211.png)
デジタル署名の流れ
デジタル署名が改ざんされていないことを保証できる理由は、ハッシュ関数と公開鍵暗号方式を利用した署名生成・検証プロセスにあります。
以下にそのプロセスを簡単に説明します。
- 送信者は、メッセージをハッシュ関数によってハッシュ値に変換します。ハッシュ関数は、入力データに対して一意の固定長の出力(ハッシュ値)を生成します。入力データが少しでも変更されると、ハッシュ値も大きく変わる性質があります。
- 送信者は、自分の秘密鍵を使ってハッシュ値を暗号化し、デジタル署名を生成します。
- 送信者は、メッセージとデジタル署名の2つを受信者に送ります。
- 受信者は、送信者の公開鍵を使ってデジタル署名を復号化し、ハッシュ値を取り出します。(秘密鍵は送信者しか持っていないことから、復号化できたことで本人であることが確認できます。)
- 受信者は、受信したメッセージをハッシュ関数にかけて独自にハッシュ値を計算し、4で取り出したハッシュ値と比較します。
![](https://it-school.te2software.com/wp-content/uploads/2023/08/暗号化_デジタル署名2-1.png)
もしメッセージが改ざんされていた場合、受信者が計算したハッシュ値とデジタル署名から取り出したハッシュ値が一致しなくなります。これは、ハッシュ関数の性質から、データが少しでも変更されるとハッシュ値が大きく変わるためです。
このプロセスにより、デジタル署名が正当である限り、「改ざんされていないこと」、「本人であること」が保証されます。
暗号技術の章で行った例え話では、特別な金庫(箱)の話をしました。
どのような金庫であったかというと、それぞれ異なる二つの鍵穴があり、「公開鍵」で施錠した場合は「秘密鍵」でしか開錠できず、「秘密鍵」で施錠した場合は「公開鍵」でしか開錠できない、というものでした。
そして、あなたは、「公開鍵」を友人や宅配業者などの大勢の人に配る一方、「秘密鍵」は自分一人だけが持つことにして、①絶対に盗み見ることのできないメッセージボックス、②絶対に盗まれない宅配ボックスなどとして使っていました。これが、公開鍵暗号方式の暗号化の仕組みの例え話であり、これは公開鍵で施錠し、秘密鍵で開錠する使い方でした。
一方、デジタル署名では、この箱を秘密鍵で施錠し、公開鍵で開錠します。
これは「秘密鍵は自分一人しか持っていない」という大前提を利用しています。
つまり公開鍵を使って開錠できる場合、友人や宅配業者はその箱にあなたが何を入れたかに関わらず、確かにあなたが施錠したということを確認できるのです。(なりすましの検知)
次に、改ざんされていないかどうかを検知するためには、ハッシュ関数の仕組みを利用します。
ハッシュ関数とは、メッセージの内容を固定長のデータ(ハッシュ値またはメッセージダイジェスト)に変換する技術です。ハッシュ値はメッセージの「指紋」のようなもので、異なるメッセージからは異なるハッシュ値が生成されます。同じメッセージからは常に同じハッシュ値が生成されます。
例えば、あなたが友人に「今日の会議は午後3時に始まります」というメッセージを送りたいとします。まず、このメッセージをハッシュ関数にかけてハッシュ値を生成します。次に、このハッシュ値を秘密鍵で施錠(署名)し、メッセージと共に友人に送ります。
友人は、あなたから送られたメッセージを受け取り、そのメッセージのハッシュ値を自分で計算します。そして、あなたの公開鍵を使って署名されたハッシュ値を開錠し、自分で計算したハッシュ値と照合します。これが一致すれば、メッセージが確かにあなたから送られたものであり、途中で改ざんされていないことが確認できます。
このように、デジタル署名では、メッセージのハッシュ値を秘密鍵で暗号化し、その署名を公開鍵で検証することで、送信者の認証とメッセージの完全性を確保します。
関連用語
セキュアブートは、デジタル署名の技術を利用してコンピュータの起動プロセスを保護する技術です。
セキュアブートでは、オペレーティングシステムやファームウェアの各コンポーネントにデジタル署名が施されています。コンピュータが起動する際、UEFI(Unified Extensible Firmware Interface)ファームウェアはこれらのデジタル署名を公開鍵を使って検証し、署名されたソフトウェアが信頼できるかどうかを確認します。そして、署名が正当でない場合は、そのソフトウェアの実行を拒否します。
これにより、マルウェアやルートキットのような悪意あるソフトウェアがシステムの起動プロセスに介入するのを防ぐことができます。
※検証は、予めUEFIファームウェアに組み込まれた公開鍵を用いて行われます。この公開鍵は信頼できる発行機関(例えば、オペレーティングシステムの開発企業)によって提供されます。
TPM(Trusted Platform Module)は、セキュリティを強化するためにPCやIoT機器に組み込まれたハードウェアチップです。
このモジュールは、秘密鍵やデジタル証明書などの機密情報を、ハードディスクやSSDとは独立した安全なチップ内に保管し、これらの情報を利用して暗号化や認証などのセキュリティ関連機能を提供します。
TPMの利用により、デバイスが外部からの攻撃によって不正に改ざんされたり、マルウェアに感染するリスクを大幅に低減できます。
また、データの暗号化やデジタル署名プロセスにおいて、秘密鍵が外部に漏れ出す危険性を最小限に抑えます。