
やあ、みんな。ビリーだよ。
これから「セキュリティ」についての基本を話していくよ。ちょっと長くなりそうだ。
セキュリティの本質
セキュリティというと暗号のことを思い起こす人が多いんじゃないかな。たしかに「暗号が破られた」というような話はよく耳にするし、暗号強度を上げることが強固なセキュリティだという誤解は多いんだけど、実は暗号化するかどうかよりもまず大事なのは「認証」なんだ。
セキュリティと似た言葉でセーフティというのもあって、最近は機能安全や製品安全といった日本語で注目されているのは知っているかな。セーフティの方は、また機会があったら話してみようと思う。
これから話すのは、「セキュリティ」の方の安全だ。この場合の「安全」とは、暴力からの安全、財産の保全などが代表的だし、情報通信におけるセキュリティといえば、データという財産を、盗まれないように、壊されないようにいかに守るか、と捉えることができるよね。簡単にするために、まずはマンションのセキュリティシステムを考えてみよう。
本人認証
芸能人が住んでいるような高級マンションがあるとしよう。住んでいる人は100人だ。このマンションの唯一の入り口には、住人全員の顔を覚えている警備員さんがいて、住人以外の人達を全て追い返しているんだ。これはもう完璧なセキュリティだよね。

でも、そもそも人間による本人確認というものは、目で見たり声で聞いたりしてその人と分かる、というだけだから、うろ覚えだったりすると間違えるし、双子の見分けがつくかどうかとか、結構微妙だよね。
目で見ても間違えるのに、電話になったりすると顔を見ることが出来ないので、ちょっと古いけど「オレオレ詐欺」なんていう悪意のある場合は見分けがつかなくなってしまう。特にオレオレ詐欺の場合は、電話であるために、対面しているよりも情報が圧倒的に少なく、本人認証に間違いがおきてしまうということだね。
電話でこのような間違いを防ぐためには、
- パスワードや合言葉など、本人であれば答えられる言葉で判断する
- 本人に電話をかけなおす
という手段を取るべきなんだ。
1.は普通の人はしないけど、秘密組織でドアの向こうの相手を確認するため(これも顔が見えない場合だね)に「山!」「川!」と合言葉をとなえるわけだ。2.の手段は普通の人でもできるけど、怪しいと思わなければこんなことしないよね。
「オレオレ詐欺」で引っかからなかった人は、2.の対策をしたためにセーフだったというよりは、名前を聞いたり、近況について話題を振ったりという、意識しないレベルでの「本人であれば答えられる質問」をしていたんじゃないかな。
さて、マンションの話にもどるけど、どうもこのマンションは人の入れ替わりが激しい上に、空室が埋まってきて住人も200人になったので、警備員さんも顔を覚えるのが大変になってきたんだ。そこで合言葉を決めることにしてみよう。

警備員さんに聞かれた質問に正しく答えなければ玄関を開けてくれない。これは、「山」「川」といった決まり言葉でもいいし、マンションの住民しか知らない事実、例えば「102号室のビリーさんの子供は何人?」とかでもいいよね。さらに人数が増えてくると、いちいちやりとりをするのが面倒なので、入館証を発行することにして、玄関で警備員さんにこれをみせることになったんだ。
さあ、ここまでで、本人認証の方法が3つ出てきたね。「顔パス」「知識(合言葉など)」、それと「持ち物(入館証)」だ。言いかえれば、「どのような姿をしているか」「何を知っているか」「何を持っているか」の3つだね。実は、本人認証をするためにはこの3つの方法しかないんだ。
警備員さんがリストラされちゃって電子ロックになっても同じなんだよ。いろいろな電子ロックがあるけど、
- 指紋や虹彩、声紋などで判断する(どのような姿をしているか)
- パスワードや暗証番号を入力する(何を知っているか)
- 磁気またはICなどのIDカードを発行する(何を持っているか)
というパターンだよね。同じでしょ?

コンピューターの世界では、1.をバイオメトリクス認証、2.をパスワード認証、3.を証明書による認証と呼ぶんだ。もちろんこれらを2つ以上組み合わせる運用もある。例えば、IDカードを入れてからパスワードを聞くとか。
それはさておき、認証の手段がちゃんとしていて他に出入り口がなければ、セキュリティは完璧に達成されていることになる。財産としての情報データ(部屋にある昔のラブレターとかね)を暗号化する必要はまったくないよね。他人は入って来られないんだから。
最初に言ったように、暗号がなくてもセキュリティは確立できるんだ。というか、「暗号」とか「認証」というのはセキュリティを実現するための一部にすぎないんだよ。ここまでは、認証の基本的な考え方を話したけど、次は通信の場合の認証を考えてみるよ。
通信における本人認証
上述の話はマンションの中にある重要情報(昔のラブレター)をいかに守るか、という話だった。これはコンピューターの世界では、 パソコンのハードディスクの中身を守るということになるよね。
秘密情報のおいてある場所に入ってこられるかどうかが問題になるんだけど、通信の場合には、秘密情報を運搬することが、そもそも前提になるよね。この場合に重要情報を守るためにはどうすればいいんだろうか。
昔の外国映画などでみかける、こんなオフィスメールシステムを知ってるかな?机の脇にプラスチックかガラスのようなものでできた直径十センチくらいの筒があって、別のフロアに延びている。気送管郵便と言って、空気圧を使って手紙カプセルを筒の先にいる相手に届けるようになっている。この通信は経路にスキがない。スキがなければ盗まれる危険はないよね。部屋に入ってこられないのと一緒だ。
問題はこの管に継ぎ目や中継点がある場合なんだ。普通、郵便システムや電話システムはすべて中継点があって、ここで行き先を変えている。ここで盗み見や盗聴、果ては文書の改ざんや捏造までが行われる可能性が出てくるんだ。

神戸にいるビリーが東京のガールフレンドのベリーちゃんと、誰にも知られないように情報を交換する場合、継ぎ目のない、途中で壊すこともできないながーい土管を引いて、音声や手紙や愛のプレゼントを送り合えば、盗まれる危険がないから暗号化する必要もないんだ。安全な通信路が確保できているという前提だね。
ただし、この場合でも、土管のむこうにいるのが確かにベリーちゃんなのかどうかを確認することを忘れちゃいけないよね。顔が見えればいいんだけど、見えない場合には、どうにかして通信相手の本人確認をしなくてはいけないんだ。
本人確認ということで言うと、ドアの向こうにいる人の確認をすることとおんなじだね。さきほど話した3つの認証方法を使えばいいんだ。
- どのような姿をしているか(バイオメトリクス認証)
- 何を知っているか(パスワード認証)
- 何を持っているか(証明書による認証)
ただ、ふつうながーい土管はないわけで、既存の郵便システムを使う場合での通信相手の認証を考えてみよう。この場合、土管の向こう側で、目の前にいるベリーちゃんに対して、「今手紙を受け取ろうとしているあなたはベリーちゃんですか」という認証をすることになる。
ビリーがベリーちゃんへの内緒の手紙をポストに投函するということになるんだけど、相手の認証手順を分かりやすくするために、私書箱のようなものでの受け渡しを考えてみよう。
神戸のポストで投函された手紙は郵便システムによって東京のポストに入る。このポストにベリーちゃんが手紙をとりに行くわけだ。このときポストは、ベリーちゃん宛ての手紙が自分の中にあることを知っていて、やってきたベリーちゃんに手紙を渡さなきゃならない。ところが、ここで「認証」をしないと、誰でもポストから手紙を持って行けてしまうよね。

そこでポストは、本当に君はベリーちゃん?と確かめなくてはならないんだけど、どうしたらいいだろうか。ポストがベリーちゃんのことをよく知っていれば、バイオメトリクス認証が使えるね。
他にはベリーちゃんは、あらかじめ決めておいた暗証番号をプッシュするか、例えば保険証のような身分証明書を提示してもいい。2.や3.の方法だ。
これで普通は十分なんだけど、ベリーちゃんによく似た子が手紙を取りに来たり、暗証番号が誰かに知られたり(または偶然当てられてしまったり)、保険証が偽造だったり、また本物だとしても盗まれたりしていたら内緒の手紙はやはり持っていかれてしまうことになるね。このあたりは、マンションのセキュリティを破る場合とまったく同じなんだ。悪意のある第三者の登場だ。
暗号化の必要性
認証についてはまたあとで詳しく説明するとして、ここでいったん暗号が必要になるのはどんなときか考えてみよう。
一説には、暗号の歴史は文字と同じくらい古いとも言われているんだ。カエサル(シーザー)が発案した暗号は、今でも「カエサル式」といって、暗号の基本として知られている。
暗号とは、基本的に暗号化する人と復号化する人が、秘密文書が敵の手に渡る可能性を認識しているということが前提になるんだ。政治とか、恋敵とか、不倫の調査とかで、誰かが文書を欲しがることがこちらにも分かってるからこそ暗号化するんだよね。
ビリーとべリーちゃんの手紙も、誰かに狙われていると思った場合、万が一ポストからもって行かれてしまっても大丈夫なように、解読が困難な暗号で手紙を書いておく必要があるということになる。だれかに狙われているという意識が共有されていなければ、だれも面倒な暗号化などしないよね。年賀状を暗号で書く人はいないでしょ?
要するに、権謀術数渦巻くところに暗号があることになる。
ちょっと話がそれるけど、暗号技術が大きな進歩を遂げたのは、両世界大戦のときといわれているんだ。両世界大戦のときは、暗号が戦況を左右するくらい重要になったんだけど、なんでだと思う?答えは無線通信の発達なんだ。
これまでも説明しているように、なんらかの物理的媒体を使う通信経路の場合は、その通信経路そのものの保護と、受け渡しの時の相手先認証にまずは注意が払われるべきだ。つまり、そもそも秘密文書が敵の手に渡らないことが一番で、万が一渡ったときのことを考えて暗号化ということだよね。

でも、無線の場合はそうはいかない。有線よりもはるかに便利で、味方同士の通信が楽であると同じく、敵がその通信を傍受することも簡単だよね。なるべく無線を使わないという手もあったんだろうけど、海や空を使った全世界にわたる戦場においては、傍受される危険を犯しても、圧倒的に無線通信は便利なはずだ。秘密文書が敵の手に渡ることを前提に、文書を暗号化する必要がでてきたんだ。
こうして暗号は通信セキュリティの主役になってきたけど、さらに最近、暗号にとって世界大戦時の無線通信の普及と同じ位大きなインパクトがある技術転換がおきているんだ。何かわかるかな?インターネットの普及なんだ。
インターネットはたとえ有線であったとしても、ルーターやサーバー、公衆回線など、隙間や継ぎ目がたくさんある通信経路だよね。いつでも誰かに情報を持っていかれることを前提に考えておかなくてはならない。しかもここで、クレジットカード情報などのシリアスや個人情報がやり取りされるようになり、一般ユーザーまでもがクラッカーやネット犯罪者達の悪意にさらされることになっている。暗号化せずにクレジットカード番号をインターネット上に送るなんて自殺行為だよね。
インターネットはたとえ有線であったとしても、ルーターやサーバー、公衆回線など、隙間や継ぎ目がたくさんある通信経路だよね。いつでも誰かに情報を持っていかれることを前提に考えておかなくてはならない。しかもここで、クレジットカード情報などのシリアスや個人情報がやり取りされるようになり、一般ユーザーまでもがクラッカーやネット犯罪者達の悪意にさらされることになっている。暗号化せずにクレジットカード番号をインターネット上に送るなんて自殺行為だよね。
実はあともう一つ、偽造や改ざんの危険というのもセキュリティの大事な要素なんだ。ラブレターの中身が書き換えられたり、クレジットカードで買ったものの値段が変わっていたりしたら大変だよね。偽造防止(改ざん防止)は、暗号技術をつかった認証と言えるんだけど、これもちゃんと説明するね。
では、情報通信の世界におけるセキュリティとして、本人認証技術、暗号技術、そして改ざん防止としてのデータの認証(実際にはこれも目的は本人認証だったりします)、について順番に話していくことにしよう。
認証技術
前にも言ったように、本人認証をするためには、指紋や虹彩などのバイオメトリクス認証を行なうか、パスワードで確認するか、証明書を提示してもらうかの3つに大きく分かれるんだ。
バイオメトリクス認証

よく使われているバイオメトリクス認証は、指紋、虹彩、手のひらや指などの静脈パターンといったものがあるね。ビリーのパソコンやケータイは指紋認証装置が内蔵されているし、銀行のATMカードでも出てきているよね。
ちなみに虹彩とは瞳の模様なんだ。指紋・虹彩・静脈パターンなどは、それぞれ個人を特定することができる特徴があるために使われている。他にも、声紋なども精度を上げれば使えそうだね。
処理に時間がかかると使いにくいし、逆にスピードを追及するあまりに指紋の比較手順をはしょると、確実性が損なわれ、元も子もないよね。それで「正確に」「しかも速く」という効率のいい手法がいろいろ研究されているんだ。
ただし、指紋の情報をインターネットで送信してサーバーが確認する、といった手法はあまり使われていない。サーバーに送る情報が膨大になる上に、この送信路がまたクラッカーのねらい目になってしまうよね。
バイオメトリクス認証は、あくまでも認証する側とされる側が物理的に近いところにいて、指紋や虹彩を触ったり直接見たりすることで、その場での認証を行なう場合に限られることになる。これまでの例で言えば、マンションの入り口や、ベリーちゃんがビリーからの手紙を取りに行ったポストでも、それぞれに指紋を登録しておけばこの方法が使えるよね。
パスワード認証
二番目のパスワード認証は、3つの方式の中では使われる場面がダントツに多い。マンションの入り口では、住民だけが知る番号が一つあってこれをカギの代わりに使うことが多いと思うけど、普通のパスワード認証は、個人がユニークなIDをもって、それぞれに個別のパスワードを適用するよね。
例えば、Windowsにログインするのにユーザー名とパスワードが必要だし、会員登録制のサイトにアクセスする場合も必要だね。リアル社会でも、銀行からお金をおろす場合(キャッシュカードの磁気情報(口座番号)がユーザーIDなんだ)や、ダイアル式の南京錠も(IDはないけど)パスワード認証だね。
証明書認証
三つ目は証明書による認証だ。実生活では、免許証やパスポートなど公的に通用するものや、社員証のように会社という特定の範囲で通用するものがあるね。証明書で認証する場合に注意すべきなのは、「この証明書は信頼の置けるものか」という点につきる。正確に言うと、「権威のある機関が発行したものか」「偽造されたものではないか」という二点に分かれるんだ。

コンピューター及び通信の世界でも、実生活と同じ概念の「電子証明書」が使われているんだ。権威のある機関(パスポートなら日本国、免許証なら公安委員会といった立場をとるもの)としての「電子認証局」も存在する。
ある証明書が、権威ある機関から発行されたものであり、かつ、改ざんされていないことが明らかであれば、この証明書を持っている人を本人と認めるというのが、証明書をつかった認証方式なんだ。
電子的な証明書とは、電子的な「サイン」と暗号技術的にはほぼ同じことなんだ。ある小さな文書を作成し(実生活では免許証だったりサインと呼ばれたりする部分だ)、これが当該認証機関または本人以外に作れないものであると証明できれば認証完了だ。
証明書による認証は、
- 本人認証(「免許証を持っている」というもの)
- サーバー認証(「このサーバーは確かなものですよ」というもの)
- 文書の偽造防止(サインや封印に相当する)
に同じ技術が活用できる。2.と3.については改めて説明するね。
このような本人認証を要所要所で行なうことで、通信路やデータへのアクセスを制限することができ、セキュリティの第一段階は終了するんだ。そうはいっても、流れるデータを暗号化しないことには依然として危険が残るよね。さて、いよいよ暗号技術の説明をしていくよ!
暗号アルゴリズムと鍵
暗号化にはどんな方式でもかならず「アルゴリズム」と「鍵」が存在するんだ。アルゴリズムは、暗号化の方法のことだ。例えば「文章の全ての文字をずらす」などというアルゴリズムの暗号がある。これが前にちょっと言った「カエサル(シーサー)式暗号」だよ。カエサル(シーザー)が考え出したといわれているからだ。

「渋谷で待ち合わせ」という情報があるとしよう。これはビリーがベリーちゃんに伝えたいんだけれど、内容をバリー君に知られたくない。よって、「すべゆどみついをそ」とベリーちゃんに伝えることにした。これは、全部の文字を五十音表で一字ずつずらして読むんだ。

この場合の「一字」が「鍵」なんだ。たとえこれがバリー君の手に渡ったとしても、まずはアルゴリズムを推測し、その上で鍵を推測する必要があるよね。一字くらいならまずやってみればいいんだけれど、「二十字ずらす」というのはたぶん二十回やってみないとわからないでしょ。大変だよね。
実際には、デジタル化の現代だから、まずは元の文章(平文=ひらぶん=という)を数字に直す。日本語の場合は、五十音を行と列に分解して、あ を 11、い を 12、か を 21、ち を42などと書いたりする方法があるんだけど、説明を単純にするために、英語のアルファベット26文字を考えてみよう。A を 01、B を 02、C を 03・・・Z が 26となるんだ。この後に数字やよく使う記号を並べてもいいね。
すると、「I love you」という文章は、「09 12 15 22 05 25 15 21」となり、鍵を「+ 3」とすると「12 15 18 25 18 24」となる。これで、暗号化は数学になり、コンピューターで扱いやすくなったでしょ。

もっとも、実際の秘密文書では、こんな単純な暗号はいまどき誰も使わない。このような暗号の解き方はたくさんあって、アルゴリズムもちょっと慣れた人なら数字の並び順をみて簡単にわかってしまうからね。
実は、現代のコンピューター社会においては、ほとんどのアルゴリズムは公開されているんだ。アルゴリズムが公開されていないと、見知らぬ同士の人間やコンピューターがやり取りできない。
ビリーがあるウェブサイトにアクセスしてネットショッピングをする時に、クレジットカードの番号を誰も知らないやり方で暗号化しても意味がないよね。だから、「自分はこのアルゴリズムを使って暗号化しました」ということまでは言っておかなくてはいけないし、この情報は他の人に知られることは覚悟の上だ。
アルゴリズムはいくつかのパターンを世間で共有し、鍵を当事者以外に知られないようにする、というのが現代の暗号の一般的な姿なんだよ。だから、暗号がいかに破られにくいか、という「暗号強度」は、「鍵の推測のされにくさ」とイコールなんだ。逆に言えば、鍵がばれると、暗号は一気に無意味になっちゃうよね。
この鍵の方式で、暗号には大きく2つの種類があるんだ。みんなも聞いたことがあるかもしれないけど、「秘密鍵共有方式」と「公開鍵方式」というんだ。次回は、この2つの暗号方式について説明するよ。
-
- 第1回 組込みシステムのこれから
- 第2回 IoTの成功はセキュリティ次第
- 第3回 組込みでもGPUやFPGAと早めに親しんでおこう
- 第4回 電子産業の紅白歌合戦、CEATECで垣間見えた未来
- 第5回 小口開発案件の集合市場、IoTの歩き方(上)
- 第6回 小口開発案件の集合市場、IoTの歩き方(下)
- 第7回 徹底予習:AI時代の組込みシステム開発のお仕事
- 第8回 いまどきのセンサー(上):ありのままの状態を知る
- 第9回 いまどきのセンサー(下):データを賢く取捨選択する
- 第10回 組込みブロックチェーンの衝撃(上)
- 第11回 組込みブロックチェーンの衝撃(下)
- 第12回 エネルギーハーベスティングの使い所、使い方
- 第13回 「人を育てる」から「道具を育てる」へ、農業から学ぶAI有効活用法
- 第14回 CPS時代に組込みシステム開発に求められることとは
- 第15回 次世代車のE/Eアーキテクチャに見る組込みの進む道
- 第16回 RISC-Vが拓く専用プロセッサの時代
- 第17回 振動計測の大進化で、熟練エンジニアのスキルを広く身近に
-
- 零の巻:組込みというお仕事
- 壱の巻:2進数と16進数を覚えよう!
- 弐の巻:割り込みとポーリング
- 参の巻:printf()が使えない?
- 四の巻:これにもIntelが入ってるの?
- 五の巻:Endianってなに?
- 六の巻:マルチタスクとは
- 七の巻:スタックってなあに?(1)
- 七の巻:スタックってなあに?(2)
- 八の巻:メモリを壊してみましょう
- 九の巻:コードが消える?~最適化の罠~
- 拾の巻:例外が発生しました
- 拾壱の巻:コードサイズを聞かれたら
- 拾弐の巻:キャッシュは諸刃の剣
- 拾参の巻:デバイスにアクセスするには
- 拾四の巻:セキュリティってなに?(1)
- 拾四の巻:セキュリティってなに?(2)
- 拾四の巻:セキュリティってなに?(3)
- 拾五の巻 :DMA対応と言われたら(1)
- 拾五の巻 :DMA対応と言われたら(2)
- 拾六の巻:ヒープとスタック
- 拾七の巻:フラグメンテーション
- 拾八の巻:CPU起動とブートローダ
- 拾九の巻:kmとKByteの「kとK」
- ビリーへの質問:DMAとキャッシュの関係
- ビリーへの質問:スタックオーバーフローについて
- ビリーへの質問:CPUレジスタについて