依頼でCIAはバックドア無しの脆弱性だけで暗号解読可能か調査。
スノーデン事件や下記の公電情報漏洩の暗号解読の裏付け調査。
https://www.asahi.com/articles/ASN2D638WN2DUHBI010.html
仮定の元、112ビット楕円曲線暗号(ECC)が1/100秒で解読できた。
解読性能は完全な量子計算機(50年後?)による解読に相当。
ECC-112は解読世界記録。プレステ3で110年台,PCで数百年台で解読。
ECC-256以上で評価予定だが、CIAなら容易に解読できそうで怖い。
バックドアによる盗聴と言われているが、仕込まなくても可能。
公開暗号はRSA-2048からECC-256にほとんどで移行済み。
楕円曲線暗号は数学的には強固だが、攻撃に弱い性質を持つ。
味噌は、ECC(y^2=x^3+ax+b (mod p),p,と位数rは素数)が暗号処理
にb(従ってrも)を使用しないことを利用して攻撃する。
暗号通信では、ECC上の点(x,y)だけしか送付しない。
面白いので、6月の数値解析シンポジュームで発表しよう。
蛇足:小生は傍受や脆弱攻撃の技術を持たず興味もないので安全。
ECCによるAとBの鍵交換:
step1:
A: ECCの点P=(Px,Py)を作成し、Bに送信。
step2:
A: 乱数mを作り、ECCの点Q=mPを計算し、QをBに送信。
B: 乱数nを作り、ECCの点R=nPを計算し、RをAに送信。
step3:
A: 受信したRで、S=mRを計算
B: 受信したQで、T=nQを計算
共通鍵交換の原理
ECCの交換律で下記(S=T)が成立
S=mR=m(nP)=n(mP)=nQ=T
共通鍵はS=T=(Sx,Sy)のSx
送信した、点P,Q,Rは傍受されても共通鍵SxはECCが解読
されないと、盗めないのが味噌です。
今回の方式による共通鍵(Sx)の盗聴方法
前提:
(1) 脆弱性を利用しBのECC処理のチェックを外す。
(2) A,Bの送信は共に傍受でき、変更し送信可能。
盗聴方法:
step1: AからBへ送信の、点Pを傍受し、Eに変更しBに送る。
step2: A,B双方送信の点Q,Rを傍受。
今回の方式でnを解読し、R=nPで再計算したRをAに送信。
step3: T=nQを計算し、T=S=(Sx,Sy)のSxを解読
1カ月かけてECC-256が攻撃で解読可能なパラメータの算出プログラムの開発を予定していたが中止した。自分は攻撃しないと、軽く考えていた。
現在使用されているECC-256の種類は推奨の十種類足らず。ビットコインの暗号はspeck256k1で、各銀行も容易に分かる。ECC-256が瞬時に解読できる攻撃用係数を算出して公表し、悪用されて他人の銀行口座から預金が盗まれたら、当方の刑事責任を問われかねない。公表しなくても、プログラム作成して、求めていると、盗聴され流出の可能性がある。6月の発表前に、暗号の所属官庁である総務省と通産省に相談に行く。
解読の簡単な説明資料(例がほとんど)を https://ecc-256.com に掲載した。
解読用pythonプログラム、入力データ、結果、実行の画面コピー(デモ)も上記webのpythonプログラムに追加した(2020年3月30日)。pythonプログラムはC+gmp(多倍長)より約20倍遅い。それでも160,192,224,256ビットECCの解読は4GhzのPCでそれぞれ1,10,100,1000秒程度。解読時間は数倍変動する。
解読に一昨年発見した学習λ法が適用できることが判明。256ビット楕円曲線暗号もPCで瞬時(0.05秒)で解読できそう。現在詳細設計中で、連休明けには実測の見込み。事前学習時間もPCで数日だろう。(2020年4月7日)
楕円曲線暗号の脆弱性攻撃。学習λ法と組み合わせることに成功。現256ビット暗号がパソコン(4Ghz)で平均0.05秒で解読できた(2020年4月25日)。学習時間はパソコンで1日(24時間)。更に改良し、連休明けには100件の解読で1秒(1件平均0.01秒)を目標。同時にpythonにも移植(解読部分だけ)する。
無線ランのbluetoothは正当性チェックが無く、容易に解読されることが見つかっている。現在はパッチ対策されている。ただモデム(ルータ)側はパッチの適用が面倒なので放置している人が多い。