「Amazon Dash Button」(以下、Dash Button)はアマゾンジャパンが2016年12月5日に発売したデバイス。ボタンを押すだけで自動的に無線LAN経由でインターネットに接続し、Amazon.co.jpに、特定の商品を注文するデバイスである。利用者は「Amazonプライム」会員に限られており、500円で販売されているが、初回注文時に500円の割り引きが適用されるので、実質無料で利用できる。今回は「IoT開発キットで遊ぼう!」の番外編として、執筆者であるGMOインターネットの技術者、新里祐教氏にDash Buttonを遊んでもらった。前編はLAN通信をハックしてプレゼンソフトのページめくりボタンに転用する。

 ボタンを押すと、amazon.co.jpから指定した商品が2時間以内で届く――。Amazon Dash Button(以下、Dash Button)の正しい使い方はこれだ。しかしDash Buttonはそれだけに使うにはもったいないくらいの高機能ハードウエアである。単体で無線LANに接続でき、TLSを利用した暗号化通信もこなせる。そこで、通信を解析した結果を基に、ほかの応用を試みた。第1弾の今回は、Dash Buttonでプレゼンテーションソフト「Keynote」のページめくりに挑戦する。

Amazon Dash Button
Amazon Dash Button
[画像のクリックで拡大表示]
Amazon Dash Buttonの内部基板
Amazon Dash Buttonの内部基板
[画像のクリックで拡大表示]
「Amazon Dash Button」はボタンを押すだけで特定の商品をAmazon.co.jpに発注できるデバイス(左)、中身は500円で販売されているとは思えないほど高機能だ(右)
▼TLS SSLの後継プロトコルで、電子証明書を使った相互認証と暗号化を実施する。TLSはTransport Layer Securityの略。

 まずDash Buttonの動作をおさらいしておこう。ボタンを押すとDash Buttonが起動して、無線LANに接続する。最初にDHCPを使って、自身が利用するIPアドレスを取得する。次に無線LANルーターと通信するため、無線LANルーターのIPアドレスに対応するMACアドレスを要求する(ARP要求)。その後、DNSサーバーに対して、二つのIPアドレスの名前解決を依頼する。一つは購入リクエストを送信するための「dash-button-jp.amazon.com」。もう一つは時刻情報を取得するためのNTPサーバーである「time-c.nist.gov」である。こうした準備作業を終えて、時刻を設定して購入リクエストを送信する。NTPサーバーにアクセスしているのは、TLSで利用する電子証明書の期限が切れていないかをチェックするなどの目的があると考えられる。

Amazon Dash Buttonの通信シーケンス
[画像のクリックで拡大表示]
Amazon Dash Buttonの通信シーケンス
▼DHCP 端末が利用するIPアドレスを、サーバーが管理して動的に割り当てる仕組み。DHCPはDynamic Host Configuration Protocolの略。
▼MACアドレス 無線LANやイーサネットにおける所在地。MACはMedia/Medium Access Controlの略。
▼ARP 無線LANやイーサネットにおける所在地であるMACアドレスを知る仕組み。インターネットのアドレスであるIPアドレスは、無線LANが利用するMACアドレスに変換しないと通信できない。ARPはAddress Resolution Protocolの略。
▼DNSサーバー IPネットワークで名前解決をするためのサーバー。DNSはDomain Name Systemの略。
▼名前解決 「www.amazon.com」や「www.nikkeibp.co.jp」といったドメイン名から、IPアドレスを知ること。
▼NTPサーバー IPネットワークで時刻合わせをするためのサーバー。NTPはNetwork Time Protocolの略。