ぼくのあしあと

ゲームやネット小説など、日々興味や関心をもったことを綴る

合理的に考えられた【暗号】の世界にご招待~公開鍵から属性暗号まで

   

security

暗号というものをご存知でしょうか。

第三者に知られず、特定の相手と情報をやり取りするために用いられる方法ーといえば難しく聞こえるかもしれませんね。

小学生の頃、紫外線を当てると文字が見えるペンとか流行りました。これも一種の暗号です。

戦争でも暗号がよく使われていますし、暗号の重要性は言うまでもないでしょう。

でも、暗号って実際どんな仕組みなのかわかりませんよね。どうすれば誰にも知られず情報交換できるのか、興味はありませんか?

え?そんな記事需要ないって?

いやいや、実は暗号の仕組みって結構面白いんですよ。よく出来てるなーとおもわず唸ってしまうぐらいに。

百聞は一見にしかず、ぜひお付き合いください。

一番単純な暗号、「共通鍵暗号」

共通鍵暗号とは

最初は、一番単純な暗号から紹介しましょう。といってもこれはほんとに単純で、皆さんも使ったことがあるはずです。

特定の相手にあるData(データ)を届けたい時、それが一体何なのかを誰にも知られずに届けるーこれが暗号化の目的です。

では、それをしようとした時に、一番最初に思いつく方法は何だと思いますか。

 

おそらく、多くの人はこう考えたんじゃないでしょうか。

「お互いが持っている鍵でDataに鍵をかける」と。

自分と、相手が共通して持っている鍵で、その何かに鍵をかけてしまえばいいのです。

ちなみに、鍵をかけるとは例えで、Dataに何らかの処理をして読めなくすることを表し同じ鍵があれば再び読めるようにすることもできます。

下の図を用いて、わかりやすく説明してみます。

共通鍵暗号

共通鍵暗号

送信者と受信はは予め同じ鍵を持っています。

送信者から受信者にあるDataを送るとき、予め共通して持っている鍵(共通鍵)で鍵をかけます。これを暗号化と言います。

受信者は受け取った暗号化されたDataを共通鍵で元に戻します。これを復号化と言います。

途中で悪い人が暗号化されたDataを手に入れたとしても、それが何であるかはわかりませんね。

感覚としては、Dataを金庫に入れて鍵をかけ、金庫のまま相手に届ける感じでしょうか。

金庫の鍵を持っている人のみそれを開けてDataを見ることができるというわけです。

このようにすることで、受信者から送信者へと安全にDataを届けることができるのです。この方法を共通鍵暗号と言います。そのままですね。

共通鍵暗号の欠点

しかし、共通鍵暗号には欠点があります。

それは、お互いがあらかじめ共通鍵を持っていなくてはならない、という点です。当然ですね。

これでは、一度も会ったことのない人へDataを送りたいときには使えません。

そんな不便な問題を解決するために考え出されたのが共通鍵暗号というものです。

合理的な暗号、「公開鍵暗号」

「公開鍵暗号」とは

共通鍵暗号では、送信者と受信者であらかじめ共通鍵を持っておく必要がありました。

その問題を解決したのが公開鍵暗号と呼ばれる暗号方式です。

公開鍵暗号では、Dataを暗号化するときの鍵(公開鍵)と、Dataを復号化するときの鍵(秘密鍵)が異なるのです。

暗号化できる鍵は誰でも使用できるように一般的に公開しておき、復号化するための鍵は受信者だけ所持しておく。

こうすることで、会ったことのない人へでもDataを暗号化して送ることができるようになります。

下の図で具体的に説明しましょう。

公開鍵暗号

公開鍵暗号

送信者は、あらかじめ誰でも手に入れられる公開鍵を使ってDataを暗号化し、それを受信者へと送信します。

暗号化されたDataを受け取った受信者は、自分だけが持っている秘密鍵を使うことで、暗号Dataを復号化します。

ここでポイントは、公開鍵と秘密鍵は異なる鍵なので、公開鍵を用いて暗号Dataを復号化することはできないということです。

当たり前ですよね。誰でも手に入れられる公開鍵で復号化できてしまうと、誰でもDataを復号化できちゃいますもんね。

異なる鍵なのに、元に戻せる!?

暗号化する鍵と、復号化する鍵が異なるにもかかわらず、Dataを元に戻せるのって不思議だと思いませんか?

共通鍵暗号で金庫の例を使いましたよね。通常の金庫だと鍵は一つだけです。

しかし、公開鍵暗号では一つの金庫に対して鍵が2つあります。

それも閉めることしかできない鍵と、開けることしかできない鍵の2つです。

こんな都合のいい金庫があるのか!ということですが、実は数学の世界には存在しているんです。

詳しい説明をするとかなり長くなってしまうので省きますが、興味ある方は「RSA暗号」、「離散対数問題 暗号」などのキーワードでググってみてください。

もしくはコメントでその旨を書いてくだされば、僕がその記事を作ります。

公開鍵暗号の特徴

公開鍵暗号はその仕組みから、送りたい相手のによって鍵を使い分ける必要があります。

下の図で詳しく説明しましょう。

送りたい相手によって鍵を使い分ける

送りたい相手によって鍵を使い分ける

例えば、送信者BがDataを暗号化して送るとします。

受信者Bへと送るとき、送信者は公開鍵Bで暗号化しなければなりません。

同様に受信者Cへと送る場合は、公開鍵Cで暗号化しなければなりません。

このように、送りたい相手によってその人の鍵で暗号化する必要があるのです。

ここで問題となるのが、送信者Bが受信者Aと受信者CへとDataを送りたい場合です。

このとき、送信者はわざわざDataをそれぞれの公開鍵で暗号化しなくてはなりません。

一つのDataに対して2回も暗号化するなんて、めんどくさくありませんか?

そこで考え出された新しい暗号方式が、「ABE暗号」通称属性暗号です。

最新の暗号、「属性暗号」(ABE暗号)

「属性暗号」とは、

公開鍵暗号では、相手によって鍵を使い分ける必要がありました。

この場合、複数人へとDataを暗号化して送るときは、人数分だけ暗号Dataを作らなくてはなりません。

それを解決したのが属性暗号と呼ばれるものです。

属性暗号は、暗号化するときに読んでほしい人の属性を決めます。

そして、復号する人の属性が暗号化した時の属性と一致した時のみ復号化できるのです。

頭の中でクエスチョンマークを思い浮かべてる方のために、これも図で説明しましょう。

属性暗号

属性暗号

例えば、送信者Aは20代もしくは30代の男性という条件を満たす人にDataを読んでほしいとします。

すると、それが属性となり、Dataが暗号化されます。

その暗号化されたDataを復号化できるかどうかは、受信者の属性次第です。

つまり、受信者が20代もしくは30代の男性の時のみ、復号化が行えます。

このように、属性暗号では送信者が条件を定め、条件を満たす人のみDataを復号化できるようになっています。

まとめ

どうでしたか?世の中にはいろいろな暗号方式が存在し、どれも合理的に考えられていることがわかりました。

今回はどのような暗号方式があって、どのような考え方に基づいて設計されているかを紹介しました。

実際に暗号化に使われている数学的手法については、またの機会に説明しようと思います。

まあ、需要がありそうならばですが。

以上、お付き合いくださりありがとうございました。

The following two tabs change content below.
XZ

XZ

ゲームとWeb小説が何よりも好き。自分の趣味を共有、共感できたらと思いブログをはじめた。

 - 賢くなる雑学