SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
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
ありがとうございました。
砂原 昌史

Weitere ähnliche Inhalte

Was ist angesagt?

Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
 

Was ist angesagt? (20)

分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
Quine・難解プログラミングについて
Quine・難解プログラミングについてQuine・難解プログラミングについて
Quine・難解プログラミングについて
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
最近のやられアプリを試してみた
最近のやられアプリを試してみた最近のやられアプリを試してみた
最近のやられアプリを試してみた
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
 
僕がつくった 70個のうちの48個のWebサービス達
僕がつくった 70個のうちの48個のWebサービス達僕がつくった 70個のうちの48個のWebサービス達
僕がつくった 70個のうちの48個のWebサービス達
 
initramfsについて
initramfsについてinitramfsについて
initramfsについて
 
Ruby での外部コマンドの実行について
Ruby での外部コマンドの実行についてRuby での外部コマンドの実行について
Ruby での外部コマンドの実行について
 
マーク&スイープ勉強会
マーク&スイープ勉強会マーク&スイープ勉強会
マーク&スイープ勉強会
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 
まじめに!できる!LT
まじめに!できる!LT まじめに!できる!LT
まじめに!できる!LT
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
 
手作業なしの安定環境実現に向けたZabbix活用方法紹介+Zabbix2.4最新機能紹介
手作業なしの安定環境実現に向けたZabbix活用方法紹介+Zabbix2.4最新機能紹介手作業なしの安定環境実現に向けたZabbix活用方法紹介+Zabbix2.4最新機能紹介
手作業なしの安定環境実現に向けたZabbix活用方法紹介+Zabbix2.4最新機能紹介
 
MySQLで論理削除と正しく付き合う方法
MySQLで論理削除と正しく付き合う方法MySQLで論理削除と正しく付き合う方法
MySQLで論理削除と正しく付き合う方法
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 

Ähnlich wie Javascript で暗号化

人生を豊かにするための暗号技術の話 - ネクストスケープ 2014/04/24 パワーランチ資料
人生を豊かにするための暗号技術の話 - ネクストスケープ 2014/04/24 パワーランチ資料人生を豊かにするための暗号技術の話 - ネクストスケープ 2014/04/24 パワーランチ資料
人生を豊かにするための暗号技術の話 - ネクストスケープ 2014/04/24 パワーランチ資料
matns
 
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
MITSUNARI Shigeo
 
平成21年度 秋期 cs 午前ⅱ
平成21年度 秋期 cs 午前ⅱ平成21年度 秋期 cs 午前ⅱ
平成21年度 秋期 cs 午前ⅱ
Yuki Hirano
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
 
あんしんなWebサーバーのためのSSL設定
あんしんなWebサーバーのためのSSL設定あんしんなWebサーバーのためのSSL設定
あんしんなWebサーバーのためのSSL設定
Takayuki Ino
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Naoya Ito
 

Ähnlich wie Javascript で暗号化 (20)

Sagittariusの紹介
Sagittariusの紹介Sagittariusの紹介
Sagittariusの紹介
 
バックドア耐性のあるパスワード暗号化の提案
バックドア耐性のあるパスワード暗号化の提案バックドア耐性のあるパスワード暗号化の提案
バックドア耐性のあるパスワード暗号化の提案
 
人生を豊かにするための暗号技術の話 - ネクストスケープ 2014/04/24 パワーランチ資料
人生を豊かにするための暗号技術の話 - ネクストスケープ 2014/04/24 パワーランチ資料人生を豊かにするための暗号技術の話 - ネクストスケープ 2014/04/24 パワーランチ資料
人生を豊かにするための暗号技術の話 - ネクストスケープ 2014/04/24 パワーランチ資料
 
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
 
図解で理解するvetKD
図解で理解するvetKD図解で理解するvetKD
図解で理解するvetKD
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
 
SparkやBigQueryなどを用いた モバイルゲーム分析環境
SparkやBigQueryなどを用いたモバイルゲーム分析環境SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いた モバイルゲーム分析環境
 
平成21年度 秋期 cs 午前ⅱ
平成21年度 秋期 cs 午前ⅱ平成21年度 秋期 cs 午前ⅱ
平成21年度 秋期 cs 午前ⅱ
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
 
JNSA電子署名WG勉強会 2013.09.30 jsrsasignとjsjwsについて
JNSA電子署名WG勉強会 2013.09.30 jsrsasignとjsjwsについてJNSA電子署名WG勉強会 2013.09.30 jsrsasignとjsjwsについて
JNSA電子署名WG勉強会 2013.09.30 jsrsasignとjsjwsについて
 
CRYPT+YOU, UNDERSTAND TODAY!
CRYPT+YOU, UNDERSTAND TODAY!CRYPT+YOU, UNDERSTAND TODAY!
CRYPT+YOU, UNDERSTAND TODAY!
 
MSOfficeファイル暗号化のマスター鍵を利用したバックドアとその対策 by 光成滋生&竹迫良範
MSOfficeファイル暗号化のマスター鍵を利用したバックドアとその対策 by 光成滋生&竹迫良範MSOfficeファイル暗号化のマスター鍵を利用したバックドアとその対策 by 光成滋生&竹迫良範
MSOfficeファイル暗号化のマスター鍵を利用したバックドアとその対策 by 光成滋生&竹迫良範
 
公開鍵、秘密鍵ってなに?
公開鍵、秘密鍵ってなに?公開鍵、秘密鍵ってなに?
公開鍵、秘密鍵ってなに?
 
あんしんなWebサーバーのためのSSL設定
あんしんなWebサーバーのためのSSL設定あんしんなWebサーバーのためのSSL設定
あんしんなWebサーバーのためのSSL設定
 
(A7)cross site scripting
(A7)cross site scripting(A7)cross site scripting
(A7)cross site scripting
 
TDEで透過的暗号化
TDEで透過的暗号化TDEで透過的暗号化
TDEで透過的暗号化
 
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
 Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
 

Mehr von suno88

8bit 時代のプログラミング事情を訪ねて
8bit 時代のプログラミング事情を訪ねて8bit 時代のプログラミング事情を訪ねて
8bit 時代のプログラミング事情を訪ねて
suno88
 
ITでみんなを幸せに、ITで自分も幸せに
ITでみんなを幸せに、ITで自分も幸せにITでみんなを幸せに、ITで自分も幸せに
ITでみんなを幸せに、ITで自分も幸せに
suno88
 

Mehr von suno88 (16)

もうひとつのアンチパターン OTLT、あるいは如何にして私はオレオレフレームワークを忌み嫌うようになったか
もうひとつのアンチパターン OTLT、あるいは如何にして私はオレオレフレームワークを忌み嫌うようになったかもうひとつのアンチパターン OTLT、あるいは如何にして私はオレオレフレームワークを忌み嫌うようになったか
もうひとつのアンチパターン OTLT、あるいは如何にして私はオレオレフレームワークを忌み嫌うようになったか
 
NSEG のこれまでとこれから
NSEG のこれまでとこれからNSEG のこれまでとこれから
NSEG のこれまでとこれから
 
AWS で社内オンライン勉強会
AWS で社内オンライン勉強会AWS で社内オンライン勉強会
AWS で社内オンライン勉強会
 
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
 
HTML と CSS の社内勉強会を主催した話
HTML と CSS の社内勉強会を主催した話HTML と CSS の社内勉強会を主催した話
HTML と CSS の社内勉強会を主催した話
 
初心者向け SQLite の始め方
初心者向け SQLite の始め方初心者向け SQLite の始め方
初心者向け SQLite の始め方
 
NSEG 勉強会 二周年に寄せて
NSEG 勉強会 二周年に寄せてNSEG 勉強会 二周年に寄せて
NSEG 勉強会 二周年に寄せて
 
続・ねえ、お父さんのお仕事ってなぁに?
続・ねえ、お父さんのお仕事ってなぁに?続・ねえ、お父さんのお仕事ってなぁに?
続・ねえ、お父さんのお仕事ってなぁに?
 
ねえ、お父さんのお仕事ってなぁに?
ねえ、お父さんのお仕事ってなぁに?ねえ、お父さんのお仕事ってなぁに?
ねえ、お父さんのお仕事ってなぁに?
 
Windows azure
Windows azureWindows azure
Windows azure
 
Cloud
CloudCloud
Cloud
 
「交通勉強会 ~Trafficonf ~」発足に寄せて
「交通勉強会 ~Trafficonf ~」発足に寄せて「交通勉強会 ~Trafficonf ~」発足に寄せて
「交通勉強会 ~Trafficonf ~」発足に寄せて
 
ソフトウェアエンジニアに必要な法律・契約のお話
ソフトウェアエンジニアに必要な法律・契約のお話ソフトウェアエンジニアに必要な法律・契約のお話
ソフトウェアエンジニアに必要な法律・契約のお話
 
8bit 時代のプログラミング事情を訪ねて
8bit 時代のプログラミング事情を訪ねて8bit 時代のプログラミング事情を訪ねて
8bit 時代のプログラミング事情を訪ねて
 
山椒は小粒でぴりりと辛い
山椒は小粒でぴりりと辛い山椒は小粒でぴりりと辛い
山椒は小粒でぴりりと辛い
 
ITでみんなを幸せに、ITで自分も幸せに
ITでみんなを幸せに、ITで自分も幸せにITでみんなを幸せに、ITで自分も幸せに
ITでみんなを幸せに、ITで自分も幸せに
 

Kürzlich hochgeladen

Kürzlich hochgeladen (10)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

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