このエントリーをはてなブックマークに追加このエントリをつぶやく

暗号技術入門01 みんなの暗号化技術入門~What’s暗号化技術の巻~

担当:小比類巻

目次

  • 暗号ってなあに? – 身近にある暗号化
  • 対称暗号と公開鍵暗号 – 暗号化と復号化アルゴリズム
  • 公開鍵暗号
  • ハイブリッド暗号システム
  • その他の暗号技術

暗号ってなあに? – 身近にある暗号化

キーワード

  • 平文(plaintext)
  • 暗号文(ciphertext)
  • 暗号化(encrypt)
  • 復号化(decrypt)
  • 暗号解読 or 解読 or 暗号解析(cryptanalysis)
  • 暗号解読者(cryptanalyst)

暗号化とは様々な場面で使われますが、みなさんにとって一番イメージしやすいのは「メール」の暗号化です。

暗号化したメールは鍵をつかって、復号化しないと見られません。

もし、あなたのメールをメール送信中に奪う不届きな輩が居ても、鍵さえ奪われるもしくは破られるなどしなければあなたのメールは誰にも読むことは出来ません。

例)メールの暗号化

※1 引用:かわいいフリー素材集いらすとや(検索日:2016/12/22)
http://www.irasutoya.com/

身近にある暗号化

  • メールを盗み見されないように使う。
  • 盗み見されないように暗号化します。
  • 暗号化した文章は復号化しないと見られません。
  • つまり、暗号文を盗まれても鍵がない限りは元の文章はわからないのです。

対称暗号と公開鍵暗号 – 暗号化と復号化アルゴリズム

複雑な問題を解くための手順:アルゴリズム

平文 → 暗号文 = 暗号化のアルゴリズム
暗号文 → 平文 = 復号化のアルゴリズム
暗号化のアルゴリズム + 復号化のアルゴリズム = 暗号アルゴリズム

詳しくは3回、11回へ

キーワード

  • アルゴリズム(argorithm)

鍵とは

暗号技術において、鍵(かぎ、key)とは、暗号アルゴリズムの手順を制御するためのデータである。

※2 出典:鍵 (暗号)(検索日:2017/03/28)
https://ja.wikipedia.org/wiki/%E9%8D%B5_(%E6%9A%97%E5%8F%B7)

  • 暗号化の際にも、復号化の際にも鍵は必要。
  • 暗号アルゴリズムの鍵は非常に大きな数である。
  • 当たり前ですが、鍵が盗まれると暗号が破られます。

対称暗号と公開鍵暗号

暗号は鍵の使い方によって二種類ある。

暗号 説明
対称暗号 同じ鍵で暗号化と復号化を行う
公開鍵暗号(非対称暗号) 違う鍵で暗号化と復号化を行う

この二つの暗号のメリットを組み合わせた暗号方式をハイブリッド暗号システム(hybrid cryptosystem)という。(詳しくは6回へ)

公開鍵暗号

公開鍵暗号は1970年代に発明されて、暗号の世界に一台変革を生み出した方式!

現在のコンピュータやインターネットにおけるセキュリティは公開鍵暗号に大きく依存している。

詳しくは5回へ

その他の暗号技術

暗号技術が提供するのは暗号による気密性だけではありません。

以下の二つも提供する。

用語 説明
正真性 書き換えが行われていないことを確かめること
認証(authentication) 本人であることを確かめる

正真性確認(一方向ハッシュ関数)

ハッシュ値とは

ハッシュ関数 (ハッシュかんすう、hash function) あるいは要約関数とは、あるデータが与えられた場合にそのデータを代表する数値を得る操作、または、その様な数値を得るための関数のこと。ハッシュ関数から得られた数値のことを要約値やハッシュ値または単にハッシュという。

※3 出典:ハッシュ関数(検索日:2017/03/28)
https://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E9%96%A2%E6%95%B0

一方向関数とは

一方向性関数(いちほうこうせいかんすう、英: one-way function)とは、簡単に計算できるが逆関数の計算は非常に困難である関数を指す。暗号理論などで用いられる概念である。素因数分解問題の困難性を用いたものが代表的。

※4 出典:一方向関数(検索日:2017/03/28)
https://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E9%96%A2%E6%95%B0

上二つを合わせて 一方向ハッシュ関数 という。

任意ビット長のビット列を、
ある長さ(nとする)のビット列に変換する関数 h(x) で、
h(x1)=h(x1) を満たす x1, x2 を容易に見い出せないのもの

正真性確認について

データが改竄されていないかを確認するために、一方向ハッシュ関数が使われます。

「正真性 = そのデータが正真正銘本物であるかどうかの確認」

通信回線を通じてデータを送受信する際に、経路の両端でデータのハッシュ値(一方向ハッシュ関数)を求めて両者を比較すれば、データが通信途中で改ざんされていないか調べることができる。

ネット上で配布されるソフトウェアを配布する際などにソフトウェアとその正真性を証明するために一緒に作者がそのプログラムのハッシュ値を公開することがあります。

Webサイトなどで配布されているファイルは、ダウンロード時に破損したり、悪意のある攻撃者によって改ざんされていたりすることがある。

ファイルの「ハッシュ値」を計算・比較できるようにしておくと、こうしたトラブルを防止しやすくなる。

まとめると

用語 説明
ハッシュ値 正真性(データが改ざんされていないか)を検証するためのもの
一方向ハッシュ関数 正真性を提供する暗号技術

通信回線でデータを送受信するとき

経路の両端でデータのハッシュ値を求めて両者を比較すれば、データが通信途中で改ざんされていないか調べることができる。

一方向関数による生成であるため、
ハッシュ値を変更しないまま元データを改ざんすることはできない。

認証と完全性検査に用いられる。

正真性(integrity) = 完全性

メッセージ認証コード(message authentication code)

メッセージが期待した通信相手から来たものであることを確かめるための技術

詳しくは8回へ

  • 正真性
  • 認証

を確認できる.

デジタル署名

  • なりすまし、改竄、否認という脅威を防ぐ技術。
  • 現実世界の署名や押印をデジタルの世界に持ち込んだもの。
  • なりすましや改竄を見つけ出して、否認を防止。

詳しくは9回へ

擬似乱数生成器

  • 乱数列を擬似的に生成するアルゴリズム
  • SSL/TLSの通信を行う時にその場限りの鍵(セッション鍵)が生成
  • 通信の気密性の保証

詳しくは12回へ

暗号用語

用語 説明
ステガノグラフィ(steganography) メッセージの存在を隠してしまうような技法
電子透かし ファイルの中に著作権者や購入者の情報を埋め込む技術

暗号セキュリティの常識

  • 秘密の暗号アルゴリズムを使うな
  • 弱い暗号は暗号化しないよりも危険
  • どんな暗号もいつかは解読される

秘密の暗号アルゴリズムを使うな

「自分の会社で独自のアルゴリズムを開発し、それを秘密にしておけば安全だ」

という考えは大きな誤り

「秘密のアルゴリズムを作る/使う」のではなく!

「公開されて、強いとされる暗号アルゴリズム」を使うべき!

暗号アルゴリズムそのもの を秘密にして機密性を保とうとしている暗号システムは暗号アルゴリズムの詳細が暴かれてしまったら終わり…

強い暗号アルゴリズムを生み出すことは非常に困難

専門の暗号解読者によって暴かれやすい!

弱い暗号は暗号化しないよりも危険

「暗号」を使うことで「誤った安心感」を抱き、
機密性の扱いがぞんざいになってしまうことが危険。

どんな暗号もいつかは解読される

解読されない暗号アルゴリズムは存在しない。

参考書籍

結城浩(2015)『暗号技術入門 第3版 秘密の国のアリス』SB Creative 446pp.
ISBN978-4-7973-8222-8
第1章 暗号の世界ひとめぐり(p4-p19)

カテゴリー: 勉強会   タグ: ,   この投稿のパーマリンク

コメントは受け付けていません。