分散システムにおける
UUID(汎用一意識別子)の
利用拡大
(・∀・)キムティ♪@kimtea
第3回JAZUG静岡勉強会
2014年04月26日(土)
自己紹介
• 荒浪 一城(アラナミ カズキ)
– 1983(昭和58)年11月24日生まれ、30歳
– 静岡県島田市出身
– なぜか本名よりも、(・∀・)キムティ♪が有名
– Seasarで有名な比嘉さんに、飲み会で(・∀・)キ
ムティ♪の本名、知らないもんwwwって言わ
れたでござるorz
UUID(汎用一意識別子)
• 分散システム上で、ユニークなIDを生成し
てくれるため、IDの重複や衝突(コリジョ
ン)の心配をしなくても良い
– 8422741B-8A41-4b42-B0C4-943CE460DFB7
• UUID
–8-4-4-12の構成で、16バイトの数値
–2の122乗通り
RFC4122
• RFC4122では、 5 種類のタイプを定めている
– 1 The time-based version specified in this document.
– 2 DCE Security version, with embedded POSIX UIDs
– 3 The name-based version specified in this document that uses MD5
hashing.
– 4 The randomly or pseudo-randomly generated version specified in
this document.
– 5 The name-based version specified in this document that uses SHA-
1 hashing.
– A Universally Unique IDentifier (UUID) URN Namespace(RFC4122)
• 主に、乱数をベースとしたバージョン4が使われ
る
Algorithms for Creating a Time-Based UUID
• UUID の作成に使用されるアルゴリズムなどの詳
細については、「RFC 4122: A Universally Unique
IDentifier (UUID) URN Namespace」 のセクション
4.2「Algorithms for Creating a Time-Based UUID」
を参照
• https://tools.ietf.org/html/rfc4122#section-4.2
• 時間ベース UUID
• DCE セキュリティー UUID
• 名前ベース UUID
• ランダム生成 UUID
UUIDの具体例(1)
• マイクロソフト
– GUID(グローバル一意識別子)
– 実際に数多くのWebサービスで使用している
• 例:Outlook(Hotmail)など
– GUID生成ツール
• GUIDGen
• http://www.microsoft.com/en-us/download/details.aspx?id=17252
UUIDの具体例(2)
• Java SE 6、7、8
– J2SE5.0から導入
– java.util.UUID
• randomUUID a type 4 (pseudo randomly generated)
UUID
• nameUUIDFromBytes a type 3 (name based) UUID
なぜJavaでは、
2種類のUUIDしかサポートしていないのか?
• 個人的な見解による仮説では・・・
– UUIDの生成アルゴリズムには、ハッシュ関数が使わ
れている
– 暗号の研究者によって、MD5では異なるファイルか
ら同じハッシュ値を算出することや、MD5のハッ
シュ値から元のパスワードを求めることに成功して
いる
– SHA-1にも、同様に衝突(コリジョン)の問題がある
ことが報告されている
– 今後、10年間は安心して使用することができる暗号
技術評価プロジェクト(CRYPTREC、クリプトレッ
ク)による「電子政府推奨暗号リスト」から、MD5
やSHA-1は削除されている
• http://www.cryptrec.go.jp/
Apache CassandraのUUID
• LexicalUUIDType
– The LexicalUUIDType is used for a non-time based
comparison. It is compared lexically, by byte value.
• TimeUUIDType
– The TimeUUIDType is used for a time based
comparison. It uses a version 1 UUID.
まとめ
• UUIDは、分散システムにおける一意性を
確実に担保する手段として使われている
• マイクロソフトのGUID(グローバル一意識別
子)
• Apache Cassandraでも、使われている
• UUIDを意識しながら、URLを見ていると意外に
多い
ご静聴ありがとうございます

分散システムにおけるUUID(汎用一意識別子)の利用拡大