
マークルツリー入門 - Git・証明書の透明性・データ同期を支えるハッシュの木
約12分
データの塊をハッシュの木にまとめるマークルツリーの仕組みを、ブラウザで動くデモ付きで説明します。根のハッシュ1つで全体を表せる理由、log2(n)個のハッシュで済む包含証明、RFC 9162の0x00/0x01によるドメイン分離、Bitcoinの奇数個の扱いが招いたCVE-2012-2459、Git・Certificate Transparency・Cassandraでの使われ方までまとめます。

データの塊をハッシュの木にまとめるマークルツリーの仕組みを、ブラウザで動くデモ付きで説明します。根のハッシュ1つで全体を表せる理由、log2(n)個のハッシュで済む包含証明、RFC 9162の0x00/0x01によるドメイン分離、Bitcoinの奇数個の扱いが招いたCVE-2012-2459、Git・Certificate Transparency・Cassandraでの使われ方までまとめます。

ブルームフィルタ(Bloom filter)を基礎から解説します。偽陽性はあるが偽陰性は無い性質、mビット配列とk個のハッシュ関数によるadd/query、偽陽性率と最適kの導出、O(k)の計算量、Cassandra/RocksDBなどの実運用、Counting/Scalable/Cuckooといった変種までを一次ソースで整理します。

コンシステントハッシュ法(Consistent Hashing)を基礎から解説します。単純な mod N ハッシュがノード数変更でほぼ全キー再配置になる問題、ハッシュリングと時計回り割り当て、仮想ノードによる負荷平準化、再配置がなぜ平均 K/N で済むのか、そして Jump Consistent Hash・Rendezvous(HRW)・Maglev といった発展、DynamoDB/Cassandra/memcached(ketama) での実運用まで、原論文を一次ソースに整理します。

MD5やSHA-1で十分だと思っていたが、Argon2を知って世界が変わった。パスワードハッシュ化の正解がここにある。