QUALITIA Blog

【TLS通信解説】①鍵交換アルゴリズムについて

2024.05.10 2024.05.16

TLS通信の内部で行われている4つのアルゴリズムのうちの1つに、鍵交換アルゴリズムがあります。鍵交換は暗号化通信を行うためTLS通信の安全性を考えるうえで大事なアルゴリズムであると言えます。
この記事では、鍵交換のアルゴリズムにおける安全性について解説していきます。

暗号通信において鍵交換とは

暗号でやり取りされるデータはそれ単体では意味をなさないものに見えますが、復号の手段を持っている者にとっては意味のあるデータになります。

例えば、ある言葉をシーザー暗号という方法で暗号化すると「んをげいお」になります。
シーザー暗号は文字列を表に従って数個ずらす暗号化の方法で、この場合の「50音表で1つ前に戻す」という法則に従って暗号化しています。
「んをげいお」をその法則に従って復号すると「あんごうか」という意味のある文章を得ることができます。
この時の「50音表で1つ前に戻す」という法則が、暗号化における鍵となっています。
暗号通信を行いたい両者間でこの鍵を共有することで初めて「んをげいお」は意味をなす言葉になりますし、第三者に漏れてしまっては暗号化が意味を無くしてしまいます。
そのため、鍵交換は暗号化通信においては必須の工程であり、第三者に漏れない安全な方法で行う必要があります。

鍵交換アルゴリズムとは

鍵交換アルゴリズムは第三者に知られることなく暗号化に使う鍵を共有する手段のことです。TLS通信では多くの鍵交換アルゴリズムが利用できますが、ここでは代表して「DHE」「ECDHE」の二つを解説します。

鍵交換アルゴリズムの安全性

第三者に知られることなく鍵を共有するためにトラップドアと呼ばれる特性を利用しています。トラップドアは、一方向に処理するのは簡単だが元に戻すのが難しいという特性のことで、身近なものとしては、素因数分解があげられます。
「391」という数字を素因数分解するのは時間がかかりますが、「17×23」を行うことは容易に行うことができます。これが「9,457,517」のように桁数が大きくなると素因数分解にかかる時間は大きくなっていきます。

さらに値が大きくなると解読の作業にコストがかかり、暗号解読しようとする情報の価値をコストが上回ると解読する意味がなくなり、実質的に解読が不可能になります。

鍵交換のアルゴリズムでは、作業コストと情報価値の不均衡状態を作り出すことで安全性を確保しています。

鍵交換アルゴリズムの手順

鍵交換のアルゴリズムである「DHE」「ECDHE」はこのトラップドアの特性がある数式を用いて、互いに秘密の数字を共有することなく共通の値を算出します。
ここではその数式をモデル化して、2つのアルゴリズムに共通する手順を説明します。

トラップドア特性を持つ数式をX
数式を使用する任意の数をn
通信するAとBが定め秘密の数字をそれぞれa,b
Xとa,bを用いて導出される値をそれぞれP,Qとする。

トラップドアの特性から情報「X、n、PまたはQ」からは「aまたはb」は求められない。

① AはBに「n,m,P」を送付する
② BはAに「Q」を送付する
③ 「n」を「QまたはP」として、ABがそれぞれXを計算する
④ AB内で同じ最終値Rが算出され、それを暗号鍵として利用する

以上の手順で安全な鍵交換を実現するためには、数式Xには以下の条件が必要になります。
1)「X、n、P、Q」の情報から秘密の数字「a、b」がわからないトラップドアの特性
2)「X、n、P、Q」から「最終値R」が計算できないこと
3)「X、Q、a」と「X、P、b」から同じ「最終値R」が計算で導出できること

DHEの安全性について

TLS通信で利用できる鍵交換アルゴリズムの1つ「DHE」は数式Xにモジュロ演算を用いるアルゴリズムです。モジュロ演算は、割り算の余りを扱う計算で「12÷7=1余り5」を「5=12(mod 7)」と表します。モジュロ演算では割り算の答えにあたる商が含まれないのでも、モジュロ演算の結果から元の数を確定させることができません。そのためトラップドアの性質が現われる演算だと言えます。

またモジュロ演算には通常の数式の様々な法則が適用できることが知られており、指数法則の「(n^a)^b=n^ab」も適応することができます。

そこで以下の数式をXとして使います。

P=n^a(mod m)

この時、
1)「n、m、P」から「a」を定めることはできず、トラップドアの性質が確認できます。
2)最終値R=[n^a(mod m)]^b(mod m)=n^ab(mod m)となるが、PとQから「n^ab(mod m)」を導出することはできません。
3)指数法則から[n^a(mod m)]^b(mod m)=[n^b(mod m)]^a(mod m)が成り立つので「X、Q、a」と「X、P、b」から同じ「最終値R」が計算で導出できます。

以上のことから、モジュロ演算を用いたDHEは安全だと言えます。

ECDHEの安全性について

TLS通信で利用できる鍵交換アルゴリズムの1つ「DHE」は楕円曲線における加算を用いるアルゴリズムです。楕円曲線における加算はy^2=x^3+ax+bのグラフ上の座標を用いたものと定義されています。
まず楕円曲線のグラフは以下の特徴を持っています。
(1) グラフ上の任意の点H、点Iの二点をつなぐ直線状に第三の交点Jが出現する
(2) X軸を軸で線対称である

このグラフ上で点H,Iをつなぐ直線の交点JをX軸に線対称に異動した点J`とする操作を「H+I=J`」のように加算の式で扱うことができることが証明されています。
この時任意の点Gに点Gを加えた座標を2Gとして「G+G=2G」、点Gにn回Gを足した座標を「G+G+G……+G+G=G×n=nG」と表すことができ、それを数式Xとして使用します。
この時
1) 点nGからnを求めるためにはn=1から順に確かめていく必要があり、nが十分に大きな数の場合、トラップドア機能があると言えます
2) ABが定めた秘密a、bから計算した「aG」「bG」を足しても「a+bG」しか求めることはできません。グラフ上の交点同士の掛け算の定義がないため「aG」「bG」から「abG」を求めることはできません。
3) G×a×b=G×b×aと積算の交換法則が成り立つので、最終値Rは同一のものを計算可能です。

以上のことから、楕円曲線の加算を用いた「ECDHE」は安全であると言えます。

鍵交換アルゴリズムの脆弱性

ここまで、鍵交換アルゴリズムの安全性を解説しましたが、これらのアルゴリズムには通信相手が正しい相手かを認証する機能が備わっていません。そのため単独で使用すると中間者攻撃と呼ばれる方法に弱いという共通点があります。
AとBが通信する間に入って、暗号と復号を双方に取り持つことで情報を盗聴することが可能になってしまいます。
そのためTLS通信では鍵交換アルゴリズムの他に、なりすましを防ぐ認証のアルゴリズムやメッセージの改ざんを検知するアルゴリズムがセットで使われています。
それらについては別記事で解説します。

Active! gate SSのTLS確認機能

クオリティアの脱PPAPソリューションActive! gate SSのTLS確認機能は、ここで解説したTLS通信を活用した新しい形の脱PPAPソリューションです。詳しい機能やご相談は下記のお問い合わせからお気軽にご連絡ください。

資料請求はこちらお問い合わせはこちら無料トライアルはこちら

株式会社クオリティア マーケティング部
mktg-info@qualitia.com
https://www.qualitia.com/jp/

メールソリューションに関する
ご質問・資料請求などございましたら
お気軽にお問い合わせください。

お見積り依頼・ご質問・ご相談はこちらから新規のお客様・パートナー様既存のお客様・パートナー様