2018-04-30
すみだセキュリティ勉強会2018その1を開催しました
長い間のブランクをあけてしまいましたが、主催しているすみだセキュリティ勉強会を久々にやりました。
私のお話は、emoji(絵文字)を使ったパスワードの話です。
前々から日本語もパスワードに許せばいいのにと思っていたのですが、どうせUnicodeなんだったら絵文字も突っ込んじゃえばどうだろ? と思ったのが元ネタです。理屈上は、Unicodeを正しく扱っていれば、日本語だろうがASCII文字だろうが絵文字だろうが単なる「1文字」なので、最近のモダンな環境なら普通に通るはずですね。
なおemojiなどの面0(BMP)以外のUnicode文字は、既知の通りMySQLで多くの地雷が埋まっています。寿司ビール問題くらいならまだいいのですが、INSERT時にemoji以降が切り捨てられるという現象が起こる場合もあります。
これがパスワードで発生すると非常に困った事態になるのですが、少なくともパスワードについてはハッシュ化するなりして捻って格納しているはずですから、切り捨て問題は起きないはず。平文でパスワードを保存していたら知らんけど。
ようやく復活できたので、隔月くらいでまた開催したいなー。
補足
勉強会後に気づきましたが、既にGCP(Google Cloud Platform)で、絵文字をパスワードに使ってもいいんじゃね? 的な話が出てました。
こうした点を踏まえると、ユーザーが使いたいあらゆる文字をパスワードに使用できるようにするべきです。Klingon や Emoji、両端に空白を含む制御文字をパスワードに含めたいユーザーがいたとしても、それを拒む技術的理由はないはずです。
これは、NIST SP 800-63Bを受けてのようです。
5.1.1 Memorized Secrets
For purposes of the above length requirements, each Unicode code point SHALL be counted as a single character.
- 115 https://www.google.co.jp/
- 38 https://www.google.com/
- 31 https://t.co/NNCgGiamiR
- 11 http://htn.to/JHFeG9QL
- 9 http://search.yahoo.co.jp/
- 5 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwj1kvbusePaAhXBOI8KHZCmAF8QFggwMAA&url=http://d.hatena.ne.jp/ozuma/20130629/1372477017&usg=AOvVaw3Dyx4FJdyUPoIrEbj6yCYS
- 5 https://t.co/NNCgGiamiR?amp=1
- 4 https://www.bing.com/
- 3 http://search.minakoe.jp/rsss/rsss.asp?qry=domain:hatena&qry=domain:hatena&multi=1
- 2 http://b.hatena.ne.jp/tokkata/hotentry