メニュー

暗号技術によるデータ保護:IoTセキュリティの基礎知識7

IoTセキュリティの基礎知識

更新日:2017年8月02日(初回投稿)
著者:アルテア・セキュリティ・コンサルティング 代表 二木 真明

不正な参照からデータを保護するため、多くのシステムで暗号技術が利用されています。とりわけ、オフラインの情報を守るために暗号を使うことは、データ保護上「最後のとりで」です。さらに、システム自体が持つ情報にも保護すべきものがあります。暗号技術は、データの秘匿のためだけに使われるわけではありません。データの正当性を証明したり、改ざんを防止したりする際も、使用することがあります。今回は暗号技術の重要なポイントについて解説します。

今すぐ、技術資料をダウンロードする!(ログイン)

1. 現代の暗号事情

暗号は古くから存在します。ミステリー小説やスパイ小説にも、さまざまな暗号が登場します。かつての暗号は、その作り方も秘密にされていました。しかし技術の進歩に伴い、こうした古典的な暗号は解読されやすくなりました。

現在、コンピュータで利用されている暗号技術は、古典的なものとは根本的に異なります。暗号を作り、それを復号するための方法(アルゴリズム)は原則として公開されています。これらのアルゴリズムで暗号化を行うときは、「鍵」と呼ばれる短いデータを使用します。この鍵さえ秘密にしていれば、アルゴリズムが判明していても、容易に解読できないようになっているのです。鍵なしで解読するためには、膨大な回数の計算をしなくてはなりません。現時点で最高速のコンピュータを使用しても、何十年何百年とかかるほどの回数の計算が必要です。一方、鍵さえ分かっていれば、暗号は極めて効率的に復号できます。つまり、現代で使われている暗号は、アルゴリズムではなく、鍵をどのように保護するかが極めて重要なのです。

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

暗号で使う鍵(暗号鍵)は、数十ビットから数千ビット程度の少量のデータで作られています。同一方式であれば、鍵が長い(ビット数が大きい)ほど、保護の強度は増します。しかも、鍵長(データの大きさ)に対して暗号強度は指数関数的に増大するため、例えば鍵長が倍になれば暗号強度は桁違いに増加するのです。とはいえ、暗号鍵が漏えいしてしまえば元も子もありません。こうした特性は、暗号を使う目的によっては不便になる場合があります。そのため、こうした暗号鍵の性質を踏まえて、使い方が異なるアルゴリズムが考案されました。現代の暗号は鍵の使い方で大きく2種類の方式に分けられ、具体的には共通鍵暗号方式と公開鍵方式、さらに応用的な技術としてハッシュ関数、電子署名があります。

1:共通鍵暗号方式

共通鍵暗号方式とは、共有鍵もしくは対称鍵暗号とも呼ばれ、暗号化と復号に同一の鍵を使用する方式です(図1)。代表的なものに、米国政府が標準規格として採用しているAES(Advanced Encryption Standard)があります。同様に、以前から使用されているDES(Data Encryption Standard)や、その改良版である3DES(Triple DES)なども、共通鍵暗号に分類されます。

図1:共通鍵暗号方式

図1:共通鍵暗号方式

共通鍵暗号方式でデータを暗号化して相手に渡す際には、何らかの手段であらかじめ暗号鍵を相手に渡さなければなりません。複数の相手といくつかのデータを暗号化してやりとりする場合、相手の数だけ暗号鍵が必要です。もし同じ鍵を使ってしまうと、相手同士が互いのデータを復号できてしまったり、鍵が漏えいされれば全ての相手がダメージを受けたりします。よって、多数の相手とやりとりする場合、暗号鍵の管理が煩雑になるのが、共通鍵暗号方式の難点といえます。一方、アルゴリズムは比較的軽量で、コンピュータへの負荷もそれほど大きくないのが利点の一つです。

2:公開鍵暗号方式

公開鍵暗号方式とは、非対称鍵暗号とも呼ばれ、暗号化と復号にそれぞれ異なる鍵を使う方式です(図2)。暗号化で使った鍵では復号できず、別途専用の復号鍵が必要になります。代表的なのがRSA暗号です。例えば、複数の相手から一方的に情報を受け取りたい場合、複数の相手に同じ暗号化用の鍵を渡しても、相手同士の秘密は保たれます。自身だけが復号用の鍵を持っていればよいからです。このことから、暗号化用の鍵は公開鍵、復号用の鍵は秘密鍵とも呼ばれます。公開鍵暗号方式では鍵を任意には選べず、あるルール(アルゴリズム)を使用して公開鍵と秘密鍵をペアで生成します。この2つの鍵は一般に同等で、一方で暗号化を行うともう一方で復号できる(相方の鍵でしか復号できない)という特性を持ちます。この特性は、後述の電子署名にも生かされています。

図2:公開鍵暗号方式

図2:公開鍵暗号方式

公開鍵暗号方式の特徴は、暗号化や復号処理に要する負荷が高いことです。従って、大量のデータを扱うときは不向きです。もし、大量のデータを公開鍵暗号の特性で取り扱いたい場合は、ランダムに発生させた一時鍵(セッション鍵)を使ってデータ本体を共通鍵暗号で暗号化し、その鍵を公開鍵暗号で暗号化して添付するという組み合わせ方式が使われます(図3)。共通鍵暗号の暗号鍵は数百ビットまでなので、公開鍵暗号方式でも効率よく暗号化できるのです。

図3:組み合わせ方式

図3:組み合わせ方式

3:ハッシュ関数(アルゴリズム)

暗号技術の応用に、ハッシュ(Hash)関数があります。ハッシュ関数は、大量のデータを数十ビットから数百ビットの小さなデータ(ハッシュ値)に圧縮するものです。圧縮といっても、結果から元のデータを復元できない不可逆な圧縮です。しかし、その結果は元のデータの内容を確実に反映している上に、元のデータの変化に対するハッシュ値の変化がランダムになり、同一のハッシュ値を持つ元データの発見が極めて困難(膨大な回数の計算が必要)という特性を持っています。よって、元のデータの同一性を確認するために使用されます(図4)。何らかの意味を持つ元のデータにハッシュ関数を適用したハッシュ値が同一であれば、元のデータも同一であると見なせます。もちろん、同一のハッシュ値を持つデータは存在します。しかし、それを意識的に見つけ出すのは困難です。なぜなら、意味のある改ざんを施したデータを、意図的に同じハッシュ値にするという操作が現実的に不可能だからです。そのため、原本とハッシュ値が同一であるデータは改ざんされていないと判断できます。

図4:ハッシュによるデータ検証

図4:ハッシュによるデータ検証

続きは、保管用PDFに掲載中。ぜひ、下記よりダウンロードして、ご覧ください。

3. 暗号鍵の保護

保管用PDFに掲載中。ぜひ、下記よりダウンロードして、ご覧ください。

4. 暗号の強さと危殆化

保管用PDFに掲載中。ぜひ、下記よりダウンロードして、ご覧ください。

  • 基礎知識を社内で利用したい方

ピックアップ記事

tags