Submit Search
Javascript で暗号化
•
47 likes
•
26,136 views
S
suno88
Follow
NSEG 第 40 回勉強会で、mebius こと砂原昌史さんが発表でお使いになったスライドを代理でアップロードしました。
Read less
Read more
1 of 22
Download now
Downloaded 64 times
More Related Content
Javascript で暗号化
1.
JavascriptJavascript で暗号化で暗号化 無料で可能な限りセキュリティを高める。 2013/06/08
2.
自己紹介自己紹介 情強そば屋の中の人こと砂原 昌史 そば屋五兵衛の店主 砂原
謙一(父) 現在⼆級在宅⼠とプログラミングの⽇々 ◦ そろそろ本気出したい ◦ 最近は C#(WPF) いじってます 言語 ◦ メイン:html, css, javascript, PHP, C#◦ メイン:html, css, javascript, PHP, C# ◦ サブ:perl, powershell ◦ たしなむ程度:ruby, python ◦ 忘れつつある:vbs ◦ ほぼ忘れた:C 松本経済新聞の記事は一部誤りが。 ◦ 過去にプログラマーはしたことありません。 Icons by http://dryicons.com
3.
目次目次 五兵衛 web サイトの履歴 通販システムの問題点 暗号技術に触れる SSL/TLS 呼べば答えるインターネット呼べば答えるインターネット 暗号 暗号鍵作成
– OpenSSL 復号 Pros, Cons まとめ Icons by http://dryicons.com
4.
五兵衛五兵衛 webweb サイトの履歴サイトの履歴 www.sobaya-gohei.com 90
年代後半 ホームページ開設。 ◦ 当初は父が作成&管理 ◦ Web サイトはプロバイダーのホームページスペースに設置 200x プロバイダ乗り換えで CGI (perl) 使用可能に。 ◦ 通販ページ作成◦ 通販ページ作成 ◦ メール投稿スクリプトを拾ってきてカスタマイズ 2003 クロネコ@ペイメント対応 200x ドメイン取得 (さくらインターネット : ライトプ ラン[最安]) 2010 サイトリニューアル 2013 クロネコ web コレクト対応
5.
通販システムの問題点通販システムの問題点 お客様の情報が平分のままネットワークに流れる もちろん SSL 使えない。 さくらインターネットの共用
SSL はスタンダードプラ ン以上 (ドメイン名と違うのでどのみち使えない) 少なくとも通販システムの管理をしているからには情 報漏洩があった場合の責任問題に!報漏洩があった場合の責任問題に! 何か対策をしたい。 高まる暗号化への思い(個人的に) Icons by http://dryicons.com
6.
暗号技術に触れる暗号技術に触れる 2006 就職。LAN ドライバの評価に携わる。 ◦
-無線 LAN との出会い- 評価の仕事だったので詳しいことは知る必要はないが…… ◦ やはり技術的なことは気になる ◦ 認証、暗号化、証明書などを調べる 無線 LAN にも SSL/TLS と同じ仕組みが! これをなんとかして通販システムに組み込む術はないか?とこれをなんとかして通販システムに組み込む術はないか?と 考え始める でも普通 WEB サイトの暗号化といえば HTTPS, SSL/TLS だよね! •ちなみに無線 LAN の認証方式にも TLS が登場します。 •EAP-TLS, PEAP-TLS, PEAP-GTC(内部認証としての TLS) Icons by http://dryicons.com
7.
SSL/TLSSSL/TLS + VPS とか…… サービスサービスサービスサービス会社会社会社会社
商品名商品名商品名商品名 価格価格価格価格 VeriSign セキュアサーバーID 85050 円/Year GlobalSign クイック認証 SSL 36540 円/Year GeoTrust クイック SSL プレミアム 36540 円/Year + VPS とか…… ◦ さくらのVPS 1G 980/Month, 10780/Year 格安証明書もありますが…… 地方の零細企業にとってはちょいと敷居が高い。 •貧乏人は頭を使え! javascript で暗号化すればよくね? •CGI で疑似 SSL/TLS という手もあるが、オレオレ証明書に代わりは ないので javascript で出来るならそれだけで済ませたい。 Icons by http://dryicons.com
8.
呼べば答えるインターネット呼べば答えるインターネット ⾞輪の再発明は避ける 世界には同じようなことを考えた人がいるはず! いろいろ検索していて、AES として sjcl
に、公開鍵暗 号(RSA) として Tom Wu 氏のライブラリにたどり着 く。 SJCL : Stanford Javascript Crypto LibrarySJCL : Stanford Javascript Crypto Library 公開鍵暗号の js 実装は他にもいろいろあるみたいです。 javascript での AES は sjcl がスタンダードっぽい。 Icons by http://dryicons.com
9.
暗号暗号暗号暗号暗号暗号暗号暗号
10.
暗号について暗号について 共通鍵暗号 ◦ 2000年以上の歴史を持つ基本的な暗号化方式。 ◦ データを鍵で暗号化。復号化するときも同じ鍵を使う。 ◦
DES, AES, RC4 など ◦ 現在 AES が一般的 ◦ Camellia なんてのもある (OpenSSL.org とか) 公開鍵暗号公開鍵暗号 ◦ 公開鍵で暗号化したものは秘密鍵でのみ復号でき、秘密鍵で暗号化 したものは公開鍵でのみ復号できる。 ◦ わりと最近発⾒された新たな暗号化方式。RSA など ◦ 素因数分解の難解さと関連する暗号化方式。 ◦ 公開鍵 n = p*q (p, q は素数) ◦ p, q は秘密鍵⽣成にも利用されるが、巨⼤な n からは p と q を 導きだすのは困難。(参考:wikipedia RSA暗号) これを両方使います。 Icons by http://dryicons.com
11.
なぜ2種類使うのか?なぜ2種類使うのか? 共通鍵暗号 (AES) ◦ 暗号化は簡単だ。だがパスフレーズをどうやって受け取る? 公開鍵暗号
(RSA) ◦ 暗号化できるデータの⻑さが鍵⻑によって決まってしまう! どうするか? 両方使え! データは AES で暗号化 パスフレーズは短いので RSA で暗号化 これを両方送る。 Icons by http://dryicons.com
12.
暗号鍵作成暗号鍵作成 -- OpenSSLOpenSSL Tom
Wu 氏のライブラリで使う RSA のキーペアは事 前に OpenSSL にて作成します。 鍵作成コマンド : test.key という名前で鍵⻑が 2048bit の場合 ◦ openssl genrsa -out test.key 2048 鍵情報表示 (公開鍵、秘密鍵含めてすべて) ◦ openssl rsa -in test.key –text◦ openssl rsa -in test.key –text ◦ 実際に使用する際は : とかスペースなどを取って使います。 Modulus (公開鍵) 表示 ◦ openssl rsa -in test.key -noout –modulus ◦ これで出⼒される 16 進数⽂字列をそのまま使います。 Icons by http://dryicons.com
13.
暗号化手順暗号化手順 1. パスフレーズ作成 (for
AES) 2. データの暗号化 - AES 3. パスフレーズの暗号化 - RSA お客様端末での処理 Icons by http://dryicons.com
14.
パスフレーズ作成パスフレーズ作成 自動⽣成。 英数字といくつかの記号から導出。 ◦ 通販ページではお客様のメールアドレスも利用 乱数 ◦ 古いブラウザでは
Math.random() ◦ 新しいブラウザでは window.crypto.getRandomValues() 新しいブラウザでは window.crypto.getRandomValues() ◦ Firefox21 で対応になったので取り入れてみました。 Chrome, Safari では結構前から対応していたようです。 このパスフレーズは実際の暗号に使う鍵の元になる。 Icons by http://dryicons.com
15.
データの暗号データの暗号 AESAES var encData
= sjcl.encrypt(passWord, rawData, PARAM); ◦ passWord, rawData : ⽂字列 ◦ PARAM : オブジェクト。オプションです。 ◦ 例) {adata:"", iter:1000, mode:"ccm", ts:128, ks:256}; ◦ Adata : データ確認用の⽂字列。ccm モードの機能。空⽂字でも OK ◦ Iter : PBKDF2 で使用。通常は 1000 で十分な模様 ◦ mode AES にはいろんな暗号モードがありますが、sjcl がサポートするのは ccm と ocb2 CCM : [CounterMode with CBC-MAC] RFC3610 ccm と ocb2 CCM : [CounterMode with CBC-MAC] RFC3610 MAC : Message Authentication Code カウンターモードと CBC-MAC を組み合わせた方式 メッセージを分割し、CBC-MAC で MAC 作成。MAC 処理で⽣成されたタグ+メッ セージをカウンターモードで暗号化。 http://www.cryptrec.go.jp/estimation/rep_ID0205.pdf 35Pより OCB2 : ccm より高速だが特許絡みで避けられることが多いようだ。 ◦ Ts : (authentication) tag size 64(bit) で十分らしいが、128(bit) にしてい ます。MAC のサイズ。 ◦ Ks : Kye Size AES キーのサイズ。 Icons by http://dryicons.com
16.
データの暗号データの暗号 RSARSA var rsa
= new RSAKey();//1 rsa.setPublic(PUB_KEY, EXP);//2 var encPW = rsa.encrypt(passWord);//3 ◦ 1.RSAKey のインスタンス作成。 ◦ 2.公開鍵とエクスポーネントの設定。両方⽂字列 exponent 暗号指数 "10001" が一般的。0x010001。 ◦ 3.encrypt メソッドに暗号化したい⽂字列を入れると 16◦ 3.encrypt メソッドに暗号化したい⽂字列を入れると 16 進数形式の⽂字列が出てきます。 Icons by http://dryicons.com
17.
復号復号 RSA 鍵情報のすべてを使います。 var rsa
= new RSAKey(); rsa.setPrivateEx(n,e,d,p,q,dmp1,dmq1,coeff); var result = rsa.decrypt(encData); ◦ n:pubKey(modulus) ◦ e:exponent(publicExponent) ◦ d:privateKey(privateExponent) e:exponent(publicExponent) ◦ d:privateKey(privateExponent) ◦ p, q:prime1, 2 ◦ dmp1, dmp2:exponent1, 2 ◦ coeff:coefficient var original = sjcl.decrypt(result, encData); Icons by http://dryicons.com
18.
PROS, CONSPROS, CONS メリット、デメリットを
SSL/TLS, js 暗号, 無対策で 比較
19.
SSL/TLS Js 暗号化 1.
有料 2. 証明書の偽造、詐称などを検出するための 認証機能を持つ。(プロトコルの脆弱性に注 意) 3. 暗号化の保証は web サーバーまで。その後 は…… 4. ブラウザの javascript 設定に無関係。ただ しプロトコルはブラウザや OS の設定など に強く影響を受ける。 ◦ Firefox TLS 1.0 ◦ Chrome TLS 1.1 ◦ Opera TLS 1.2 1. 無料 2. MITM 攻撃の可能性 ◦ 店頭でオレオレ証明書を配布する方法もあるが、 非現実的すぎる。 3. メールでデータを受け取るまで暗号化。 4. javascript が有効になっていないと使えな いが、ブラウザに関係なく AES とか使える。 5. js ライブラリの検証等がなされていない。 たとえ検証されていても、スクリプトダウ ンロード中での MITM 攻撃やサーバーク ラックに弱い ◦ 復号失敗が発⽣した場合、原因が不明瞭 SSL/TLSSSL/TLS とととととととと jsjs 暗号化暗号化暗号化暗号化のののの比較比較比較比較暗号化暗号化暗号化暗号化のののの比較比較比較比較 ◦ Opera TLS 1.2 ◦ IE は OS に依存。Windows7 以降なら TLS 1.2 使用可能。※ ◦ iOS 5 TLS 1.2 ◦ android TLS 1.0? 5. 信頼性 : OpenSSL, NSS など FIPS 140 validated ◦ 復号失敗が発⽣した場合、原因が不明瞭 スクリプトのバグ? MITM 攻撃された? サーバーがクラックされた? どこかでデータの改ざんがあった? ◦ W3C で Web Cryptography API が策定中なの で、これが勧告されて実装されれば改善される ※ mmc のグループポリシーオブジェクトエディタにて[コンピュータの構成¥Windows の設定¥セキュリティの設定¥ローカルポリシー¥セ キュリティオプション]にある[システム暗号化: 暗号化、ハッシュ、署名のための FIPS 140 準拠暗号化アルゴリズムを使う] を有効にする必 要がある。ただしこれを⾏うと RC4 が使用不可になる模様 Icons by http://dryicons.com
20.
Js 暗号化 無対策 1.
無料 2. MITM 攻撃の可能性 ◦ 店頭でオレオレ証明書を配布する方法もあるが、 非現実的すぎる。 3. メールでデータを受け取るまで暗号化。 4. javascript が有効になっていないと使えな いが、ブラウザに関係なく AES とか使える。 5. js ライブラリの検証等がなされていない。 たとえ検証されていても、スクリプトダウ ンロード中での MITM 攻撃やサーバーク ラックに弱い ◦ 復号失敗が発⽣した場合、原因が不明瞭 1. 無料 2. MITM ほかあらゆる攻撃に無防備 3. 暗号化無し。サーバー、ネットワーク 経路双方に死角あり。 4. どの端末でもフォームは送信可能。 5. -- JsJs 暗号化暗号化暗号化暗号化とととと無対策無対策無対策無対策のののの比較比較比較比較暗号化暗号化暗号化暗号化とととと無対策無対策無対策無対策のののの比較比較比較比較 ◦ 復号失敗が発⽣した場合、原因が不明瞭 スクリプトのバグ? MITM 攻撃された? サーバーがクラックされた? どこかでデータの改ざんがあった? ◦ W3C で Web Cryptography API が策定中なの で、これが勧告されて実装されれば改善される Icons by http://dryicons.com
21.
まとめまとめ SSL/TLS の方がセキュリティは高いですが、脆弱性も⾒つ かっているので注意。 ◦ パッチやアップデートの適用を。 Js
暗号化に穴がいくつかありますが、やらないよりはまし ◦ ぬののふく <<< くさりかたびら ライブラリの中身を確認した上で通常の SSL/TLS と組み合 わせてさらに上のセキュリティを目指すのもありかと。わせてさらに上のセキュリティを目指すのもありかと。 ◦ Web Cryptography API にも期待 !注意点! 両ライブラリとも BSD ライセンスであり、「無保証」です。 テストは重要。 ◦ 五兵衛では少なくとも 50 件 (通販) 以上の復号で失敗は無し。 2013/05 Icons by http://dryicons.com
22.
ありがとうございました。 砂原 昌史
Download