Bijou64:可変長整数エンコーディングの新方式
原題: Bijou64: A variable-length integer encoding
なぜ重要か
データ同期プロトコルの安全性と効率性を同時に向上させる技術革新として、分散システムやブロックチェーン分野の発展に寄与する可能性。
Ink & Switchが開発したBijou64は、SubductionのCRDT同期プロトコル向けの可変長整数エンコーディング方式。セキュリティ上の署名検証バグ修正を目的として開発され、各数値を一意の方法でのみ表現できる設計により、従来のLEB128より数倍高速に動作することが判明した。
Ink & SwitchのBrooklyn Zelenakaが開発したBijou64は、SubductionのCRDT(Conflict-free Replicated Data Type)同期プロトコルで使用される可変長整数エンコーディング方式である。この技術は、微妙な署名検証バグを修正することを主目的として開発されたが、結果的に一般的なLEB128方式よりも数倍高速な処理速度を実現した。
従来のLEB128方式では、数値「0」を0x00として表現できるほか、0x80 0x00や0x80 0x80 0x00など複数の方法で表現可能だった。この非正規化により、署名データの処理において問題が発生していた。同じ数値でもバイト列が異なれば異なる署名となり、データ圧縮や重複排除の際に困難を生じていた。
Bijou64は各数値を一意の方法でのみ表現する構造的制約を持つ。この設計により、デコーダでの実行時チェックが不要となり、ASN.1やPKCS#1 v1.5、Mozilla NSS、GnuTLSなどで過去に発生した正規化攻撃を根本的に防ぐことができる。
この方式の名前は「小さな宝石」を意味するフランス語「bijou」に由来し、設計者らは偶然の一致だとしている。セキュリティ向上を目的とした設計制約が、結果的に高性能なエンコーディング方式の実現につながった事例として注目される。