Android版Chromeのバージョン32が出ました。
新機能の1つに「Chromeでのデータ使用量を最大50%節約。[設定]>[帯域幅の管理]>[データ使用量を節約]で設定できます。
」とあります。
データ使用量を節約
この機能が有効になっている場合、アクセスしたページはダウンロード前にGoogleサーバで圧縮されます。SSL対応のページとシークレットモードのページは対象外です。
また、Chromeのセーフブラウジングシステムが悪意のあるページを検出し、フィッシング、不正なソフトウェア、有害なダウンロードからユーザーを保護します。
この機能により、携帯通信会社が提供するプレミアムデータサービスへのアクセスに問題が生じる可能性があります。
Googleによる通信量削減プロキシみたいなものでしょうか。設定をONにして、ちょっとパケットをのぞいてみたいと思います。
Chromeの設定でONにすると圧縮前と後の通信量のグラフが表示され、データ量の削減率が表示されます。
Client Helloを見る
無線APとルータの間にPCを挟み、パケットを取得できる環境を用意してみました。さっそくNexus 5で通信してみます。今回はブックマークにあった@niftyのトップページを表示しました。
取得できたパケットのほとんどはSSL/TLSでしたので、SSL/TLSの通信開始時のやり取りの1つであるClient Helloを見てみましょう。
Ethernet II, Src: **********:**:** (**:**:**:**:**:**), Dst: ******:**:** (**:**:**:**:**:**)
Internet Protocol Version 4, Src: 192.168.137.247 (192.168.137.247), Dst: 173.194.126.193 (173.194.126.193)
Transmission Control Protocol, Src Port: 36650 (36650), Dst Port: https (443), Seq: 1, Ack: 1, Len: 428
Secure Sockets Layer
TLSv1 Record Layer: Handshake Protocol: Client Hello
Content Type: Handshake (22)
Version: TLS 1.0 (0x0301)
Length: 423
Handshake Protocol: Client Hello
Handshake Type: Client Hello (1)
Length: 419
Version: TLS 1.0 (0x0301)
Random
Session ID Length: 32
Session ID: 1360dfc4ac91332336de25f6ebc8ce16e803afb1963ba38a...
Cipher Suites Length: 70
Cipher Suites (35 suites)
Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004)
Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005)
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)
Cipher Suite: TLS_ECDH_ECDSA_WITH_RC4_128_SHA (0xc002)
Cipher Suite: TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA (0xc004)
Cipher Suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA (0xc005)
Cipher Suite: TLS_ECDH_RSA_WITH_RC4_128_SHA (0xc00c)
Cipher Suite: TLS_ECDH_RSA_WITH_AES_128_CBC_SHA (0xc00e)
Cipher Suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA (0xc00f)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_RC4_128_SHA (0xc007)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
Cipher Suite: TLS_ECDHE_RSA_WITH_RC4_128_SHA (0xc011)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033)
Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039)
Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032)
Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038)
Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)
Cipher Suite: TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA (0xc003)
Cipher Suite: TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA (0xc00d)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA (0xc008)
Cipher Suite: TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (0xc012)
Cipher Suite: TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (0x0016)
Cipher Suite: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013)
Cipher Suite: TLS_RSA_WITH_DES_CBC_SHA (0x0009)
Cipher Suite: TLS_DHE_RSA_WITH_DES_CBC_SHA (0x0015)
Cipher Suite: TLS_DHE_DSS_WITH_DES_CBC_SHA (0x0012)
Cipher Suite: TLS_RSA_EXPORT_WITH_RC4_40_MD5 (0x0003)
Cipher Suite: TLS_RSA_EXPORT_WITH_DES40_CBC_SHA (0x0008)
Cipher Suite: TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA (0x0014)
Cipher Suite: TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA (0x0011)
Cipher Suite: TLS_EMPTY_RENEGOTIATION_INFO_SCSV (0x00ff)
Compression Methods Length: 1
Compression Methods (1 method)
Extensions Length: 276
Extension: server_name
Type: server_name (0x0000)
Length: 24
Server Name Indication extension
Server Name list length: 22
Server Name Type: host_name (0)
Server Name length: 19
Server Name: clients4.google.com
Extension: ec_point_formats
Extension: elliptic_curves
Extension: SessionTicket TLS
clients4.google.com(このパケットの場合173.194.126.193)は同期機能を提供するサーバのようです。これはデータ圧縮とは関係なさそうです。
Ethernet II, Src: **********:**:** (**:**:**:**:**:**), Dst: ******:**:** (**:**:**:**:**:**)
Internet Protocol Version 4, Src: 192.168.137.247 (192.168.137.247), Dst: 74.125.23.211 (74.125.23.211)
Transmission Control Protocol, Src Port: 37836 (37836), Dst Port: https (443), Seq: 1, Ack: 1, Len: 196
TLSv1.2 Record Layer: Handshake Protocol: Client Hello
Content Type: Handshake (22)
Version: TLS 1.0 (0x0301)
Length: 191
Handshake Protocol: Client Hello
Handshake Type: Client Hello (1)
Length: 187
Version: TLS 1.2 (0x0303)
Random
Session ID Length: 0
Cipher Suites Length: 50
Cipher Suites (25 suites)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039)
Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038)
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)
Cipher Suite: TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (0xc012)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA (0xc008)
Cipher Suite: TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (0x0016)
Cipher Suite: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013)
Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
Cipher Suite: TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 (0x00a2)
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x009e)
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033)
Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032)
Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)
Cipher Suite: TLS_ECDHE_RSA_WITH_RC4_128_SHA (0xc011)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_RC4_128_SHA (0xc007)
Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005)
Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004)
Cipher Suite: TLS_EMPTY_RENEGOTIATION_INFO_SCSV (0x00ff)
Compression Methods Length: 1
Compression Methods (1 method)
Extensions Length: 96
Extension: server_name
Type: server_name (0x0000)
Length: 24
Server Name Indication extension
Server Name list length: 22
Server Name Type: host_name (0)
Server Name length: 19
Server Name: proxy.googlezip.net
Extension: ec_point_formats
Extension: elliptic_curves
Extension: SessionTicket TLS
Extension: signature_algorithms
Extension: next_protocol_negotiation
Extension: Unknown 30031
proxy.googlezip.net(74.125.23.211)へのアクセスも見られました。これがおそらくデータ圧縮で通信しているサーバでしょう。
Ethernet II, Src: **********:**:** (**:**:**:**:**:**), Dst: ******:**:** (**:**:**:**:**:**)
Internet Protocol Version 4, Src: 192.168.137.247 (192.168.137.247), Dst: 210.131.4.165 (210.131.4.165)
Transmission Control Protocol, Src Port: 57025 (57025), Dst Port: https (443), Seq: 1, Ack: 1, Len: 190
Secure Sockets Layer
TLSv1 Record Layer: Handshake Protocol: Client Hello
Content Type: Handshake (22)
Version: TLS 1.0 (0x0301)
Length: 185
Handshake Protocol: Client Hello
Handshake Type: Client Hello (1)
Length: 181
Version: TLS 1.2 (0x0303)
Random
Session ID Length: 0
Cipher Suites Length: 50
Cipher Suites (25 suites)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039)
Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038)
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)
Cipher Suite: TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (0xc012)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA (0xc008)
Cipher Suite: TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (0x0016)
Cipher Suite: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013)
Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
Cipher Suite: TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 (0x00a2)
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x009e)
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033)
Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032)
Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)
Cipher Suite: TLS_ECDHE_RSA_WITH_RC4_128_SHA (0xc011)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_RC4_128_SHA (0xc007)
Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005)
Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004)
Cipher Suite: TLS_EMPTY_RENEGOTIATION_INFO_SCSV (0x00ff)
Compression Methods Length: 1
Compression Methods (1 method)
Extensions Length: 90
Extension: server_name
Type: server_name (0x0000)
Length: 18
Server Name Indication extension
Server Name list length: 16
Server Name Type: host_name (0)
Server Name length: 13
Server Name: www.nifty.com
Extension: ec_point_formats
Extension: elliptic_curves
Extension: SessionTicket TLS
Extension: signature_algorithms
Extension: next_protocol_negotiation
Extension: Unknown 30031
@niftyのページ内にあるSSLのコンテンツへは直接アクセスしています。
グラフを見てみると10%の通信量削減(圧縮)がされたと出ていました。画像の圧縮もあるとのことなので、コンテンツの内容によっては50%削減も不可能ではないでしょう。
もう1点気になる点
パケットの内容を見ていて、それぞれのサーバへのClient HelloのTLSバージョンとCipher Suitesの数がまちまちな点に気付きました。
- clients4.google.com: TLSv1, 35 suites
- proxy.googlezip.net: TLSv1.2, 25 suites
- www.nifty.com: TLSv1, 25 suites
後者2つはTLSバージョンが異なりますが、Cipher Suitesの数と順番は同じです。対比のために表にしてみました。
Cipher Suites | clients4.google.com: TLSv1, 35 suites | proxy.googlezip.net: TLSv1.2, 25 suites www.nifty.com: TLSv1, 25 suites |
TLS_RSA_WITH_RC4_128_MD5 (0x0004) |
✔ |
✔ |
TLS_RSA_WITH_RC4_128_SHA (0x0005) |
✔ |
✔ |
TLS_RSA_WITH_AES_128_CBC_SHA (0x002f) |
✔ |
✔ |
TLS_RSA_WITH_AES_256_CBC_SHA (0x0035) |
✔ |
✔ |
TLS_ECDH_ECDSA_WITH_RC4_128_SHA (0xc002) |
✔ |
|
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA (0xc004) |
✔ |
|
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA (0xc005) |
✔ |
|
TLS_ECDH_RSA_WITH_RC4_128_SHA (0xc00c) |
✔ |
|
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA (0xc00e) |
✔ |
|
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA (0xc00f) |
✔ |
|
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA (0xc007) |
✔ |
✔ |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009) |
✔ |
✔ |
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a) |
✔ |
✔ |
TLS_ECDHE_RSA_WITH_RC4_128_SHA (0xc011) |
✔ |
✔ |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) |
✔ |
✔ |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) |
✔ |
✔ |
TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033) |
✔ |
✔ |
TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039) |
✔ |
✔ |
TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032) |
✔ |
✔ |
TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038) |
✔ |
✔ |
TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a) |
✔ |
✔ |
TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA (0xc003) |
✔ |
|
TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA (0xc00d) |
✔ |
|
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA (0xc008) |
✔ |
✔ |
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (0xc012) |
✔ |
|
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (0x0016) |
✔ |
✔ |
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013) |
✔ |
✔ |
TLS_RSA_WITH_DES_CBC_SHA (0x0009) |
✔ |
|
TLS_DHE_RSA_WITH_DES_CBC_SHA (0x0015) |
✔ |
|
TLS_DHE_DSS_WITH_DES_CBC_SHA (0x0012) |
✔ |
✔ |
TLS_RSA_EXPORT_WITH_RC4_40_MD5 (0x0003) |
✔ |
|
TLS_RSA_EXPORT_WITH_DES40_CBC_SHA (0x0008) |
✔ |
|
TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA (0x0014) |
✔ |
|
TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA (0x0011) |
✔ |
|
TLS_EMPTY_RENEGOTIATION_INFO_SCSV (0x00ff) |
✔ |
✔ |
TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c) |
|
✔ |
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x009e) |
|
✔ |
TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 (0x00a2) |
|
✔ |
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b) |
|
✔ |
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f) |
|
✔ |
clients4.google.comへの通信はChromeの機能によるものであり、ユーザのブラウジングではないため異なると推測できます。後者2つはユーザのブラウジングですが、通信量削減機能による振り分けが行われいるので、ここでも通信仕様が変わっているのかな?
コメントする