安全な暗号と共通鍵 まえがき 最近は冷え込みも激しく、椅子の上であぐらをかいて足の指先を温める季節となりました。そんな今日は12月中旬です。大学のレポートを書く時のように、「だ・である」調か「です・ます」調のどちらを選ぼうか悩んでいるところではございますが、早速本題に入りましょう。 前回書いたブログでは、シーザー暗号だとか単一換字式暗号だとかの話をしました。昔から使われている暗号化技術ではありましたが、無線やコンピュータが発明されるにあたって急速に陳腐化することになります。 安全な暗号 そもそも、安全な暗号とは何でしょう? この疑問に答えるためには、別にアマゾンの奥地に行く必要はありません。ネットの海を泳げば自ずと、「ケルクホフスの原理」にたどり着くでしょう。 ご推察の通り、「ケルクホフスの原理」はケルクホフスが1883年に発表したものです。この原理は6つの条件があり、特に下記の2番目のものが重要とされています。 ・「ケルクホフスの原理」 暗号化通信は以下を満たさねかればならない(何となくの意訳、正確なものはURLから) 1. 現実的に解読不能であること 2. 暗号化の方法は広く知られていても問題ないこと 3. 鍵は簡単に通信と保持ができ、容易に変更可能であること 4. 電信通信できること 5. 携帯可能で、一人で使えること 6. とっても楽で使いやすいこと 『Kerckhoffs’ principles – Cryptographie militaire』 https://www.petitcolas.net/kerckhoffs/ 前回説明したシーザー暗号は、暗号化方法がわからなければただの文字の羅列に見られるかもしれません。最初からシーザー暗号と知っていれば解読は容易ですが、知らなければちょっとした時間がかかるでしょう。けれども、「ケルクホフスの原理」は暗号化方法は知られていると思っておけ、と言っているのです。つまり、安全な暗号とは秘密の鍵さえ守ることができれば、解読されないもののことを言います。 共通鍵暗号 暗号通信の基本的な方法は、次のようになります。まず、送信者と受信者が通信の同意を行い、秘密の鍵を共有します。次に送信者が鍵を使用して暗号化を行い、安全でない経路を使用して暗号文を受信者へ送ります。最後に、受信者が受け取った暗号文に鍵を使用して復号することで、平文得ることができます。 このような暗号通信の方法を「共通鍵暗号化方式」と言ったりします。 DES DES(Data Encryption Standard)は、1977年にアメリカで標準化された「共通鍵暗号化方式」の暗号です。この暗号は標準化された当時は、解読不能とされていました。しかし、現在ではこの暗号化方式は使用されていません。コンピュータの進化が早すぎるせいで、さっくり鍵を見つけることができてしまうのです。現在主流の共通鍵暗号方式は、AESというものです。 今回はこのDESを試してみよう、と思ったりもしましたが、この暗号化方式はパソコン通信のために開発されたものです。つまり、ブログにひたすら0と1が並んでしまいます。世の中には、数式を見ただけで今日の夕食の献立を考えてしまう人がいるそうです。それと同様に、0と1が並ぶ世界を見せつけると、おそらく似たような人が現れるかもしれません(ちなみに、夕食にはコンソメを牛乳に溶かして作ったクリームシチューなんかが良いでしょう)。私が綺麗に説明し切れるかどうかという話は置いておくとして、今回は大まかに記述するにとどめます。 まず、鍵の長さは64bitです。64bitというのは、0か1のどちらかが64個並んでいると言うことです。エラー検出用の8bitを除くと実質的に鍵長は54bitとなります。この54bitの鍵を使って16個のサブ鍵を生成し、これを暗号化に使用します。… Continue reading 2-少しだけ難しい暗号を話してみる