IIJでは広報誌「IIJ.news」を隔月で発行しています。本blogエントリは、IIJ.news連載コラム「インターネット・トリビア」を転載したものです。IIJ.newsはご希望者へ郵送でお送りしています。また、IIJ WebではPDF版をご覧頂けます

IIJ.news vol.145 もくじ

iijnews145

  • ぷろろーぐ「桜から葉桜に」 鈴木 幸一
  • [特別対談] 人となり
    東京大学総長 理学博士 五神 真 氏
    IIJ 代表取締役社長 勝 栄二郎
  • Topics 「コンテンツ配信とインターネット」
    • 2020年を見据えた動画配信の技術革新
    • 夏の高校野球を配信する
    • 世界のCDN市場のトレンド
    • インターネット・トラフィックを支えるバックボーン
    • 通信を輻輳させないために
    • JOCDNの設立背景とサービス概要
    • VidMeet(ビッドミート)を立ち上げる
  • 人と空気とインターネット: コペルニクス的転回
  • Technical Now: AS400マネージドサービス事例
  • インターネット・トリビア: 暗号技術 ※この記事で掲載
  • グローバル・トレンド: ストレスフリーなバルセロナ

それぞれの記事はIIJ.news PDF版でお読み頂けます。

インターネット・トリビア: 暗号技術

「暗号」と言われて頭に思い浮かぶものというと、NHKの子ども向け番組に出てくる「ピタゴラ暗号棒」や、シャーロック・ホームズの「踊る人形」かもしれません。実際、これらは立派な暗号であり、「ピタゴラ暗号棒」は文字の並び方を変える「転置式暗号」の一つですし、「踊る人形」は文字を別のものに置き換える「換字式暗号」の一つです。こうした暗号は、文字の並べ方の変更方法や置き換え方法を知っていれば、誰でも暗号文を作ったり、もとの文章を復元できます。

もう少し暗号の実用性を高めるために、暗号文を作ったり復元したりする方法と、暗号文を作るための「鍵」とを分離する方法があります。こうすることで、暗号文作成・復元の方法を変えることなく、鍵を使い分けることによって、暗号文を読み書きできる人を制限できるようになります。

この「鍵」の扱い方は、二通りに大別できます。一つは、暗号文を作るときと復元するときに同じ鍵を使う方法で、暗号文のやり取りを行なう人があらかじめ同じ鍵を共有しておきます。これを「共通鍵暗号」と言います。もう一つは、暗号文を作るときと、復元するときに異なる鍵を使う方式です。この場合、ペアになる鍵の片方は秘密にしておく必要がありますが、もう片方は秘密にする必要がなく、公開しても構いません。これを「公開鍵暗号」と言います。

今、暗号文を作るときと復元するときで異なる鍵を使うと書きましたが、全く関わりのない鍵ではありません。これら二つの鍵(鍵ペア)は、一定の手順の計算により導くことができます。その計算手順として、「片方の鍵(秘密鍵)からもう片方の鍵(公開鍵)を導くのは簡単で、その逆は困難な方法」が意図的に選ばれます。例えば「多数の数(素数)の積を求める」計算と、その逆である「大きな数を素因数分解する」といった計算です。このような計算難易度の非対称性を利用したのが、公開鍵暗号です。

公開鍵暗号の応用の一つに「文書の改ざんを検出する」「文書の作成者を確認する」という利用方法があります。これを「電子署名」と呼びます。電子署名では、文書に対して作成者自身のみが知っている秘密鍵を使って「署名」となるデータを作ります。文書を受け取った人は、文書作成者が公開している公開鍵を使うことで、その「署名」が正しく作られたものかを調べることができます。もし、正しくないという結果が出たら、文書がどこかで改ざんされているか、そもそも文書作成者が別人であるということがわかる仕組みです。

最近、話題になっている暗号通貨の基盤技術であるブロックチェーンでも、この公開鍵暗号による電子署名の仕組みが使われています。通貨送金の記録であるトランザクションに対し、送金を実行した人の秘密鍵で電子署名を行なうことで、間違いなく本人が送金を実行したことの証明としています。また、送金額や宛先などが改ざんされていないことを確認できるようにしています。

さて、暗号というと、意図しない人に解読されたり内容を改ざんされたりしないかという安全性が気になります。共通鍵暗号でも公開鍵暗号でも、将来、コンピュータの計算能力が大幅に向上して、膨大な数を試行できるようになると、第三者に暗号文が解読されてしまう恐れがあります。未来永劫にわたって絶対に安全な暗号というのは存在しません。

暗号文の安全性を高めるためには、より長い(計算の難しい)鍵を使う必要がありますが、長い鍵はもとの暗号文の作成・復元作業の際にも負担になるため、むやみに長くすることはできません。そのため、暗号を使う際には、「その暗号文をいつまで安全に保たなければならないか」という期間を設定し、そこにコンピュータの発展を加味したうえで、その期間は解読できないだろうと思われるレベルの長さの鍵を使うという判断が必要になるのです。