本文へ移動
試験

  1. 高校情報
  2. 読んで分かる ITパスポート・基本情報
  3. セキュリティ
  4. 第2章 暗号と認証

セキュリティ 第2章 テクノロジ系・大分類:技術要素

暗号と認証

情報を読めなくする暗号の仕組みと、相手が本人かを確かめる認証の方法。

土曜の朝、開店前のこむぎ堂に、常連の客から電話がかかってきました。「こむぎ堂さんから『予約の確認のため、こちらでカード番号を入力してください』ってメッセージが来たんだけど、これ本物?」

店長は、そんなメッセージを送っていません。ミナトが客のスマートフォンの画面を写真で送ってもらうと、こむぎ堂のロゴも、いつものあいさつ文も、そっくりそのまま並んでいました。違うのは、リンクの先のアドレスだけです。

店長は粉だらけの手を止めて言いました。「本物のうちと、うちのふりをした誰かを、お客さんはどうやって見分ければいいんだ」。昼休み、ミナトが相棒のAIに相談すると、返事は短いものでした。「必要なものは二つです。中身を他人に読ませない仕組みと、相手が本人かを確かめる仕組みです」

パン屋の店先で、店長とミナトが、本物のこむぎ堂のメッセージと、ロゴをまねた偽のメッセージが並んだスマートフォンの画面を見比べている
図:見た目では区別できない、本物と偽物のメッセージ

読ませない仕組みが暗号、確かめる仕組みが認証です。名前だけ聞くと別々の技術ですが、ミナトは相棒の次の一言が気になりました。「どちらも、同じものを使います。鍵です」。データを読めなくするための鍵が、どうして「本人かどうか」の確認に使えるのでしょうか。

2-1暗号技術

予約フォームに名前と電話番号を書いて「送信」を押すと、その文字はお客さんの家のルータ、通信会社の機器、いくつものネットワークを通って、ようやく店のサーバに届きます。ミナトは途中の機器の数を数えようとして、やめました。どの機器でも、中身をのぞこうと思えばのぞけるからです。

のぞかれても困らないようにするには、途中を通る間だけ、中身を意味の分からない文字の並びにしておけば済みます。元のデータ(平文)を、第三者には読めない形(暗号文)に変えることを暗号化(暗号処理)といいます。受け取った側は、暗号文を元の平文に戻します。これが復号です。「復号化」と書かれることもありますが、試験では「復号」で出ます。

平文をどう変換するかという計算の手順を、暗号化アルゴリズムといいます。手順そのものは秘密にしません。広く使われている暗号ほど、手順は公開されていて、世界中の研究者が弱点を探しています。それでも破られないのは、計算に鍵という値を混ぜるからです。同じアルゴリズムでも鍵が違えば暗号文はまったく違うものになり、鍵を知らない人には復号できません。守るべき秘密は、手順ではなく鍵のほうです。

暗号化と復号を、アルゴリズムと鍵の使い方まで含めてひと組にした技術を暗号方式といいます。暗号方式は、鍵の使い方で大きく2つに分かれます。

ここから基本情報!暗号方式と2つの鍵

基本情報のシラバスでは、暗号化に使う鍵を暗号鍵、復号に使う鍵を復号鍵と呼び分けます。この2つが同じ鍵か別の鍵かが、暗号方式を2つに分ける目印です。暗号化と復号の2つの処理をまとめて暗号化・復号処理と呼ぶこともあります。

基本情報の範囲ここまで

同じ鍵で閉めて、同じ鍵で開ける

いちばん素直な作り方は、暗号化と復号に同じ鍵を使うことです。これを共通鍵暗号方式(対称鍵暗号方式)といいます。送る側と受け取る側が、同じ共通鍵をあらかじめ持っておきます。計算が軽く、大きなデータでも速く暗号化できるのが長所です。

困るのは、鍵の受け渡しです。こむぎ堂とお客さんが共通鍵を使うなら、その鍵を、のぞかれるかもしれない通信路を通さずに届けなければなりません。しかも、お客さんAとお客さんBが同じ鍵を使えば、AはBの予約を読めてしまいます。相手ごとに別の鍵が要り、n人がお互いに秘密の通信をするには、n(n−1)/2個の鍵が必要です。100人なら4,950個になります。

ここから基本情報!共通鍵暗号の種類

共通鍵暗号は、データの区切り方で2種類に分かれます。1つはブロック暗号です。平文を一定のビット数ずつの塊(ブロック)に切り、塊ごとに暗号化します。

ブロック暗号の代表はAES(Advanced Encryption Standard)です。ブロックの長さは128ビットで、鍵の長さは128ビット・192ビット・256ビットから選べます。鍵を256ビットにしたものがAES-256で、鍵が長いほど、鍵を総当たりで試す攻撃に時間がかかります。

AESの前に米国の標準だったのがDESです。ブロックは64ビット、実質の鍵の長さは56ビットしかなく、いまのコンピュータでは総当たりで破れるため、AESに置き換えられました。DESは以前のシラバスに載っていた語です。ほかのブロック暗号には、ブロック64ビット・鍵128ビットのIDEAなどがあります。

ブロックが128ビットなら、それより長い平文は何個ものブロックに分かれます。ブロックをどうつないで暗号化するかの決まりが暗号利用モード(ブロック暗号利用モード)です。ECBモードは各ブロックを独立に暗号化するので、同じ平文のブロックからは同じ暗号文のブロックができ、元のデータの模様が透けて見えることがあります。CBCモードは前のブロックの暗号文を次のブロックに混ぜ、CTRモードは数え上げた値(カウンタ)を暗号化して平文に重ねます。

もう1つはストリーム暗号です。データをブロックに切らず、1ビットや1バイトずつ、流れてくる順に暗号化します。音声のように、途切れずに届くデータに向いています。日本で開発されたKCipher-2は、電子政府推奨暗号リスト(後で出てきます)に載っているストリーム暗号です。

基本情報の範囲ここまで

閉める鍵と開ける鍵を分ける

鍵の受け渡しの悩みは、暗号化の鍵と復号の鍵を別にすると、ほとんど消えます。たとえるなら、こむぎ堂が、開いたままの南京錠をたくさん配る方法です。お客さんは予約票を箱に入れ、その南京錠をパチンと閉めて送ります。閉めるのは誰にでもできますが、開ける鍵はこむぎ堂の手元に1本あるだけです。

この考え方の暗号が公開鍵暗号方式です。南京錠に当たる公開鍵は、誰に知られてもかまいません。開ける鍵に当たる秘密鍵は、持ち主だけが持ち、外に出しません。公開鍵と秘密鍵は数学的に対になっていて、公開鍵で暗号化したものは、対の秘密鍵でしか復号できません。鍵の数は1人につき1組で済み、100人なら200個です。

その代わり、公開鍵暗号は計算が重く、共通鍵暗号に比べてずっと遅くなります。写真や長い文書をまるごと暗号化するのには向きません。

ここから基本情報!公開鍵暗号の代表例

公開鍵暗号は、「一方向には簡単に計算できるのに、逆向きはとても難しい」数学の問題を、安全性の根拠にしています。代表のRSA暗号は、大きな2つの素数を掛け合わせるのは簡単でも、掛けた結果の大きな数を素因数分解するのは非常に時間がかかる、という性質を使います。RSA暗号は暗号化にもデジタル署名にも使えます。

楕円曲線暗号(ECC)は、楕円曲線の上の離散対数問題の難しさを根拠にしています。RSA暗号より短い鍵で同じくらいの強さが得られるので、計算の力が小さいICカードやスマートフォンでよく使われます。

基本情報の範囲ここまで

2つの方式の、いいとこ取り

共通鍵暗号は速いけれど、鍵を届けにくい。公開鍵暗号は鍵を届けやすいけれど、遅い。そこで実際の通信では、両方を組み合わせます。データの本体は、その場で作った共通鍵で速く暗号化します。その共通鍵だけを、受信者の公開鍵で暗号化して一緒に送ります。共通鍵は短いので、遅い公開鍵暗号でもすぐに終わります。

この組み合わせをハイブリッド暗号方式(ハイブリッド暗号)といいます。こむぎ堂の予約フォームがHTTPSで送られるときも、この考え方で、毎回新しい共通鍵が用意されます。

お客さんが予約票を共通鍵の箱で閉じ、その共通鍵だけをこむぎ堂の南京錠(公開鍵)の小箱に入れて送り、こむぎ堂が秘密鍵で小箱を開けて共通鍵を取り出す流れ
図:ハイブリッド暗号方式。本体は共通鍵で、共通鍵は公開鍵で守る

ここから基本情報!鍵の管理と、暗号が古くなること

どれほど強い暗号でも、鍵が漏れれば意味がありません。鍵を作り、配り、保管し、決まった時期に取り替え、使い終わったら確実に消す。この一連の扱いを鍵管理といいます。たとえば、秘密鍵をサーバのだれでも読める場所に置いたままにするのは、鍵管理の失敗です。

暗号は、時間がたつと弱くなります。コンピュータが速くなり、解読の研究が進むと、昔は破れなかった暗号が破れるようになります。暗号のアルゴリズムや鍵の安全性が、このように損なわれていくことを危殆化といいます。56ビット鍵のDESは、その例です。

解読の研究には、総当たりよりずっと賢い方法があります。差分攻撃(差分解読法)は、少しだけ違う平文の組を大量に暗号化させ、平文の違いが暗号文の違いにどう伝わるかを統計的に調べて、鍵を推定します。線形解読法は、平文・暗号文・鍵のビットの間に成り立ちやすい一次式の関係を探し、大量の平文と暗号文の組から鍵を推定します。新しいブロック暗号は、この2つに耐えるように作られます。

では、いまどの暗号を使えば安全なのでしょうか。日本では、CRYPTREC(暗号技術検討会などからなる、国の暗号評価の体制)が暗号の安全性と性能を評価し、CRYPTREC暗号リストとして公表しています。このリストは3つのリストからなり、そのうち国の機関に利用を勧める暗号を載せたものが電子政府推奨暗号リストです。危殆化が進んだ暗号は、リストの中で扱いが見直されます。

基本情報の範囲ここまで

元に戻せない変換

暗号化は、鍵があれば元に戻せる変換でした。これとは反対に、わざと元に戻せないように作った計算があります。ハッシュ関数です。どんな長さのデータを入れても、決まった長さの値が出てきます。この値をハッシュ値といいます。

ハッシュ関数には、大事な性質が3つあります。同じデータからは必ず同じハッシュ値が出ます。ハッシュ値から元のデータを求めることは、事実上できません(一方向性)。そして、同じハッシュ値になる別のデータを見つけることも、事実上できません(衝突発生困難性)。データが1文字でも違えば、ハッシュ値はまるで違う値になります。よく使われるSHA-256は256ビットの、SHA-512は512ビットのハッシュ値を出します。どちらもSHA-2と呼ばれる仲間です。

この性質は、改ざんを見つけるのに使えます。こむぎ堂が配るメニューのファイルのハッシュ値を店のページに載せておけば、受け取った人は自分で計算した値と見比べ、途中で書き換えられていないかを確かめられます。パスワードをそのまま保存せず、ハッシュ値にして保存しておくのも、同じ性質を使った工夫です。

盗まれた機器の中身を守る

通信だけでなく、置いてあるデータにも暗号は使えます。予約の一覧が入ったノートパソコンを、店長が配達の途中で車に置き忘れたとします。パソコンのパスワードを知らなくても、記憶装置を取り出して別のコンピュータにつなげば、中身は読めてしまいます。

これを防ぐのがディスク暗号化(ストレージ暗号化)です。ハードディスクやSSDの中身を丸ごと暗号化しておけば、取り出されても読めません。もっと小さな単位で、ファイルごとに暗号化するのがファイル暗号化です。USBメモリで持ち出すファイルや、メールに添付するファイルを守るときに使います。

ここから基本情報!一部だけの暗号化と、暗号に見えて暗号でないもの

ファイルよりさらに細かく、文書の一部分だけを暗号化することもできます。XML暗号(XML Encryption)はW3Cが定めた仕様で、XML文書の要素ごとに暗号化できます。注文データのうち、カード番号の部分だけを隠す、といった使い方です。

読めない文字の並びに見えても、暗号ではないものがあります。BASE64は、データを6ビットずつに区切り、英数字と記号の64種類の文字に置き換える符号化の方式です。画像のようなデータを、文字しか通らない電子メールで送るために使います。鍵を使わないので、誰でも元に戻せます。GZIPは、DEFLATEという方式でデータを小さくする圧縮の形式です。これも、展開すれば誰でも読めます。どちらも秘密を守る役には立ちません。

基本情報の範囲ここまで

2-2認証技術

予約フォームは暗号化しました。けれど、店長の心配は消えません。「暗号で中身を隠しても、偽のこむぎ堂から届いたメッセージは、偽物のまま届くだろう」。そのとおりです。偽物も、暗号化して送ることはできます。

暗号化が答える問いは「途中で読まれないか」でした。店長が知りたいのは別の問いで、「これを出したのは誰か」「途中で書き換えられていないか」です。相手やデータが本物であることを確かめる技術をまとめて、認証技術と呼びます。

秘密鍵で「署名」する

ここで、公開鍵暗号の鍵の組を逆向きに使います。秘密鍵は持ち主しか持っていません。ということは、秘密鍵を使わなければ作れない値があれば、それを作れたのは持ち主だけです。紙の書類の印鑑やサインに当たるものを、この性質で作ったのがデジタル署名(電子署名)です。

こむぎ堂が、お知らせのメールにデジタル署名を付けるとします。まず、本文のハッシュ値を計算します。この、データを短くまとめたハッシュ値をメッセージダイジェストともいいます。次に、そのメッセージダイジェストに、こむぎ堂の秘密鍵を使った計算をして、署名の値を作ります。署名に使うこの秘密鍵を署名鍵といいます。

受け取った人は、届いた本文から自分でハッシュ値を計算し、それを署名の値と、こむぎ堂の公開鍵を使って照らし合わせます。よく使われる方式では、公開鍵で署名の値から元のメッセージダイジェストを取り出し、自分で計算したハッシュ値と比べます。検証に使うこの公開鍵を検証鍵といいます。照らし合わせた結果が一致すれば、本文は書き換えられておらず(完全性)、署名を作ったのは秘密鍵の持ち主、つまりこむぎ堂です。偽物には、こむぎ堂の秘密鍵が無いので、検証に通る署名を作れません。

データを読めなくするための鍵の組は、向きを変えて使うと、「この鍵の持ち主が作った」ことの証拠になります。章の初めにミナトが気になった一言は、このことでした。

同じ仕組みは、ソフトウェアにも使われます。アプリやプログラムを配る会社が、実行ファイルにデジタル署名を付けておくのがコード署名です。インストールの前に、作ったのが名乗っている会社であることと、配布の途中でマルウェアを仕込まれていないことを確かめられます。

ここから基本情報!署名の方式と、XML文書への署名

デジタル署名のための方式の1つにDSA(Digital Signature Algorithm)があります。離散対数問題の難しさを根拠にした、署名の作成と検証のための方式で、データの暗号化には使いません。暗号化と署名の両方に使えるRSA暗号との違いとして出題されます。

XMLデジタル署名は、XML文書にデジタル署名を付けるためのW3Cの仕様です。文書の全体だけでなく、一部の要素だけに署名できます。複数の会社の間で受け渡す注文書のうち、自社が書いた部分にだけ署名する、といった使い方ができます。

基本情報の範囲ここまで

いつ存在したかを証明する

デジタル署名で分かるのは「誰が作ったか」と「書き換えられていないか」までです。「いつ作ったか」は分かりません。署名した人が後から日付を書き換えた文書を作り直し、もう一度署名することもできるからです。

そこで使うのがタイムスタンプ(時刻認証)です。信頼できる第三者(時刻認証局。TSAとも呼ばれます)が、データのハッシュ値と時刻を組にして署名します。これで、そのデータがその時刻に確かに存在したこと、その時刻より後に書き換えられていないことを証明できます。契約書や、発明をした日の記録のように、日付に意味のある文書に使われます。

共通鍵で改ざんを確かめる

送る側と受け取る側が共通鍵を持っているなら、デジタル署名より軽い計算で、改ざんを確かめられます。データと共通鍵を合わせてハッシュ関数などで計算し、短い値を作ります。この値がMAC(メッセージ認証符号)です。データにMACを添えて送り、受け取った側は同じ計算をして値を比べます。共通鍵を知らなければ正しいMACは作れないので、一致すれば、データは書き換えられておらず、鍵を持つ相手から届いたと分かります。ただし、同じ鍵は受け取った側も持っています。そのため、第三者に対して「送信者が作った」と証明することはできません。この点がデジタル署名と違います。

ここから基本情報!メッセージ認証と、秘密を送らない本人確認

受け取ったデータが改ざんされていないか、決まった相手から届いたかを確かめることを、メッセージ認証といいます。デジタル署名もMACも、メッセージ認証の手段です。

本人確認でも、秘密そのものを送らない工夫があります。チャレンジレスポンス認証では、サーバが毎回違う乱数(チャレンジ)を送り、利用者側はそれとパスワードなどの秘密から計算した値(レスポンス)を返します。サーバも同じ計算をして比べます。通信路にはパスワードそのものが流れず、チャレンジが毎回変わるので、盗み聞きしたレスポンスを後で使い回すこともできません。この方式を使う認証のプロトコルの例がCHAP(Challenge Handshake Authentication Protocol)です。

基本情報の範囲ここまで

いつもと違うときだけ、もう一度確かめる

認証の強さは、場面に合わせて変えることもできます。いつもは店のパソコンから昼間にログインしている人が、深夜に海外から、見たことのない端末でログインしてきたら、怪しいと考えるのが自然です。このように、ログインの場所・端末・時間帯などから危険の度合いを見積もり、ふだんと違うときだけ追加の確認を求めるのがリスクベース認証です。ふだんの利用者に手間をかけさせず、乗っ取りの疑いがあるときだけ関門を増やせます。

2-3利用者認証

予約システムの管理画面には、店長とミナトと、パートの2人がログインします。ミナトがレジの横を見ると、付箋が1枚貼ってありました。「ID:komugi パスワード:komugi」。4人とも、同じIDで入っていたのです。

システムを使う人を1人ずつ見分けるための文字列や番号がID(利用者ID)です。そのIDの持ち主本人であることを確かめるために、本人だけが知っている文字列を組み合わせます。これがパスワードです。IDとパスワードなどで本人であると確かめられてから、システムを使い始めることをログインといいます。

4人が同じIDを使っていると、困ることが2つあります。1つは、誰が予約を消したのかが後から分からないことです。もう1つは、パートの人にも、売上や顧客の一覧まで見えてしまうことです。利用者ごとに、どの情報に触れてよいか、何をしてよいかを決めて制御することをアクセス管理といいます。アクセス管理は、1人に1つのIDがあって初めて成り立ちます。

そして、IDを分けても、そのIDを使っているのが本当にその人でなければ意味がありません。システムを使う人が本人であるかを確かめることを利用者認証(ユーザ認証)といいます。付箋に書かれたパスワードは、この確かめを誰にでも通れるものにしていました。

パスワードを決まりで守る

ミナトは、1人に1つのIDを作り、パスワードの決まりも作りました。12文字以上、ほかのサービスと同じものは使わない。このように、パスワードの長さ・使う文字の種類・使い回しの禁止などを定めた取り決めがパスワードポリシです。

短いパスワードは、考えられる文字の並びを片っ端から試す総当たり攻撃で破られます。そこで、決まった回数続けてログインに失敗したIDを、しばらく使えなくします。これがアカウントロックアウトです。数回まちがえるたびに長く待たされるので、1つのIDを狙った総当たりは現実的な時間で終わらなくなります。

ここから基本情報!パスワードの扱いと、忘れたときの本人確認

パスワードを決まりどおりに作り、人に教えず、メモを貼らず、漏れたらすぐ変える。こうした扱いを組織として徹底することをパスワード管理といいます。以前のシラバスに載っていた語です。

パスワードを忘れた人の本人確認には、登録のときに決めておいた質問と答え(「最初に飼ったペットの名前は?」など)を使うことがあります。これが合い言葉です。ただし、答えがSNSなどから調べられてしまう質問だと、他人に突破されます。

基本情報の範囲ここまで

文字のパスワードのほかにも、覚えているものや持っているもので本人を確かめる方法があります。マトリクス認証は、画面に縦横のマス目の表を出し、利用者が前もって決めておいた位置と順番のマスにある文字を入力させます。表の中身は毎回変わるので、入力した文字を盗み見られても、次は使えません。銀行が配る、数字の並んだカードを使う乱数表では、「3行目の2列目」のように指定された位置の数字を入力します。こちらはカードを持っていることが本人の証拠です。ニーモニック認証は、前もって登録した画像(たとえば家族やペットの写真)を、画面に並んだ何枚もの画像の中から選ばせる方式として知られています。文字の並びより、見覚えのある絵のほうが覚えやすい、という人の記憶の性質を使います。

3種類の「本人らしさ」

ここまでの方法を並べると、本人であることの根拠は3種類に分けられます。

  • 知っていること:パスワードや暗証番号のように、本人だけが知っている情報を使う知識による認証です。使う情報を知識情報と呼びます。基本情報のシラバスでは、この要素を「記憶」と呼んでいます。
  • 持っていること:カードやスマートフォンのように、本人が持っている物を使う所持品による認証(所有物による認証)です。持っている物にある情報を所持情報と呼び、要素の名前としては所有と呼びます。
  • 本人の体:指紋や顔のように、本人の体の特徴を使います。要素の名前は生体、使う情報は生体情報です。次の節でくわしく扱います。

付箋のパスワードが破られたのは、1種類の根拠しか無かったからです。種類の違う要素を2つ以上組み合わせるのが多要素認証で、ちょうど2つ組み合わせるものを二要素認証(2要素認証)といいます。パスワードが漏れても、攻撃者の手元に店長のスマートフォンが無ければ、ログインできません。

似た言葉に二段階認証(多段階認証)があります。こちらは、確認の手順を2回以上に分けることを指し、使う要素の種類は問いません。パスワードを入れた後に合い言葉を聞くのは二段階認証ですが、どちらも「知っていること」なので、二要素認証ではありません。

持ち物で確かめる

持ち物の代表はICカードです。ICチップを埋め込んだカードで、中に鍵や証明書を入れておけ、チップの中で計算もできます。社員証などのカードを読み取り機にかざして本人を確かめる方法をIDカードによる認証といいます。

スマートフォンも持ち物になります。ワンタイムパスワードは、一度使うと無効になり、毎回違う値になるパスワードです。専用のアプリや機器が30秒ごとなどに新しい値を作り、盗み見られても次のログインには使えません。携帯電話の番号あてのショートメッセージで確認コードを送り、それを入力させるのがSMS認証です。どちらも「その電話や機器を持っている人」であることを確かめています。

ここから基本情報!持ち物と組み合わせる暗証番号

ICカードやスマートフォンを使うときに入力する数字の暗証番号がPINコード(PIN)です。カード(所有)と暗証番号(記憶)を組み合わせるので、カードを拾った人だけでは使えません。

ワンタイムパスワードを作る小さな機器や、鍵をしまっておくUSBの機器のように、認証のために利用者が持つ専用の装置をセキュリティトークンといいます。

基本情報の範囲ここまで

パスワードを使わない、何度も入れない

パスワードは、覚えにくく、使い回され、漏れます。そこで、パスワードを入力せずに本人を確かめるパスワードレス認証が広がっています。代表的な規格がFIDOです。スマートフォンなどの端末の中に秘密鍵をしまい、サーバには公開鍵だけを登録します。ログインのときは、端末での指紋や顔、PINの確認で秘密鍵を使えるようにし、サーバから届いた値に秘密鍵で署名して返します。サーバには盗まれて困るパスワードが置かれず、通信路にも秘密が流れません。

ネット通販のカード払いにも、本人確認の仕組みがあります。EMV 3-Dセキュア(3Dセキュア2.0)は、カード会社が、使っている端末や買い物の内容などから不正のおそれを判定し、おそれが高いときだけ、ワンタイムパスワードや生体認証で追加の本人確認を求める仕組みです。2-2節のリスクベース認証を、カード決済に取り入れた形です。

一方、こむぎ堂のスタッフは、予約システム、メール、会計ソフトと、いくつものサービスにログインしています。一度の認証で、連携している複数のサービスを使えるようにするのがシングルサインオン(SSO)です。覚えるパスワードは1つで済みますが、その1つが破られると全部のサービスに入られるので、最初のログインの認証を強くしておく必要があります。

ここから基本情報!相手が人間かどうか

予約フォームに、プログラムが自動で大量の予約を入れてくることがあります。これを防ぐには、相手が誰かより先に、相手が人間かどうかを確かめます。ゆがんだ文字を読ませる、条件に合う画像を選ばせるなど、人間には簡単でプログラムには難しい問題を出すのがCAPTCHAです。

基本情報の範囲ここまで

確かめる相手は、人とは限りません。購入したソフトウェアが正規に買われたものであり、不正にコピーされたものではないことを、インターネットなどを通じてソフトウェアの会社に確かめさせる仕組みをライセンス認証(プロダクトアクティベーション)といいます。会計ソフトを店の新しいパソコンに入れたときに求められる手続きがこれです。

2-4生体認証技術

店長は、管理画面に入るたびにスマートフォンを出すのが面倒だと言い、顔で開けられる新しい機種に替えました。翌朝、厨房でマスクと帽子のまま顔を向けると、何度やっても開きません。ところが休みの日、顔の似た家族が手に取ったら、あっさり開いたそうです。

体の特徴や、その人に固有のふるまいで本人を確かめる方法をバイオメトリクス認証(生体認証)といいます。忘れることも、置き忘れることもないのが長所です。使う特徴によって、いくつもの種類があります。

  • 顔認証:顔の形や、目・鼻・口の位置などの特徴を使います。カメラだけで済み、スマートフォンや空港の出入国の手続きで使われています。
  • 静脈パターン認証:手のひらや指の内側を流れる静脈の形を、近赤外線で写して使います。体の内側の特徴なので、外から写し取りにくいとされ、銀行のATMなどで使われています。
  • 掌認証(手のひら認証):手のひらの特徴を使う認証の呼び名です。手のひらの静脈の模様や、手の形を使うものがあります。
  • 虹彩認証:瞳孔のまわりにある、色の付いた部分(虹彩)の模様を使います。虹彩の模様は人によって違い、幼いころに定まると、その後はほとんど変わらないとされます。
  • 網膜認証:眼球の奥にある網膜の血管の模様を使います。虹彩認証と取り違えやすいので、「目の表の模様が虹彩、目の奥の血管が網膜」と区別します。
  • 声紋認証:声の高さや響きの特徴を使います。電話での本人確認などに使われます。

ここから基本情報!体の特徴と、ふるまいの特徴

基本情報のシラバスでは、生体認証を2つに分けています。1つは、体そのものの特徴を使う身体的特徴による認証で、顔・静脈・虹彩・網膜などがここに入ります。

身体的特徴の中で古くから使われてきたのが指紋認証です。以前のシラバスに載っていた語です。指紋認証では、指紋の線(隆線)が枝分かれする点や途切れる点の位置と向きを取り出して照合します。この特徴点をマニューシャといいます。指紋の画像そのものではなく、特徴点を比べるので、指の当て方が少しずれても照合できます。

もう1つは、その人のふるまいのくせを使う行動的特徴による認証です。声紋認証はこちらに入ります。もう1つの代表が署名認証で、書かれた字の形だけでなく、ペンを動かす速さや筆圧、書き順の変化を比べます。形をまねても、書く動きまではまねにくいからです。

基本情報の範囲ここまで

本人を拒むか、他人を受け入れるか

店長のスマートフォンで起きた2つのことは、生体認証の精度を表す2つの指標そのものです。マスク姿の本人を何度も拒んだのは、本人なのに本人ではないと判定する誤りで、その割合を本人拒否率(FRR:False Rejection Rate)といいます。家族を受け入れてしまったのは、他人を本人と判定する誤りで、その割合が他人受入率(FAR:False Acceptance Rate)です。

生体認証は、読み取った特徴が登録した特徴に「どれだけ似ているか」で判定します。判定を厳しくすると他人受入率は下がりますが、少し条件が違うだけの本人も拒まれるようになり、本人拒否率が上がります。判定をゆるめれば、その逆です。2つを同時にゼロにはできないので、店の管理画面のように他人に入られては困る所では他人受入率を下げる側に、毎日何百人も通る改札のように待たせては困る所では本人拒否率を下げる側に、調整します。

そもそも特徴を読み取れない、ということもあります。指紋がすり減っていて読み取り機が特徴を取り出せない、といった場合です。こうした、生体情報をうまく取得・登録できない割合を表す指標として、未対応率という語が使われることがあります。国際規格(ISO/IEC 19795-1)では、登録ができない割合(FTE)や、照合のときに読み取れない割合(FTA)が定められています。

2-5公開鍵基盤

デジタル署名の仕組みを店長に説明していると、店長が首をかしげました。「お客さんは、こむぎ堂の公開鍵で署名を確かめるんだよな。でも、偽物が『これがこむぎ堂の公開鍵です』って自分の鍵を配ったら?」。ミナトは言葉に詰まりました。

店長の疑問は正しく、ここまでの仕組みには、確かめていない前提が1つあります。デジタル署名もハイブリッド暗号方式も、「この公開鍵は確かにこむぎ堂のものだ」という前提の上に立っています。偽物が自分の公開鍵を「こむぎ堂の鍵」として配れば、偽物の署名は検証に通り、お客さんは偽物の公開鍵で予約票を暗号化して送ってしまいます。では、この前提は誰が保証するのでしょうか。

第三者が「この鍵は本物」と証明する

役所の印鑑登録証明書に似ています。印鑑だけでは誰の印か分かりませんが、役所が「この印鑑はこの人のもの」と証明すれば、知らない相手の印も信用できます。公開鍵でこの役所に当たるのが認証局(CA:Certification Authority)です。

認証局は、申し込んだ人や組織が本当に名乗るとおりの相手かを確かめ、その名前と公開鍵を組にした電子的な証明書を発行します。これがデジタル証明書(公開鍵証明書)です。法律などでは電子証明書とも呼ばれます。デジタル証明書には、持ち主の名前、公開鍵、有効期限などが書かれ、全体に認証局のデジタル署名が付いています。証明書の中身を書き換えれば、認証局の署名の検証に通らなくなります。

認証局とデジタル証明書を使って、公開鍵の持ち主を保証する仕組み全体をPKI(Public Key Infrastructure:公開鍵基盤)といいます。

信頼をたどる、その出発点

ここで、同じ疑問がもう一度出てきます。認証局の署名を確かめるには、認証局の公開鍵が要ります。その公開鍵が本物だと、誰が保証するのでしょうか。

たどっていくと、最後には、誰にも署名してもらわず、自分で自分に署名した認証局の証明書に行き着きます。これがルート証明書です。ルート証明書は、OSやブラウザに最初から組み込まれています。それ以上検証せずに信頼する、この出発点をトラストアンカー(信頼の基点)といいます。ブラウザは、サーバの証明書の署名を、ルート証明書にたどり着くまで順に確かめます。

ここから基本情報!間に入る認証局

ルート証明書の認証局が、すべての証明書を直接発行するわけではありません。ルートの認証局は、まず中間の認証局に証明書を発行し、中間の認証局が、Webサイトなどの証明書を発行します。この中間の認証局自身の証明書が中間CA証明書です。ブラウザは「サイトの証明書 → 中間CA証明書 → ルート証明書」の順に署名をたどります。ルートの秘密鍵をふだんは使わずにしまっておけるので、ルートの鍵が漏れる危険を減らせます。

基本情報の範囲ここまで

ブラウザが、こむぎ堂のサーバ証明書に付いた認証局の署名を、ブラウザに組み込まれたルート証明書までさかのぼって確かめていく様子
図:サーバ証明書から、ブラウザの中のルート証明書まで署名をたどる

サーバの証明書、利用者の証明書

Webサイトのサーバが、アクセスしてきた人に「このサーバは名乗っているドメインの本物です」と示すための証明書がサーバ証明書です。HTTPSでつなぐとき、ブラウザはまずサーバ証明書を受け取って検証し、そのうえで、2-1節のハイブリッド暗号方式と同じ考え方で、通信に使う共通鍵を相手と共有します。いまのTLSでは、共通鍵そのものを公開鍵で暗号化して送るのではなく、鍵の材料をやり取りして両者で同じ共通鍵を作ります。証明書の公開鍵は、相手が証明書の持ち主であることを署名で確かめるのに使います。

反対に、サーバの側が「アクセスしてきたのは登録した利用者の端末か」を確かめるために、利用者の端末に入れておくのがクライアント証明書です。こむぎ堂の管理画面を、クライアント証明書を入れた店のパソコンからしか開けないようにすれば、パスワードが漏れても、店の外の端末からは入れません。

期限の前に取り消す

デジタル証明書には有効期限がありますが、期限の前に使えなくしたいこともあります。サーバの秘密鍵が漏れた、会社の名前が変わった、といった場合です。そこで認証局は、取り消した(失効させた)証明書の一覧を公開します。これがCRL(Certificate Revocation List:証明書失効リスト)です。証明書を検証する側は、有効期限と署名に加えて、その証明書がCRLに載っていないかを確かめます。

ここから基本情報!失効の問い合わせ

CRLは、取り消した証明書が増えるほど大きくなり、更新される間隔の間に失効した証明書は載りません。そこで、1つの証明書についてだけ、いま失効しているかをその場で問い合わせる方法があります。これがOCSP(Online Certificate Status Protocol)です。一覧をまるごと取りに行かずに済みます。

基本情報の範囲ここまで

国の公開鍵基盤と、認証局を置かない考え方

PKIは、国の手続きにも使われています。マイナンバーカードのICチップに電子証明書を入れ、オンラインでの申請やログインの本人確認に使う仕組みが公的個人認証(JPKI)です。カードを持っていること(所有)と、暗証番号を知っていること(記憶)を組み合わせて使います。

ここから基本情報!政府の認証基盤

行政機関が電子文書をやり取りしたり、国に電子申請をしたりするときに、相手が本物の行政機関であることを確かめるための公開鍵基盤がGPKI(Government Public Key Infrastructure:政府認証基盤)です。

別々の認証局が発行した証明書どうしを確かめ合うには、認証局の間に信頼のつながりが要ります。複数の認証局の間に入って相互に証明書を発行し合い、橋渡しをする認証局がBCA(Bridge Certification Authority:ブリッジ認証局)です。GPKIでも、府省の認証局とほかの認証局をつなぐのに使われています。

基本情報の範囲ここまで

認証局を置かない考え方もあります。暗号化メールのソフトウェアPGPでは、利用者どうしが「この人の公開鍵は本物だ」とお互いの鍵に署名し合います。自分が信頼する人が署名した鍵なら信頼する、というつながりを広げていくこの仕組みを信頼の輪といいます。上から下へ信頼を配るPKIに対して、横へ信頼を広げる形です。

翌週、こむぎ堂の予約ページのトップに、店長の字でこう書いた画像が載りました。「こむぎ堂から、メッセージでカード番号をお聞きすることはありません。ご予約は、このアドレスのページだけで受け付けています」。管理画面は、1人1つのIDと、スマートフォンを使った二要素認証に変わりました。

常連の客から、また電話がありました。「ブラウザの鍵のマークを押したら、こむぎ堂の名前の証明書が出てきたよ」。店長はほっとした顔をしましたが、ミナトには1つ気になることが残っていました。偽のサイトも、自分で取ったドメインの証明書なら手に入れられるのです。証明書が保証するのは「そのアドレスのサーバが本物か」までで、「そのアドレスが本当にこむぎ堂のものか」は、お客さんがアドレスを見て確かめるしかありません。

この章のふりかえり

この章で印を付けた用語は、暗記カードで覚えられます。

ITパスポートの範囲(76語)を暗記カードで覚える 基本情報まで(116語)を暗記カードで覚える

カードの「カテゴリ」は、この章の節の名前です。同じボタンでもう一度取り込んでも、復習の進み具合は消えません。