LINE Beacon端末の仕様

このLINE Beaconの仕様は、LINE Beaconを利用するためにビーコン端末を導入したい法人ユーザー向けの仕様です。ビーコン端末は本仕様に準拠する必要があります。

LINE Simple Beaconと異なり、LINE Beaconのパケットには、セキュリティを保護する仕組みとしてSecure messageが含まれます。

LINE Beacon対応端末の要件

LINE Beaconに対応するビーコン端末とは、Bluetooth® Low Energy Version 4.0とAppleのiBeaconに対応し、LINE Beaconパケットをアドバタイズできるビーコン端末です。具体的には、以下の条件を満たす必要があります。

  • LINE Beaconパケットをアドバタイズする。
  • SHA-256とXOR(排他的論理和)の演算でハッシュ化したデータからSecure messageを生成する。
  • Secure messageを15秒間隔で更新する。
  • 端末固有のHWIDが割り当てられ、端末本体にHWIDが表示されている。

LINE Beaconパケット

LINEがビーコン端末を迅速に発見できるよう、Generic access profileで規定されるBroadcaster role(BLUETOOTH SPECIFICATION Version 4.0 Vol 3, Part C Section 2.2.2.1)に従って、ビーコン端末を制御する必要があります。

パケットの送信間隔

LINE Beaconパケットは、152.5ミリ秒間隔で送信することを強く推奨します。

アドバタイジングパケットの仕様

アドバタイジングパケットは、以下の図のように、3つのAD structureから構成してください。

LINE Beaconパケット

アドバタイジングパケットの仕様は以下のとおりです。値カラムの16進数の値は、説明カラムの括弧書きの値と同等です。

オクテットフィールド説明
00Length0x02第1のAD structureのデータ長(2バイト)
01AD type0x01第1のAD structureのAD type(Flags)
02AD data0x06Flags(LE General Discoverable Mode、BR/EDR Not Supported)
03Length0x03第2のAD structureのデータ長(3バイト)
04AD type0x03第2のAD structureのAD type(Complete list of 16-bit UUIDs available)
0516-bit UUID0x6F次のバイトと合わせてLINEの16ビットUUID(0xFE6F)を示します。
0616-bit UUID0xFE前のバイトと合わせてLINEの16ビットUUID(0xFE6F)を示します。
07Length0x11第3のAD structureのデータ長(17バイト)
08AD type0x16第3のAD structureのAD type(Service Data - 16-bit UUID)
0916-bit UUID0x6F次のバイトと合わせてLINEの16ビットUUID(0xFE6F)を示します。
1016-bit UUID0xFE前のバイトと合わせてLINEの16ビットUUID(0xFE6F)を示します。
11Frame type0x02フレームタイプ(LINE Beacon)
12-16HWID端末固有の値ビーコン端末の5バイトの固有ID。詳しくは、「HWID」を参照してください。
17Measured TxPower端末固有の値LINEがインストールされているデバイスとビーコン端末の距離が1メートルの場合のRSSI(受信信号強度インジケータ)。iBeaconパケットと同様の値を設定します。詳しくは、iBeaconのドキュメントを参照してください。
RSSIのデータを利用しない場合は、0x7Fを指定します。
18-21Message authentication code変動値メッセージ認証のための4バイトコード
22-23Masked timestamp変動値2バイトのマスクしたタイムスタンプ
24Battery level変動値バッテリー残量
25-30Non-significant part0x00未使用部。すべて0x00を指定します。

Secure messageを生成する

Secure messageは、LINE Beaconパケットの改ざんやリプレイ攻撃を防ぐために使用します。Secure messageは、Message authentication code、Masked timestamp、およびBattery levelを連結した7バイトのデータです。ビーコン端末から発信されたSecure messageは、LINE経由でLINEプラットフォームに送信され、検証されます。

Secure messageを生成するには、SHA-256で生成したハッシュ値に対してXOR(排他的論理和)演算を3回実行します。以下の図は、Secure messageの生成の流れを示します。生成に必要なパラメータについては、「Secure messageに必要なパラメータ」を参照してください。

Secure messageの生成アルゴリズム

Secure messageは、以下の手順に従って生成します。

1. Message authentication codeを生成する

  1. 以下の項目を順に連結し、SHA-256を使って32バイトのハッシュ値を生成します。
  2. ハッシュ値の前半の16バイトと後半の16バイトの排他的論理和を求めます。
  3. 前のステップで得た値の前半の8バイトと後半の8バイトの排他的論理和を求めます。
  4. 前のステップで得た値の前半の4バイトと後半の4バイトの排他的論理和を求めます。

これで、Message authentication codeが完成します。

2. Masked timestampを生成する

タイムスタンプの冒頭から6バイトをマスクして、末尾の2バイトを残します。これがMasked timestampです。

3. 項目を連結する

Secure messageを生成するには、以下の項目を順に連結します。

これで、Secure messageが完成します。Secure messageを生成するためのビーコン端末の開発とテストについては、「Secure message生成のサンプルデータとコード」を参照してください。

Secure messageに必要なパラメータ

Secure messageを生成するには、以下のパラメータが必要です。

HWID、Lot key、およびVendor keyは、LINEヤフー株式会社が生成し管理するデータです。これらのパラメータを取得するには、LINEヤフー株式会社の貴社担当者までお問い合わせください。申請フォームを提出し、承認されると、パラメータが発行されます。

Battery level

Battery levelとは、バッテリー残量のことです。以下の表に従って、残量を指定してください。

10進数値16進数値説明
00x00不明、または外部電源に接続されています。
10x01残量0%。完全放電の状態です。
20x02残量10%
100x0A残量90%
110x0B残量100%。完全充電の状態です。
(12-255)0x0C-0xFF将来の利用のため予約されています。使用しないでください。

HWID

HWIDはLINEヤフー株式会社によって発行される、ビーコン端末のハードウェアIDです。HWIDは16進数表記の10文字の文字列です。これをバイト配列に変換し、5バイトのバイナリデータとしてビーコン端末に書き込みます。また、HWIDはビーコン端末本体に表示してください。

Lot key

Lot keyはLINEヤフー株式会社によって発行される、ロットごとに割り当てるキーです。Lot keyは16文字の文字列です。HWIDの場合と同様にバイト配列に変換し、8バイトのバイナリデータとしてビーコン端末に書き込みます。

Timestamp

符号なし64ビット整数型のタイムスタンプです。

  • ビーコン端末の電源を初めて投入した時点からインクリメントを開始します。
  • 0から開始し、15秒ごとにインクリメントします。たとえば、ビーコン端末の電源を投入してから1分後のタイムスタンプは4になります。
  • ビーコン端末の電源を再投入するときにタイムスタンプを0にリセットせず、電源が切れる前の時点のタイムスタンプを引き続きインクリメントしてください。
  • 端末のHWIDを新たに発行されたHWIDに書き換える場合、タイムスタンプは再び0から開始するようにリセットしてください。

Vendor key

Vendor keyはLINEヤフー株式会社によって発行される、製造者ごとに割り当てるキーです。Vendor keyは16進数表記の8文字の文字列です。HWIDの場合と同様にバイト配列に変換し、4バイトのバイナリデータとしてビーコン端末に書き込みます。

iBeaconパケット

LINE Beaconデバイスが付近にあることをiOSデバイスに通知するため、iBeaconパケットを必ず送信してください。以下のLINE Beacon特有のパラメータをiBeaconパケットに含めてください。

パラメータ
UUIDD0D2CE24-9EFC-11E5-82C4-1C6A7A17EF38
Major0x4C49
Minor0x4E45

iBeaconパケットのAD structureと送信間隔については、『Proximity Beacon Specification』を参照してください。このドキュメントは、Apple DeveloperサイトのiBeaconのセクションからダウンロードできます。