【堅牢】トリップの新方式を考えてみませんか【互換性】
■ このスレッドは過去ログ倉庫に格納されています
現段階でのトリップの問題点などを考えつつ、 現行方式よりも堅牢なトリップの方式を考えてみませんか。 マルチバイト文字問題や互換性などの問題も出てくると思いますが、 そこは皆で妙案を出し合いつつ、新たな方式を頑張って考えてみましょう。 関係スレ 幸せサーバープロジェクト 「アイデア・技術のある人募集中」★3 http://qb5.2ch.net/test/read.cgi/operate/1241361889/ >>146 SHA の場合には salt というもの自体がないですが, 16進表記のキーとして受け入れるという扱いなら可能かもです. >>148 え?別に論点ずらすとかそんな意図は無く純粋に聞いてみただけなんだよ 試しにやってみるだけって言ってるのに、なんでそんなに怒ってるのかなぁって >>148 1) 本人かどうか 2) ほぼ達成しているが解析ツールや既出DBの悪影響がないとも言えない 3) 今のところのたんぺの遊具を増やすため 4) 両立する 5) シラン >>151 お前の無知さ加減なんて誰も聞いてねえよ お〜、bbs.cgiいじれる人が来てる〜ためして〜けど仕事だ〜 トリップなんぞ他と識別出来りゃいいんだー、深く考えると沈みまっせ♪ 改訂版 if (length $handle_pass >= 12) { use Digest::SHA1 qw(sha1_base64); if ($handle_pass =~ /^#([[:xdigit:]]+)$/) { $handle_pass = pack 'H*', $1; } $GB->{TRIPSTRING} = substr(sha1_base64($handle_pass), 0, 12); } 16バイト以上でも16進表記でない形で指定したい場合もあるかもということで, 12バイト以上でかつ「##16進文字列」形式で指定された場合に16進表記として 扱うようにしてみました. 初質でかれこれン年トリップを回してる検索人です。 >>46 は私です。 >>149 16進で指定できる生キーが望まれてるのは、新仕様(SHA1とか)についてではありません。 >>146 で言及してるのは、従来のDESトリップに対しての機能追加要望です。 (件のスレは私も関わってたし…) これを機会に、生キー実装を試してもらえませんか? 私からもお願いします。 様式としては #<16桁の16進数>{Salt(省略可能)} にて、先頭16桁が16進数に見える物を扱う対象とします。 ツールに吐かせたキーで、Shift_JIS(CP932)文字コードで表せないものを 入力したり、2chNGワード置換に引っかかって回避不可能なキーを入力したいのです。 ホンネ。もし、10連のような神トリップが出せたとき、 キーボードから入力できないキーだったら すごく悔しいんです! トリップ職人を救ってくれ!!! 実装例(現bbs.cgiに合わせたつもり) if ($handle_pass =~ /^([0-9A-F]{16})(.*)$/i) { $handle_pass = pack('H16', $1); $change_salt = "$2.."; } else if (length $handle_pass >= 12) { # 実験仕様 } else { # 従来通り $change_salt =~ tr/\x3A-\x40\x5B-\x60\x00-\x2D\x7B-\xFF/A-Ga-f./; } 生キーについては、トリップ受渡所にも実装してみました。 http://t.pgr.jp/ 入力例はこんな感じ。 ◆yGAhoNiShI #020B0201020D0209 ◆yBEncckFOU #82D482E982B682E5 ◆ySd1dMH5Gk #82D482E982B682E5aI 神トリの頂を目指すか、堅牢性・永続性のある本人証明を目指すかって 彼岸ほど離れているような。 ◆(トリップ)+(外部が保証する本人証明)を名前欄に入れる方法でも 考案しないとダメなのかもなー。 とりあえず限定的に試してみる、 っていうのは、インターネット的で面白いすね。> SunOSさん で、どうせなら SHA-1 じゃなくて SHA-256 とかのほうがいいのかしら。 で、現行トリップの塩にユーザが何か突っ込めるようにする、 という話ですが、やるとしたらやっぱり、入力文字列の後ろのほうに配置する、 とかそんなかんじなんでしょうか。 で、塩に突っ込めるようにすることの、 メリットとデメリットってなんでしょう。 ユーザが塩を振れるほうが、現行トリップの強度が多少は増すのかしら。 >>155-156 なるほど,そういうことでしたか.では改めて...... if ($handle_pass =~ m|^#([[:xdigit:]]{16})([./0-9A-Za-z]{0,2})$|) { $GB->{TRIPSTRING} = substr(crypt(pack('H*', $1), "$2.."), -10); } elsif (length $handle_pass >= 12) { use Digest::SHA1 qw(sha1_base64); $GB->{TRIPSTRING} = substr(sha1_base64($handle_pass), 0, 12); } else { # 従来形式 } 「##(16桁の16進文字列)(0〜2桁のsalt)」で指定された場合に ご所望のものが出るようにしてみました. >>157 確かに,遊びの要素と本人証明とでは目指す方向は違うのでしょうね. >>158 そうですね. >>159 Digest::SHA が入っていればそれを使えるんですが, 入ってなかったのでとりあえず SHA1 でやってます. >>161 ヤッター!!!!! これで三方丸く収まるね。 1. 従来方式も使える。 2. 力技対策の SHA-1 も使える。 3. トリップオタクねんがんの生キー(塩指定つき)が使える。 >>160 塩が簡単に特定できる今の状態よりは、はるかに強度はあがりますぜ、ダンナ。ウヒヒッヒ >>161 http://search.cpan.org/dist/SHA/ /home/ports/security/p5-SHA を入れればいいのかな。 dso.2ch.net = banana3254 = root 権限なし ですか。 私が今すぐ入れるのは難しいかも。 (有用なら入れてもらうことはできるかも) で、root 権限ありで遊べそうな小規模なやつは、、、。 ipv6 ぐらい? ううむ。 >>162 > 塩が簡単に特定できる今の状態よりは、はるかに強度はあがりますぜ、ダンナ。ウヒヒッヒ 塩っていうぐらいで、そうでしょうね。 塩を指定して生成する機能は純粋に追加になるので、 動作自体は今までのトリップの上位互換、ということになるのかな。 新方式のフールプルーフはあるの? つまり、旧式鯖で新酉入れちゃって漏れる心配ない? >>163 そうですね......まぁ今はただ試してるだけという段階なので, すぐにやってもらう必要性は高くないかもですが. >>165 単にキーの先頭8バイト分だけ用いた従来形式のトリップになるだけかと. というか,こっちか...... http://search.cpan.org/ ~mshelor/Digest-SHA-5.47/lib/Digest/SHA.pm 違う書き方考えてたら、いつの間にか実験が始まってました >>167 なるほど、それだと、 /usr/ports/security/p5-Digest-SHA ですね。 > DESCRIPTION > Digest::SHA is written in C for speed. If your platform lacks a C compiler, > you can install the functionally equivalent (but much slower) Digest::SHA::PurePerl module. ほう。 新方式トリップも10桁だと現行トリップと新方式トリップの表示がかぶることもありそうななさそうな。 鳥の人がすでにいいもん作ってたけど、暇なんで一服中に作ってみた。こうであってる? http://trickbox.70.kg/trip/ >>175 パッと見た限りでは結果は一致してると思います. もっとも,まだ仕様は変わるかも知れない(それ以前に 正式に導入すると決まったわけでもない)ですが...... なお,実験中の dso 鯖にある板は http://dso.2ch.net/myanmar/ http://dso.2ch.net/yangon/ これに合わせてトリッパーも改造して、どんどん既成事実をつくって なしくずし的に導入をさs(r 本当に堅牢にしたいんだったらオリジナルのハッシュ関数使うとか 複数の関数組み合わせるとかして推定困難にして非公開にすれば? どうせ12文字程度でぶった切るのにSHA-1よりSHA-256の方が… とか馬鹿じゃねーの そこまで堅牢性が必要か? とりあえず解析ソフトを使っても8桁→10桁になったように解析の難易度があがればOKじゃ? 本人確認は、beプロフに当人がオンオフ出来る基礎番号表示でも付ければ ことは足りるんでないかい。 どうやらの人(パケモン?)がやるかは知らないけど。 逆に、堅牢だなんて思い込みを付けると割れたときが大変かも。 そもそも基礎番なんて勝手に作ったもんですからねぇ〜 DB上に存在するキーだとは思いますが… まあもし新方式導入するんであればbeプロフの方の鳥も代理人に対応頼みたいですねー 基礎番号、たんにDB上の管理番号だろうな・・・とも思うけど。 ま、新方式がどうなるかわからないけど新方式とBe組み合わせれば用は足りるんでないかと 思ったり。 それでも足りなきゃ、ニュー速だっけ? あれの地域表示でも組み合わせてみるとかw スレタイには【堅牢】なんて書かれてるけれど SHA-256なんたらは堅牢性を狙ったもんじゃなくて 「なんとなく」とか職人さんが楽しめる時間をナノ秒単位で稼ぐとか そういう次元で出たもんじゃないの? ガチガチに堅いものにしようという流れには見えない。 >>1 の時点では堅牢性を狙ってたんですが、 >>130 あたりでもう無理っぽいということが分かったので 現在てきとうに遊んでいるところです。 というか・・・2ちゃんねるで、水も漏らさぬ様な堅牢な本人確認をしなければいけない ケースが思い浮かばない。 政治家が書き込みたいならそれこそ加藤紘一先生みたいにキャップ貰うとかさ あくまでトリップは簡易でしょ。 >>152 明らかなネタに食いつく暇人そうとう暇なんですねww ママのおっぱいでも吸ってろチンカス >>176 おっと見逃してた、確認どもです。 しかしとりっぱー廻してる人結構いるんですねぇ、私一回しか使った事ないやぁ トリ屋(検索人)は一人見かけると20人はいるという・・・ ゴキブリかよ! ゴキブリの親玉>>ID:hXQntv5t0 つーか、コレのキーはタコっぽいというかウジというか。wwwwww #銷カ16\蛆 訳解らんのだけどB64なので文字種が一つ減って12桁切り出しなので実質9桁IDって理解でおk? >>161 さんきゅー ほぼバッチリだZE!!!!!!! これで、DESトリップキー空間がほぼ 2^68 にひろがったぜ! 0x80 問題はスクリプト側じゃどうしようもないんだよな。 >>189 現行仕様が廃止されたりしようものなら暴動 じゃなかった俺のライフワークがひとつ減るしな! つーか検索人はトリップネタに食いつくものだ。 テストスレなんて入れ食い入れ食い。 >>194 ひとつ減ってひとつ増えるんじゃ? 実験だから!実験だから!と言ってるうちに誰かが新方式向けのとりっぱーを ビルドして配布してしまう流れですかね。 >>194 従来: [0-9A-Za-z./] B64: [0-9A-Za-z+/] # 上で書かれてるとおりひとつ減ってひとつ増える 12桁だから実質9桁というくだりは salt のことなのかな。 >>198 た。♪ sub Make_Trip{ # 仕様変更? @2009/06/16 my $key = shift; if ($key =~ m|^#([[:xdigit:]]{16})([./0-9A-Za-z]{0,2})$|) { $key = "◆" . substr crypt(pack('H*', $1), "$2.."), -10; } elsif (length $key >= 12) { $key = "◆" . substr sha1_base64($key), 0, 12; } else { # 従来形式 ($key) = $key =~ /^#(.+)/; my $salt = substr($key, , 1) . "H"; # $salt =~ s/[^.-z]/./g; # $salt =~ tr/:;<=>?@[]^_`/ABCDEFGabcdef/; $salt =~ tr|x3A-x40x5B-x60x00-x2Dx7B-xFF|A-Ga-f.|; # 仕様変更 @2003/11/15 $key = "◆" . substr crypt($key, $salt), -10; } return $key; } なしくずし万歳! それ用ツールもこっそり配布開始。wwwwww SHA1かMD5キー+saltが指定できるってことは、一般人には割られにくく、かつ ネタトリップは作りやすくなったってこと? >>199 perl知らないけどsha1_base64($key), 0, 12だとDigest値の 先頭9byteしか関係ないって事ですよね? >>207 use Digest::SHA1 qw/sha1_base64/; my @test = qw/0123456789abcdef qwertyasdfgzxcvb 3.14159265358979/; printf "%s: %s\n", $_, sha1_base64($_) for @test; printf "%s: %s\n", $_, substr(sha1_base64($_), 0, 12) for @test; 0123456789abcdef: /lVn6NdpVQhSGCzfaddLsW3/jik ←切り出し前 qwertyasdfgzxcvb: ia8gywvMZqbL9R546lCaVDRns+Y 3.14159265358979: 9BMQ/whYEVl14iN0sGxOvjKhSy0 0123456789abcdef: /lVn6NdpVQhS ←12桁切り出し後 qwertyasdfgzxcvb: ia8gywvMZqbL 3.14159265358979: 9BMQ/whYEVl1 いちおう10〜12桁めの文字も意味のない子ではないんです。 Digest値の先頭9byteをBase64で12文字にしてるという話ではないかと MD5で十分かも そうそう、sha1のDigest値の先頭9byteしか、って意味です だからどうしたって訳ではないです^^ 今北。今までって確かHMAC_MD5(salt付きmd5)だったと思うけど、HMAC_SHA1とかHMAC_SHA512とかにするって議論になってるの? それとも全く別のにするって話になってる? 今まではDESです あと、sports2以外で0x80でちょん切らない鯖一覧みたいなの どこかにありますかね? >>209-210 すみません、B64にして増えた分の話だと気づいてませんでした。 どうなんでしょ、その辺りは substr で切り出す分を増やす…と長くなるんですよね。 まだsha1に決まったわけではないはずなので(たぶん) その辺りはいろいろ意見を出すと詳しい人が考えてくれるんだと思います。 >>211 まだいろいろ迷走してるところのようです。 >>212-213 何となく分かった。CSSスクランブルしてからHMAC_MD5とかどうよ。個人的にお勧め。 Base8192 でもつくって、ひらがなとか漢字とか(r 文字数増やしても大して意味ないから、如何に複雑にするかが大事。 昨日寝る前に書きかけてたやつ、書き上げてここに貼ってみても良いのかしら。 うーん、エロ小説ですかね。 >>216 現状は、酉屋さんにとってやる気が出るもの && 一般の人にとって従来より少しは割られにくいものが 模索されているようです。かなり複雑化してもロジック公開なら酉屋さんは挑みそうな気が。 >>219 隠した鍵でAES掛けてからMD5でもいいが、完璧過ぎてそれじゃつまらん。 ロジック公開してトリ割れ競争に挑ませて、つまらなくなってきたら別のアルゴリズムに変えるでいいじゃん。 HMAC-MD5 http://www.ipa.go.jp/security/rfc/RFC2202JA.html CSS暗号 http://www.cs.cmu.edu/ ~dst/DeCSS/Gallery/hannum-pal.html なんか難しくて付いていけないけど、今のトリキーが割られる原因の大半は 入力者が単純なトリキーを使っているからと上の方にあったけど。 それは解決出来るのか? PHPですみません http://happy.70.kg/trip/trip.php >>69 で考えていたものを実際に書いてみました。 AESじゃないですけど、遺伝子暗号で文字列をコネコネしてます。 >>222 の仕組み 文字列 ↓ 各文字をASCII文字コードへ変換 ↓ そのコードを連結して1つの数字とみなす ↓ その数字を3で割って小数点以下切捨て ↓ その数字を2進数に変換 ↓ それを頭から2桁ずつ区切りながら遺伝子暗号へ # 各桁には0 or 1が入る # ので、2桁なら 2^2 = 4 パタンが判断できる # その4パタンを塩基一文字表記(A or T or G or C)に置きなおす ↓ 遺伝子暗号を元に翻訳 # トリプレットで頭から読んでいく # 4種の文字で3桁なので、4^3 = 64 # [0-1a-zA-Z] で 62文字なので、そこに [./]を追加して64文字 # 各トリプレットに上記1文字を対応させることで、新規文字列へ変換 ↓ 新規文字列を今回はcrypt (多分、MD5)で処理 # とりっぷ = crypt(入力した文字列, 新規文字列); ↓ 表示 --- 汚らしい酷いソースを見たいという奇特な人がいらっしゃれば、 いつでも公開させてもらいます。 というか、tripsrc.txtとかして一緒に置いといてくれればいいのに まだ書き込みのソースってperlなんだっけ? もしそうなら俺がD言語で書き換えてやるぜ 時間かかるかもだけど >>224-225 >>222 のスクリプトのとこに、リンク貼っときました センスの無さは責めないでね >>222 のは強度とか諸々の点について,その筋の方から見てどんな感じですかね? あと,その他諸々のアルゴリズムについては,対応する Perl モジュールが 入っているか,あるいは入れられるか,というのもあるかなと思います. 一応,Digest::HMAC_MD5 と Digest::HMAC_SHA1 は元々入っているようです. >>228 salt側を可変にするとトリップの衝突が増えるです、多分・・・ ロジックが分ってれば、後はPCの処理能力次第の気も・・・今でも総当たりなんだし。 数倍程度の処理の複雑さだと将来的にすぐ吸収してしまうような。 あと、この場合今のトリップは捨てるの? >>227 専ブラのプレビュー作るのメンドイから変態チックなのは止めて下さいです。。。 dsoの新方式のやつは今のと互換性があるし実際に入れてみては? さしあたって何か問題あるですかね? しかるべき人にプレゼンするとか,モリタポ等トリップを利用する 他のところでも対応してもらうとか.あと,SHA1 使ってる部分も これでいいのかというのももうちょっと確定させてからにしたいかなぁ,と. >>223 なにがしたいのかわからん。 2bitを3個セットで処理するなら、最初から6bitごとに切りゃいいじゃん。 しかも結局肝心な本当の意味の暗号化はcrypt()するだけとか。 じゃあ暗号化煮詰めながら、パケモンの代理人であるどうやら1号さんに 新方式導入していいかパケモンに聞いてもらえばいいのかな? 誰か連絡出来る人かもーん♪ >>228 その筋の方のように詳しくないですが、ここでの強度≒ブルートフォース耐性なので 演算がめんどくさいかどうかの問題ですよね。 で、入力文字列を64種の文字に変えるまで可逆的(剰余除く)にこねくりまわして crypt()というのは、その筋の方がわくわくするロジックではないように感じます。 bbs.cgi にこれ(を高速化したもの)が入る図はあまり考えたくないし 専ブラやとりっぱーを作る人は一旦 /[ATGC]+/ にもせず6bitずつで文字割り振って crypt()するんですよね。うーん。 キーを長くできる新仕様トリップについて意見を。 ・公開? 非公開? アルゴリズムが非公開、もしくは秘密鍵を用いるような様式だったら 検索人のおもちゃとはなりえない。つか現仕様を残してくれればそれで十分。 以下、公開(手元で実施可能)を前提に話す。 ・キー構成文字 現トリップは、エンコードする直前のキーがエスケープ( < とか & とか) されていたり、果てにはNGワード置換まで行われてしまっている。 このままだと、BBS.CGI の置換処理がトリップ仕様に含まれてしまうことになる。 これ、分離できない? フォームからデコードした時点ですぐ、名前欄を、トリップキーとそれ以外に 分離すればいい。もしキーに何らかのサニタイズ処理を入れるにしても、 名前欄の置換処理とは独立して行った方がいい。 現仕様トリップにおいては、生キーが導入されればこの問題を迂回できるから もうどうでもいい。(置換処理を変更してもいい) 文字コード(Shift_JISがでんでん)についても言及したいところだけど これ言い始めるとドツボ確実なので俺放置。 >>235 (´-`).。oO(連絡できますけど、あなたもできるでしょ?とか) >>239 仕様です。 従来キーを生キーへ変換したいことってある???? そんなことする意味がわからなーい。 >>238 いやー、どうやらさんが知らない人だと見ないんじゃないんですかねぇとおもて >>239 ◆2jQDVuA2hQ ##61616161DADADADAaa ◆K0Gxko5y0Q ##DADA616161616161.a っすね。Salt部を省略したら【..】扱い。 生キーに変換する人は、自分で何をやっているのかわかってる前提。 >>237 >・キー構成文字 > (ry >これ、分離できない? なるほど,言われてみれば確かに......ということで,分離する処理も入れてみました. ついでに,トリップの処理もちょっと変更. if (length $handle_pass >= 12) { if (substr($handle_pass, 0, 1) eq '$') { # 将来の拡張用 $GB->{TRIPSTRING} = '???'; } elsif ($handle_pass =~ m|^#([[:xdigit:]]{16})([./0-9A-Za-z]{0,2})$|) { $GB->{TRIPSTRING} = substr(crypt(pack('H*', $1), "$2.."), -10); } else { use Digest::SHA1 qw(sha1_base64); $GB->{TRIPSTRING} = substr(sha1_base64($handle_pass), 0, 12); } } else { # 従来形式 } 12桁以上かつ「#$〜」の指定は,将来的な拡張に使えるようにとっておこうかと. ◆cZfSunOs.U さんカコイイ! ああ、長年の夢が叶っていく!!!!! どうやらさんにメールしまして, >全サーバで適用されるなら、 >いいと思いますー。 というお返事を頂いたので,SHA1 使ってる部分あたりの仕様が固まってきたら 全鯖配布ということにしようかと. # >さてさて、sports2をどうしたものかな、、、と。 # # ということも付記されてましたが...... 話が早すぎてこわいw さて、なんかテストで検索してみたいけどシロートはトリッパーが対応するまで また〜りとしますか。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる