改ざん防止を言うならTLSを使えばいいじゃない

前回以下の記事を書きました。

通信最適化の問題を見るにつけ、あまりに進歩がなくて懐かしい気分に

ただ、通信各社の気持ちもわからんでもないです。
現在モバイルデバイスの普及台数からすると、膨大なトラフィックとなっているでしょうし、通信に使用できる電波帯域も有限です。
おまけに限られた帯域の中からさらに割り当てをもらえるかどうかも一筋縄ではいかない以上、いかに節約するかを考えたくなると思います。

でも、やっぱり途中で改ざんするのは良くないなーと思います。
やるならユーザーに明示的に選択できるようにしておかないと。
理想的にはデフォルト圧縮ありだとしても、Web等から簡単に解除できるようにしておくとか、そういう選択肢が必要だと思います。

まあ通信会社の方ばかり言うのもなんなので、コンテンツ提供側へちょっと意見というか。

いろんなとこでのやりとりなんか見ててちょっと疑問なのが、ゲームなんかでデータ破損や改ざんに対して神経をとがらせてファイルのhashなんか確認している割に、なんで通信にTLS使ってないんだろという点。
実際その辺りどうなんでしょうか?

TLSを使用しない理由として考えられる理由は

  1. CPU性能が足りない
  2. 実装や運用、トラブルシューティングが面倒
  3. 証明書が必要だけど取得が面倒あるいは費用を払えない
ぐらいしか思いつきませんがどうなんでしょうね。

1番については今どきのCPUはTLSの暗号化を効率的に処理できる仕組みが入っていたりしますし、そもそもCPU性能自体も相当上がっています。
ゲームなんかでリアルタイム処理したい場合なんかはCPUの負荷下げたいとかレイテンシーの問題も考えられますが、そんなゲームはほんの一握りですし、そんなギリギリの設計してたらコンシューマ機ならともかく有象無象の端末が存在するスマホでは、正常動作する機種が限定されてしまうので営業的にありえません。

2番についてはまあわからんでもないです。
ただ、一昔前ならともかく、今は用意されている通信ライブラリ叩くだけで使えるので、これも言い訳としては弱すぎです。

3番は…すいません、無理やり理由ひねり出しましたが、こんなもの理由にならないですね。
EV-SSL証明書取ろうとかならともかく、単純なデータ改ざん防止程度の用途なら、それこそ申し込んで数分で発行される証明書で十分です。
ついでにワイルドカード証明書あたり取っておけばいろいろ使いまわせます。
費用についてもたかだか数千円。無料のものさえあります。
全く言い訳にならないですね。

実際のところ、導入してない理由は2番が一番ありそうだなーと思います。
ただ、これはちょっと実装側の甘えかなと思います。

TLSの導入は、データ改ざんで通信会社を批判するならそれぐらいやっとけと思います。
ゲーム等のアプリだと、実装上の問題が多少あるとしても上記の通りですし、Webサーバーで導入するのならもっと簡単です。

全部の通信をTLSに乗せてしまえば、通信会社もその中のデータについて手を出せなくなります。
そうすればサーバー側から送出したデータを途中で勝手に圧縮されるということもなくなります。
まあ、実際のところTLSがあっても途中経路でゴニョゴニョする方法がないわけではないですが、その場合は暗号化通信を勝手に解いて通信の秘密を犯したと、真正面から通信会社を論破できますし、そのリスクは通信会社が最もよくわかっていると思います。

ということで、改ざんされたくない場合はみんなTLS使おう。


コメント