Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事に対してトラックバックを送信する(FC2ブログユーザー)
http://kovayashi.blog120.fc2.com/tb.php/89-2b58f2e7

-件のトラックバック

-件のコメント

コメントの投稿

投稿フォーム
投稿した内容は管理者にだけ閲覧出来ます

下りの暗号化

上りの暗号化は「ajax+rubyでRSA」で実現したが、
下りの暗号化もそれに習って"簡単実現"とはいかない様だ。(もちろんhttpsは使わないでの話である。)

単純に上りの逆シーケンスで実装するなら、ブラウザ側で公開キーを作る必要がある。

ブラウザで公開キーを作るjavascriptはググると数多くみつかったるが・・・

http://www.hanewin.net/encrypt/rsa/rsa-test.htm
http://assl.sullof.com/assl/asp_example/RSAKeyGenerator.asp
http://www-cs-students.stanford.edu/~tjw/jsbn/rsa2.html
http://ats.oka.nu/titaniumcore/js/crypto/RSA.sample1.html

何れも処理が遅くCPUリソースの消費も大きい。ちょっと実用的ではなさそう。

(openssl genrsaコマンドで作成する時は、瞬時に出来るのにね。
あらためて不思議に思うが、httpsって下りパケットの暗号化って、どういうカラクリなのかな。)

そこで代替案を検討する。

サーバーからブラウザへのデータ転送はRC5で暗号化とし、共通鍵はクライアントで生成する。
共通鍵はランダムな文字列でよろしいから生成のコストは低い。
共通鍵は、RSAで暗号化して、HTTPリクエストのcookieヘッダに付けて送る。

zu1.gif

シーケンスの最後のパケットを盗み取って、RC5で暗号化されたデータをパスワード力任せに検索されたら、オシマイな仕様である。ここでひとつ気になったので脱線する。

『力任せのパスワード検索』ってどのくらいコストがかかるの?

そこで、以下スクリプトを書き、最近購入したiMac(3.06GHzCore 2 Duo)で実行してみる。


#!/usr/bin/ruby
P=2 #処理多重度
F=4 #パスワードの桁数
A=('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a
#a?z,A?Z,0?9の組み合わせで62文字で62^4=14776336通り

def randomStr(size)
Array.new(size){
A[rand(A.size)]
}.join
end

#ans=randomStr(F)
ans='9999'
puts ans

max=A.length**F

puts Time.now

rp,wp=IO.pipe

(0...P).each do|i|
fork do
rp.close
puts '----- ' + i.to_s + ' ----'
s = max/P*i
e = (max/P*(i+1))-1
puts 'start ' + s.to_s
puts 'end ' + e.to_s

(s..e).each do|i|
array=[]
while true
q,r=i.divmod(max)
i=q
array.push A[r]
break if q==0
end

str=array.reverse.to_s
if ans == str then
wp.puts str
wp.close
break
end
end
end
end

wp.close
line = rp.read
rp.close
puts line
puts Time.now


実行結果は以下であった。

4桁(14,776,336通り) 約21秒
8桁(218,340,105,584,896通り) 一晩経っても終了しないので、やめた。

あと、iMacに最初からRubyもApacheも入ってた。

つづく。

後日記

この記事に対してトラックバックを送信する(FC2ブログユーザー)
http://kovayashi.blog120.fc2.com/tb.php/89-2b58f2e7

0件のトラックバック

0件のコメント

コメントの投稿

投稿フォーム
投稿した内容は管理者にだけ閲覧出来ます

Appendix

プロフィール

kovayashi

Author:kovayashi
・嫌いなもの
 →好きなもの

・インストール
 →バンドル
・バックアップ
 →アップロード
・努力
 →チート

最近のトラックバック

ブログ内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。