艦これの通信内容にポカーンとした話

プレゼンテーション「艦隊これくしょんの通信がとてもじゃないけど見てられない」から、そのものすごい通信内容を解析するまでの流れです。いつきさん、ご意見&ご解析ありがとうございました!
27

きっかけはこれでした。

takayan | タテ線の人 @takayan1964

これは…… @ityuki さんあたりにご意見を伺いたく。 RT @kankore_news: 艦隊これくしょんの通信がとてもじゃないけど見てられない http://t.co/huHEZ6jlDx 正直読んでもよくわからなかったけどなんだかやばいらしいというのはわかった。

2014-01-22 13:42:21

まずはセキュリティについていつきさんの見解。

いつき @ityuki

@takayan1964 @kankore_news 何を今更……。まあ、トークンにハッシュかけろよってのには、激しく同意

2014-01-22 13:50:08
いつき @ityuki

@takayan1964 @kankore_news そもそも、2万人ユーザーいたら大成功だったゲームのインフラだからなぁ。そろそろ色々見直すべきかな。今日の修正で何が入るかが気になる所

2014-01-22 13:54:16
いつき @ityuki

@takayan1964 良く分からない、ってあったので、とても分かりやすく説明すると、毎回、IDとパスワードをそのまま暗号化も何もせずに送ってるのと同義。

2014-01-22 13:56:22
いつき @ityuki

@takayan1964 ただ、ほとんどのケースで実害は出にくいと思う。元々、固定回線でやるように、という注意書きがある。固定回線かつ日本国内からのアクセスの場合、固定回線≒特定のプロバイダ直結なので、国内の回線しか経由せず、途中で傍受される可能性はかなり低い。

2014-01-22 14:24:56
いつき @ityuki

@takayan1964 外で経路暗号化無しまたは弱い暗号化のWiFi接続、無料WiFi、海外からのアクセス、海外経由になるアクセス(でかい会社とか)、野良proxy使ってるとアウトだけど。ネカフェは、根本的にもっと先に考える必要ある。

2014-01-22 14:28:27
いつき @ityuki

@takayan1964 なのでまぁ、何とかして欲しいけど、今すぐやらないと死ぬって事は考えにくい。

2014-01-22 14:31:28
いつき @ityuki

@takayan1964 簡単な方法は、トークンは安全に渡されてると考えて(そこだけはhttps)、クライアント側で毎回32文字の乱数文字列と、時間、md5(トークン¥0乱数文字列¥0時間)を送れば割と緩和されるかな。猫が出そうだが(笑)

2014-01-22 14:39:54
いつき @ityuki

余りにも暇なので、トークン以外のデータをサーバーに保存せずに、正しいクライアントから送られてきたデータかどうかを確認する方法を考えてるのだか、トークン書き換え以外の方法だと無理じゃね? という結論になりそう。トークン書き換えはスゴイ遅いと予測されるので、あかん。

2014-01-22 15:01:03
いつき @ityuki

@takayan1964 よく考えたら、乱数文字列いらんな。クライアント時間と、md5(トークン¥0送った時間の文字列)で十分が

2014-01-22 15:11:28
をかのゆ @okanoyou

@ityuki @takayan1964 httpsにしてない、ってのはともかくとして、このトークンて、このセッションで作られたのじゃなく、固定のなん? わしが見てきたのは、セッションごとに何らかの仕組みでトークンが作られるものばかりだが

2014-01-22 18:46:28
いつき @ityuki

@okanoyou @takayan1964 細かくは見てないけど、この資料を信じるなら少なくともプレイ中は固定ですなー。で、ログイン的な処理は1回しかしてないから、起動時にトークン交換してない限りはずっと一緒ぽい。詳細は未チェック。

2014-01-22 18:48:42
をかのゆ @okanoyou

@ityuki @takayan1964 プレイ中固定はまあ、ふつうかもしれんが、ずっと同じなのは… 今日も明日もあさっても同じトークンでいぢくれるってことだし

2014-01-22 18:50:06
いつき @ityuki

@okanoyou @takayan1964 ログイン毎に変わると信じたいところ。http接続closeしてる+他のPCでログインログアウトした後、戻ってきて続きをしようとするとエラーになるから、プレイ中固定・再ログインで変更な気はするけど。

2014-01-22 18:51:27

で、解析の結果……

ここから「重い」という話題に変わります。

いつき @ityuki

#艦これ これはサーバ-側に半端無い負荷かかるよ……w プロトコル変えようよ……w

2014-01-22 19:53:40
いつき @ityuki

@okanoyou @takayan1964 プレイ開始時に毎回違うトークン作ってる。で、そのトークンは毎回付けられる。気になるのは、トークン作成時もhttpなのだが、ちゃんと中間で抜けなくしてあるのかは気になるけど、大丈夫……と思う。多分、

2014-01-22 19:57:23
いつき @ityuki

@ityuki @okanoyou @takayan1964 なので、あの本文中で言うほどの危険はない。……トークン有効なまま放置したらヤバイかもしれんが、時々入り直してればほぼ問題無い。トークン新規作成時の危険性は未検証。

2014-01-22 20:00:03
いつき @ityuki

@ityuki @okanoyou @takayan1964 ただまぁ、 #艦これ 運営が言うように、これはひどい(笑) 1個毎にバージョン情報とかついてるw 普通は{ ver: 1, {データ}}と思うが、{{データ1, ver: 1},{データ2,ver: 1}...}だw

2014-01-22 20:07:06
いつき @ityuki

@ityuki @okanoyou @takayan1964 バージョン情報以外にも沢山外に出すべきデータがある……w classの(ほぼ一緒の)オブジェクト単位で出力してるぽい感じw こりゃ重いよw

2014-01-22 20:08:35
いつき @ityuki

さて、 #艦これ のデータ眺めて笑ってる場合では無く、普通にゲームしようw ※ブラウザ以外からはアクセスしていない、通常アクセスのみでデータ眺めてた

2014-01-22 20:10:08
をかのゆ @okanoyou

@ityuki @takayan1964 1/60秒単位で送ってるわけじゃないからそれほど気にならないのかもしれない

2014-01-22 21:53:57