見出し画像

暗号化とこれからの世界

こんにちは!
エス・エー・エス株式会社(以下、SAS)の公式noteへようこそ!

今回から不定期の連載として、SASの現役エンジニアによる技術ブログを「SAS Tech Blog」と称して発信していきます。

第1弾は「暗号化とこれからの世界」をテーマに、個人アカウントでnoteクリエーターとしての顔も持つ海田が執筆いたしました!
ぜひご一読ください。


こんにちは。海田(かいだ)です。
このたび、不定期で技術ブログを書いていくことになりました!
よろしくお願いいたします!



まずは簡単な自己紹介を!

・42歳(妻1子2)
・現在は通販ECサイトの基幹システムにおけるインフラ設計・構築・運用を
 担当(AWSクラウド)
・IT系の所有資格
 ・基本情報技術者
 ・応用情報技術者
 ・AWS Certified Solutions Architect - Associate
 ・AWS Certified Solutions Architect - Professional
・多方面に興味はあるが飽きっぽい(笑)
「概要が分かれば満足する分野」「めちゃくちゃ深淵に理解したい分
 野」
がある
この世の不思議みたいなものにとても興味がある。
5文字以上の漢字が苦手・・・

趣味や好きなこと

・旅行(家族と行くことが多いが、一人旅も好き)
・車(マツダが好き)
・PC、クラウド関連(自作PCとかAWSとか)
・バンド(シンセサイザーが好き)
・ブログ(noteで記事も書いてます!よろしければぜひフォローとスキを
  お願いいたします!)

というわけで、よろしくお願いいたします!


さて第一回目の今日は、最近ちょっとだけ学んでみた「暗号化」のお話と、少しずつ話題になってきている(難しいけどおもしろいなあと思った)「量子コンピューター」なるものについて書いていきたいなと思います。
技術としてはとても難しいものですし、私自身その概要すら理解できているか怪しいものですが・・・
なるべく優しい言葉で書いていきたいなと思います。

では、まずは暗号化のお話から。

1.みんな「鍵」をかける・・・守りたいから、見られたくないから

家を出るとき、鍵をかける。
会社のロッカーで、鍵をかける。
車や自転車から離れるとき、鍵をかける。

私たちは日常生活のいろんなタイミングでをかけます。
ところでなぜ、鍵をかけるのでしょうか?

鍵をかける目的は、
その内側にあるものを守りたいから!
その内側にあるものを見られたくないから!
・・・ですね。

もしも世界中に、人のお金やモノを盗んだりするような悪い人が一人もいなくて、また、自分の持ち物や振る舞いを誰に見られてもかまわない気にしない・・・
そんな世の中だったら鍵なんて必要ないんでしょうね。
きっと心の鍵ですら必要ないんでしょうね・・・(ちょっと哲学的(笑))

ところが、世界も自分もそういう次元に達しているわけではないので、やはり日常生活で鍵は必要です。

ところで、「鍵」というと車や家やロッカーだけではなくスマホやPCでモノを買ったり、メッセージをやり取りする場合にも使われていることはご存知でしょうか。

はい、これですね。
いわゆる「HTTPS」というやつです。

「HTTPS」については以下個人noteの記事で記載しているので、よかったら見てみてください!

HTTPSの大きな役割は2つ。「暗号化」「存在証明」です。
そして、そのどちらにも「鍵」を使います。

さて、どんなを使うのでしょうか?
一般的な車や家やロッカーの鍵と何が違うのでしょうか?

2.今の世の中のセキュリティは「魔法の鍵」で成り立っている

HTTPSの技術で使われている「鍵」はとてもとても不思議な「魔法の鍵」です。
それはどんな鍵かというと、「一組の鍵」です。

「一組」なので、鍵としては「ふたつ」あります。
片っぽを「公開鍵」、もう片っぽを「秘密鍵」と言います。
(たぶん名前を聞いたことがある方は多いのではないでしょうか?)
そしてこの「一組の鍵」はとてもおもしろい特徴を持っています!

たとえばここに一つの宝箱があるとします。
このとき、

  • 「公開鍵」を使って宝箱を施錠すると、「公開鍵」では宝箱は開きません!

  • 「秘密鍵」を使って宝箱を施錠すると、「秘密鍵」では宝箱は開きません!

という特徴があります。
かけるのに使った鍵が開くのに使えないなんてとても不思議ですね!
対応するもう片方の鍵でしか開かないということです。
つまり、

  • 「公開鍵」を使って宝箱を施錠した場合、それを開けられるのは「秘密鍵」だけです。

  • 「秘密鍵」を使って宝箱を施錠した場合、それを開けられるのは「公開鍵」だけです。

これは日常生活で考えてみるとなかなかおもしろいです。
開けるときと、かけるときで別々の鍵を使う玄関のドアってあまり見たことないですね。

そしてもう一つ大きな特徴があります。

  • 「秘密鍵」から「公開鍵」はすぐに作れるが、「公開鍵」から「秘密鍵」はすぐには作れない

この「すぐには作れない」というのがどれくらいなのか・・・というと、ざっと1億年くらいだそうです。
・・・人類は生きてるんですかね?(笑)

この「魔法の鍵」の存在と特徴が、世界中のセキュリティを維持する主流の仕組みとなっているのです。

3.解けない問題は、みんなあきらめる

もう少し深く見てみましょう。
たとえば自分と相手がいて、自分の「大事な情報」を相手に渡したい場面を考えます。
安全にやり取りするために、魔法の鍵を使いましょう。
魔法の鍵(一組の鍵)は、相手が用意します。
相手は一組の魔法の鍵を作り、公開鍵のほうを文字通り「公開」します。
あなたは(公開されているので)その公開鍵を手に入れることができます。

あなたはここで「大事な情報」を宝箱に詰めて、手に入れた公開鍵でカチャリと施錠します。
そして相手に送ります。(※1)
宝箱はネットの海を相手に向けて進みます。

しかし・・・このとき!!!

悪いやーつ(※2)が、その宝箱を狙っています。
あなたの「大事な情報」を盗もうと、中身を見ようとしています。
悪いやーつも、あなたが送りたかった相手の公開鍵を持っています(公開されているので)。
しかしその宝箱は、秘密鍵を持つものしか開けることはできません。
秘密鍵を持たない悪いやーつが宝箱の中身を手に入れるためには

①公開鍵から何とかがんばって秘密鍵を生成する
もしくは
②相手の秘密鍵を奪う
の2通りしかありません。

しかし・・・
①は前述のとおり1億年という膨大な時間がかかるため現実的ではありません。
②は相手も必死に鉄壁の守りで備えているので、こちらも現実的ではありません(とはいえ、この秘密鍵が流出してしまう事件は実際にあります。たびたびニュースにもなりますね)。

つまり、あきらめる・・・ということになります。
時間内に解けない問題はみんなあきらめるんです。
せめて公開鍵から秘密鍵を一瞬で作れたら、悪いやーつも報われるんですが(悪いやーつの味方をしてしまいました)。

※1 実際には相手と大事な情報をやり取りする段階(データをやり取りする段階)では「公開鍵」ではなく「共通鍵」という鍵を利用します。共通鍵は日常生活で用いる鍵と同じように、開けるときとかけるときで同じ鍵です。これについては個人noteの記事で詳しく記載しています。

※2 最近3歳の娘がヒーローごっこが好きで、ことあるごとに「パパ、"悪いやーつ"やって!」と言ってくるので、その癖のある言い方を採用しました。はい、いつも悪役です・・・。

4.公開鍵から秘密鍵を作ることがなんでそんなに難しいの?

ここで、なぜ
秘密鍵から公開鍵を作ることはすぐにできるのに、
公開鍵から秘密鍵を作ることはすぐにはできないのか?
・・・と、疑問に思った方もいらっしゃるかもしれません。

簡単な問題で考えてみましょう。
電卓を使ってもOKです。

問題1 17×13×37をしてください。
問題2 8177を○×○×○×・・・の形にしてください。
ただし○は素数(1と自分自身以外では割り切れない自然数、ただし1は除く)です。

さて、いかがでしょうか?
問題1は電卓を使えば一瞬です。
しかし、問題2は少し(というかかなり)難しいです。
問題1はまさに秘密鍵から公開鍵を作る作業に相当し、
問題2はまさに公開鍵から秘密鍵を作る作業に相当します。

もし仮に、問題2が自力で解けたとしても

問題3 223092870を○×○×○・・・の形にしてください。
ただし○は素数(1と自分自身以外では割り切れない自然数、ただし1は除く)です。

と言われたら・・・もう凹みますよね・・・
ちなみに現在のHTTPSで使われている暗号化技術はこの桁数が1024~2048桁のようです!!!
上記問題3でもたった9桁なので、もう途方もないですね・・・。

公開鍵から秘密鍵を生成する(見つける)ということがいかに難しいか、導入部分だけでもわかっていただければ幸いです。
だから悪いやーつはあきらめるんですね。
なんとか、この素因数分解を素早く行う方法はないのでしょうか?

5.結論から言うと、今はない。ただし兆しはある

はい、残念(?)ながら今はありません。
だからこそ、今の世界中のセキュリティ基盤が守られているのです。
その根本思想が
「時間さえかければいつかはできるんだけど、時間が足りなさすぎる」
というのが個人的にはとてもおもしろいなと思います。

そしてこの「足りなさすぎる時間」という部分を解決する方法として
「量子コンピューター」の発展というものが期待されています。

6.量子コンピューターとは何か?

量子力学というのはとてもおもしろい分野です。
とてつもなく小さな世界では、量子というモノは、「粒としても、波としてもふるまう」ように見えます。
シュレディンガーの猫、二重スリット実験、ハイゼンベルグの不確定性原理など、量子にまつわるさまざまなおもしろいお話があるので、よかったらググってみてください!

量子の世界においては、「観測」という行為が大きな影響を及ぼすそうです。
シュレディンガーの猫もそうですが、箱の中の猫が死んでいるか生きているかは、その扉を開けて人間が「観測する」まではわからない。
それまでの箱の中では、生きている猫と死んでいる猫が「重なり合った状態」で存在している。
簡単に言うと、「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通りのパターンで表現できる・・・という理解でいいのでしょうか(間違ってたらすみません・・・)。
これは量子パターンが増えるほど、指数関数的に楽になることがわかります。

そして、「観測」をすることでその中の一つに状態が確定する。
これが求めたい、出力したい答えになるわけです。
ということは、求めたい正確な答えを出す「観測の仕方」がポイントになってきそうですね。
人間的に言えば、モノの見方、感じ方・・・みたいな要素になるんでしょうか。

7.量子コンピューターが発展すれば、現在の暗号化基盤は崩れる?

最後の締めとして、未来の話をします。
現在は量子コンピュータを用いての計算技術は、スーパーコンピュータには及ばないようです。
これは先ほどの、「観測の仕方」=「量子コンピュータ用のアルゴリズム」が確立されていくことによって進化していくと考えられます。
冒頭に上げた(RSA)公開鍵、秘密鍵の基盤である素因数分解に関する量子コンピュータ的な試みとしては、「ショアのアルゴリズム」というものがあるようです。
現段階では、15の素因数分解(3×5)がちゃんとできるというレベルのものらしいですが、研究が進みこれが実用化される(それに耐えうる量子ビットとしてのハードウェアが確立される)ことになれば、もしかすると世界中の「時間が足りないから安全」という暗号基盤が崩れる可能性もありますね。

8.じゃあ、最強の暗号ってなんなの?

現在の暗号基盤がいつかは崩れる、という未来に備えて代わりの暗号案というものはいくつか考えられてはいるようです。
そのうちの一つが「PQC」というものです。
私もこれから見てみようかなという段階なので細かな記述はできません。
しかし、今の暗号化技術はいつかは破られそうだから、それに代わる案を今から考えよう!
という思いはしっかりとあるようです。

https://www.cybertrust.co.jp/blog/rd/pqc/nist-pqc.html

サイバートラスト株式会社/研究開発BLOG/耐量子計算機暗号 (PQC) の現状
第2話:NIST による PQC 標準化プロジェクト

あとは、やはり冒頭に書いたようなそもそも暗号化を必要としないような未来・・・なんてものが来たりするんでしょうか?
技術の進化や研究をするとき、身近な生物や事象からヒントを得て、思いがけない発見にいたることはあるかと思います。
「人間以外の動物や植物って暗号化って考えがそもそもあるのかな?
もしかしたら暗号化を必要としない高度な通信技術を利用している動植物ってあるのかな?」
・・・とちょっと思ったりした夜でした。

読んで下さりありがとうございました!


執筆にあたり、たくさんの技術ブログを参考にさせていただきました。
この場をお借りして御礼申し上げます。


以上、SAS Tech Blog第一弾でした!
次回もどうかお楽しみに!