パスワードの話

自己紹介

資料

最近パスワードの話が盛り上っている

本講演の経緯

参考文献

man 3 crypt

Manpage of CRYPT

CRYPTOGRAPHY ENGINEERING

ISBN-13: 978-0470474242

認証技術 パスワードから公開鍵まで

ISBN-13: 978-4274065163

パスワードの保存

最初に

パスワード情報が漏れたときに, パスワード(特に 弱いパスワード )を破られにくくする方法を話します.

もちろん, 以下が望ましいです.

パスワード保存の常識(?)

パスワードの保存は,

「salt(ソルト)を付けてハッシュ」

とよく言われている.

パスワード保存の常識(?)

image/fig1.png

常識(?)の元になったのは Unixのパスワード保存法だと思われる

Unix的パスワード保存

GNU/Linuxの場合

形式: $id$salt$hashed

ハッシュとは?

暗号学的ハッシュ関数 - Wikipedia より(一部変更)

salt(ソルト, お塩)とは?

なぜ salt は必要なのか

レインボーテーブルを利用した攻撃が可能になる

レインボーテーブルやその利用例

レインボーテーブルのデモ

なぜ salt はユーザ毎に違う必要があるか

saltのサイズ

実際の処理

PHP風の言語で記述

$x = '';
for($i = 0; $i < $iter; ++$i) {
$x = hash($x . $password . $salt);
}

実際の処理(2)

どれも, ハッシュを繰り返し利用している

stretching とは?

stretching の効果(1)

PHPの hash 拡張で SHA-256を繰り返し呼ぶコードを用いた計測をした

Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz で 1秒に SHA-256を約50万回計算できた.

stretching の効果(2)

文字数 総パスワード数
n 64^n
3 26万
4 1677万
5 10億
6 687億
7 4兆
8 281兆

stretching の効果(3)

1CPU(8コア)のPCでパスワード解析する場合を考察

stretching の効果(4)

MD5だと... Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz (1コアのみ利用)で 1秒に 約140万回計算できた.

方式の保存

現在は問題なくても, 将来問題になるかもしれない

長く運用するシステムでは, パスワード保存方式を パスワード情報と共に保存する必要がある.

なぜUnixはこの方式なのか?

Unix的パスワード保存まとめ

Webシステムでは?

Webシステムでのリスク

パスワード情報の保存に関するリスクのみ

鍵を用いる場合の手法案

共通鍵暗号

共通鍵暗号をハッシュ的に用いる パスワード保存法もあるが, ここではパスワード情報を暗号化する場合を考察

ハッシュ+暗号

Unix的にハッシュ化したあとで暗号化

鍵付きハッシュ(1)

鍵情報とパスワードを組合せてハッシュ

鍵付きハッシュ(2)

鍵付きハッシュ(3)

パスワード保存方式の比較

方式 弱いパスワードの保護 生パスワード 鍵管理
そのまま保存 不可能 そのまま 不必要
Unix的 stretching で対応 復元不可能 不必要
暗号 可能 復元可能 必要
ハッシュ+暗号 可能 復元不可能 必要
鍵+ハッシュ 可能 復元不可能 必要

個人的には, Webシステムにおいても 鍵の管理が面倒なのでUnix的でよいと考えています.

パスワードの保存 まとめ

パスワードの話題いろいろ

後のほうほど質が下がります...

私のパスワード管理法(1)

手で入力しなければならないもの

10〜20文字のパスワードを作成して覚える

重要なもの

10〜30文字のパスワードを パスワード管理ソフトで作成して 覚えない

重要でないもの

10〜30文字のパスワードを パスワード管理ソフトで作成して 覚えない

パスワードの強度(1)

文字種を増やすのがよいか, 長さを増やすのがよいか?

パスワードの強度(2)

文字種 文字数 総パスワード数
62(英数) 8 218兆
96(英数記号) 8 7213兆
62(英数) 9 13537兆
62(英数) 10 839299兆

パスワードの定期更新(1)

パスワードを定期的に更新する意味はあるのか?

パスワードの定期更新(2)

パスワードの変えどき - When to Change Passwords 日本語訳

パスワードの定期更新(3)

パスワードのマスキング

秘密の質問

パスワードリマインダ

パスワードリマインダ(2)

フレームワークのパスワード管理法(1)

フレームワークのパスワード管理法(2)

パスワードに対する攻撃



まとめ

なにかご質問は?