こぐま|note
はじめに こんにちはこぐまです。 本日はAWSの記事です。といっても・・ この記事はAWSの前提知識なしで読めます。 ぜひ、「クラウド」や「IT」を全く知らなくても、気軽に読める内容を目指していますので、読んでいただけたら嬉しいです! これからしばらく、AWSの「ECS」というサービスについて、 自分が学んだことを備忘録としてまとめていきたいと思います。 ...
https://note.com/koguma_gunso
こんにちは。エス・エー・エス株式会社DXサービス部の海田(かいだ)です。この度、不定期で記事を書いていくことになりました!
というわけで、よろしくお願いいたします!
さて第一回目の今日は、
最近ちょっとだけ学んでみた「暗号化」のお話と、
少しずつ話題になってきている(難しいけど面白いなあと思った)
「量子コンピューター」なるものについて書いていきたいなと思います。
技術としてはとても難しいものですし、
私自身、そのさわり程度すら理解できているか怪しいものですが・・
なるべく優しい言葉で書いていきたいなと思います。
では、まずは暗号化の話から。
お家を出るとき、鍵をかける。
会社のロッカーで鍵をかける。
車や自転車から離れるとき、鍵をかける。
私たちは日常生活のいろんなタイミングで鍵をかけます。
ところでなぜ、鍵をかけるのでしょうか?
鍵をかける目的は、
その内側にあるものを守りたいから!
その内側にあるものを見られたくないから!
・・ですね。
もしも世界中に、人のお金やモノを盗んだりするような悪い人が一人もいなくて、
また、自分の持ち物や振る舞いを、誰に見られてもかまわない気にしない・・
そんな世の中だったら、鍵なんて必要ないんでしょうね。
きっと心の鍵ですら、必要ないんでしょうね・・(ちょっと哲学的(笑))
ところが、世界も自分も、そういう次元に達しているわけではないので、
やはり日常生活で鍵は必要です。
ところで、「鍵」というと車や家やロッカーだけではなく、
スマホやPCで、モノを買ったり、メッセージをやり取りする場合にも
使われていることはご存知でしょうか。
はい、これですね。
いわゆる「HTTPS」というやつです。
「HTTPS」については以下記事で記載しているので、よかったら見てみてください!
HTTPSの大きな役割は2つ。「暗号化」と「存在証明」です。
そして、そのどちらにも「鍵」を使います。
さて、どんな鍵をつかうのでしょうか?
一般的な車や家やロッカーの鍵と何がちがうのでしょうか?
HTTPSの技術で使われている「鍵」はとてもとても不思議な「魔法の鍵」です。
それはどんな鍵かというと、「一組の鍵」です。
「一組」なので、鍵としては「2つ」あります。
片っぽを「公開鍵」、もう片っぽを「秘密鍵」と言います。
(多分名前を聞いたことある方は多いのではないでしょうか?)
そしてこの「一組の鍵」はとても面白い特徴を持っています!
例えばここに一つの宝箱があるとします。この時、
という特徴があります。締めるのに使った鍵が使えないなんてとても不思議ですね!
対応するもう片方の鍵でしか開かないということです。つまり、
これは日常生活で考えてみるとなかなか面白いです。
開けるときと、閉めるときで別々の鍵を使う玄関のドアってあまり見たことないですね。
そしてもう一つ大きな特徴があります。
この「すぐにはつくれない」というのがどれくらいなのか・・というと、
ざっと1億年くらいだそうです。
・・人類は生きてるんですかね?(笑)
この「魔法の鍵」の存在と特徴が、世界中のセキュリティを維持する主流の仕組みとなっているのです。
もう少し深く見てみましょう。
例えば、自分と相手がいて、自分の「大事な情報」を相手に渡したい場面を考えます。
安全にやり取りするために、魔法の鍵を使いましょう。
魔法の鍵(一組の鍵)は、相手が用意します。
相手は一組の魔法の鍵を作り、公開鍵のほうを文字通り「公開」します。
あなたは(公開されているので)その公開鍵を手に入れることができます。
あなたはここで、「大事な情報」を宝箱に詰めて、手に入れた公開鍵でカチャリと施錠します。
そして相手に送ります。(※1)
宝箱はネットの海を相手に向けて進みます。
しかし・・このとき!!!
悪いやーつ(※2)が、その宝箱を狙っています。
あなたの「大事な情報」を盗もうと、中身を見ようとしています。
悪いやーつも、あなたが送りたかった相手の公開鍵を持っています(公開されているので)。
しかしその宝箱は、秘密鍵を持つものしか開けることはできません。
秘密鍵を持たない悪いやーつが宝箱の中身を手に入れるためには、
①公開鍵から何とか頑張って秘密鍵を生成する
もしくは、
②相手の秘密鍵を奪う
の2通りしかありません。
しかし・・
①は前述のとおり1億年という膨大な時間がかかるため現実的ではありません。
②は相手も必死に鉄壁の守りで備えているので、こちらも現実的ではありません。(※3)
つまり、諦める・・ということになります。
時間内に解けない問題はみんな諦めるんです。
せめて、公開鍵から秘密鍵を一瞬で作れたら、悪いやーつも報われるんですが。
(悪いやーつの味方をしてしまいました。。)
(※1)実際、相手と大事な情報をやり取りする段階(データをやり取りする段階)では「公開鍵」ではなく、「共通鍵」という鍵を利用します。これは日常生活で用いる鍵と同じように、開けるときと閉めるときで同じ鍵を使います。Noteの記事のほうで詳しく記載しています。
(※2)最近3歳の娘が、ヒーローごっこが好きで、ことあるごとに「パパ、"わるいやーつ"やって!」といつもいってくるので、その癖のある言い方を採用しました。はい、いつも悪役です・・。
(※3)とはいえ、この秘密鍵が流出してしまう事件は実際にあります。度々ニュースにもなりますね。
ここで、なぜ、
秘密鍵から公開鍵をつくることはすぐにできるのに、
公開鍵から秘密鍵をつくることはすぐにはできないのか?
・・と、疑問に思った方もいらっしゃるかもしれません。
簡単な問題を考えてみましょう。
電卓を使っても全然いいです。
さて、いかがでしょうか?
問題1は電卓を使えば一瞬です。
しかし、問題2は少し(というかかなり難しいです)
問題1はまさに秘密鍵から公開鍵を作る作業に相当し、
問題2はまさに公開鍵から秘密鍵を作る作業に相当します。
もし、かりに問題2が自力で解けたとしても、
と言われたら・・もう凹みますよね‥。
ちなみに現在のHTTPSで使われている暗号化技術はこの桁数が1024~2048桁のようです!!!
上記問題3でもたった9桁なので、もう途方もないですね・・。
公開鍵から秘密鍵を生成する(見つける)ということがいかに難しいか、さわりだけでも
わかっていただければ幸いです。
だから悪いやーつは諦めるんですね。
なんとか、この素因数分解を素早く行う方法はないのでしょうか?
はい、残念(?)ながら、今はありません。
だからこそ、今の世界中のセキュリティ基盤が守られているのです。
その根本思想が、
「時間さえかければいつかはできるんだけど、時間が足りなすぎる」というのが
個人的にはとても面白いなと思います。
そしてこの「足りなすぎる時間」という部分を解決する方法として
「量子コンピューター」の発展というものが期待されています。
量子力学というのはとても面白い分野です。
とてつもなく小さな世界では、量子というモノは、
「粒としても、波としてもふるまう」ように見えます。
シュレディンガーの猫、二重スリット実験、ハイゼンベルグの不確定性原理など、
量子にまつわる様々な面白いお話はあるので、よかったらググってみてください!
量子の世界においては、「観測」という行為が大きな影響を及ぼすそうです。
シュレディンガーの猫もそうですが、箱の中の猫が死んでいるか生きているかは、
その扉を開けて人間が「観測する」まではわからない。
それまでの箱の中では、生きている猫と死んでいる猫が「重なり合った状態」で存在している。
簡単に言うと、「0」か「1」かではっきり確定できない世界です。
人間的に言うと、サバサバしているよりも優柔不断という感じでしょうか(笑)
現在のコンピューターは、すべての情報を「0」と「1」の羅列で表します。
量子コンピューターは上記の通り、「0」でも「1」でもある「重ね合わせの状態」として
計算を重ねていくので、単純な可能性のパターンを網羅するにあたってのコストが
少なくなる・・と理解しました。
量子コンピュータでの情報の単位を「量子ビット」というようです。
例えば、
1量子ビットでは「0」「1」の2パターンを
2量子ビットでは「00」「01」「10」「11」の4パターンを
3量子ビットでは「000」「001」「010」「011」「100」「101」「110」「111」8パターンを
それぞれ重ね合わせて一度に考えることができるようです。
3量子ビットの場合、現在のコンピュータで8通りのパターンを3通りのパターンで表現できる・・という理解でいいのでしょうか。(間違ってたらすみません・・)
これは量子パターンが増えるほど、指数関数的に楽になることがわかります。
そして、「観測」をすることで、その中の一つに状態が確定する。
これが求めたい、出力したい答えになるわけです。
ということは、求めたい正確な答えを出す「観測の仕方」がポイントになってきそうですね。
人間的に言えば、モノの見方、感じ方・・みたいな要素になるんでしょうか。
最後の締めとして、未来の話をします。
今現在は量子コンピュータを用いての計算技術は、スーパーコンピュータには及ばないようです。
これは先ほどの、「観測の仕方」=「量子コンピュータ用のアルゴリズム」が確立されていくことに
よって進化していくと考えられます。
冒頭に上げた(RSA)公開鍵、秘密鍵の基盤である素因数分解に関する量子コンピュータ的な試みとしては、「ショアのアルゴリズム」というものがあるようです。
現段階では、15の素因数分解(3×5)がちゃんとできるというレベルのものらしいですが、研究が進み、
これが実用化される(それに耐えうる量子ビットとしてのハードウェアが確立される)ことになれば、
もしかすると、世界中の「時間が足りないから安全」という暗号基盤が崩れる可能性もありますね。
現在の暗号基盤がいつかは崩れる、という未来に備えて
代わりの暗号案というものはいくつか考えられてはいるようです。
そのうちの一つが「PQC」というものです。
私もこれから見てみようかなという段階なので細かな記述はできません。
しかし、今の暗号化技術はいつかは破られそうだから、それに代わる案を今から考えよう!
という思いはしっかりとあるようです。
https://www.cybertrust.co.jp/blog/rd/pqc/nist-pqc.html
あとは、やはり冒頭に書いたような、そもそも暗号化を必要としないような未来・・
なんてものが来たりするんでしょうか?
技術の進化や研究をするとき、身近な生物や事象からヒントを得て、思いがけない発見に至ることはあるかと思います。
「人間以外の動物や植物って暗号化って考えがそもそもあるのかな?
もしかしたら暗号化を必要としない高度な通信技術を利用している動植物ってあるのかな?」
・・とちょっと思ったりした夜でした。
読んで下さってありがとうございました!
(参考)執筆にあたりたくさんの技術ブログを参考にさせていただきました。この場をお借りして御礼申し上げます。