誤送信を防止できた経験のアンケート

平野善隆氏(以下、平野):変なの第2弾で、誤送信防止の観点でのPPAP。「パスワードを送らないことで誤送信を防止できた経験がありますか?」というアンケートで、「複数回ある」「1度だけある」が合わせて13パーセントぐらいいて、それらの方がPPAPのパスワードを送らないことで誤送信を防止できたと言っています。

一方、先ほどのセッションで同じ話がありましたが、パスワードを送らない、元のzipのファイルは送っちゃったという状態が、情報漏洩に当たるのか当たらないのかは、けっこう意見が分かれています。パスワードを送らないことで誤送信防止が成り立つような考えがあるように見えて、実は情報漏洩に当たると。「なんかちょっとおかしいんじゃないの?」という気はしますが、もうちょっと分析してみました。

「1度だけある」と「複数回ある」と誤送信を防止できた経験のある方の意見を出してみました。若干「情報漏洩に当たらない」という方が増えましたが、やはり「情報漏洩に当たる」と考えている方もいます。パスワードを送らなくても結局情報漏洩に当たっちゃうのかな、というのはすごく違和感がありますが、この辺は森崎さんが見ていてどうですか?

森崎聡氏(以下、森崎):例えばPマークやISMS対応でやっているけれど、実際には建前とでズレている気はしていました。

平野:誤送信を防止することと、情報漏洩は関係がないんですかね、実は。

森崎:あるいはPマークとかを取得するにあたってやっているけど、実際には社内には情報漏洩だと捉えられている。それだけ重要なものを送っているから、それをファイルを丸ごと相手に渡すということは、漏洩と判断されているのかなと思いました。ちょっとここは聞いてみないとわからないですけど。

平野:ちょっとおもしろい意見だなと思います。北川先生はこれを見てどう感じますか?

北川直哉氏(以下、北川):ほとんどのセッションでPPAPのダメな点にフォーカスを当てたはずの話が多いわけですが、その中の数少ない、PPAPのおかげで助けられた事例ですよね(笑)。さっき関根さんも言っていたような、オンラインストレージでパスワードをメールで送るのも、効果としては同じだと思いますが、違う人に送っちゃうのも、1回前に時間をおいて時間稼ぎができる点で、少し意味がある行為なのかな、というのもあります。

平野:確かに。

北川:おもしろい結果ですよね。助けられた人が意外と人数がいて。

平野:そうなんですよ。複数回あるほうが多いというのがまたね。何回もやらかしているんでしょうか(笑)。

森崎:これさっきは言いませんでしたが、“複数回”というのは、やはり管理者的立場なので。

平野:あー。そういうことか。自分が何回かじゃなくて。

森崎:そうなんですよ。そういう情報が集まってきているんじゃないかな、と思っていました。

平野:社内で複数回防止できたのを聞いたことがあるというのは、きっとそういうことですね。

森崎:先ほども言いましたが、ちょっと気になるのが、「認知されていないやつがけっこうあるんじゃない?」ということ。

平野:管理者までは伝わっていない。情報漏洩として当たらなければそうですよね。

森崎:だから実は防止できていないのと同じぐらいなのか、もしかしたら数倍とかあったりするんじゃない? とわりと気になりましたね。

パスワードの弱さの検証

平野:そうかもしれません。情報漏洩に当たるのも、ちょっと絡むのかもしれない。暗号化としてのPPAPはどうなのか。「zip暗号化はどうなのよ」とか。zip暗号化が極めて強ければ、きっと情報漏洩にはならない。ただの謎のランダムファイルかと思いますが、暗号化としてのzipがけっこう弱いと言われていますよね。

そこが変で、「本当にパスワードを解読できるの?」とよく言われます。パスワードを簡単に解読できちゃうから、盗まれると。じゃあ本当にできるのか、できるとしたらどのくらい時間がかかるんでしょう。すごいスーパーコンピューターとかでできるなら、コストは何億円かかるのかという話になるのかもしれない。実際どのくらいのコストでできるのか。

zipは弱いけど、OfficeやPDFの暗号化もある。そういうのはどのくらい弱いのかをちょっと実際調べてみました。森崎さんといろいろ試してみましたが、3つぐらい環境があって、1つはちょっといいグラフィックボードです。

ディープラーニングでも使えるRTX2080Tiを2枚刺したような。うちの会社で転がっていた機械学習の勉強用のサーバーなんですが、それを使ってみました。もう1つは森崎さんが今使っているパソコンです。

森崎:『Minecraft』とかで遊んでいたやつを使ってやっています。

平野:普通のご家庭のデスクトップパソコンなら、これぐらいのものが入っているかなぐらいのものです。3つ目はAmazonのEC2です。これは、お金さえかければいくらでも並列させられるものです。

森崎:ちょっとこれテストをしようと思いましたが、EC2でリソース上限の解除依頼を出したところ蹴られて、テストができなかったので、ここの数字はネットで調べて、他の方がやっていた実績をそのまま出しています。

平野:理論値ですね。実際の解析自体は、一番上のRTX2080Tiが2枚の環境でやってみました。zipのパスワードは文字数が4文字ぐらいだと7、8秒です。5文字だと同じように10秒ぐらい。6文字でも20秒以内には解けていました。

見てもらったらわかりますが、パスワードに文字種があります。アルファベット小文字だけ、数字が入っている、記号が入っているとか。総当たり攻撃をしますが、簡単なものから順番に当てていくので、記号などが入っていると後回しになったりで、時間がかかるようになります。パスワードの解析速度ですが、ハッシュを1秒間で何回計算できるのかで測ります。

このRTX2080Tiが2枚だと、だいたい200億回ぐらい1秒間でチェックできます。そのため、200億のパスワードが1秒間で解析できることになります。ちなみに森崎さんのデスクトップパソコン(のグラフィックボード)は5GH/sですね。50億ぐらいですか?

森崎:そうですね。

平野:1秒間に50億回のパスワードが、普通のデスクトップパソコンでも実は解析できます。文字数が増えてくると、どんどん時間がかかります。7文字になると1分ぐらいでできたのもあれば、複雑な記号が入っていれば20分ぐらいかかるのもあります。理論的に1秒間に200億回で計算すると、54分ぐらいかかるのが最大だと考えられます。

そのため、だいたい半分ぐらいで解けたのかなと。平均半分ぐらいかかると思うので、だいたい合っているという感じ。では8文字だとどうなのか。理論的にはこれでも最大85時間。実際は1時間とか2日間と、ちょっと幅はありますが、これぐらいで解析ができる。

9文字になると理論値は1年近くになって、これはちょっとパスワードを複雑なものでやりましたが、断念しました。1週間も回していないのでわかりませんが、もう面倒くさいので、ここは理論値で見るしかない。

10文字、11文字、12文字になっていくと、どんどん倍々どころかすごく桁が上がってきます。zipのパスワードが弱いと言われる所以が、96bitしかないので、パスワードの文字に記号などいろいろと入れて94文字、95文字あると考えると、15文字のパスワードで同じものが出てきている。そのため、14文字以降は総当たりをしちゃえばいい。

全部総当たりすると、だいたい6千億年ぐらいかかる数値になりました。これぐらいだと安全だと言えるのかもわかりませんが、桁数が短いと、かなり弱いです。森崎さんもこんな感じの印象でしたか?

森崎:そうですね。私のほうはやはりパワーがないので、あまりテストはできていませんでしたが、短いとわりと早く出ていた感じでした。

平野:森崎さんのデスクトップは4分の1の速度なので、これの4倍の時間をかければ理論上は普通のパソコンでもできちゃう、ということですね。

森崎:そうですね。

パスワードの文字数と種類はなにが適切か?

平野:文字数が長くなるといい話はしましたが、では種類はどうなのか。例えば英語の小文字だけを使うと26種類しかありません。これだと、例えば11文字のパスワードでも2日ぐらいで解けます。文字の種類もやはり重要です。どの文字を使われているかわからなければ、たぶん簡単な方法で攻撃すると思うので、記号などが入っていないパスワードだと、実はわりと早く破られる。

11文字をよく見ると、アルファベットの小文字だけだと2日しかかりませんが、記号や大文字、数字など全部入れれば8千年かかる。これぐらいの違いは出てくるので、記号を入れるのも重要かと思います。

OfficeやPDFはじゃあどのぐらいかというと、Officeのパスワードはけっこう強いです。バグを使って攻撃をするとか、ブルートフォースで総当たりでやる分には、6文字で200日ぐらい理論的にかかる。先ほどは20億回1秒間にできたけど、4万回ぐらいしかできません。そのため、これだと13文字で35兆年かかる、こういう莫大な数字になっています。

PDFはそれに比べると128bitで、それでも若干弱いですが、6,800万個ぐらいのパスワードを1秒間でチェックできるので、zipよりはまだまだ時間がかかるといえます。7文字のこのパスワードを実際にやってみて、6日かかって結果わかったんですけど、こんな感じ。

7文字、8文字だと弱いかもしれませんが、長くなればそこそこいけるのかなとは思います。あくまで総当たりなので、バグとかそういうのは除くという話です。森崎さんはさすが大阪商人ですね。値段に換算している。

森崎:そうですね。ちょっと試せてはいませんが、AWSのEC2ですとp3.2xlarge、TeslaのV100を使えるので、それを使ったときの想定時間と費用をグラフにしています。速度としては1秒間で270億回解析できるような、それぐらいパワーのあるものになります。それをアメリカのセンターで1時間借りると、だいたい3ドルぐらいのお金がかかってくるので、時間でかけたらどれぐらいの費用がかかるのかがこの図になっています。

例えば62種類の文字を使った8文字であれば、だいたい解析時間が2時間で終わるので、費用としては700円弱ぐらいです。この辺りだったらホビーレベルで使えますよね、やっちゃいますよね。12文字ぐらいだと3,500年とかです。93種類だと12文字で46万年というところで、この辺だと強いのではと見えるかもしれませんが、実際にはV100の1台でやった性能です。

V100を何台もつなげれば、時間がどんどん短くなる。比較でいくと、2020年に稼働を始めたスーパーコンピューターの富岳です。これの性能がどれくらいかというと、zipの解読にどれくらい時間がかかるかは実際にはわかりませんが、浮動小数点演算の性能で比べると、だいたいV100の5万倍ぐらいの性能がある。では46万年は、だいたい9年で終わっちゃうんじゃないの? というところです。

その上でいくと、分散コンピューティングプロジェクトのFolding@homeがあります。タンパク質の構造解析をするやつです。2020年に特に新型コロナの解析でよってたかって解析していた時期があって、ニュースにもなりました。だいたい4月ぐらいで2.4エクサフロップスということで、ペタのさらに上のエクサクラスまでスピードが出たと。

9月ぐらいですね。3エクサフロップスぐらい出ているところで、1秒間で300京回、兆の上ですね。それぐらいある。これはV100と比べると37.5万倍の性能があるので、46万年かかると言っていたのに、1年ちょっとでやれちゃうんじゃない? と。だいぶ現実的な数字に落ちてくるような感じになって、それを考えると12文字でも心もとない。

14文字一択みたいになるんじゃないかな。分散コンピューティングプロジェクトでzip解析することはないかもしれませんが、例えば犯罪者が使うボットネットとかで使われて、寄ってたかって解析されるようなことになってくると、12文字でも厳しくなってくるのが見えているということで。そもそもzip自体使うのを止めたほうがいいんじゃないかな、という印象をもちました。

平野:なるほど。金に糸目をつけなければ、わりとどれも危険だよねということですね(笑)。わかりました。ありがとうございます。

(次回につづく)