>>939 DDR2 533MHzならそうだね
XDR DRAMなら25.6GB/secはいく。
おおう、もうそんなに速いのか、すげーなぁ…
MD5完全に\(^o^)/オワタ
前から終わってる
DES終わってるのに未だにFelicaとかで使われてるぜ
949 :
デフォルトの名無しさん:2007/04/19(木) 21:45:11
>>948 Felica に使われてんのって 3DES じゃなかった?
相互認証が、ね
なあ、ハッシュを衝突させるアルゴリズムって、どういう考え方をしたら作れるんだろう?
たとえば俺が数分考えた俺最強ハッシュ
// 入力 : 配列 arr[], len
// ここでの int は 32bit でも 128bit でもなんでもいいとして
int a = 適当初期値1, b = 適当初期値2, c = 適当初期値3, d = 適当初期値4, e = 適当初期値5;
for(i = 0 → len-1){
a = b * 適当素数1 + arr[i] % 適当素数2;
b = c * 適当素数3 + arr[i] % 適当素数4;
c = d * 適当素数5 + arr[i] % 適当素数6;
d = e * 適当素数7 + arr[i] % 適当素数8;
e = a * 適当素数9 + arr[i] % 適当素数10;
}
hash = a^b^c^d^e; // 最終結果なわけで
ってのがあったとして、これを総当りでなく理論的に(総当りより短い時間で)破る方法ってのが
存在すると思いにくい。適当数は全て固定でいいとして、こういうのって逆算方法あるのかな?
>>951 %って+より演算の優先順位上だよな?
すると適当素数2,4,6,8,10で剰余取る意味無くね?
for(i = 0 ; i<=len-1 ; i++){
a = (b * 適当素数1 + arr[i]) % 適当素数2;
b = (c * 適当素数3 + arr[i]) % 適当素数4;
c = (d * 適当素数5 + arr[i]) % 適当素数6;
d = (e * 適当素数7 + arr[i]) % 適当素数8;
e = (a * 適当素数9 + arr[i]) % 適当素数10;
}
の方がいいのではないかと。
それと、適当な素数で剰余取ってる関係で上位のbitの反転率が低くなりそうだから、
i=sizeof(int)
#define l 適当な数1
#define m 適当な数2
#define n 適当な数3
#define o 適当な数4
hash = a^(b<<l+b>>(i-l))^(c<<m+c>>(i-m))^(d<<n+d>>(i-n))^(e<<o+e>>(i-o));
な感じにするがな。
953 :
952:2007/05/02(水) 20:07:34
すまん、逆算法についてだったな。
分からん、とだけ言うが、128bit同士の剰余算ってどうやったら効率的にできるんだろう?
954 :
デフォルトの名無しさん:2007/05/02(水) 20:20:51
>>951 高速に処理を行いつつ、衝突を起こさせない。
↑がハッシュ関数の信条。
お前さんのハッシュ関数は衝突は起こせないだろうが、高速処理が抜けている。
アセンブラで書いてみてどれくらいのクロック数になるか見積もってみそ。
また、shaを32bit出力に変換してみてどれくらいのクロック数になるか見積もってみそ。
たとえば、次のような擬似コードで、演算子の優先順位とかは C とか準拠として...
// 入力 (int/char) arr[], (int) len
// 出力はとりあえず 32bit UINT でいいとして
unsigned int a = 36319, b = 100393, c = 205043, d = 309857, e = 460373, hash;
for(i = 0 ; i <= len-1 ; i++){
a = (b * 484643) + (arr[i] % 471139);
b = (c * 111637) + (arr[i] % 376127);
c = (d * 379699) + (arr[i] % 708899);
d = (e * 67219 ) + (arr[i] % 247579);
e = (a * 890711) + (arr[i] % 503879);
}
hash = a^b^c^d^e; // 最終結果なわけで
>>954 汎用 CPU では遅いとは思う。でも、もし俺アルゴみたいな単純アルゴリズムが、速度をそれほど
重視しない && クローズドな状況において、標準的な技術である MD5 や SHA-x よりも強ければ、
標準技術より独自に考えた変なハッシュのほうがむしろセキュリティ上有用ってことになってしまうのかな?
正直、車輪の粗悪なる再発明ではないかと不安だ
すまん 何甘えてるんだ俺って感じだな
MODを求めるのがしんどいな
ワンチップマイコンにも簡単に組み込めるのが普及の条件。
単純な演算だけではどうしようもなくなってくると
結局仕方が無くなると思うけどな。
もしや mod なくても強度 && 散らばりにあまり影響しないのかな
ビットの攪拌やりたいならシフトやS-Boxを使ったほうがいい。
962 :
952:2007/05/03(木) 13:18:37
>>960 俺が書いたコードのように、全体を括弧でくくれば気休め程度に強度は高くなる。
だが、足し算やその前の掛け算でオーバーフローさせて拡散するのもありな気がしてきた。
そのほうが1サイクルあたり(32bit演算としても)200クロック位は速いし?
>>955 AESに選ばれたRijndaelの話なんだけど、
あれよりも高速か高強度の暗号アルゴリズムはAES候補の中にあったわけだし
総合的な性能を求めないのであれば有用なんじゃないの?
ただ、クローズドなのは正直いただけない
>重視しない && クローズドな状況において、標準的な技術である MD5 や SHA-x よりも強ければ、
>標準技術より独自に考えた変なハッシュのほうがむしろセキュリティ上有用ってことになってしまうのかな?
>正直、車輪の粗悪なる再発明ではないかと不安だ
クローズドな環境ってのはどういう意味でクローズドなの?
よっぽどのものじゃないと標準のが安全だと思うけど。
ていうか、末尾のビットいじるだけで規則性が見えるようなのじゃお話にならないんじゃ…
いろいろありがとう。
例示のコードは適当に考えたもので、別にクローズドでなくても良かったし実際どこかで使おうって
わけじゃないんでアレだけど...
よく検証されたオープンな技術は優れている場合が多いけれど、もし無線 LAN の WEP みたいに
攻撃方法が見つかってしまったら兄弟全滅なんで、独自物について安全性を検証する方法があったら
知りたいなぁってのが元々の考えですわ。でも結局、「独自系暗号」の強さを自分で検証するのは
難しいからセキュアにしたいところではオープンな技術を使いなさい、という至極真っ当な結論が
得られた気がするよ。
既知の2種以上のハッシュアルゴリズムでパイプライン処理しとけ。
967 :
デフォルトの名無しさん:2007/05/16(水) 21:57:06
高速で実績のある共通鍵暗号ってどんなのがありますか?
ノートPCに入れて置いているデータの一部を暗号化したいです
Camelliaだな
969 :
967:2007/05/17(木) 00:12:25
>>968 レスありがとうございます
Camellia検討してみます
CamelliaってなんかTDESみたいな構造してるな。
MISTYならわかるが、Camellia対応の暗号化ソフトって一般的に出回ってたっけ
ないと思うしそもAESでいいんじゃないの?
Linux 2.6.21にとりこまれたよ
974 :
デフォルトの名無しさん:2007/05/19(土) 17:40:45
楕円曲線暗号のフリーソフトを開発したんですが、
公開すると問題になりそうですか?
ソース公開なら引っかかることなくね?
976 :
デフォルトの名無しさん:2007/05/19(土) 17:43:56
VJ++で作ったんですが・・・
寧ろ俺は、どんな言語で作ったにせよ、少なくとも
暗号化ソフトのエンジン部のソースコードは公開するべきだと思うが。
可能ならCかJavaか何かのある程度メジャーな言語に書き下す方がいいかと。
>>977 ソースコードの公開よりも
数学的に安全性を証明することのほうが大切。
実装上の問題で穴ができちゃうこともあるから
ソースコードも公開されてるほうがよりいいとは思うけど。
俺は数学的に証明するのとかはかったるいので、
共通鍵暗号と公開鍵暗号のどっちに属するかと、鍵空間の大きさを書く程度なんだが。
確か、メルセンヌツイスタとか何とか言う暗号には使えない乱数生成機の周期の長さは
作者が証明してたな。
暗号には使えないって言っても、乱数系列が特定される恐れがあるからで
安全といわれる乱数とのXORやハッシュ値をとったりすれば十分実用にたえうる。
ちなみにgenrand()で与える引数が32ビット整数1個じゃ、特定しやすいだろうなぁ。
MTの空間の大きさを活用するには初期化には19937ビット分は必要だ。
つうかそもそも目的が違うわけで…
ところで一般的に暗号用乱数のシード初期化ってどういう仕組みになってんの?
たとえばハードウェアのノイズ使ってるとか?
time
タイミングであたりがついちまうだろうが
984 :
デフォルトの名無しさん:2007/05/21(月) 23:59:48
白色雑音だっけか?
あと、資源の使用量の変化とかじゃなかったか?
CPUやらメモリやらスレッド数やら
HDDのアクセス時間の微妙な差異から自然乱数を作る方法を紹介してるサイトがあったな。
10回程度とって他の擬似乱数のseedに使えばちょうどいいとか。
(というのも、遅い)
987 :
デフォルトの名無しさん:2007/05/22(火) 20:27:58
そういえば TPM に乱数生成機能ってないん?
って、ぐぐったらすぐに見つかった。やっぱあるんやね。
◎
363191 3932 433373