暗号数学について語ろう。ROUND 5
■ このスレッドは過去ログ倉庫に格納されています
NTTと三菱電機の暗号チームは、新しいハッシュ関数を作らないかなあ・・・ すいません、ソフト開発関連のスレで聞いても回答がないので教えてください。 64〜128ビット幅程度の0または正の数値と暗号キーにあたる充分長いパラメータを 与えると元の数を同じ範囲内の数値に変換する関数で、それぞれの変換後の 数値は重複せず、複数の変換結果があって関数が知られてしまってもパラメータの 特定が困難で、パラメータを持つものには逆方向の計算が容易でマイコンレベルの 計算能力でも済む、なんてものはないでしょうか。 複数の変換結果って、確率的暗号のことを言いたいの? それぞれはパラメータと関数で変換した値かな? とりあえず、仕様がわかりにくくてしょうがないので箇条書きとかにしてほしい 1) ・元の数を同じ範囲内の数値に変換する関数で、 2) ・それぞれの変換後の 数値は重複せず 3) ・複数の変換結果があって N(1)=N(2) なのに 複数の結果なんてありえないだろ。 乱数性のチェック方法なんですが、 TestU01というのを使いたくて色々調べてます。 しかし出力から乱数性を調べるコマンドがどうしてもわかりません。 英語は余り得意では無いので、分かる人がいたら教えて下さい。 よろしくお願いいたします。 http://www.iro.umontreal.ca/ ~simardr/testu01/tu01.html B-CASカードの暗号を破ったBLACASカードが 流通して話題になっています。 B-CASは楕円曲線暗号を使っているようですが、 詳しい方、解説おながいします。 委員会に暗号学をかじった人はいなかったの? あれって対タンパ性あったんじゃないの? 仕様を技術者から盗んだら簡単にcrackできちゃいました。 とかそんな話? 暗号を扱う技術者が、まさか、 秘匿によるsecurity なんかで安全だなんて思ってるわけじゃないでしょ? まさかねー? >>28 この暗号ようやく解けた。 20ビットでこれか。 次は50ビットに挑戦だ。 誰か50ビット出せや。 暗号やってる人たちの数学の記述はどうしてあんなに方言丸出しなの? 一杯あり過ぎて・・・ 周りの人達と是非見つけっこをどうぞ。 数学記号の変な使い方といえば典型的なのが一つあるけど (前に某先生が解説記事で、数学ではこれこれの記号は違う意味を持つから 正しい名前を使おう、と書いてた) それをすぐ挙げればすむ話だから >>129 以降のレスは>>123 とは別人が書いてるんだと思う 数学板っていまどきIDがないから、そういう変ななりすましが多いし いろいろ実名出すのはちょっと気の毒なので、分野だけ書くと 関数型暗号システムの群論にかかわる記述など、 数学科の3年で、集合と位相、群論、体論を叩き込まれた人にとっては噴飯モンじゃないかな。 ウソは書いてないよ、一応、念のため。 でも多分、well-definedなんてことは気にしてないんだと思う。 安全性の形式的証明を考えなければならなくなったとき、考えがまとめられなくて悩むだろうね。 指導教官がどんな記述をしてようが、正統的な、数学の概念と記述を身に付けるべき。 数学系の人と記法が違ったり、 厳密でなかったりするのは 工学系の人が書いてるからじゃないだろうか? よくある話。 >>144 形式手法を使おう、というのが工学においても世界的な動向だけど、 このままだとまた例によって日本は苦労しそうだね。 遠縁スレ 【サイエンス】東大教授が引責辞任 Cellにアクセプトされた論文を取り下げ「データに不適切な処理があったため」 http://uni.2ch.net/test/read.cgi/newsplus/1333775986/ まあ馬鹿を全員追い出すまでは「そういう事」にして戴きます。 猫 http://toro.2ch.net/test/read.cgi/tech/1331894668/231 [ プログラム ] 【初心者歓迎】C/C++室 Ver.78【環境依存OK】 231 名前:デフォルトの名無しさん []: 2012/05/05(土) 15:44:17.44 一般数体篩法のオープンソース GGNFS 素因数分解には試し割り法, モンテカルロ法, 楕円曲線法, 二次篩法など多数のアルゴリズムが存在するが,その中でも一般数体篩法は100 桁以上の数を分解するには現在知られる最速のアルゴリズムである. 2005年には 200桁の数(rsa200)が一般数体篩法で分解された.本研究では,オープンソースの一般数体篩法ソフトウェアGGNFSについて,性能測定を行なう. http://cryptology.cocolog-nifty.com/blog/2008/01/ggnfs_b47a.html ここでは、素因数分解のための各種アルゴリズムについて解説する。対象は、以下のとおり。 Brute force method ρ method(Pollard, Brent) p-1 method p+1 method 連分数法 複数多項式二次ふるい法 楕円曲線法 http://www.asahi-net.or.jp/ ~kc2h-msm/mathland/math12/index.htm まず、素因数分解のためのプログラムを入手する必要がある。 Windows PC 上で動作する主なものとしては、 factor (Windows (DOSプロンプト)) ppmpqs (Windows (DOSプロンプト), Linux) UBASIC (Windows (DOSプロンプト)) SNFS (Windows (DOSプロンプト)) 等がある。 http://www.asahi-net.or.jp/ ~kc2h-msm/mathland/matha1/howto.htm 分解するにあたっての方針(戦略)について まず、速いマシンを長時間利用できる場合、90桁以下の数をppmpqsで分解することを薦める。これは、時間さえかければ、確実に分解できるというメリットがある。 マシンがそれ程速くない場合、途中で中断しなければならない場合、90桁以上の数を対象とする場合は、GMP-ECMを使うことを薦める。 http://www.asahi-net.or.jp/ ~kc2h-msm/mathland/matha1/howto.htm 232 名前:デフォルトの名無しさん []: 2012/05/05(土) 15:51:46.64 GGNFSはNFS法(the Number Field Sieve method; 数体ふるい法)を用いる素因数分解プログラムです。 SNFS法(the Special Number Field Sieve method; 特殊数体ふるい法)と GNFS法(the General Number Field Sieve method; 一般数体ふるい法)の両方に対応しています。 http://homepage2.nifty.com/m_kamada/math/ggnfs_ja.htm GMP-ECMはECM(Elliptic Curve Method; 楕円曲線法)を用いる標準的な素因数分解プログラムです(オプションでP-1法やP+1法も選択できます)。 小さな素因数を手早く抽出することができるので、SIQS法やNFS法の前処理として、 あるいはSIQS法やNFS法を適用するには大きすぎる合成数を分解したいときに利用されています。 http://homepage2.nifty.com/m_kamada/math/ecm_ja.htm Msieve は MPQS 法 (the self-initializing Multiple Polynomial Quadratic Sieve; 自己初期化複数多項式二次ふるい法) と GNFS 法 (the General Number Field Sieve; 一般数体ふるい法) を用いる素因数分解プログラムです。 前処理として P-1 法、P+1 法、ECM (Elliptic Curve Method; 楕円曲線法) なども実装しており、さまざまな数に柔軟に対応します。 http://homepage2.nifty.com/m_kamada/math/msieve_ja.htm GGNFS - A Number Field Sieve implementation http://www.math.ttu.edu/ ~cmonico/software/ggnfs/index.html 一般数体ふるい法 ソース - Google 検索 http://www.google.com/search?q=%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E3%81%B5%E3%82%8B%E3%81%84%E6%B3%95+%E3%82%BD%E3%83%BC%E3%82%B9 楕円曲線暗号の計算がうまく行かないので知恵をお貸し下さい。 http://www.faireal.net/articles/8/23/ 上記サイトの公式に当てはめて「点8の二倍算」を試しているのですが、 どうやってもどの点にもなりません。 xが一致する事はあっても、それに対応するyになりません。 レベルの低い質問で申し訳ないのですが、計算の順番など、 詳しいやり方を実際の数字を当てはめて教えて頂けないでしょうか。 あなたのやり方を言いなさい。 手計算?Python?Perl?gmp? >>155 レス有難う御座います。 お恥ずかしながらプログラムを組む事が出来ないので手計算です。 あれは作者さんが誤解を招きやすい書き方をしているんだ。 2*(y1^-1) ←として計算してて、引っかかってるんでしょ。 以下の計算式で解いてごらん。 lmd = (3 * (x1 ^ 2) + a) * ((2 * y1) ^ -1) (mod prime) wikipediaを見て回るなど、複数の情報源に当たることも重要かもね。 http://en.wikipedia.org/wiki/Elliptic_curve http://upload.wikimedia.org/wikipedia/en/math/4/b/b/4bbfabfcd349fd11e3075d7fb630d26e.png >>157 レス有難う御座います。 そのやり方も一応やってみたつもりなんですが、やっぱり一致しないんです。 具体的に当てはめると (3*(7^2)+19)*(2*(218^-1)(mod 307) の場合は-1=238ですよね? それで(3*(7^2)+19)*((2*218)^-1)(mod 307) の場合は-1=119と。 そのどちらでやっても、また、「^-1乗」としても、 「^-1で掛ける」としても、xが表の中の数値になる事はあるんですが、 yがそのxに対応しない値なんです。 これは逆数が間違っているのでしょうか? 或いは、yを求める時に何らかの間違いをしているのでしょうか。 連レス失礼します。 参考までに>>157 で提示して頂いた方での計算を書かせて頂くと、 (3*(7^2)+19)*((2*218)^119)(mod 307) =166*168 =258 258^2-7-7 =238 ですが、x=238は表にないのでこれは間違っていると思われます。 そして、「^-1乗」として間違っているのならばと「^-1で掛ける」 としてみた場合も (3*(7^2)+19)*((2*218)*119)(mod 307) =166*1 =166 166^2-7-7 =219 となって、こちらもやはりxが一致しません。 (3*(7^2)+19)*(2*(218^-1)(mod 307) こちらでやると、xは一致する事もあるのですが、 やはりyが一致しない結果となります。 一応色々と検索をして、そのやり方でもやっているのですが、 どうしてもyがxに対応しなかったり、 xの時点で表にないモノとなったりしてしまうのです。 >>160 の計算は見ていませんが、以下が正しい計算です。 わからない箇所を聞いてください。 楕円曲線は、 y ^ 2 = x ^ 3 + 19x + 77 (mod 307) order = 331 以下でmod 307は省略 double_y1_inv(=119) = (2*218, 307) lmd(=106) = (3 * (7 ** 2) + 19) * 119 x3(=170) = lmd(=106) ** 2 - x1(=7) - x2(=7) y3(=3) = lmd(=106) * (x1(=7) - x3(=170)) - y1(=218) x3(=170), y3(=3) P8 = (0x7, 0xda) P = (0xaa, 0x3) http://www1.axfc.net/uploader/File/so/78916.zip ↑の解凍後に出てくるecc directory以下に、 以下の構成となるように各fileを配置してください。 ecc/math_154.py ecc/ecc/__init__.py で、__init__.py の202行目からの行をcomment outし、 以下のように実行すると、 python3 math_154.py 以下の出力が出ますので、計算方法が分かるかと思います。 double_y1_inv(=119) = (2*218, 307) lmd(=106) = (3 * (7 ** 2) + 19) * 119 x3(=170) = lmd(=106) ** 2 - x1(=7) - x2(=7) y3(=3) = lmd(=106) * (x1(=7) - x3(=170)) - y1(=218) x3(=170), y3(=3) P8 = (0x7, 0xda) P = (0xaa, 0x3) >>162 を訂正 >>158 解凍後に出てくるecc directory以下に、 >>162 のzipに含まれる2つのfileを配置してください。 以下の様に配置します。 ecc/math_154.py ecc/ecc/__init__.py >>159 を見てて思ったけど、 x ^ -1 って X = x ^ -1 とした時に、 x * X ≡ 1 (mod prime) を満たす値だよ。 gcdext()で求めるんだ。 >>梅どぶろくさん 何度もお付き合い下さり、有難う御座います。 UPして頂いたzipも有難く頂戴致しました。 先述の通り、プログラムについてはまだ勉強中ですので、 理解出来ていない部分もあるかも知れませんが、 実際の数字を当てはめて説明して頂いたおかげで 凡その計算法は分かりました。 皆さんに教わった事を踏まえ、もう少し試行してみようと思います。 また詰まる事があれば、ちゃっかりまた教わりに来るかも知れませんので、 その時はまた宜しくお願い致しますw 改めまして、皆さん、お付き合い下さって有難う御座いました。 もし量子コンピューター、量子暗号が実現したら数学を利用した暗号は研究する価値が無くなりますか? あなたのことが好きです。 もう恋愛はやめにして結婚して下さい。 人生を共にしましょう。 って本気で言ったらどうなったと思う? 数学ちゃんに決まってんだろ!(怒 >>171 は物理に浮気する浮気男。 SHA-3は5候補まできてるんだね。どれになるんだろう? 富士通研と情報通信研と九大の合同チームがペアリング暗号解読278桁を 解読して世界一だなんて鼻高々の発表だが、スタッフ見て転げたわ、中国 韓国の研究員が大杉、足元の基礎から暗号解読どころじゃないだろう。 泥棒に金庫番させるようなことやってて何が世界一なんだよ。甘いんだよな 日本人は。 >>186 そういう頭の悪い書き込みはN+や鬼女板あたりでやっててください ペアリング暗号の解読というよりは、有限体上の離散対数問題の解読だな。 (DLPを効率的に解読できれば、ペアリング暗号も解読できるから間違いではないが) ニュース記事みたとき、ペアリング暗号独自の解読方法が見つかったのかと思ってビビった。 まだ落ちてないでやんの 数学スレって過疎だな 誰かネタやってよ http://anago.2ch.net/test/read.cgi/scienceplus/1343919107/ 【暗号技術】DEFCON参加の専門家、「MS-CHAP v2」をクラックするツールを発表 1 :ケンシロウとユリア百式φ ★:2012/08/02(木) 23:51:47.51 ID:??? 暗号技術の専門家であるMoxie Marlinspike氏が米国時間7月28日、Microsoftのアルゴリズム「MS-CHAP V2」に基づく 一般的な暗号プロトコルを用いたワイヤレスネットワークやバーチャルプライベートネットワーク(VPN)内の パスワードを簡単にクラックするツールをDEFCONで公開した。 このツールは、PPTP(Point-to-Point Tunneling Protocol)で保護されたネットワークを利用している企業や組織が 使っているWPA2(Wi-Fi Protected Access 2)パスワードやVPNパスワードをクラックするものだ。このPPTPが認証に MS-CHAP V2を使用している。 「ChapCrack」はMS-CHAP V2ハンドシェークをキャプチャし、 「CloudCracker」に送信可能なトークンに変換する。 同サービスはDES(Data Encryption Standard)キーをクラックしたうえで、 ChapCrackに別トークンの形で結果を返す。 これに1日とかからない。 このデータを使用すると、企業の電子メールやパスワードなどの機密情報も含め、Wi-Fiネット ワーク全体を流れるすべての情報を第三者が見ることができる。明らかになったパスワードを使用して企業ネットワークに ログインすることも可能だ。 このツールは、侵入テストやネットワーク監査の担当者を対象として設計され、WPA2で保護されたネットワークやVPNの セキュリティをチェックするために用いるものだが、データを盗み出してネットワークへの不正アクセスを行いたい人に よって使われる可能性もある。 ソース:CNET(07/30 15:00) http://japan.cnet.com/news/service/35019787/ 画像:Moxie Marlinspikes氏 http://japan.cnet.com/storage/2012/07/30/b92550d04b4f66d507cb3a6e009ea51e/Moxie_270x378.png 参考リンク:MS-CHAPv2クラックのアルゴリム解説(英文) https://www.cloudcracker.com/blog/2012/07/29/cracking-ms-chap-v2/ 人類は他の恒星系に行き着く技術を 開発する前に滅びるだろう。 このスレって生きてたのか もう死んだものと思っていたよ すいません、どなたかお力を貸していただけないでしょうか? 楕円曲線暗号の効率的な計算方法を理解できずに詰まっております。 曲線上の点の加算をする際に、lambdaを計算しますが、以下の計算式で計算します。 lambda = (y0 - y1) / (x0 - x1) 上式を計算する際、実際には、 A = x0 - x1・・・計算1 としておいて、 A^(-1) (mod p)・・・計算2(拡張ユークリッドの互除法使う) を計算し、 lambda = (y0 - y1) * A^(-1) を計算していると思います。 計算2の時に拡張ユークリッドの互除法を使うため計算量が多くなり、 そのため高速な演算が難しく、困っている。 x = X / Z とおいて計算すると、 計算2の拡張ユークリッドの互除法を使用する必要がなくなり、 計算量を削減できる。 その分乗算が多くなるが、その乗算による計算量増加分は、 拡張ユークリッドの互除法を使用する計算量よりも少ないため、 結果として高速な点の加算ができる。 と言うことだと思いますが、 x = X / Z と置けば、逆元を計算しないですむ理屈が分かりません。 いつまでも、(X0 - X1)が消えません。泣きそうです。 http://sehermitage.web.fc2.com/cmath/ec_calc_1.html http://sehermitage.web.fc2.com/cmath/ec_calc_2.html 等を参考にしていますが、理解できません。 どなたか、ご教授いただけないでしょうか? ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる