EpisoPassを使ってみた
GyazoやScrapboxでお馴染みの増井俊之さんによるEpisoPassの存在は以前から知っていたけど、
基本的な仕組み自体はわかるものの、どうしてこれが安全なのか、数点の疑問がどうしても解けなかった。
ご本人に聞いてしまえば早かったのだと思うけど、そこまで急いでいるわけでもなく、たぶん数年そのままだったのだけど、ようやく理解できた気がするのでメモをかねて書いておく。
EpisoPass全体については、以下のScrapboxをご参照。
簡単に言うと、質問&正答のいわば「なぞなぞ」を作っておいて、それに正解したらパスワードフレーズが出てくる、みたいな感じ。
特徴的なのは、そのパスワードと正答はどこにも保管されておらず、とくに「正答」は自分の頭の中にしかナイので(というかそういうなぞなぞを事前に作っておくので)、仮に運営者のサーバ等からすべてのデータが抜き取られても、パスワードが漏洩することはないということ。
もう少し具体的な仕組みとしては、一意のパスワードを作るには以下の要素が必要になる。
- ID(URLのこと)
- Seed(パスワードの長さ等を指定するキーワード)
- なぞなぞの質問
- なぞなぞの正答
2番めのSeedというのが少しわかりづらいが、これがたぶんこのシステムのキモで、おそらく質問・回答の選択肢・正答・URLの組み合わせだけでもそれなりに複雑な(他人には破られづらい)仕組みにはなるだろうが、そこにSeedが絡むことでより複雑性が高まるのだと思われる。
その上で、EpisoPassには「編集ページ」と「利用ページ」があり、前者ではなぞなぞやSeedなど各種の設定を行い、後者ではそれによって出来上がったなぞなぞを解く。
で、それらのページはどちらも全世界に公開されている。
たとえば、増井さんが使用例として公開している、ご自身のTwitterのEpisoPass利用ページを見てみると、こんな感じ。
https://episopass.com/Twitter_masui@pitecan.com.html
で、その編集ページを見るとこんな感じ。(最後の「.html」をトルだけ)
https://episopass.com/Twitter_masui@pitecan.com
あれ、Seedもパスワードも見れてしまってる・・というのが、じつはつい最近までまったく意味がわからなかったところ。
パスワード、見えちゃってるんじゃないの?という。
しかし実際には、第一にこの画面内のSeedは利用者が使っているものとは限らず、試しに他のSeedを入れてみると、それに応じてパスワードも変わる。
また、アクセスした時点ではすべての回答候補の最初(左端)の選択肢が選択されているので、どれが正答かは本人以外にはわからない。
つまり、これらの変数が存在することにより、この編集ページを見られても実質的な問題はない。
*増井さんはご自身の使用例では「Seedを公開している*1」と言っているけど、本当に上記アクセス先のSeedを使っているかはもちろん誰にもわからない。
ぼくは上記後者の、「編集ページにアクセスした時点ではすべて回答候補の左端が選択されている」という前提をわかっていなかったので、編集ページが知られたら自動的にパスワードもバレるのでは・・と思っていた。
もしそうなら、編集ページはなぞなぞページのURLから推測(というか)できるのだから、そもそもなぞなぞの意味ないのでは・・と思っていたのだけど、そうではないことがわかったので、その記念にこうしてブログにメモをしている。
その他、この仕組みに関するよくある質問は以下。想定可能な疑問点はだいたい網羅されているのでは。
ちなみに、今回久しぶりにEpisoPassについて調べてみようと思ったのは、増井さんの以下の直近ブログ記事を読んだから。
先日仕事でChromebookに触る機会があり、たしかにあのログインは大変!と思っていたので、用途として非常に興味を持ったという。
(まあ実際には、まだ仕事でこれを使うことはできないが・・)
ひとまずは、自分が趣味で使っている&他への影響が考えづらいサービスで小さく試し始めているところ。
なお、Chrome拡張機能を入れてみたけど、これはなぜか上手く動いてくれない。
もしかしたら、すでに別のパスワード管理サービスのアドオンを入れているせいかも。
ちなみに、増井さんはご自身でも解説されているように、
以前にパスワードの使い回しでちょっとした話題になったことがあり、しかしこれは逆に言うと、どんなかたちであれパスワード自体を登録・保存せざるを得ない既存のパスワード管理サービスの欠点を明らかにしたものでもあったと思う。
EpisoPassにはそれはそれで、「なぞなぞを作るのが面倒」等の問題はありそうなものの(人によりそうだが)上記の根本的な問題は含んでいないから、その点からも期待できるところがあるなあ、と思っている。アルゴリズムなど、システムの仕組み部分もシンプルかつ公開されているようだし。(FAQをざっと見た感想)
*1:FAQにて。その上で、通常は公開する必要はないし、安全を期するためにはSeedも非公開にした方が良いだろうと言っている。