MS Officeファイル暗号化のマスター鍵を利用したバックドアとその対策

MITSUNARI Shigeo
MITSUNARI ShigeoSoftware Engineer at Cybozu Labs, Inc
MS Officeファイル暗号化のマスター鍵
を利用したバックドアとその対策
2015/10/28, 29 CODE BLUE
Mitsunari shigeo(@herumi)
• Excelのバグによるパスワードを回避した解読
• 2015/10/13のWindows Updateで改修済み(MS15-110)
• パスワード暗号化フォーマットの強度比較
• バグをみつけたきっかけ
• バックドア対策の信頼できるフォーマットの提案
概略
2/54
• サイボウズ・ラボで
クラウドセキュリティ関連のR&D
• 『クラウドを支えるこれからの暗号技術』(2015)
• 内容 : 前方秘匿性, 楕円曲線暗号,
IDベース暗号, 属性ベース暗号, 関数型暗号,
準同型暗号, ゼロ知識証明など
• http://herumi.github.io/ango/
• @ITで「クラウド時代の暗号化技術論」連載
• ペアリング暗号の世界最速実装(2013)
• https://github.com/herumi/ate-pairing
• Software implementation of an Attribute-Based
Encryption Scheme, IEEE trans on computers, 2014
Mitsunari Shigeo(@herumi)
3/54
• リクルートマーケティングパートナーズ技術フェロー
• 高知工業高等専門学校 客員准教授
• CODE BLUE review board
• OWASP Japan advisory board
• SECCON 実行委員長
• Shibuya Perl Mongers リーダー
• Microsoft MVP Developer Security in 2008
• 山内奨励賞「x86 JITコンパイラ上で任意のコードを実行する方法」
• 完全日本語訳+解説「ECMA-262 Edition 5.1を読む」(2013)
• コンピュータセキュリティシンポジウム2013 CSS×2.0一等星
Takesako Yoshinori (@takesako)
4/54
• パスワード暗号化フォーマットの強度比較
• デモ
• 問題となる状況
• MS Officeファイルフォーマット
• バグを見つけたきっかけ
• バックドア対策の信頼できるフォーマットの提案
目次
5/54
• パスワード暗号化フォーマットの強度比較
• パスワード暗号化の方法紹介
• 解読ツールの紹介
• 解読にかかる時間の比較
• MS Officeファイルフォーマットはとても強い
• デモ
• 問題となる状況
• MS Officeファイルフォーマット
• バグを見つけたきっかけ
• バックドア対策の信頼できるフォーマットの提案
目次
6/54
• 一番単純なもの
• 入力 : 𝑝𝑎𝑠𝑠 : パスワード, 𝑚 : 平文
1. 𝑆 𝐾 = 𝐻𝑎𝑠ℎ 𝑝𝑎𝑠𝑠
2. 𝑐 = 𝐸𝑛𝑐 𝑆 𝐾, 𝑚
3. 出力 : 𝑐
• 問題点
• パスワードが同じなら𝑆 𝐾はいつも同じ
パスワード暗号化
𝑚
𝑝𝑎𝑠𝑠
𝑆 𝐾
𝐻𝑎𝑠ℎ
𝐸𝑛𝑐
𝑚𝑝𝑎𝑠𝑠にのみ依存
7/54
• パスワード探索ツール
• http://hashcat.net/oclhashcat/
• GPGPUベースで非常に高速
hashcat
8/54
• 1秒あたりの試行回数
• SHA1 : 4.2 × 1010回/秒 on 8x NVidia Titan X
• SHA512 : 5.2 × 109回/秒
• 𝐻𝑎𝑠ℎ値から元のパスワードを特定するのにかかる時間
• 𝑝𝑎𝑠𝑠 ∶ 一つの文字を[a-zA-Z0-9]の62文字で8文字とする
• SHA1なら628
4.2 × 1010
= 1時間27分で総当たり可能
hashcatの性能
9/54
• saltを追加する
1. 𝑠𝑎𝑙𝑡をランダムに生成する
2. 𝑆 𝐾 = 𝐻𝑎𝑠ℎ 𝑠𝑎𝑙𝑡, 𝑝𝑎𝑠𝑠
3. 𝑖𝑣 : 初期化ベクトル
4. c = 𝐸𝑛𝑐(𝑖𝑣, 𝑆 𝐾, 𝑚)
• 同じパスワードでも𝑆 𝐾は異なる
• 𝐻𝑎𝑠ℎ 𝑠𝑎𝑙𝑡1 + ′abc′ ≠ 𝐻𝑎𝑠ℎ(𝑠𝑎𝑙𝑡2 + ′abc′)
• レインボーテーブル攻撃に対して耐性が増える
より安全なフォーマット
𝑝𝑎𝑠𝑠
𝐻𝑎𝑠ℎ
𝑠𝑎𝑙𝑡
𝑆 𝐾 𝑚
𝐸𝑛𝑐
𝑚
𝑖𝑣
10/54
• ハッシュをたくさん繰り返す
• 𝑑1 = 𝐻𝑀𝐴𝐶(𝑝𝑎𝑠𝑠, 𝑠𝑎𝑙𝑡)
• 𝑛 is iteration count
• for 𝑖 = 1 to 𝑛 − 1:
• 𝑑𝑖+1 = 𝐻𝑀𝐴𝐶(𝑑𝑖, 𝑠𝑎𝑙𝑡)
• 攻撃能力が1/𝑛になる
• PKCS#5(RFC 2898)
• パスワードベースの暗号仕様
• PBKDF2(password based key
derivation functions)
• ZIPなどで使われている
鍵ストレッチング
𝑝𝑎𝑠𝑠
𝐻𝑀𝐴𝐶
𝑑𝑖
𝑆 𝐾 = 𝑑1 ⊕ 𝑑2 ⊕ ⋯
𝑛
𝑠𝑎𝑙𝑡
𝑝𝑎𝑠𝑠
𝐻𝑀𝐴𝐶
𝑑𝑖+1
11/54
• 別のGPUベースのパスワード探索ツール
• http://passcovery.com/
Passcovery
12/54
• Passcoveryによる8バイトパスワードの全数探索
• on GeForce GTX860M(640SP/ALU)@1019MHz
• Office 2013 docxは強い
• 最近の動向はメモリを酷使するタイプのフォーマット
• Argon2が2015/7/20にパスワードハッシュコンペで優勝
攻撃にかかる時間の比較
File format # of tries/sec hash stretching days
ZIP(96-bit) 230000000 none 10 days
Office2003 doc 11000000 ? 220 days
ZIP(256-bit AES) 370000 1000 x HMAC SHA1 18 years
Office2007 docx 16000 50000 x SHA1 430 years
Office2010 docx 8100 100000 x SHA1 854 years
Office2013 docx 337 100000 x SHA512 20000 years
13/54
• パスワード暗号化フォーマットの強度比較
• デモ
• MS Office暗号化ファイルの概要
• 暗号鍵生成
• 自作ツールの紹介
• デモ
• 問題となる状況
• MS Officeファイルフォーマット
• バグを見つけたきっかけ
• バックドア対策の信頼できるフォーマットの提案
目次
14/54
• [MS-OFFCRYPTO]
• Officeドキュメントの暗号化の構造
• [MS-CFB]
• Compound File Binaryファイルフォーマット
MS Officeドキュメント
15/54
• ハッシュアルゴリズム𝐻(𝑝𝑎𝑠𝑠, 𝑠𝑎𝑙𝑡)
• ℎ0 = 𝐻𝑎𝑠ℎ(𝑠𝑎𝑙𝑡, 𝑝𝑎𝑠𝑠)
• 𝑛 : 繰り返し回数
• for 𝑖 = 1 to 𝑛:
ℎ𝑖 = 𝐻𝑎𝑠ℎ < 𝑖 > +ℎ𝑖−1
• < 𝑖 > : 4バイトリトルエンディアン
MS Officeの暗号鍵生成
𝑝𝑎𝑠𝑠
ℎ 𝑜
𝐻𝑎𝑠ℎ
𝑠𝑎𝑙𝑡
ℎ𝑖−1𝑖
𝐻𝑎𝑠ℎ
ℎ𝑖
𝑛
𝑆 𝐾 ≔ ℎ 𝑛
16/54
• 二段階の秘密鍵を使う
• 𝐻 : 前述のハッシュ関数
1. 𝑝𝑎𝑠𝑠と𝑠𝑎𝑙𝑡から秘密鍵𝑠を生成
2. 秘密鍵𝑆 𝐾を生成し𝑠で暗号化
3. 𝑆 𝐾で本体𝑚を暗号化
• 詳細は後述
• 二段階なのは鍵供託のため
• パスワードを忘れたとき
管理者が復号できる
• 𝑆 𝐾を管理者の公開鍵で暗号化
• デフォルトはオフ
MS Office Agile format
𝑚
𝑝𝑎𝑠𝑠
𝑆 𝐾
Enc by 𝑆 𝐾
𝑆 𝐾
𝑚
Enc by 𝑠
𝑠
𝐻
𝑠𝑎𝑙𝑡
17/54
• https://github.com/herumi/msoffice/
• MS Officeファイルの暗号化・復号ツール
• Windows/Linux両対応
• Office 2007~のOpenXMLに対応
• Office 2010~のAgile formatにも対応
• LibreOfficeはまだAgile formatに対応していない
• Agile formatの秘密鍵を指定できる
• ストレッチングの回数を指定できる
msoffice-crypt
18/54
demo
• パスワード"test"で暗号化
• パスワード"test"で復号
• パスワード無しで解読
使い方
"test"でeasy.xlsxを
復号して𝑆 𝐾を取得
パスワード無しで𝑆 𝐾を使ってcomplex.xlsxを解読
msoffice-crypt -d complex.xlsx -by easy.xlsx -p test
msoffice-crypt -e plain.xlsx encoded.xlsx –p test
msoffice-crypt -d encoded.xlsx decoded.xlsx –p test
20/54
• パスワード暗号化フォーマットの強度比較
• デモ
• 問題となる状況
• 何が起きたのか
• いくつかのシナリオ
• MS Officeファイルフォーマット
• バグを見つけたきっかけ
• バックドア対策の信頼できるフォーマットの提案
目次
21/54
• Excel 2010/2013はパスワードを更新して保存したと
き秘密鍵𝑆 𝐾を変更しない (Bug).
何が起きたのか
一つの秘密鍵𝑆 𝐾でこれらのファイルを解読できる
master file
with pass
with pass1
with pass2
with pass3
save as...
同じ秘密鍵𝑆 𝐾を持ってる
22/54
• 人事部
• 暗号化Excelの定型ファイルを用意する
• そのファイルに個人情報を書き込み、
各自のパスワードで保存して配布する
シナリオ1(給与明細の配信)
暗号化
定型ファイル 人事部
他人のファイルを
解読できる
23/54
• 所有者
• 定型ファイルを簡単なパスワードで保存
• 重要な情報を書いて強いパスワードで保存
• 攻撃者
• 簡単なパスワードを破って強いパスワードファイルを解読
シナリオ2(PCの紛失)
簡単なパスワード
への総当たり攻撃
強いパスワードで保存
社外秘を書く
こちらを解読
PC
24/54
• パスワード暗号化フォーマットの強度比較
• デモ
• 問題となる状況
• MS Officeファイルフォーマット
• 暗号化MS Officeファイルの構造詳細
• パスワードと秘密鍵の関係
• バグを見つけたきっかけ
• 改善案
目次
25/54
• 古いフォーマットと新しいフォーマット
• MS OLE2のヘッダは"D0 CF 11 E0"
MS Office暗号化フォーマットの種類
Office file type Format
doc, ppt, xls (old Office files) MS OLE2
plain docx, pptx, xlsx ZIP file of Open XML files
encrypted docx, pptx, xlsx MS OLE2 including a header
and an encrypted ZIP file
ZIP files (Open XML)
Enc(ZIP files)
AESで暗号化
header
通常のファイル
暗号化
26/54
• 一つのファイルの中にディレクトリ構造がある
暗号化MS Officeファイルの構造
root/
EncryptionPackage
EncryptionInfo
DataSpaces/
Version
DataSpaceMap
Transformation/
StrongEncryption
Transform/
Primary
DataSpaceInfo/
StrongEncryption
DataSpace
not used
暗号化されたZIPファイル本体
暗号化の情報
27/54
• standard暗号化 ~Office 2007
• バイナリフォーマット
• SHA-1のみ, spinCount(=# of iteration)は50000固定
• Agile暗号化 Office 2010~
• XmlEncryptionDescriptorを含む
• SHA-1, SHA256, ...をサポート
• spinCount可変
EncryptionInfoの種類
28/54
XmlEncryptionDescriptor
<encryption>
<keyData saltSize="16" blockSize="16" keyBits="256" hashSize="64"
cipherAlgorithm="AES" cipherChaining="ChainingModeCBC"
hashAlgorithm="SHA512" saltValue="..."/>
<dataIntegrity encryptedHmacKey="..." encryptedHmacValue="..."/>
<keyEncryptors><keyEncryptor
uri="http://schemas.microsoft.com/office/2006/keyEncryptor/password">
<p:encryptedKey spinCount="100000"
saltSize="16" blockSize="16" keyBits="256" hashSize="64" cipherAlgorithm="AES"
cipherChaining="ChainingModeCBC" hashAlgorithm="SHA512" saltValue="..."
encryptedVerifierHashInput="..."
encryptedVerifierHashValue="..."
encryptedKeyValue="..."/>
</keyEncryptor></keyEncryptors>
</encryption>
29/54
暗号化における変数の依存関係
generate
encryptedKey.saltValue
encryptedVerifierHashValue
encryptedVerifierHashInput
encryptedKeyValue
encryptedHmacKey
encryptedHmacValue
password
gen. secretKey
hash
EncryptionPackage
Enc(ZIP file)
ZIP file
gen.
keyData.saltValue
gen. verifierHashInput
verifierHashValue
gen.
HmacKey
hash
30/54
パスワードの正当性確認
generate
encryptedKey.saltValue
encryptedVerifierHashValue
encryptedVerifierHashInput
encryptedKeyValue
encryptedHmacKey
encryptedHmacValue
password
gen. secretKey
hash
EncryptionPackage
Enc(ZIP file)
ZIP file
gen.
keyData.saltValue
gen. verifierHashInput
verifierHashValue
gen.
HmacKey
hash
31/54
データの正当性確認
generate
encryptedKey.saltValue
encryptedVerifierHashValue
encryptedVerifierHashInput
encryptedKeyValue
encryptedHmacKey
encryptedHmacValue
password
gen. secretKey
hash
EncryptionPackage
Enc(ZIP file)
ZIP file
gen.
keyData.saltValue
gen. verifierHashInput
verifierHashValue
gen.
HmacKey
hash
32/54
暗号化に関する変数の依存関係
generate
encryptedKey.saltValue
encryptedVerifierHashValue
encryptedVerifierHashInput
encryptedKeyValue
encryptedHmacKey
encryptedHmacValue
password
gen. secretKey
hash
EncryptionPackage
Enc(ZIP file)
ZIP file
gen.
keyData.saltValue
gen. verifierHashInput
verifierHashValue
gen.
HmacKey
hash
秘密鍵は
パスワードと無関係
𝑐 = 𝐸𝑛𝑐(𝑆 𝐾, 𝑠𝑎𝑙𝑡, 𝑚)
33/54
• パスワード暗号化フォーマットの強度比較
• デモ
• 問題となる状況
• MS Officeファイルフォーマット
• バグを見つけたきっかけ
• 動機
• 暗号学的安全な擬似乱数の紹介
• 既存のバックドアの例
• MS Officeの鍵生成部をフックする
• バックドア対策の信頼できるフォーマットの提案
目次
34/54
• 正規のエンコーダ
• 𝑚の暗号化部
• 𝑆 𝐾がないと誰も(𝑠𝑎𝑙𝑡, 𝑐)を復号できない
• 𝑆 𝐾の生成を制御できればバックドアを作れる?
𝑠𝑎𝑙𝑡をランダム生成
𝑆 𝐾をランダム生成
𝑐 = 𝐸𝑛𝑐 𝑆 𝐾, 𝑠𝑎𝑙𝑡, 𝑚
動機
𝑚 (𝑠𝑎𝑙𝑡, 𝑐)
35/54
• 不正な(バックドアのある)エンコーダ
• 不正者Eveはマスター秘密鍵𝑋を準備する
• Eveは𝑋をエンコーダに埋め込む
• Eveは𝑋を使って𝑆 𝐾 = 𝐻 𝑋, 𝑠𝑎𝑙𝑡 を得て解読できる
• Eve以外はバックドアの存在が分からない
𝑆 𝐾を制御する
𝑚 (𝑠𝑎𝑙𝑡, 𝑐)
𝑠𝑎𝑙𝑡をランダム生成
𝑆 𝐾 = 𝐻 𝑋, 𝑠𝑎𝑙𝑡
𝑐 = 𝐸𝑛𝑐 𝑚 by (𝑠𝑎𝑙𝑡, 𝑆 𝐾)
Eve
𝑋
𝑆 𝐾
36/54
• 金曜、夕方5時
MS Officeで概念実証をやってみよう
光成さん,
MS Officeの秘密鍵生成部を
フックしてみてもらえませんか
やってみます
いつまで?
来週の月曜日
...
37/54
• PRG(Pseudo Random Generator)
• ゲームやシミュレーションでよく使われる
• MT(Mersenne Twister)が有名
• CSPRG(Cryptographically Secure PRG)
• 過去のビット列から次のビットを予測できない
• 秘密鍵の生成にはこれを使わなければならない
• MTはCSPRGではない
• 624x4バイトの出力を見ると内部状態が確定する
暗号論的擬似乱数生成器(CSPRG)
0 1 0 0 1 1 1 0 1 ?
known previous bits
CSPRG
next bit
38/54
• CSPRGを自分で実装するのは難しい
• 既にある実装を使うのがよい
• /dev/urandom on Linux
• CSPRG用ノンブロッキングデバイス
• エントロピーソース
• マウス、キーボード、disk I/O, 割り込み
CSPRGの例
39/54
• IntelのハードウェアによるCSPRG命令
• NIST SP 800-90A標準に適合
• チップ上の非決定的なエントロピーソースを利用
• 使いやすい
• 安全に使うのは難しい
• ビジーループの可能性があるのでリトライ上限を設けるべき
(極めてまれ)
rdrand
// uint64_t getRand();
getRand:
.lp:
rdrand rax // raxに乱数がセットされる
jnc .lp // 失敗すればやりなおし(まれ)
ret
40/54
• rdrandのみを変更することで/dev/urandomの出力を
固定化できた(kernel 3.8.13 by Taylor Hornby)
• rdrand() { return [edx] ^ 0x41414141; }
• 単一障害点回避のため他のエントロピーと混ぜるべき
もしrdrandにバックドアがあったら
41/54
• Microsoft CryptoAPIのCSPRG
• saltや秘密鍵の生成に使われる
• この関数をフックしてみよう
• MS Officeも秘密鍵を作るのにこの関数を使ってるだろう
• CryptGenRandomをいつも同じ値を返すようにすれば、
秘密鍵も固定化されるのでは?
• 自作の (とても古い) DLL injectionライブラリで試す
• ASLRのせいでうまく動かなかった
CryptGenRandom()
42/54
• MS Reserachが提供するWin32 APIフックライブラリ
• http://research.microsoft.com/en-us/projects/detours/
• 64-bit版は1,234,286円 (32-bit版は無料)
• 使い方
• フックしたいdllのソース
Detoursライブラリ (1/2)
BOOL HookCryptGenRandom(HCRYPTPROV, DWORD len, BYTE *p) {
memset(p, 'a', len);
return TRUE;
}
BOOL DllMain(HINSTANCE, DWORD reason, LPVOID) {
if (reason == DLL_PROCESS_ATTACH) {
orgFunc = DetourFindFunction("adapi32.dll", "CryptGenRandom");
DetourAttach(&orgFunc, HookCryptGenRandom);
...
43/54
• test.exe
• Detours付属のwithdll.exeで起動する
• CryptGenRandomをフックできた
• しかしMS Officeはこの関数を呼んでいなかった...
Detoursライブラリ (2/2)
int main() {
RandomGenerator rg; // wrapper of CryptGenRandom()
for (int i = 0; i < 3; i++) printf("%08x¥n", rg.get32());
}
>test.exe
812e1af0 // random
ad990e76
865cb964
>withdll.exe /d:hook.dll test.exe
61616161 // "aaaa"
61616161
61616161
44/54
• Excelをデバッガ上で起動して
読み込まれているDLLを眺めてみる
• rsaenh.dllという名前のDLLがあった
試行錯誤 (1/3)
45/54
• rsaenh.dllのシンボルを見てみる
• dumpbin /exports rsaenh.dll
• CPGenRandomって何?
試行錯誤 (2/3)
ordinal hint RVA name
1 0 0000230C CPAcquireContext
2 1 00003A80 CPCreateHash
3 2 0001CC1C CPDecrypt
4 3 0001DBC8 CPDeriveKey
...
11 A 00009A80 CPGenKey
12 B 00001D3C CPGenRandom
46/54
• CPxxx関数は旧式の関数
• Cryptxxxにリネームされた
• Cryptxxxは内部でCPxxxにジャンプする
• CPxxxをフックすればCryptxxxも自動的にフックされる
• ExcelはCPGenRandomを呼んでいた
• 目論見通り同じ秘密鍵を生成したようにみえる
• しかし
試行錯誤 (3/3)
>msoffice-crypt –psk easy.xlsx –p test
...
secretKey = 8BBE31319EA4CAB9F...33013EB8853F8C6A7F5
>msoffice-crypt –psk complex.xlsx –p testtest
...
secretKey = 8BBE31319EA4CAB9F...33013EB8853F8C6A7F5
47/54
• フックしなくても同じ秘密鍵を生成した
• MS Office Word, PowerPointでは異なる秘密鍵だった
• Excelのみの現象
• CPGenRandomのフック
• これだけでは秘密鍵生成のコントロールには不十分だった
• タイマー関係もフックしてみたがまだ足りない
• 詳細は未調査
Excelのバグだった
48/54
• パスワード暗号化フォーマットの強度比較
• デモ
• 問題となる状況
• MS Officeファイルフォーマット
• バグを見つけたきっかけ
• バックドア対策の信頼できるフォーマットの提案
• 既存ファイルのチェック
• バックドアを入れられないフォーマットの提案
目次
49/54
• このバグは10/13のWindows Updateで修正された
• https://technet.microsoft.com/ja-jp/library/security/ms15-110.aspx
• しかし既に生成されたファイルは修正されない
• msoffice-cryptで同じ秘密鍵を持っていないか確認
• 同じ秘密鍵を見つけたら再暗号化したほうがよい
手元のExcelファイルを調べよう
50/54
• 信頼できるフォーマットとは?
• MS Officeフォーマットは安全だが、
バックドアがないことを証明するのは難しい
• バイナリ提供される暗号化ツール全般にいえる問題
• (再掲) 不正なエンコーダ
• バックドアがないと証明できるフォーマットが欲しい
今後の課題
𝑚 𝑠𝑎𝑙𝑡, 𝑐 , 𝑆 𝐾
blackbox
encoder
𝑠𝑎𝑙𝑡 : 乱数
𝑋 : 不正なエンコーダ内のマスター秘密鍵
𝑆 𝐾 : 𝐻(𝑠𝑎𝑙𝑡, 𝑋)
Eve gets 𝑆 𝐾 by (𝑠𝑎𝑙𝑡, 𝑋)
51/54
• 𝑠𝑎𝑙𝑡もKDF(Key Derivation関数)で生成する
1. 𝑟0, 𝑟1を生成する
2. 𝑠𝑎𝑙𝑡 = 𝐻 𝑝𝑎𝑠𝑠, 𝑟0 , 𝐻 : KDF
3. 𝑆 𝐾 = 𝐻(𝑝𝑎𝑠𝑠, 𝑟1)
4. 𝑐 = 𝐸𝑛𝑐 𝑟0, 𝑟1, 𝑚 by 𝑠𝑎𝑙𝑡, 𝑆 𝐾
5. 出力: 𝑐, 𝑠𝑎𝑙𝑡
• フォーマットの確認
• 上記手順に従っていることを確認する
1. 𝑟0, 𝑟1, 𝑚 ≔ 𝐷𝑒𝑐 𝑐
2. 𝑠𝑎𝑙𝑡 =
?
𝐻(𝑝𝑎𝑠𝑠, 𝑟0)
3. 𝑆 𝐾 =
?
𝐻(𝑝𝑎𝑠𝑠, 𝑟1)
バックドア対策のフォーマット
𝑆 𝐾 𝑚
𝑚
𝑟0 𝑟1𝑝𝑎𝑠𝑠
𝐻 𝐻
𝑠𝑎𝑙𝑡
𝐸𝑛𝑐
52/54
• (𝑐, 𝑠𝑎𝑙𝑡)しか知らない第三者にとって
• 従来と同じ困難さ
• Eveにとって
• 𝑟0が分かっているとき𝑠𝑎𝑙𝑡から𝑝𝑎𝑠𝑠を
求めるのはKDFの困難さと同程度
• 𝑟0が固定だとユーザにすぐばれてしまう
• たとえば1万回エンコードして𝑟0が
みな異なっていれば安心?
• Eveが解読する困難さは1万倍になる
提案フォーマットの困難さ
𝑆 𝐾 𝑚
𝑚
𝑟0 𝑟1𝑝𝑎𝑠𝑠
𝐻 𝐻
𝑠𝑎𝑙𝑡
𝐸𝑛𝑐
53/54
• 秘密鍵を用いてパスワードを回避する解読
• Excelのバグで改修済み
• バックドア対策をした信頼できるフォーマットの提案
• 一般的なパスワードによる暗号化フォーマットに適用可能
まとめ
54/54
1 of 54

Recommended

自作ペアリング/BLS署名ライブラリの紹介 by
自作ペアリング/BLS署名ライブラリの紹介自作ペアリング/BLS署名ライブラリの紹介
自作ペアリング/BLS署名ライブラリの紹介MITSUNARI Shigeo
2.7K views9 slides
暗認本読書会4 by
暗認本読書会4暗認本読書会4
暗認本読書会4MITSUNARI Shigeo
735 views24 slides
暗号技術の実装と数学 by
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学MITSUNARI Shigeo
9.6K views35 slides
RSA暗号運用でやってはいけない n のこと #ssmjp by
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpsonickun
58.4K views32 slides
暗号文のままで計算しよう - 準同型暗号入門 - by
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -MITSUNARI Shigeo
43.7K views39 slides
TLS, HTTP/2演習 by
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習shigeki_ohtsu
13.1K views129 slides

More Related Content

What's hot

RSA鍵生成脆弱性ROCAの紹介 by
RSA鍵生成脆弱性ROCAの紹介RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介MITSUNARI Shigeo
4K views17 slides
『データ解析におけるプライバシー保護』勉強会 秘密計算 by
『データ解析におけるプライバシー保護』勉強会 秘密計算『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算MITSUNARI Shigeo
2.6K views22 slides
PlaySQLAlchemy: SQLAlchemy入門 by
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
21.4K views91 slides
ARM CPUにおけるSIMDを用いた高速計算入門 by
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門Fixstars Corporation
7K views114 slides
メタプログラミングって何だろう by
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
28.7K views16 slides
マイクロにしすぎた結果がこれだよ! by
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
132.6K views32 slides

What's hot(20)

『データ解析におけるプライバシー保護』勉強会 秘密計算 by MITSUNARI Shigeo
『データ解析におけるプライバシー保護』勉強会 秘密計算『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算
MITSUNARI Shigeo2.6K views
PlaySQLAlchemy: SQLAlchemy入門 by 泰 増田
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田21.4K views
メタプログラミングって何だろう by Kota Mizushima
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima28.7K views
マイクロにしすぎた結果がこれだよ! by mosa siru
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru132.6K views
例外設計における大罪 by Takuto Wada
例外設計における大罪例外設計における大罪
例外設計における大罪
Takuto Wada68.5K views
オブジェクト指向エクササイズのススメ by Yoji Kanno
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno57.1K views
ソーシャルゲームのためのデータベース設計 by Yoshinori Matsunobu
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu124.4K views
猫にはわかる暗号技術 1 by Yu Ogawa
猫にはわかる暗号技術 1猫にはわかる暗号技術 1
猫にはわかる暗号技術 1
Yu Ogawa5.1K views
オンラインゲームの仕組みと工夫 by Yuta Imai
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Yuta Imai869.8K views
何となく勉強した気分になれるパーサ入門 by masayoshi takahashi
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi35.8K views
それはYAGNIか? それとも思考停止か? by Yoshitaka Kawashima
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima29.3K views
君はyarn.lockをコミットしているか? by Teppei Sato
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
Teppei Sato30.4K views
世界一わかりやすいClean Architecture by Atsushi Nakamura
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura47.1K views
12 分くらいで知るLuaVM by Yuki Tamura
12 分くらいで知るLuaVM12 分くらいで知るLuaVM
12 分くらいで知るLuaVM
Yuki Tamura5.5K views
いまさら聞けないarmを使ったNEONの基礎と活用事例 by Fixstars Corporation
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
Python 3.9からの新定番zoneinfoを使いこなそう by Ryuji Tsutsui
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui6.9K views
プロフェッショナルSSL/TLS 1.2章 by MITSUNARI Shigeo
プロフェッショナルSSL/TLS 1.2章プロフェッショナルSSL/TLS 1.2章
プロフェッショナルSSL/TLS 1.2章
MITSUNARI Shigeo2.8K views

Similar to MS Officeファイル暗号化のマスター鍵を利用したバックドアとその対策

MSOfficeファイル暗号化のマスター鍵を利用したバックドアとその対策 by 光成滋生&竹迫良範 by
MSOfficeファイル暗号化のマスター鍵を利用したバックドアとその対策 by 光成滋生&竹迫良範MSOfficeファイル暗号化のマスター鍵を利用したバックドアとその対策 by 光成滋生&竹迫良範
MSOfficeファイル暗号化のマスター鍵を利用したバックドアとその対策 by 光成滋生&竹迫良範CODE BLUE
2.1K views54 slides
Xml Security by
Xml SecurityXml Security
Xml SecuritySatoshi Hada
1.6K views64 slides
すぐできるWeb制作時のセキュリティTips by
すぐできるWeb制作時のセキュリティTipsすぐできるWeb制作時のセキュリティTips
すぐできるWeb制作時のセキュリティTipsyoshinori matsumoto
10.2K views39 slides
ARMテンプレートでサーバーレスに挑む! by
ARMテンプレートでサーバーレスに挑む!ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!Kazumi IWANAGA
1.5K views41 slides
高速な暗号実装のためにしてきたこと by
高速な暗号実装のためにしてきたこと高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたことMITSUNARI Shigeo
8.2K views40 slides
Azure Container Services and Microservices design pattern by
Azure Container Services and Microservices design patternAzure Container Services and Microservices design pattern
Azure Container Services and Microservices design patternYoshio Terada
301 views78 slides

Similar to MS Officeファイル暗号化のマスター鍵を利用したバックドアとその対策(20)

MSOfficeファイル暗号化のマスター鍵を利用したバックドアとその対策 by 光成滋生&竹迫良範 by CODE BLUE
MSOfficeファイル暗号化のマスター鍵を利用したバックドアとその対策 by 光成滋生&竹迫良範MSOfficeファイル暗号化のマスター鍵を利用したバックドアとその対策 by 光成滋生&竹迫良範
MSOfficeファイル暗号化のマスター鍵を利用したバックドアとその対策 by 光成滋生&竹迫良範
CODE BLUE2.1K views
すぐできるWeb制作時のセキュリティTips by yoshinori matsumoto
すぐできるWeb制作時のセキュリティTipsすぐできるWeb制作時のセキュリティTips
すぐできるWeb制作時のセキュリティTips
yoshinori matsumoto10.2K views
ARMテンプレートでサーバーレスに挑む! by Kazumi IWANAGA
ARMテンプレートでサーバーレスに挑む!ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!
Kazumi IWANAGA1.5K views
高速な暗号実装のためにしてきたこと by MITSUNARI Shigeo
高速な暗号実装のためにしてきたこと高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
MITSUNARI Shigeo8.2K views
Azure Container Services and Microservices design pattern by Yoshio Terada
Azure Container Services and Microservices design patternAzure Container Services and Microservices design pattern
Azure Container Services and Microservices design pattern
Yoshio Terada301 views
Javascript で暗号化 by suno88
Javascript で暗号化Javascript で暗号化
Javascript で暗号化
suno8826.1K views
これからHTML5を書く人のためのセキュリティ - HTML5など勉強会 by yoshinori matsumoto
これからHTML5を書く人のためのセキュリティ - HTML5など勉強会これからHTML5を書く人のためのセキュリティ - HTML5など勉強会
これからHTML5を書く人のためのセキュリティ - HTML5など勉強会
yoshinori matsumoto6.1K views
[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab... by Insight Technology, Inc.
[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...
[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...
libinjection : SQLi から XSS へ by ニック・ガルブレス by CODE BLUE
libinjection : SQLi から XSS へ by ニック・ガルブレスlibinjection : SQLi から XSS へ by ニック・ガルブレス
libinjection : SQLi から XSS へ by ニック・ガルブレス
CODE BLUE2.7K views
Azure でサーバーレス、 Infrastructure as Code どうしてますか? by Kazumi IWANAGA
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Kazumi IWANAGA6.8K views
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン by Kazuyuki Miyake
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Kazuyuki Miyake5.5K views
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか by Hiroshi Tokumaru
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
Hiroshi Tokumaru74.4K views
Scala が支える医療系ウェブサービス #jissenscala by Kazuhiro Sera
Scala が支える医療系ウェブサービス #jissenscalaScala が支える医療系ウェブサービス #jissenscala
Scala が支える医療系ウェブサービス #jissenscala
Kazuhiro Sera30.3K views
Software Development with Symfony by Atsuhiro Kubo
Software Development with SymfonySoftware Development with Symfony
Software Development with Symfony
Atsuhiro Kubo1.1K views
Google Cloud Next '18 Recap/報告会 機械学習関連 by Tetsutaro Watanabe
Google Cloud Next '18 Recap/報告会 機械学習関連Google Cloud Next '18 Recap/報告会 機械学習関連
Google Cloud Next '18 Recap/報告会 機械学習関連
Tetsutaro Watanabe2.9K views
クラウドではじめるリアルタイムデータ分析 #seccamp by Masahiro NAKAYAMA
クラウドではじめるリアルタイムデータ分析 #seccampクラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccamp
Masahiro NAKAYAMA2.1K views
クラウドを支えるこれからの暗号技術 by MITSUNARI Shigeo
クラウドを支えるこれからの暗号技術クラウドを支えるこれからの暗号技術
クラウドを支えるこれからの暗号技術
MITSUNARI Shigeo64.1K views

More from MITSUNARI Shigeo

範囲証明つき準同型暗号とその対話的プロトコル by
範囲証明つき準同型暗号とその対話的プロトコル範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコルMITSUNARI Shigeo
2K views23 slides
暗認本読書会12 by
暗認本読書会12暗認本読書会12
暗認本読書会12MITSUNARI Shigeo
702 views25 slides
暗認本読書会11 by
暗認本読書会11暗認本読書会11
暗認本読書会11MITSUNARI Shigeo
454 views18 slides
暗認本読書会10 by
暗認本読書会10暗認本読書会10
暗認本読書会10MITSUNARI Shigeo
419 views22 slides
暗認本読書会9 by
暗認本読書会9暗認本読書会9
暗認本読書会9MITSUNARI Shigeo
2.3K views29 slides
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen by
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenMITSUNARI Shigeo
2.4K views20 slides

More from MITSUNARI Shigeo(20)

範囲証明つき準同型暗号とその対話的プロトコル by MITSUNARI Shigeo
範囲証明つき準同型暗号とその対話的プロトコル範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル
MITSUNARI Shigeo2K views
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen by MITSUNARI Shigeo
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
MITSUNARI Shigeo2.4K views
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法 by MITSUNARI Shigeo
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
MITSUNARI Shigeo3.9K views
WebAssembly向け多倍長演算の実装 by MITSUNARI Shigeo
WebAssembly向け多倍長演算の実装WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装
MITSUNARI Shigeo3.9K views
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化 by MITSUNARI Shigeo
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
MITSUNARI Shigeo4K views
BLS署名の実装とその応用 by MITSUNARI Shigeo
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用
MITSUNARI Shigeo1.8K views
Intro to SVE 富岳のA64FXを触ってみた by MITSUNARI Shigeo
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
MITSUNARI Shigeo11.6K views

Recently uploaded

システム概要.pdf by
システム概要.pdfシステム概要.pdf
システム概要.pdfTaira Shimizu
40 views1 slide
lt.pptx by
lt.pptxlt.pptx
lt.pptxtomochamarika
80 views13 slides
Najah Matsuo Self Introduction by
Najah Matsuo Self IntroductionNajah Matsuo Self Introduction
Najah Matsuo Self IntroductionNajahMatsuo
7 views29 slides
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私 by
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私修治 松浦
122 views36 slides
SSH超入門 by
SSH超入門SSH超入門
SSH超入門Toru Miyahara
363 views21 slides
onewedge_companyguide1 by
onewedge_companyguide1onewedge_companyguide1
onewedge_companyguide1ONEWEDGE1
27 views22 slides

Recently uploaded(9)

Najah Matsuo Self Introduction by NajahMatsuo
Najah Matsuo Self IntroductionNajah Matsuo Self Introduction
Najah Matsuo Self Introduction
NajahMatsuo7 views
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私 by 修治 松浦
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
修治 松浦122 views
onewedge_companyguide1 by ONEWEDGE1
onewedge_companyguide1onewedge_companyguide1
onewedge_companyguide1
ONEWEDGE127 views
how query cost affects search behavior translated in JP by Tobioka Ken
how query cost affects search behavior translated in JPhow query cost affects search behavior translated in JP
how query cost affects search behavior translated in JP
Tobioka Ken9 views
AIで始めるRustプログラミング #SolDevHub by K Kinzal
AIで始めるRustプログラミング #SolDevHubAIで始めるRustプログラミング #SolDevHub
AIで始めるRustプログラミング #SolDevHub
K Kinzal22 views
図解で理解するvetKD by ryoo toku
図解で理解するvetKD図解で理解するvetKD
図解で理解するvetKD
ryoo toku86 views

MS Officeファイル暗号化のマスター鍵を利用したバックドアとその対策