MENU

暗号のお話

アフィリエイト広告を利用しています

読みたい場所へジャンプ

はじめに

11月も終わり、2024年もあと1ヶ月になりましたね。私は11月に山梨へ紅葉を見に行きました。
紅葉と富士山のコントラストっていいですねぇ。旅館の食事も美味しかったです。
さて、12月はクリスマスシーズンですし、自分たちだけのケーキを用意して楽しむのもいいですね。

今回は、自身の大学時代の卒業研究テーマでもあった暗号について書いていきたいと思います。

暗号の歴史

卒業研究で使用したのが、N.コブリッツ著の『数論アルゴリズムと楕円暗号理論入門』です。
数学的な理論で展開されていくので、大学数学の基礎がかなり求められますが、理論の底の底まで学びたい方は是非お手に取ってみてください。

https://www.maruzen-publishing.co.jp/item/b304242.html

暗号の始まりは、古代ローマのカエサルが利用したカエサル暗号だと言われています。
どのようなものかというと、26種類の文字のアルファベットがあるとして、そのアルファベット一個一個に0~25の数値を当てはめます。例えば”YES”の文字列があったとすると、これを24 4 18 と表すことができて、そこに3を足す(但し、25の次は0に戻る)と、1 7 21となり、これは”BHV”という文字列になります。この”BHV”の文字列が、”YES”を暗号化した文字列というものです。
つまりは単純な文字ずらしが、暗号の始まりということです。

一般化された数式だと、下のような形です。
C = f(P) ≡ P +b mod N
N:自然数 C:暗号文(0~N-1) P:平文(0~N-1) b:整数 f:暗号化関数

暗号の種類

暗号の始まりであるカエサル暗号は、メッセージの送信者と受信者で、共通の秘密鍵を使って送受信を行うため、共通鍵(秘密鍵)暗号方式に該当します。この方式の他の例だと、アフィン暗号(行列を秘密鍵とした暗号)があります。
しかし、このような暗号鍵は、メッセージ送信先毎に異なる鍵を持たないと鍵情報が洩れる恐れがあり、鍵を沢山持つと今度は管理が面倒くさくなってしまいます。さらに、共通鍵暗号方式には単純な暗号系が多く、現代ではすぐに復号されてしまいます。そこで登場したのが、1976年にディフィーとヘルマンが発明した、公開鍵暗号です。

公開鍵暗号は、暗号化する術は知っていても、その暗号化鍵から莫大な計算をしなければ、復号鍵を求めることができない性質を持つ暗号系です。一例として、RSA暗号という、100桁程の2つの素数とランダムにえらんだ素数を使用した大きな整数の素因数分解の難しさを利用した暗号です。
より詳しく言えば、次の通りです。

2つの大きな素数p,qについて、n=pqとする。φ(n)=(p-1)(q-1)とするφを定義する。
p,q,φ(n)と同じ因数を持たない乱数e(φ(n)より小さな素数)を選ぶ。
これで暗号鍵はKe=(n,e)で、暗号化は f(P) ≡ P^e mod n で行う。この暗号鍵は公開する。
dをeの逆元(つまりd*e=1となる)とし、復号はg(C)≡C^d mod nで行う。
復号鍵Kd=(n,d)として秘密にする。

公開鍵暗号方式は、暗号鍵を知られていても、復号へは途方もない時間の計算量を行わないといけない難しさのため、メッセージ受信者は暗号化鍵を公開し、送信者は公開されている暗号鍵を使用してメッセージを暗号化して送信、受信側は秘密鍵でそのメッセージを復号するという形が作れます。
これにより、秘密鍵の管理が楽になり、さらに共通鍵方式よりもセキュリティが高いため、今では公開鍵暗号方式が一般的です。

公開鍵暗号は他にも、離散対数型暗号やエニグマ暗号といった、数学的に計算困難な問題を利用した方式が中心で、日本人研究者が発明した[松本-今井の公式]という、多変数2次多項式を利用した公開暗号があるので、是非調べてみてください。

また、紹介した『数論アルゴリズムと楕円暗号理論入門』にも書かれている楕円曲線暗号は、RSAなどだと大きくなってしまう鍵サイズを小さく且つ、より強力なセキュリティをもつ暗号です。
こちらは著者のN.コブリッツが提唱したもので、ここではお話ししない(卒業研究でもここまでたどり着けませんでした・・・)ですが、気になる方は参考文献も併せて見てもらえればと思います。
https://www.fujitsu.com/downloads/JP/archive/imgjp/jmag/vol50-4/paper06.pdf

最後に

大学卒業から10年近く経って、大学数学のほとんどは記憶から消えていきましたが、久々に書籍を棚から掘り出して、思い出しながら書きました。理論的な部分は数学知識が無いと理解が大変ですが、セキュリティに関わる知見として持っておくと、技術に関する理解も深まると思います。
昔経験したことも、こうやってアウトプットすることって大事だなとも思いました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

社会人10年目、IT業界6年目のインフラエンジニア
大学では数学系を専攻し、新卒で鉄道会社の電気技術職に従事
もっと自身が活躍できるところへと思い転職、現在に至る
Ansible、AWS CDK、TerraformとIaC案件の経験が多め

コメント

コメントする

読みたい場所へジャンプ