■暗号技術【ROUND2】■

このエントリーをはてなブックマークに追加
943デフォルトの名無しさん:2007/04/08(日) 14:00:36
>>941
ハードウェア板に行ってくれ。
944・∀・)っ-○◎●:2007/04/08(日) 16:06:36
>>939
DDR2 533MHzならそうだね
XDR DRAMなら25.6GB/secはいく。
945デフォルトの名無しさん:2007/04/08(日) 23:51:07
おおう、もうそんなに速いのか、すげーなぁ…
946デフォルトの名無しさん:2007/04/19(木) 12:44:53
MD5完全に\(^o^)/オワタ
947デフォルトの名無しさん:2007/04/19(木) 14:44:04
前から終わってる
948・∀・)っ-○◎●:2007/04/19(木) 21:09:45
DES終わってるのに未だにFelicaとかで使われてるぜ
949デフォルトの名無しさん:2007/04/19(木) 21:45:11
>>948
Felica に使われてんのって 3DES じゃなかった?
950デフォルトの名無しさん:2007/04/19(木) 22:19:57
相互認証が、ね
951デフォルトの名無しさん:2007/05/02(水) 19:18:12
なあ、ハッシュを衝突させるアルゴリズムって、どういう考え方をしたら作れるんだろう?
たとえば俺が数分考えた俺最強ハッシュ

    // 入力 : 配列 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; // 最終結果なわけで

ってのがあったとして、これを総当りでなく理論的に(総当りより短い時間で)破る方法ってのが
存在すると思いにくい。適当数は全て固定でいいとして、こういうのって逆算方法あるのかな?
952デフォルトの名無しさん:2007/05/02(水) 20:02:37
>>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));

な感じにするがな。
953952:2007/05/02(水) 20:07:34
すまん、逆算法についてだったな。
分からん、とだけ言うが、128bit同士の剰余算ってどうやったら効率的にできるんだろう?
954デフォルトの名無しさん:2007/05/02(水) 20:20:51
>>951

高速に処理を行いつつ、衝突を起こさせない。

↑がハッシュ関数の信条。
お前さんのハッシュ関数は衝突は起こせないだろうが、高速処理が抜けている。

アセンブラで書いてみてどれくらいのクロック数になるか見積もってみそ。
また、shaを32bit出力に変換してみてどれくらいのクロック数になるか見積もってみそ。
955デフォルトの名無しさん:2007/05/02(水) 20:34:37
たとえば、次のような擬似コードで、演算子の優先順位とかは 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 よりも強ければ、
標準技術より独自に考えた変なハッシュのほうがむしろセキュリティ上有用ってことになってしまうのかな?
正直、車輪の粗悪なる再発明ではないかと不安だ
956デフォルトの名無しさん:2007/05/02(水) 20:45:36
すまん 何甘えてるんだ俺って感じだな
957デフォルトの名無しさん:2007/05/02(水) 21:31:21
タイトル:■暗号技術【ROUND2】■
URL:http://pc11.2ch.net/test/read.cgi/tech/1088530204/
【糞スレランク:C】
直接的な誹謗中傷:20/956 (2.09%)
間接的な誹謗中傷:3/956 (0.31%)
卑猥な表現:7/956 (0.73%)
差別的表現:5/956 (0.52%)
無駄な改行:1/956 (0.10%)
巨大なAA:5/956 (0.52%)
by 糞スレチェッカー Ver0.8 http://kabu.tm.land.to/kuso/kuso.cgi?ver=8
958・∀・)っ-○◎●:2007/05/03(木) 01:41:52
MODを求めるのがしんどいな
ワンチップマイコンにも簡単に組み込めるのが普及の条件。
959デフォルトの名無しさん:2007/05/03(木) 03:45:24
単純な演算だけではどうしようもなくなってくると
結局仕方が無くなると思うけどな。
960デフォルトの名無しさん:2007/05/03(木) 05:42:31
もしや mod なくても強度 && 散らばりにあまり影響しないのかな
961・∀・)っ-○◎●:2007/05/03(木) 06:00:42
ビットの攪拌やりたいならシフトやS-Boxを使ったほうがいい。


962952:2007/05/03(木) 13:18:37
>>960
俺が書いたコードのように、全体を括弧でくくれば気休め程度に強度は高くなる。
だが、足し算やその前の掛け算でオーバーフローさせて拡散するのもありな気がしてきた。
そのほうが1サイクルあたり(32bit演算としても)200クロック位は速いし?
963デフォルトの名無しさん:2007/05/05(土) 12:21:08
>>955
AESに選ばれたRijndaelの話なんだけど、
あれよりも高速か高強度の暗号アルゴリズムはAES候補の中にあったわけだし
総合的な性能を求めないのであれば有用なんじゃないの?

ただ、クローズドなのは正直いただけない
964デフォルトの名無しさん:2007/05/05(土) 17:59:03
>重視しない && クローズドな状況において、標準的な技術である MD5 や SHA-x よりも強ければ、
>標準技術より独自に考えた変なハッシュのほうがむしろセキュリティ上有用ってことになってしまうのかな?
>正直、車輪の粗悪なる再発明ではないかと不安だ

クローズドな環境ってのはどういう意味でクローズドなの?

よっぽどのものじゃないと標準のが安全だと思うけど。
ていうか、末尾のビットいじるだけで規則性が見えるようなのじゃお話にならないんじゃ…

965デフォルトの名無しさん:2007/05/05(土) 22:35:22
いろいろありがとう。
例示のコードは適当に考えたもので、別にクローズドでなくても良かったし実際どこかで使おうって
わけじゃないんでアレだけど...

よく検証されたオープンな技術は優れている場合が多いけれど、もし無線 LAN の WEP みたいに
攻撃方法が見つかってしまったら兄弟全滅なんで、独自物について安全性を検証する方法があったら
知りたいなぁってのが元々の考えですわ。でも結局、「独自系暗号」の強さを自分で検証するのは
難しいからセキュアにしたいところではオープンな技術を使いなさい、という至極真っ当な結論が
得られた気がするよ。
966デフォルトの名無しさん:2007/05/05(土) 22:50:37
既知の2種以上のハッシュアルゴリズムでパイプライン処理しとけ。
967デフォルトの名無しさん:2007/05/16(水) 21:57:06
高速で実績のある共通鍵暗号ってどんなのがありますか?
ノートPCに入れて置いているデータの一部を暗号化したいです
968デフォルトの名無しさん:2007/05/16(水) 21:59:23
Camelliaだな
969967:2007/05/17(木) 00:12:25
>>968
レスありがとうございます
Camellia検討してみます
970デフォルトの名無しさん:2007/05/17(木) 07:02:18
CamelliaってなんかTDESみたいな構造してるな。
971・∀・)っ-○◎●:2007/05/18(金) 02:40:29
MISTYならわかるが、Camellia対応の暗号化ソフトって一般的に出回ってたっけ
972デフォルトの名無しさん:2007/05/18(金) 03:03:24
ないと思うしそもAESでいいんじゃないの?
973デフォルトの名無しさん:2007/05/18(金) 06:46:26
Linux 2.6.21にとりこまれたよ
974デフォルトの名無しさん:2007/05/19(土) 17:40:45
楕円曲線暗号のフリーソフトを開発したんですが、
公開すると問題になりそうですか?
975デフォルトの名無しさん:2007/05/19(土) 17:42:20
ソース公開なら引っかかることなくね?
976デフォルトの名無しさん:2007/05/19(土) 17:43:56
VJ++で作ったんですが・・・
977 ◆tAo.kQ2STk :2007/05/19(土) 19:42:04
寧ろ俺は、どんな言語で作ったにせよ、少なくとも
暗号化ソフトのエンジン部のソースコードは公開するべきだと思うが。
可能ならCかJavaか何かのある程度メジャーな言語に書き下す方がいいかと。
978デフォルトの名無しさん:2007/05/20(日) 18:47:03
>>977
ソースコードの公開よりも
数学的に安全性を証明することのほうが大切。

実装上の問題で穴ができちゃうこともあるから
ソースコードも公開されてるほうがよりいいとは思うけど。
979デフォルトの名無しさん:2007/05/21(月) 01:31:05
俺は数学的に証明するのとかはかったるいので、
共通鍵暗号と公開鍵暗号のどっちに属するかと、鍵空間の大きさを書く程度なんだが。

確か、メルセンヌツイスタとか何とか言う暗号には使えない乱数生成機の周期の長さは
作者が証明してたな。
980・∀・)っ-○◎●:2007/05/21(月) 06:36:17
暗号には使えないって言っても、乱数系列が特定される恐れがあるからで
安全といわれる乱数とのXORやハッシュ値をとったりすれば十分実用にたえうる。

ちなみにgenrand()で与える引数が32ビット整数1個じゃ、特定しやすいだろうなぁ。
MTの空間の大きさを活用するには初期化には19937ビット分は必要だ。
981デフォルトの名無しさん:2007/05/21(月) 10:46:23
つうかそもそも目的が違うわけで…

ところで一般的に暗号用乱数のシード初期化ってどういう仕組みになってんの?
たとえばハードウェアのノイズ使ってるとか?
982デフォルトの名無しさん:2007/05/21(月) 11:11:49
time
983デフォルトの名無しさん:2007/05/21(月) 11:54:18
タイミングであたりがついちまうだろうが
984デフォルトの名無しさん:2007/05/21(月) 23:59:48
白色雑音だっけか?

あと、資源の使用量の変化とかじゃなかったか?
CPUやらメモリやらスレッド数やら
985・∀・)っ-○◎●:2007/05/22(火) 00:14:55
HDDのアクセス時間の微妙な差異から自然乱数を作る方法を紹介してるサイトがあったな。

10回程度とって他の擬似乱数のseedに使えばちょうどいいとか。
(というのも、遅い)
986デフォルトの名無しさん:2007/05/22(火) 08:26:31
987デフォルトの名無しさん:2007/05/22(火) 20:27:58
>>985-986
そろそろSSDが流通しだしているが…
988デフォルトの名無しさん:2007/05/22(火) 21:36:05
そういえば TPM に乱数生成機能ってないん?
989デフォルトの名無しさん:2007/05/22(火) 21:36:48
って、ぐぐったらすぐに見つかった。やっぱあるんやね。
990デフォルトの名無しさん:2007/05/23(水) 20:12:14
そろそろ次スレを立てたほうがいいんじゃないか?
とりあえず関係ありそうなスレを挙げておく。

擬似乱数
http://pc11.2ch.net/test/read.cgi/tech/1146071975/
暗号数学について語ろう。ROUND 3
http://science6.2ch.net/test/read.cgi/math/1170938965/
素数判定は「決定的」多項式時間で可能
http://science6.2ch.net/test/read.cgi/math/1028813059/
【疑似】乱数をつくる【本物】
http://science6.2ch.net/test/read.cgi/denki/1074867250/
RSA暗号 解読 助けてください!!
http://pc11.2ch.net/test/read.cgi/sec/1026903337/
991デフォルトの名無しさん:2007/05/25(金) 13:47:28
992気まぐれアナスイ
363191 3932 433373