

BLEアドレスで存在しないビットパターンをまとめた
この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。
BLEのアドレス(6バイト48ビット)は基本16進数の並びだけど、仕様上「存在しない(生成されない)」ビットパターンがいくつかある。整理してみた。
前提
BLEアドレスはPublicとRandomの2系統。禁止パターンがあるのはRandom系のみで、Publicアドレス(IEEE管理のOUI)には規則的な禁止パターンはない。
Randomアドレスは先頭の上位2ビットで3つのサブタイプに分かれる。
11→ Static Random Address10→ Resolvable Private Address(内部的にはprandの上位2ビットが01固定、little-endian表記だと10になる)00→ Non-Resolvable Private Address
存在しないパターン
残りのビットが全部1、または全部0になるパターンは禁止。
これがStatic Random、Resolvable Private(のprand部分)、Non-Resolvable Privateの3つ全部に共通するルール。
- Static Random Address(上位2ビット
11):残り46ビットがオール1・オール0はNG。つまりFF:FF:FF:FF:FF:FFと、上位2ビットだけ11で残りが全部0のパターン(C0:00:00:00:00:00)は存在しない。 - Non-Resolvable Private Address(上位2ビット
00):同様に残り46ビットのオール1・オール0がNG。00:00:00:00:00:00と、上位2ビットのみ00で残りが全部1のパターン(3F:FF:FF:FF:FF:FF)は存在しない。 - Resolvable Private Address:24ビットのprandのうち上位2ビットは固定、残り22ビットは乱数だけどオール1・オール0はNG。ただし下位24ビットはhash値(IRKとprandから計算される値)なので、prand側の禁止と違って全体のアドレスパターンとして単純に列挙できるものではない。
まとめ
- 禁止されているのは「Random系アドレスのランダム部分がオール1またはオール0になるケース」だけ
FF:FF:FF:FF:FF:FFと00:00:00:00:00:00は、どのRandomサブタイプとしても生成され得ない完全な無効パターン- Publicアドレスにはこの手の禁止パターンは存在しない