SlideShare a Scribd company logo
JavascriptJavascript で暗号化で暗号化
無料で可能な限りセキュリティを高める。
2013/06/08
自己紹介自己紹介
情強そば屋の中の人こと砂原 昌史
そば屋五兵衛の店主 砂原 謙一(父)
現在⼆級在宅⼠とプログラミングの⽇々
◦ そろそろ本気出したい
◦ 最近は C#(WPF) いじってます
言語
◦ メイン:html, css, javascript, PHP, C#◦ メイン:html, css, javascript, PHP, C#
◦ サブ:perl, powershell
◦ たしなむ程度:ruby, python
◦ 忘れつつある:vbs
◦ ほぼ忘れた:C
松本経済新聞の記事は一部誤りが。
◦ 過去にプログラマーはしたことありません。
Icons by http://dryicons.com
目次目次
五兵衛 web サイトの履歴
通販システムの問題点
暗号技術に触れる
SSL/TLS
呼べば答えるインターネット呼べば答えるインターネット
暗号
暗号鍵作成 – OpenSSL
復号
Pros, Cons
まとめ
Icons by http://dryicons.com
五兵衛五兵衛 webweb サイトの履歴サイトの履歴
www.sobaya-gohei.com
90 年代後半 ホームページ開設。
◦ 当初は父が作成&管理
◦ Web サイトはプロバイダーのホームページスペースに設置
200x プロバイダ乗り換えで CGI (perl) 使用可能に。
◦ 通販ページ作成◦ 通販ページ作成
◦ メール投稿スクリプトを拾ってきてカスタマイズ
2003 クロネコ@ペイメント対応
200x ドメイン取得 (さくらインターネット : ライトプ
ラン[最安])
2010 サイトリニューアル
2013 クロネコ web コレクト対応
通販システムの問題点通販システムの問題点
お客様の情報が平分のままネットワークに流れる
もちろん SSL 使えない。
さくらインターネットの共用 SSL はスタンダードプラ
ン以上 (ドメイン名と違うのでどのみち使えない)
少なくとも通販システムの管理をしているからには情
報漏洩があった場合の責任問題に!報漏洩があった場合の責任問題に!
何か対策をしたい。
高まる暗号化への思い(個人的に)
Icons by http://dryicons.com
暗号技術に触れる暗号技術に触れる
2006 就職。LAN ドライバの評価に携わる。
◦ -無線 LAN との出会い-
評価の仕事だったので詳しいことは知る必要はないが……
◦ やはり技術的なことは気になる
◦ 認証、暗号化、証明書などを調べる
無線 LAN にも SSL/TLS と同じ仕組みが!
これをなんとかして通販システムに組み込む術はないか?とこれをなんとかして通販システムに組み込む術はないか?と
考え始める
でも普通 WEB サイトの暗号化といえば HTTPS, SSL/TLS
だよね!
•ちなみに無線 LAN の認証方式にも TLS が登場します。
•EAP-TLS, PEAP-TLS, PEAP-GTC(内部認証としての TLS)
Icons by http://dryicons.com
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
呼べば答えるインターネット呼べば答えるインターネット
⾞輪の再発明は避ける
世界には同じようなことを考えた人がいるはず!
いろいろ検索していて、AES として sjcl に、公開鍵暗
号(RSA) として Tom Wu 氏のライブラリにたどり着
く。
SJCL : Stanford Javascript Crypto LibrarySJCL : Stanford Javascript Crypto Library
公開鍵暗号の js 実装は他にもいろいろあるみたいです。
javascript での AES は sjcl がスタンダードっぽい。
Icons by http://dryicons.com
暗号暗号暗号暗号暗号暗号暗号暗号
暗号について暗号について
共通鍵暗号
◦ 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
なぜ2種類使うのか?なぜ2種類使うのか?
共通鍵暗号 (AES)
◦ 暗号化は簡単だ。だがパスフレーズをどうやって受け取る?
公開鍵暗号 (RSA)
◦ 暗号化できるデータの⻑さが鍵⻑によって決まってしまう!
どうするか?
両方使え!
データは AES で暗号化
パスフレーズは短いので RSA で暗号化 これを両方送る。
Icons by http://dryicons.com
暗号鍵作成暗号鍵作成 -- 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
暗号化手順暗号化手順
1. パスフレーズ作成 (for AES)
2. データの暗号化 - AES
3. パスフレーズの暗号化 - RSA
お客様端末での処理
Icons by http://dryicons.com
パスフレーズ作成パスフレーズ作成
自動⽣成。
英数字といくつかの記号から導出。
◦ 通販ページではお客様のメールアドレスも利用
乱数
◦ 古いブラウザでは Math.random()
◦ 新しいブラウザでは
window.crypto.getRandomValues()
新しいブラウザでは
window.crypto.getRandomValues()
◦ Firefox21 で対応になったので取り入れてみました。
Chrome, Safari では結構前から対応していたようです。
このパスフレーズは実際の暗号に使う鍵の元になる。
Icons by http://dryicons.com
データの暗号データの暗号 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
データの暗号データの暗号 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
復号復号
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
PROS, CONSPROS, CONS
メリット、デメリットを SSL/TLS, js 暗号, 無対策で
比較
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
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
まとめまとめ
SSL/TLS の方がセキュリティは高いですが、脆弱性も⾒つ
かっているので注意。
◦ パッチやアップデートの適用を。
Js 暗号化に穴がいくつかありますが、やらないよりはまし
◦ ぬののふく <<< くさりかたびら
ライブラリの中身を確認した上で通常の SSL/TLS と組み合
わせてさらに上のセキュリティを目指すのもありかと。わせてさらに上のセキュリティを目指すのもありかと。
◦ Web Cryptography API にも期待
!注意点!
両ライブラリとも BSD ライセンスであり、「無保証」です。
テストは重要。
◦ 五兵衛では少なくとも 50 件 (通販) 以上の復号で失敗は無し。
2013/05
Icons by http://dryicons.com
ありがとうございました。
砂原 昌史

More Related Content

Javascript で暗号化

  • 2. 自己紹介自己紹介 情強そば屋の中の人こと砂原 昌史 そば屋五兵衛の店主 砂原 謙一(父) 現在⼆級在宅⼠とプログラミングの⽇々 ◦ そろそろ本気出したい ◦ 最近は C#(WPF) いじってます 言語 ◦ メイン:html, css, javascript, PHP, C#◦ メイン:html, css, javascript, PHP, C# ◦ サブ:perl, powershell ◦ たしなむ程度:ruby, python ◦ 忘れつつある:vbs ◦ ほぼ忘れた:C 松本経済新聞の記事は一部誤りが。 ◦ 過去にプログラマーはしたことありません。 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
  • 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