プログラミング講座 第12.5回

第12.5回の目標:プログラミングを通して暗号化について理解を深める。

1.共通鍵暗号と公開鍵暗号

暗号化の技術には共通鍵暗号方式と公開鍵暗号方式がある。

2.共通鍵暗号

暗号化と復号に同じ鍵を使う方式の暗号を共通鍵暗号という。事前に鍵を安全な方法で相手に渡さなければならないという問題や、やり取りをする相手の人数分の鍵を用意しなければならないという問題がある。

2.公開鍵暗号

対となる2つの鍵を使い、それぞれでデータの暗号化と復号を行う方式の暗号を公開鍵暗号という。データの暗号化を行う鍵は広く公開してよい。こちらを公開鍵という。データの復号を行う鍵は本人だけが持ち、秘密にしなければいけない。こちらを秘密鍵という。

3.公開鍵暗号の処理の流れ

  1. 受信者が公開鍵、秘密鍵のペアを作成する。
  2. 受信者が公開鍵を公開する。
  3. 送信者は、受信者の公開鍵を用いてデータを暗号化し、送信する。
  4. 受信者は秘密鍵を用いて受け取ったデータを復号する。

4.RSA暗号

RSA暗号は公開鍵暗号の一種である。Ronald Linn Rivestさん、Adi Shamirさん、Leonard Max Adlemanさんらによって作られたため、このように呼ばれている。

今回はRSA暗号でのやり取りを体験してみよう。

5.RSAの送信/受信を体験する

  1. (受信者が行うこと)公開鍵、秘密鍵のペアを作成する。p,q,eは異なる数を選ぶ。

    素数p 素数q 公開鍵 e
    (受信者の)秘密の情報を隠す

    公開鍵 n 公開鍵 e 秘密鍵
  2. 送信者は、受信者の公開鍵を用いてデータを暗号化し、送信する。元の文はひらがなで4文字までとする。

    公開鍵 n 公開鍵 e

    元の文
    (送信者の)秘密の情報を隠す

    元の文を数値化

    暗号化した文

  3. 受信者は公開鍵と秘密鍵を用いてデータを復号する。

    公開鍵 n

    秘密鍵

    暗号化した文

    復号した文

    復号文をひらがなに

第12回へ 目次へ 第13回へ