プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 このページをアンテナに追加 RSSフィード

 iTunes Music Store(Japan) なかのひと あわせて読みたいブログパーツ
|

0001 | 00 |
2004 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
2008 | 01 | 02 | 03 | 05 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 |
2010 | 03 | 04 | 06 | 07 | 09 | 10 | 11 |
2011 | 01 | 02 | 10 |
2012 | 04 |
2013 | 01 | 05 | 06 | 07 | 08 | 10 |
2014 | 02 | 03 | 05 | 09 |
2015 | 04 |
2016 | 09 | 11 | 12 |
はてな一覧
アンテナに追加
私のアンテナ
私のダイアリー
私のアーカイブ
私のアイデア
私のブックマーク
私のグループ
私のキーワード
ニュース系、今まで続いているシリーズモノの読み物
dKingyo Utility Toolkit Projectのリリース情報
やっぱり暗号化は大人の味(笑)
プログラムのパッキング方法を調べよ
ココが厳しいよMinGW
ライブラリアン通信
ゲームプログラミングどうしよう
CRCについて
ビット演算練習
d金魚の今更Ajax
Windows Tips
VC6 Tips
Win32 WTL Tips
Ruby for C++ User
Ruby Tips
今日のRubyで嵌った事
正規表現PIECE
書きかけ
続く・・・

私のダイアリーの人気記事
新しくブックマークされた記事


あまり、役に立たなそうな個人的に調べた情報や妄想に耽った事、今 勉強している事ヒソヒソと公開していたりします。 | 登録してくれている方々 | d金魚にメール | 当サイトは640x480の画面解像度に対応しています。
日記へのリンク、アンリンクはフリーですが、selfタグのついている部分のコンテンツの引用はご遠慮願います。ご協力よろしくお願いします。


 

2008-05-12 やっぱり暗号化は大人の味(笑) part36

[]お祭り暗号アルゴリズム お祭り暗号アルゴリズム - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク お祭り暗号アルゴリズム - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

http://b.hatena.ne.jp/entry/8205567

http://www.atmarkit.co.jp/news/200804/11/cab.html

via http://d.hatena.ne.jp/kmt-t/20080412/1208008098

 ブックマークコメントはいろんな理由があるにしろコメントニュアンスバイアスがかかっているように見受けられるので、それらに関してはノーコメント


 私は純粋にどういったアルゴリズムなのか公開される事が楽しみです。

2007-11-16 やっぱり暗号化は大人の味(笑) part35

[]やっぱり暗号は中毒性があるようだ。 やっぱり暗号は中毒性があるようだ。 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク やっぱり暗号は中毒性があるようだ。 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

http://q.hatena.ne.jp/1194699919

暗号の味に酔いしれましょう。

2007-04-06 やっぱり暗号化は大人の味(笑) part34

[][]暗号系書籍リスト 暗号系書籍リスト - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク 暗号系書籍リスト - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

最近は暗号系ネタに関して疎くなっているのでがんばらないといけないと思っている。積読をそろそろ解消しないと・・・

それからAHSの情報もあまり見ていないし・・・探していないし・・・


とりあえず、個人的にお奨め暗号本をリストにしてみた。


洋書の暗号系書籍のリストは

http://booklog.jp/users/studiokingyo/spine/dm=&jm=&cate=299774

です。

2007-01-17 やっぱり暗号化は大人の味(笑) part33

[][]AHS(Advanced Hash Standard)コンテストの実施!!! AHS(Advanced Hash Standard)コンテストの実施!!! - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク AHS(Advanced Hash Standard)コンテストの実施!!! - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

http://www.atmarkit.co.jp/fsecurity/rensai/crypt06/crypt01.html

にて今までチェックしていた記事を見逃していたのに今更気付く。

もう4ヶ月前だよ・・・。

と言う事で、個人的に感銘を受けた点を・・・

  • Page2 表1 SP 800-57をベースにした最低限維持すべき安全性と利用期間の関係
  • Page3 AHS(Advanced Hash Standard)コンテストの実施に向かって


特にAdvanced Encryption Standardのハッシュ版「AHS」に惹かれた。

[]d金魚による目指せ!!!AHS(仮) d金魚による目指せ!!!AHS(仮) - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク d金魚による目指せ!!!AHS(仮) - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

AHSは【大人の味(笑)】を試す為にもこのコーナーで実況したいと思った。


さて・・・私も猛勉強して応募してみようかな・・・

って今の実力じゃ一日20時間集中状態で勉強したとしても無理・・・っぽい・・・。おrz!!!

この手の情報は英語だし・・・そして設計するにはそれに見合った数学・・・コンピューターサイエンス・・・の実力・・・。

とてもとても長い長い長い!!!ーーー道のりだ・・・。

2006-10-19 やっぱり暗号化は大人の味(笑) part32

[][]パスワードは1秒に100万パターン解析できると考える パスワードは1秒に100万パターン解析できると考える - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク パスワードは1秒に100万パターン解析できると考える - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

http://www.ipa.go.jp/security/fy14/contents/soho/html/chap1/pass.html

http://fapsis.s1.xrea.com/paseva.shtml

より


関連:http://d.hatena.ne.jp/studiokingyo/20060410


パスワードは1秒に1000000パターン解析できると考える。

となると・・・関連先の例のプログラムにかけると...

特に8文字と9文字に着目して欲しい

4 : 1679616
 0年 0日 0時間 0分 1秒
で検索が完了します。
5 : 60466176
 0年 0日 0時間 1分 0秒
で検索が完了します。
6 : 2176782336
 0年 0日 0時間 36分 16秒
で検索が完了します。
7 : 78364164096
 0年 0日 21時間 46分 4秒
で検索が完了します。
8 : 2821109907456
 0年 32日 15時間 38分 29秒
で検索が完了します。
9 : 101559956668416
 3年 80日 11時間 5分 56秒
で検索が完了します。
10 : 3656158440062976
 115年 341日 15時間 34分 0秒
で検索が完了します。
11 : 131621703842267136
 4173年 254日 8時間 24分 2秒
で検索が完了します。
12 : 4738381338321616896
 150253年 31日 14時間 25分 21秒
で検索が完了します。
13 : 170581728179578208256
 5409111年 42日 15時間 12分 58秒
で検索が完了します。
14 : 6140942214464815497216
 194728000年 74日 19時間 46分 55秒
で検索が完了します。
15 : 221073919720733357899776
 7010208007年 138日 16時間 9分 17秒
で検索が完了します。

16 : 7958661109946400884391936
 252367488265年 247日 5時間 34分 44秒
で検索が完了します。
17 : 286511799958070431838109696
 9085229577564年 140日 8時間 50分 38秒
で検索が完了します。

18 : 10314424798490535546171949056
 327068264792317年 308日 6時間 22分 51秒
で検索が完了します。

19 : 371319292745659279662190166016
 11774457532523442年 147日 13時間 43分 10秒
で検索が完了します。

20 : 13367494538843734067838845976576
 423880471170843926年 202日 13時間 54分 5秒
で検索が完了します。

2006-08-27 やっぱり暗号化は大人の味(笑) part31

[][]暗号の鍵長はどの程度で安全か? 暗号の鍵長はどの程度で安全か? - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク 暗号の鍵長はどの程度で安全か? - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

http://www.atmarkit.co.jp/fsecurity/rensai/crypt05/crypt01.html

より。思い出した。


この記事を書いた時(200x年)であり、鍵長に限った話ならば、

と本や資料を読んだ拍子に頭の中で整理した覚えがあった。

しかしながら、なぜこの値になったのかという試行のプロセスは宇宙の彼方である。

なので、信用しないで欲しい。*1ただの備忘録なのだから。


関連:

http://d.hatena.ne.jp/studiokingyo/20060609#p2

http://d.hatena.ne.jp/studiokingyo/20060410


追記:多分、今後数年のキーの長さは

とするのが良いのか?と考える。

もちろんアルゴリズムは世界中の暗号学者からテストされているような信頼されたものとする。

とする。

無論この内容も信用しないで欲しい所詮 備忘録なのだから・・・。

[][]等価安全性と鍵長の関係 等価安全性と鍵長の関係 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク 等価安全性と鍵長の関係 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

http://www.atmarkit.co.jp/fsecurity/rensai/crypt05/crypt03.html

より

「等価安全性と鍵長の関係」の表が記載されていた。

公開鍵の場合2048bitと共通鍵の場合112bitという関係で等価らしい。

なんか私の頭の中で整理していた鍵長と違うね・・・

どのくらいで安全かは・・・自己責任というこの世で一番簡単な定型句に任せる事にする。

*1:むしろbitをbyteと読み替えて欲しい!!!?

2006-08-20 やっぱり暗号化は大人の味(笑) part30

[]block cipher : CTR mode block cipher : CTR mode - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク block cipher : CTR mode - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

CTRモード 実は今まで知らなかった。

google:Wikipedia 暗号利用モード

等で調べると暗号利用モードが出るわ出るわ・・・

ブロック暗号*1で使われる暗号利用モードはCBC CFB OFBしか知らなかったので興味津々になってしまいました。

このCTRモードで使うカウンターの初期値の事をノンスというらしい。暗号キーのソルト的なものか?

このカウンター値を暗号化して暗号化したいデータとXORを取るって言う寸法らしい。

もちろんカウンターを使っているので1プロセス毎にカウンター値はインクリメントするらしい。

詳細はよく分からないので

http://www.amazon.co.jp/exec/obidos/ASIN/4873112001/studiokingyo-22

あたりのCTRの解説を読んで欲しい。

[][]暗号技術を学ぶ際に最初に読むべき本 暗号技術を学ぶ際に最初に読むべき本 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク 暗号技術を学ぶ際に最初に読むべき本 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

CTRモードなるものを見つけた。

実はこのCTRモードを今まで知らなかった。

この本 暗号技術入門-秘密の国のアリス(以下 アリス本)

http://www.amazon.co.jp/exec/obidos/ASIN/4797322977/studiokingyo-22

から知った。

暗号技術大全

http://www.amazon.co.jp/exec/obidos/ASIN/4797319119/studiokingyo-22

は堅そうなイメージの辞書的な本なのだが

アリス本は一つ一つの内容がとても分かりやすかった。

HMACやブロック暗号モードについての解説はもちろんの事、

鍵交換、デジタル署名、暗号で使う乱数 等 


章ごとに要点が最後にまとめられているので頭の中で知識を整理しやすくしている点

なぜその技術が必要なのかを説明している点

図を元に状態遷移を明示している点

・・・


挙げればきりが無いが

私はこの本を暗号の勉強を始める時に最初に読むべき本として薦める次第だ。

アリス本 を 買う

2006-06-21 やっぱり暗号化は大人の味(笑) part29

[][][]Blowfish vs Camellia speed test Blowfish vs Camellia speed test - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク Blowfish vs Camellia speed test - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

ファイルパック、アーカイブファイル処理 アプローチ part2

BlowfishとCamelliaの処理速度を決めるのもなんだか不公平な気がするのだが*1

Blowfishの方が約8.75倍処理速度が速かった。

ゲームプログラミングで使うファイルパック処理等にはCamelliaは向かない気がした。

start dkutil_c Blowfish test --
ECB : 38917980
CBC : 40097102
CFB : 39198897
OFB : 40743644
end dkutil_c Blowfish test -- 

start dkutil_c Camellia test --
ECB : 340517948
CBC : 334248541
CFB : 337204699
OFB : 336342822
end dkutil_c Camellia test -- 

Camelliaの場合なんでECBモードが遅いのかというとCamelliaはCFBとOFBを普通は出来ない設計のため。

私が勝手にCFBとOFBをCamelliaのEncrypt関数のみで処理しているから速いのだと思われる。

でも、まぁ、Crypto++のspeed testと同じ結果ですね・・・

http://www.eskimo.com/~weidai/benchmarks.html (やっぱり暗号化は大人の味(笑) part20より)

*1:Blowfishは64bitブロック暗号 Camelliaは128bitブロック暗号

2006-06-09 やっぱり暗号化は大人の味(笑) part28

[][]Botan is a BSD-licensed crypto library written in C++. Botan is a BSD-licensed crypto library written in C++. - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク Botan is a BSD-licensed crypto library written in C++. - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

やったね^^いいライブラリ見っけ

ライセンスはBSD licenceです。

http://botan.randombit.net/

サポートしているアルゴリズムは以下のURLのとおり。

http://botan.randombit.net/algos.html

google:Crypto++は実装が複雑なすごい辞書って感じだけど

google:Botanは素直なC++で書かれた資料集って感じの印象を受けた。

[][]K2のアルゴリズム公開! K2のアルゴリズム公開! - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク K2のアルゴリズム公開! - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

ってしてくれないのかな?

http://www.amazon.co.jp/exec/obidos/ASIN/4797319119/studiokingyo-22

多分、それまでにこの本を読んでおこうかな?

いやね、google:K2 アルゴリズム KDDIで出てくるアルゴリズムなんだけどさ・・・。

なんか論文見せてくれないとどんなアルゴリズムなのかどうも信用できないんですけど・・・

とりあえず、

http://everest.cocolog-nifty.com/gassan/2006/03/post_9c79.html

http://plusdblog.itmedia.co.jp/ksaito/2006/03/k2_e3dd.html

の記事にはとても笑わせてもらった。

[][]最近のストリーム暗号 最近のストリーム暗号 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク 最近のストリーム暗号 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

実は前の記事のK2(http://d.hatena.ne.jp/studiokingyo/20060609#p3)もストリーム暗号なのだが色々調べていましたら出てきました、出てきました!!

なるほど。MUGI, MULTI-S01,VMPC Stream Cipher,RC4A ・・・

via http://www2.kobe-u.ac.jp/~021d935n/

全部知らない暗号ばかりだ・・・

とても興味深いです。

2006-04-20 やっぱり暗号化は大人の味(笑) part27

[][]Camellia実装記 part5 Camellia実装記 part5 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク Camellia実装記 part5 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

実は、CamelliaのCBC CFB OFB版を作っていたのだが、どうがんばってもCFBとOFBを上手く複合化できない。


何故だ!と思った所、

Camelliaの暗号はConvert形式ではなかったのだ。

私がここで勝手にConvert形式と呼んでいるが、Encrypt Decrypt処理が同じということだ。欲に言うxor処理なんかをイメージしていただくと良い。

ストリーム暗号のarc4なんかがそれだ。


なので、CFBとOFBの処理の場合はCamelliaのEncrypt処理で複合化(データを暗号化していない状態に戻す)しなければならないので、これだとCamelliaの真価は発揮できていないのかもしれないと感じた。


ちょっとCamelliaの公式記事を読んだのだが、確かにCFBとOFBに関する記述は無かった。

イレギュラーな方法を使って私のdkcCamellia.cの実装ではCFBとOFBをサポートしているがやはりCBCモードを使ってほしいと感じた。

2006-04-18 やっぱり暗号化は大人の味(笑) part26

[][][]RIPEMD160のファイルサイズ制限? RIPEMD160のファイルサイズ制限? - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク RIPEMD160のファイルサイズ制限? - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

RIPEMD160のアルゴリズムにて最後に今までUpdate関数に入れてきたファイルサイズの八倍の数をUpdate関数に突っ込むわけだけど、*1これだと符号なし64bit整数を使っても0x1FFFFFFFFFFFFFFFbyteまでしか扱えないんじゃないかなァと感じる。

でもまぁ、2097151 TByte(2047 PByteほど)まで使えるからとりあえず、今のPCの扱うファイルサイズであればまだまだ大丈夫のようだ。


ちなみにRIPEMDの日本語解説は

http://www.geocities.co.jp/SiliconValley-Oakland/8878/lab19/lab19.html

が詳しい。

*1:詳しくは次回リリースされるdkutil_cのdkcRIPEMD.cに実装されているdkcRIPEMD160Final()にて

2006-04-15 やっぱり暗号化は大人の味(笑) part25

[]Camellia 実装記 part4 Camellia 実装記 part4 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク Camellia 実装記 part4 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

前回の記事:(http://d.hatena.ne.jp/studiokingyo/20060404)

http://slashdot.jp/security/article.pl?sid=06/04/13/125212&from=rss

より・・・。

最近、Camelliaが流行りだしてきたらしい。

part3にて実装を示したがこのままではECBモードなので安全とは言えず、CBCなりOFBなりを使ってラップして使用して欲しい。

なんかcamelliaって上手くすればMMXで最適化できそうなので社会に貢献するためにMMXで最適化したいと思ってきた。ProCon2006の作品を作りたくないときに実装していこうと思う。

[][]Camelliaをアセンブラで実装すれば様々なテクニックが身につく Camelliaをアセンブラで実装すれば様々なテクニックが身につく - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク Camelliaをアセンブラで実装すれば様々なテクニックが身につく - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

http://info.isl.ntt.co.jp/crypt/camellia/dl/01jspec.pdf

より。

Camelliaを実装するためのノウハウ、かなり専門的な内容が簡潔に示されている。

これをよく見てNASMでCamelliaを実装すれば私は階段の段を一つ上ることが出来ると思う。

https://info.isl.ntt.co.jp/crypt/camellia/

2006-04-12 やっぱり暗号化は大人の味(笑) part24

[][]CBC CFB OFB encode & decode process in C++ CBC CFB OFB encode & decode process in C++ - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク CBC CFB OFB encode & decode process in C++ - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

前回の続き:(http://d.hatena.ne.jp/studiokingyo/20060407

より

デコードバージョンも用意してサンプルも書いてみました。

dkutil依存なコードもあるけどそこらへんは各自直してください。ではでは。


template<typename T,class FUNCTION_T>
struct block_encode{
  block_encode(){}
  ~block_encode(){}
  inline T *ofb(T *target,const T &src,size_t count,
    FUNCTION_T encode_func)
  {
    size_t i;
    T ref_t = encode_func(src);
    for(i=0;i<count;i++)
    {
      target[i] ^= ref_t;
      ref_t = encode_func(ref_t);
    }
    return target;
  }
  inline T *cfb(T *target,const T &src,size_t count,
    FUNCTION_T encode_func)
  {
    size_t i;
    T ref_t = encode_func(src);;
    for(i=0;i<count;i++)
    {
      target[i] ^= ref_t;
      ref_t = encode_func(target[i]);
    }
    return target;
  }
  inline T *cbc(T *target,const T &src,size_t count,
    FUNCTION_T encode_func)
  {
    size_t i;
    T ref_t = src;
    for(i=0;i<count;i++)
    {
      ref_t ^= target[i];
      ref_t = encode_func(ref_t);
      target[i] = ref_t;
    }
    return target;
  }
};

template<typename T,class FUNCTION_T>
struct block_decode{
  block_decode(){}
  ~block_decode(){}
  typedef block_encode<T,FUNCTION_T> encoder_type;
  encoder_type mEncoder;
  inline T *ofb(T *target,const T &src,size_t count,
    FUNCTION_T encode_func)
  {
    return mEncoder.ofb(target,src,count,encode_func);
  }
  inline T *cfb(T *target,const T &src,size_t count,
    FUNCTION_T encode_func)
  {
    return mEncoder.cfb(target,src,count,eocnde_func);
  }
  inline T *cbc(T *target,const T &src,size_t count,
    FUNCTION_T encode_func)
  {
    size_t i;
    T ref_t = src,t;
    for(i=0;i<count;i++)
    {
      target[i] = encode_func(target[i]);
      ref_t ^= target[i];
      t = target[i];
      target[i] = ref_t;
      ref_t = t;
      
    }
    return target;
  }
};

template<class T>
struct test_cipher{
  unsigned m;
  test_cipher(){
    reset();
  }
  T operator()(const T &src){
    T t = src ^ m;
    m += src;
    return t;
  }
  void reset(){
    m = 0x12345678;
  }

};

void dkutil_block_convert_test()
{

  

  {

    block_encode<uint32,test_cipher<uint32> > encoder;
    block_decode<uint32,test_cipher<uint32> > decoder;
     uint32 ivec = 0xff11ff11;
    uint32 target[32],temp[32];
    size_t i;
    for(i=0;i<32;i++){
      temp[i] = target[i] = i;
    }
    test_cipher<uint32> cipher;
    encoder.cbc(target,ivec,DKUTIL_ARRAY_NUM_OF(target),cipher);
    cipher.reset();
    decoder.cbc(target,ivec,DKUTIL_ARRAY_NUM_OF(target),cipher);
    dkcmASSERT(0==memcmp(temp,target,sizeof(temp)));

    cipher.reset();
    encoder.ofb(target,ivec,DKUTIL_ARRAY_NUM_OF(target),cipher);
    cipher.reset();
    decoder.ofb(target,ivec,DKUTIL_ARRAY_NUM_OF(target),cipher);
    dkcmASSERT(0==memcmp(temp,target,sizeof(temp)));

    cipher.reset();
    encoder.ofb(target,ivec,DKUTIL_ARRAY_NUM_OF(target),cipher);
    cipher.reset();
    decoder.ofb(target,ivec,DKUTIL_ARRAY_NUM_OF(target),cipher);
    dkcmASSERT(0==memcmp(temp,target,sizeof(temp)));


  }

  
}

追記:cbcのエンコードデコードにバグがあったためFIX

2006-04-10 やっぱり暗号化は大人の味(笑) part23

[][]パスワードの長さは10文字以上は常識!? パスワードの長さは10文字以上は常識!? - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク パスワードの長さは10文字以上は常識!? - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

http://d.hatena.ne.jp/ryoko_komachi/20060409/1144591046

より。

考えさせられることがあったのでいろいろ検索していたら

http://www.kimura-kouichi.com/literacy/security/password3.html

を発見。

パスワードの組み合わせ問題って高校数学レベルだよね・・・

いや、実は、その手の問題は苦手分野なのさ・・・

で、復習復習。

http://yosshy.sansu.org/P&C.htm

なーる。引用させていただくと

一般にn個の区別できるものの中から、r個を取り出して1列に並べることを

 n個のものからr個とった順列

といい、その並べ方を nPr で表します。

 nPr=n×(n−1)×(n−2)×・・・×(n−r+1)

です。または、階乗の記号!(nの階乗: n!=1×2×3×・・・×n)を使うと

 nPr=n!/(n−r)!

とも書けます。

なーる o(*^▽^*)o~♪

でも、あれ?

パスワードの組み合わせ数ってドウ求めるんだろう・・・

なんか分からないので・・・

http://www.forest.impress.co.jp/article/2005/12/14/ninjututaikai.html

なる物を発見。とりあえず、これにかけて時間を測定して見るのもいいかも。

このソフトを使うと、クラッカーが本気になればパスワードは10文字でも足りないと言うことが良く分かる。

ちょっと考え中・・・

追記:hoshu氏(http://mainte.mine.nu/~hoshu/diary/

よりコメントをいただきまして

n種類の文字を用いてmの長さの文字列を作るとすると、nのm乗 通りになるかと思います。

そうでした!!!おrz!!!!プログラミングなんてしてないで高校生をマジメにやっておけば良かった。

つまりpow()ですね。

今マイブーム言語のRubyで書かせていただきますと

def pow(n,m)
 t = n
 if m<=0
  return 1
 end
 m = m -1
 for i in 1..m
  t *= n
 end
 return t
end

def password_print(count)
 n = 36
 for i in 1..count
  m = i
  t = pow(n,m)
  printf("%s : %s\n",i,t)
 end
end

password_print( 20 )

って感じですかね・・・

ついでに1文字を36種類のなかの文字から決められるパスワードの場合の試行回数は

1 : 36
2 : 1296
3 : 46656
4 : 1679616
5 : 60466176
6 : 2176782336
7 : 78364164096
8 : 2821109907456
9 : 101559956668416
10 : 3656158440062976
11 : 131621703842267136
12 : 4738381338321616896
13 : 170581728179578208256
14 : 6140942214464815497216
15 : 221073919720733357899776
16 : 7958661109946400884391936
17 : 286511799958070431838109696
18 : 10314424798490535546171949056
19 : 371319292745659279662190166016
20 : 13367494538843734067838845976576

って感じです。

なーる。(-∧-;)

[][][]パスワードの解析にかかる年数を求めるプログラム パスワードの解析にかかる年数を求めるプログラム - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク パスワードの解析にかかる年数を求めるプログラム - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

ネタ元のhttp://d.hatena.ne.jp/ryoko_komachi/20060409/1144591046

より

MD5は30000hash/sec

との事ですので

前回使用したプログラム*1を元に作ってみました。

#2006年現在 一般的なPCでmd5は30000/secくらい
def pwd_crack_time(n,onesec_cn)
 byou_cn = onesec_cn
 hun_cn = byou_cn * 60
 zi_cn = hun_cn * 60
 niti_cn = zi_cn * 24
 nen_cn = niti_cn * 365
 
 year = n / nen_cn
 rest = n % nen_cn
 day = rest / niti_cn
 rest = rest % niti_cn
 hour = rest / zi_cn
 rest = rest % zi_cn
 minute = rest / hun_cn
 rest= rest % hun_cn
 sec = rest / byou_cn

 printf("Idioticalな方法で%d/secの速度で試行できると仮定して検索すると
 %d年 %d日 %d時間 %d分 %d秒
で検索が完了します。\n\n",
onesec_cn,year,day,hour,minute,sec);
 
end

def pow(n,m)
 t = n
 if m<=0
  return 1
 end
 m = m -1
 for i in 1..m
  t *= n
 end
 return t
end


def password_print(count)
 n = 36
 for i in 1..count
  m = i
  t = pow(n,m)
  printf("%s : %s\n",i,t)
  pwd_crack_time(t,30000)
 end
end

password_print( 20 )

このプログラムの実行結果より以下に結論!

パスワードのIdoticな方法でのアタック時間

4文字までは1分以内で解けてしまう。

5文字までは1時間以内で解けてしまう。

6文字までは1日以内で解けてしまう。

7文字までは1ヶ月ほどで解けてしまう。

8文字までは3年以内に解けてしまう。

9文字までは100年とちょっとで解けてしまう。

10文字までは3864年とちょっとで解けてしまう。

11文字で139123年の月日がかかってしまう。やっと中国4000年の歴史より長くなってしまった・・・

これ以上長いパスワード長な割愛!!

以上。パスワードは10文字以上にしようねっていうのはこういう理由からだ。

だが、クラッカーは様々なアプローチからの予測アルゴリズムを使ってくるので一概にこの時間を信用してはいけない・・・と感じる。

[]会社も組織も人間である。 会社も組織も人間である。 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク 会社も組織も人間である。 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

会社も組織も人間である。

最近そう思うようになってきた。

人間が作ったものは人間性を帯びているとよく言われるのだが・・・

特に自立的に行動するように作られるものは色濃く人間性がにじみ出るような感じはする。

この人間性を他人だろうが自分だろうが思い通りに変えるということは並大抵の努力では上手く行かないということも最近になって思っていることである。

hoshuhoshu 2006/04/10 22:45 パスワードの組合せは、n種類の文字を用いてmの長さの文字列を作るとすると、nのm乗 通りになるかと思います。
私が普段使っているパスワードは37点・・・パスワード選びは難しいものですねー

studiokingyostudiokingyo 2006/04/10 23:20 >パスワードの組合せは
ごふ!先をこされてしもた^^;
高校数学の教科書ひっぱりだしてきたのに o(;△;)o ^^;
コメントありがとうございます。
そうですね。パスワード選びってとても難しいです。
なかなか高得点はだせません。
100点パスワード自動生成ソフトなんての作ったら面白そうかもしれません^^;では。

2006-04-07 やっぱり暗号化は大人の味(笑) part22

[][][]CBC encode process in C++ CBC encode process in C++ - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク CBC encode process in C++ - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

CBC ブロック暗号モードで暗号化する時は以下のような処理を行う。

ちなみにテストしていないので使用する場合は注意されたし・・・ デバッグ歓迎(^^;;;;

/**
@parma T : block object
@parma FUNCTION_T : encryption functor type
@param target[in] encryption data block object (POD ok)
@param src[in] initial vector
@param count[in] number of target
@param encode_functor[in] encryption functor
@note
ex: functor interface
@code
template<class T>
struct encode{
  EncryptionLogic *pLogic;
  encode(EncryptionLogic *a){
    pLogic = a;
  }
  T &operator()(const T &a){
    return pLogic->Encode(a);
  }
}
@endcode
 */
template<typename T,class FUNCTION_T>
inline T *cbc_encode_process(T *target,const T &src,size_t count,
    FUNCTION_T encode_func)
{
  size_t i;
  T ref_t = src;
  for(i=0;i<count;i++)
  {
    ref_t ^= target[i];
    ref_t = encode_func(ref_t);
    target[i] = ref_t;
  }
  return target;
}

追記:アップデートされないようにプログラムされていたのでFIX.

さらに追記:やっぱりバグっているっぽいです。

[][]CFB encode process in C++ CFB encode process in C++ - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク CFB encode process in C++ - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント


/**
@parma T : block object
@parma FUNCTION_T : encryption functor type
@param target[in] encryption data block object (POD ok)
@param src[in] initial vector
@param count[in] number of target
@param encode_functor[in] encryption functor
 */
template<typename T,class FUNCTION_T>
inline T *cfb_encode_process(T *target,const T &src,
  size_t count,FUNCTION_T encode_func)
{
  size_t i;
  T ref_t = encode_func(src);;
  for(i=0;i<count;i++)
  {
    target[i] ^= ref_t;
    ref_t = encode_func(target[i]);
  }
  return target;
}

[][]OFB encode process in C++ OFB encode process in C++ - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク OFB encode process in C++ - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント


/**
@parma T : block object
@parma FUNCTION_T : encryption functor type
@param target[in] encryption data block object (POD ok)
@param src[in] initial vector
@param count[in] number of target
@param encode_functor[in] encryption functor
 */
template<typename T,class FUNCTION_T>
inline T *ofb_encode_process(T *target,const T &src,
  size_t count,FUNCTION_T encode_func)
{
  size_t i;
  T ref_t = encode_func(src);;
  for(i=0;i<count;i++)
  {
    target[i] ^= ref_t;
    ref_t = encode_func(ref_t);
  }
  return target;
}

[][]IPsec 関連 RFC リスト IPsec 関連 RFC リスト - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク IPsec 関連 RFC リスト - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

http://www.tatsuyababa.com/RFC-ipsec.html

個人的に興味を持っているRFC

 
Program | Debug | dKingyo Utility Toolkit | library | D言語 | 御本とか | 備忘録 | テクニック | WayBack | 格言 | 英語 | 他力本願 | news | software |

デースケドガー