チケプラ カンタン便利な電子チケット (tixplus.jp)

俺の周囲をうろつく謎の女がBUMP OF CHICKEN TOUR 2023 be thereのチケットを宮城4/1長野4/9とダブルで当ててきたので俺の分を受け取ろうと思ひたちてチケプラというサービスをアレしてた。チケプラの利用は初めてで、eplusっていうゴミサイトからのアカウント連携で入った。だからパスワードがよくわからん状態。パスワードわからぬのでサイトから変更かけたい。

ぼく「パスワード変更したいんですけど」

チケプラ「いいよ」

ぼく「じゃあ 123456789abc! でおねがい」

チケプラ「記号使えないよ英数字だけじゃないとだめだよ」

ぼく「あふっ?」

ぼく「あっ…(絶句)」

ぼく「…じゃあ 123456789abc でおねがい」

チケプラ「よしきた」

ご登録パスワード再設定完了のお知らせ

いつもご利用いただきありがとうございます。

設定いただきましたパスワードへの変更が完了いたしました。
このメールは大切に保管していただくようお願いいたします。

------------------
123456789abc
------------------

-----
※こちらのメールアドレスは送信専用です。直接返信されても返答できませんので予めご了承ください。
※なお、このメールにお心当たりがない場合は、第三者が誤ってあなたのメールアドレスを入力してしまった可能性があります。
誠にお手数ですが、お問い合わせいただくか、本メールをそのまま削除ください。

====================
★サービス名ならびに運営会社名の変更に関するお知らせ★
2020年4月1日よりサービス名が「EMTG」から「チケプラ」へ変更となりました!
※現在ご利用いただいているサービス内容等に変更はございません。
以下より詳細をご確認ください。
https://emtg.jp/feature/information2020_1/

株式会社Tixplus
http://tixplus.jp/
====================

ぼく「フギギッ!!!!(憤死)」

◆やめろ

専門学校の生徒ですらこんなシステム組んだら錆びた鎌かなんかで喉掻っ切られて内臓売られて東京湾にポイーです。絶対におかしいベンダーであるゆえ、開発を発注したチケプラの責任者は早急に現開発会社を処断、断罪、ことによっては断首しつつ別の開発会社を引きずってきて改善案件を立ち上げるべし。大きな事故が起こるその前に。

パスワードは保存してない可能性もある。保存せずにメール送信にだけ使って捨てた可能性も少しある。それにしてもパスワードを送り返す意味なんてない。どういう要件なの。俺が上司だったら設計書持ってきた段階でそれを複合機で十万枚コピーしてガソリンぶっかけてお前の家のリビングで泣きながら燃やしてそれでマシュマロ焼いてビスケットに挟んで食う。

パスワードに記号を含められず英数しか入らんのも終わりすぎてるし、何するにもパスワード再入力させるのも意味わからん。そんなセッション管理は室町時代でもやっとらんわ。なんでそんな実装になるんだか理解ができかねます。こんなクソをケツから生成してるトイレ(開発案件)に放り込まれたら動悸してくるだろうし、頭抱えながら安らかな死を切望してしまうかもしれない。サスペンスホラーの類だよ。

メール本文にも「第三者が誤ってあなたのメールアドレスを入力してしまった可能性があります。」って書いてんじゃん。そんなメールにパスワードなぞ含めていいわけあるわけないわけ。りんご追分。つがる男は泣いたとさ。パスワード平文保存を泣いたとさ。

◆自社開発かも

採用情報|株式会社Tixplus

うーんこの。オワオワオワオワオワオワリなシステム作っておきながら随分と贅沢な採用サイトだね。今からお前の名前は千だ(意味不明)。

INTERVIEW | 採用情報|株式会社Tixplus

ありゃりゃ。顔出ししちゃってるよ。デジタルタトゥーだぞこんなもん。ハメ撮り流出したほうが万倍マシです。

ほんとに全員クビにしていいよ。よきにはからえ。なんにせよ採用担当のカス集め能力が高すぎるんで最初に吊ろう。Wi-Fiで首くくれ。ルンバくらいカスを集めてる。ルンバに改名しろテメーは。

あの仕様が通る環境はおかしい。こんな初歩の初歩が抜けてるんだから問題がここだけとは思えん。一事が万事と言いますし恐らく全領域について満遍なくクレイジーな事態に陥ってるはずだ。インシデント待ったなし。良識の欠けたシステムを作って平気なツラしている人間は信じられない。他の分野の良識が欠けていたって平然としてるんだろうがよ。

世界中の技術者がせっせことユーザーの笑顔のためにセキュリティ対応してんのに、チケプラのバカがパスワードをメールで送ってきやがった。その操作自体どこぞのメールサーバーの補助記憶装置に俺の大事なパスワードを複製保存しているってことです。メールがエンドツーエンド暗号化されてるとも思えない。ゆるさない。TPMとは何だったのか。長い時間、膨大なコストを支払って世界が積み上げてきた技術の結晶に対して仇をなす不埒な蛮行。不敬なり。ユーザーの安全を保証しようともせず、逆に日常を破壊しかねん地獄のシステムを放置する加害者集団チケプラ。世が世なら罰金刑です。罰金刑にならないほうがおかしい。

◆なんでパスワードを平文で保存したらダメなの?

平文で保存して良いわけがないから。温度感としては「なんで公園で遊んでいる子供を追いかけて殴っちゃダメなの?」と変わらない。パスワード平文やりとりは技術ではなく倫理の文脈です。職業倫理に悖ります。非人道的な所業です。愚行というよりかは反社会的行動に近い。

パスワードが平文で保存してあるのであれば、そのパスワードって読むことができるじゃない。読んでパスワードの一致を確認してるんでしょう。そして読めてしまうと以下の問題が発生する。

さらに言えば、パスワードの流出ってその会社だけの影響では済まない。同じパスワードを使っている他のサービスにまで影響が出るし、人間が設定しうるパスワードの傾向みたいなのを推測するためのソースにされる。

俺みたいなシステム開発おじさんからして、シークレット(ユーザーのパスワードみたいな秘密の情報)は視界の端にすら捉えたくもない。ゴキブリほど見たくない。氏名ですら見たくない。知りたくない触りたくない通信したくない。それをメールに乗せるとかサイコパスかよ。いみわかんない🥺。アサインされてきてこの仕様聞いたら震えるわマジで。こんなのに関わったら世界に迷惑をかけてしまう。

◆じゃあどうすればいいの

ごく素朴なIDとパスワードでの認証を考えてみる。

パスワードをそのまま保存してるんなら話は簡単。

  • パスワード設定時にIDとパスワードのマップを保存しといて
  • IDとパスワードのリクエストがきたら
  • IDで引いたパスワードと突合すればいい。やりぃ。

~1年後~

パスワードきゅん流出しちゃらめぇぇぇぇwwwwwwイクイクイクイクイクイクwwwwwwww(ドピュピュピュピュwwww

▼暗号化

いやぁひでぇ目にあった。じゃああれだ。ほかの人から読めない感じにして保存すればいい。暗号化だ。

  • パスワード設定時にそのパスワードを暗号にかけつつIDと暗号文のマップを保存しといて
  • IDとパスワードのリクエストがきたら
  • IDから引いた暗号文を復号して突合

やったぜ。

~1年後~

暗号化されたパスワードが流失したけど読めないだろwww

~3日後~

鍵が逆算されて全部のパスワード漏れちゃうぅぅぅぅwwwwwwwww

▼ハッシュ

いやはや。パスワードが分かる感じに戻せてはいけないわ。というので、暗号化したパスワードを保存しておくのも脆弱。元のパスワードが割り出せない形に変換して保存せねばならんわぁ。

不可逆な値にしとけば漏れても(ほぼ)戻せないから安心。計算機の速度がめちゃ速くなれば総当たりで候補をだせちゃうけど候補に過ぎないから安心。とはいえありがちなパスワードであったらありがちパスワード辞書を使えば戻せちゃったりもする。

最終的に保存すべくは「パスワードのハッシュ値」になる。ハッシュ関数という、元の文字列に戻せない感じに文字列を変換する処理があるから、それにパスワードを入力して出力を保存すればいい。ハッシュ関数内でパスワードの情報が一部欠落するから安心。

元のパスワードの情報が部分的に欠落するんで、別の文字列であっても同じハッシュ値を生成することがある。鳩の巣原理。だからパスワードはほぼ割り出せない。ハッシュ値の算出ロジックが漏れてもパスワードはわからない。異なる入力から同じハッシュ値が生成されることを衝突と呼ぶ。適したハッシュ関数を適切に利用すれば衝突の確率は天文学的な雰囲気を醸し出し芳醇な味わいと透き通った酸味が口中に広がることで週末の夜にビターな哀愁を添えてくれる。

  • パスワード設定時にパスワードをハッシュ関数にかけつつIDとハッシュ値のマップを保存しといて
  • IDとパスワードのリクエストがきたら
  • パスワードを同じハッシュ関数にかけて保存されているハッシュ値と突合
  • ヨシ!

みたいな。

実際にはもっと考慮せねばならん話があって、代表的なのはソルト。ソルトがないと、同じパスワードを設定した違うユーザーがいた時にハッシュ値も同じになってしまう。それの何が問題なのかとか詳しい説明は割愛。

ランダム値をソルトにするとかWikipediaには書いてあるけど、実態としてはユーザーIDをソルトにしちゃうことが多いんじゃなくって?

パスワードの取り扱いには考慮するべき事柄が多い。いろいろ自分で気にするのは面倒であるし実装が漏れるゆえ、用意されてるものを使ってください。パスワードからハッシュ値を生成するライブラリはサーバーフレームワークには標準搭載されているはず。ただし古い関数も残っているはずなんで最新を調べること。

2023年に生きる僕らはPBKDF2をチェケラ!

▼そのほか

あとはブルートフォース攻撃を防ぐために試行回数でロックしたり。CAPTCHAで「ロボットではありません」させたり。多要素認証したり。リプレイ攻撃を防ぐためにノンス入れたりワンタイムパスワード(略

シングルサインオンに頼るのもあり。そして俺はWebAuthnのパスワードレスな未来にかける。だからノートパソコンを買うときは生体認証できるものを選んでおけと言いたい。

◆結

こんな知識はその辺の湿った洞窟に棲んでる臭いWeb屋のハゲおじさんであれば当然に知っていることだし、「パスワードは平文では保存しちゃいけないらしい」とか一般市民ですら聞いたことある人もおるでしょう。散々ニュースになってたんだから。

おっぱいド素人がシステム組むんじゃねぇや。チケプラはマジで全員クビにしろ。金返せ。何らかの免許を剝奪しろ。該当する免許がないなら人権を剥奪しろ。