15:182018-05-15■anond:20180515094029デジタル署名はCPUが進化したら、アルゴリズムが危殆化して、実時間で書き換えられる。04:062014-04-22■http://anond.hatelabo.jp/20140422184326もともとはUNIXに使われていたCrypt,DESのブロック長が8バイトだったのと当時はそんなにディスク容量もなかったので便宜上バスワードは8バイトまで。(8バイトで切られる)という歴史的仕様だった時の名残。今はSHA256かSHA512だから64文字ぐらいまでなら何の問題もない。当のUNIXの世界ではとっくの昔に公開鍵暗号方式とワンタイムパスワードの組み合わせになってるので直接パスワードを送信したりはしない。30年か40年ぐらい昔の仕様が今でも残っているのが8文字なんじゃないかなぁ。いくらなんでも、時代に追いついてなさすぎだよね。ちなみにDESなんてもう使わない。3DESですら脆弱、MD5,SHA-1ですら脆弱と呼ばれる時代っすからね。銀行系の人は、そんな知識もないでしょ(技術屋じゃないからね)。下手すりゃ証明書はベリサインだよね。彼らの知識を更新するのは、とんでもない重労働だからSEは誰もやらないと思う。そんな事しなくても古い技術で金がもらえるのにわざわざ危険を犯してまで進言する奴はもう銀行業界にはいないだろ。secretも簡単に抜ける」(http://d.hatena.ne.jp/kusano_k/20130318/1363640368)もふったーの作者「プロテクト強化した」(http://blog.livedoor.jp/blackwingcat/archives/1762970.html)「プロテクトかけたアルゴリズムを実装したバージョンに差し替え」たなんて言われると本当に「プロテクト」がかかっているのか確かめてみたくなるのが人情というもの。secretが抜けるか試してみた。結論から言うと、あっけなく取り出せた。動作がよくわかっていないアプリケーションを解析して仕様を明らかにすることをリバースエンジニアリングと呼ぶ。ソフトウェアのリバースエンジニアリングは基本的に対象を逆アセンブルしてひたすら読むことによって行う(その補助に1命令ずつ実行してレジスターやメモリーの様子を観察することもある)。小規模なものでなければオブジェクトコード全体を逆アセンブルして最初から最後まで読むなんてのは不可能だ。人間の読速度には限界があるし、時間も有限だからだ。詳しい動作を知りたい部分というのは全体のごく一部であることが多いので全逆アセンブリを読むのには非常に無駄が多い。リバースエンジニアリングではいかに詳らかにすべき動作を行っているコードを絞り込むか(=読むべき逆アセンブリを少なくするか)が重要になる。TwitterのGUIクライアントを頭から読むのは到底無理なので、どうやって解析すべきコードの範囲を狭めるかを考えた。secretがどのような役割を果たすのかを知る必要がある。secretはそのままサーバーに送信されたりはしない。secretが使われる。HMACは次のように算出される。secretHは任意のハッシュ関数。⊕はxoropadは0x5c5c5c...5cipadは0x363636...36である。このあたりから攻めようと思った。SHA-1の計算にはいくつか特徴的な定数が使われるので、そこからSHA-1の計算に使われているであろう関数444190を特定する。この関数のエントリーポイントに中断点(ブレークポイント)を設定してOAuth認証をさせるべくもふったーの「ブラウザで認証」ボタンを押す。狙い通り中断するので関数を抜けるまで実行する。関数401100の4012DAに出た。下を見るとこのようになっている。alはxorした結果を格納している。先ほどの中断点は無効化しこのループを抜けた地点である401360まで飛ばす。この時点でesp+0B8を見ると次のようになっている。secretが手に入る。追伸はてなは増田のスーパーpre記法で半角の<>が含まれていると投稿が出来ないのを早く直してください。18:45追記もふったーの作者から反応があった。「本気だったつもりのもふったーのデバッグ処理が残ってた」らしい(http://blog.livedoor.jp/blackwingcat/archives/1763951.html)。修正したとのことなので最新版(v0.9.6e)を見てみた。確かに若干変更されているが何の問題もない。SHA-1の呼び出しに中断点を設置して渡されているバイト列を見るだけ。\mofooter.00444D90ここでeaxが指すメモリーを見ると以下のようになっている。secretが得られる。00:472010-01-08■ネットエージェントのSHA-1クラックの課題を解いているが、英単語の辞書で試した所駄目だったので総当たりでやってるところなのだがpvaaaaaまで試して駄目だったのでさじを投げそうだ。考えて並列にしないと早く答えが出ないかも。07:522010-01-03■http://anond.hatelabo.jp/20100103031352ハッシュといえば昔からcryptと決まっているし新しくてもMD5かSHA-1か512だろ?それ以外は互換性の理由からそれこそ使わない。問題はハッシュアルゴリズムじゃなくて、ソルトの生成アルゴリズムだけど、普通ソルトはシステム一律な事が多い。巻き取りがうまくできないとしたら、そりゃ、ハッシュ化されていればなんでもいいと思っている、そのシステム設計者が平文設計と同じぐらい知識が無いんだろ。ユーザーデーターベスの以降なんて、ハッシュアルゴリズムの欄を1つ作っておくだけで十分終わる。聞き方を変えれば、cryptかMD5かSHA以外のハッシュアルゴリズムなんて使うのか?せいぜい、ソルトぐらいだろ?差分なんてもっと言えば、数年に1回のシステム換装のために24時間365日のセキュリティを犠牲にするなんて異常。