
【高校情報Ⅰ】共通鍵暗号方式・公開鍵暗号方式 情報セキュリティ
◆◆はじめに◆◆
いままで、3か月かけて教員研修用教材、Python、JavaScript、共通テスト(サンプル・試作問題)の高校情報Ⅰ講座を動画、およびnoteでアップしました。
今回から、情報セキュリティ・ネットワーク系の詳細解説していきます。
しかし、既に300本以上ネットワーク・セキュリティの基礎の動画をアップしています。(YouTube動画アップ数 日本一の認識)
以下で、検索してもらえれば情報の教科書に載っているセキュリティ・ネットワーク系の用語は大半引っかかるはず。
情報Ⅰ共通テスト対策 書籍出版します!

2022年高校一年生になる世代って・・うんこ漢字ドリルが流行った世代なんですね。
(非常識の為)実際の高校の授業では扱えない内容ですが、
特別編として今回だけこのネタ使っています。(不愉快になった方、すみません)
次回からは普通に戻ります。
公開鍵暗号方式には、認証技術でも使われますが、現行の教科書がそこまで書かれてない(実教出版ですが見逃してたらすみません)のと、一気に説明すると混乱すると思うので、これから発行される教科書見て、追加解説入れたいと思います。
◆◆動画解説◆◆
◆◆文字おこし◆◆
まず覚えておいてほしい用語があります。

暗号化と復号そして平文です。
暗号化
データの内容を第三者にわからなくする技術または手法
そして復号は
暗号化されたデータをもとのデータに復元すること
テストで間違いやすいのは、暗号化とちがって
復号は「復号化」と最後に「化」漢字を付与してはいけません。
暗号化されていないデータのことを平文と言います。
この、暗号化と復号には鍵というものを使います。
鍵と言っても、物理的な鍵ではなく、パスワードの文字列の様なもの。。
ーーーーーーー
共通鍵暗号方式はこの暗号化と復号に使う鍵が同じものになります。

例えば、がっきーからミライに、うんこのデータを送信する場合で考えていきましょう。
共通鍵はあらかじめ何らかの方法でお互い同じ鍵を持っていることが前提です。
「うんこ」というファイルを共通鍵で暗号化すると、こんな風に解読不可能な文字列になります。

だから、通信経路上などで誰かに通信が傍受されても、それが、うんこであることはわかりません。
そして、ミライに届いたとき、ミライが持っている共通鍵で復号すれば、平文にもどり
ミライは中身がうんこであることを認識できます。
ーーーーーーーー
公開鍵暗号方式は、暗号化と復号に使う鍵が異なるものになります。

鍵ペアと言って秘密鍵と公開鍵の2種類の鍵を使います。
秘密鍵で暗号化したデータを復号できるのは公開鍵だけになります。
公開鍵で暗号化したデータを復号できるのは秘密鍵だけになります。
その名の通り、秘密鍵は、発行した本人以外知られてはいけない鍵になります。
もし漏らしたら、情報漏洩扱いになります。
一方、公開鍵はその名の通り公開情報なので、漏れても良い情報になります。
こんどは、ガッキーからミライにに公開鍵暗号方式を使って、
第三者に漏れないように、うんこを送り付ける方法でやりたいと思います。
まず、前準備としてミライが公開鍵と秘密鍵の鍵ペアを生成します。
そして、秘密鍵は漏らしたらいけない情報なので、ミライの公開鍵の方をがっきーにあらかじめ渡しておきます。
そして、がっきーはミライの公開鍵を使って、うんこのデータを暗号化し、送信します。
途中で、通信が傍受されてもミライの秘密鍵でしか復号できなので、それがうんこであることはわかりません。
そして、ミライに届いたとき、ミライが持っている秘密鍵で復号すれば、平文にもどり
ミライは中身がうんこであることを認識できます。
公開鍵暗号方式の鍵ペアを生成するアルゴリズムはいくつか種類がありますがRSAが有名です。
これが今生成した公開鍵、

そしてこっちが秘密鍵になります。

今回は練習の為に公開しましたが、実際に通信で使うときの秘密鍵は漏らさないようにくれぐれも気を付けてください。
==================ー
公開鍵暗号方式、共通鍵暗号方式にはそれぞれ、メリットとデメリットがあります。

共通鍵は、
お互いに同じ鍵を共有する方法が難しいということです。
インターネットでやり取りする場合、鍵自体を受け渡す際に通信が傍受されたら意味がありません。
公開鍵暗号方式は、共通鍵暗号方式に比べて暗号化・復号に時間がかかるというデメリットがあります。
それぞれのメリット、デメリットを生かしたハイブリット暗号方式というのが主流になっています。

まず、ガッキーが共通鍵を生成し、ミライが鍵ペアを生成したとします。
ミライの公開鍵は途中で漏れても良いので、ガッキーに公開鍵を渡します。
ガッキーはミライの公開鍵を使って生成した共通鍵を暗号化してミライに送信します。
途中通信が傍受されてもミライの秘密鍵でしか復号できないので共通鍵の情報が漏れることはありません。
そして、ミライは、自身の秘密鍵を使って、ガッキーが生成した共通鍵をゲットします。
実際に送受信するデータは復号が早い共通鍵を使って行われます。
共通鍵の受け渡しの為に公開鍵暗号方式を使い、
データのやり取りは共通鍵暗号方式を使うハイブリット暗号方式も合わせて覚えておきましょう。