普遍的にユニークな識別子 – ウィキペディア

before-content-x4

a 普遍的に一意の識別子 uuid )は、コンピューターシステムの情報を識別するために使用される128ビット番号です。表現 グローバルに一意の識別子 ガイド )は、通常、Microsoft(ソフトウェア、レジストリなど)に関連して使用されます。

after-content-x4

標準的な方法に従って生成する場合、UUIDは実用的な目的のためにグローバルに明確に受け入れることができます。 UUIDが複製されている可能性はゼロではありませんが、衝突の可能性はほとんど無視できます。 UUIDの利点の1つは、他のほとんどの番号付けスキームとは対照的に、中央登録事務所からの独立または当事者間の調整です。

したがって、誰もがUUIDを作成し、それを使用して、識別子が他の何かを識別するためにすでに作成されている別の識別子を複製しないという可能な限り最大の確実性を持つ何かを識別することができます。したがって、UUIDを使用した独立した関係者によってマークされた情報は、後で単一のデータベースで要約するか、複製の無視できる確率で同じチャネルで転送されることができます。

UUIDとGUIDの使用は広範です。多くのコンピュータープラットフォームは、テキストプレゼンテーションの生成と解析をサポートしています。

分散コンピューティング環境(DCE)の一部としてOpen Software Foundation(OSF)によって標準化されており、現在RFC 4122で規制されています。

UUIDは16バイトの数字で構成され、16進数がリストされ、5つのグループに分かれています。たとえば、通常の形では、UUIDは次のようになります。

550E8400-E29B-11D4-A716-446655440000

UUIDは、ISO/IEC 11578:1996の一部として文書化されています。 IETFには、UUIDに基づいたものがあります RFC 4122 公開。

UUIDのオリジナル(バージョン1)生成スキームは、UUIDのMACアドレスをUUIDのMACアドレスとグレゴリオカレンダーの開始以来100ナノ秒間隔を生成するコンピューターのMACアドレスに添付することでした。実際には、実際のアルゴリズムはより複雑です。このスキームは、生成コンピューターのアイデンティティと生成時間の両方を明らかにするため、批判されました。

after-content-x4

生成のための他のいくつかのアルゴリズムが開発され、標準に流れ込まれました。これは、乱数(バージョン4 UUID)のみに基づいているスキーム、および任意の文字列からのUUID(例:DNSエントリ、ISO OID、「X.500著名な名前」、およびその他の意味論)またはバージョンのuUID(5 uuid)(5 uuid(5))など)からのスキームです。

Javaのリリース5.0は、128ビット幅UUIDを生成するクラスを提供します。クラスのAPIドキュメンタリー java.util.uud [初め] 参照する RFC 4122 。他の多くの言語は、UUIDの生成のための完成したルーチンも提供しています。

RFC 4122 UUIDの構造について説明します。個々のフィールドの名前は、元のUUIDバージョン1に基づいており、今日使用されているランダムに生成されたUUIDに対する歴史的関心のみです。

後にuuidを構築します RFC 4122
オフセット Feldname データ・タイプ 説明
0 time_low uint32_t タイムスタンプ、低品質の32ビット
4 time_mid uint16_t タイムスタンプ、ミドル16ビット
6 time_hi_and_version uint16_t フィールドの下部12ビットのタイムテンプルの最高のビット、上部4ビットはバージョンデザイナーとして機能します
8 clock_seq_high_and_reserved uint8_t クロックシーケンスの上位6ビット(フィールドの上位2ビットは、ここで説明するUUIDバリアントに常に含まれています ))
9 clock_seq_low uint8_t クロックシーケンスの8ビットを下げます
ノード uint48_t ノード識別番号をクリアします

フィールドの上位4ビット time_hi_and_version SO -Calledを与えます バージョン des uuid an。厳密に言えば、これはバージョンではなく、一種のUUIDサブタイプです。これまでに次の5つのバージョンが定義されています。

uuidバージョン後 RFC 4122
バージョン 説明
初め オリジナル、タイムラインベースのUUID
2 DCEセキュリティバージョン
3 名前ベース、Md5-Hasht
4 ランダムまたは擬似耐性uuid
5 Nambasiert、sha1-hasht

さらに、2022年の時点で次の表に示すように、他のバージョン番号の導入について説明します。 [2]

新しいUUIDバージョンの提案 [2]
バージョン 説明
6 タイムテンプル – バージョン1のようなものですが、データフィールドの異なる配置があります
7 タイムテンプル – Unix期間にベース
8 実験またはメーカーの固有のアプリケーション用

Time TempleベースのUUID [ 編集 | ソーステキストを編集します ]

タイムスタンプは、1582年10月15日以降の最後の100 ns間隔であった60ビット値です(今日のグレゴリオカレンダーの導入)。タイムスタンプをはっきりと保つために、システム時間を元に戻す必要がある場合、フィールドがあります クロックシーケンス 、これは1倍に増加するか、新しい(擬似)でランダムな値になります。ノードIDは、システムにMACアドレスがない場合、システムにインストールされているネットワークカードの1つまたは擬似許容値のMACアドレスになることを目的としています。 [3]

(擬似)ランダムに生成されたUUID(バージョン4) [ 編集 | ソーステキストを編集します ]

UUID形式によって固定値に設定されていないすべてのビットは、(擬似)ランダム値で占められています。

そのような生成されたUUIDの独自性は保証されていませんが、ランダムに生成可能なUUIDの総数は

2 122 5,316 9 de 36 {displayStyle 2^{122}約5 {、} 3169CDOT 10^{36}}

非常に優れているため、2つの同じUUIDを作成する確率は非常に少ないため、使用されるランダム数のアルゴリズムが等しい比率を提供します。したがって、UUIDは、中央の制御本体なしでは望ましいように生成され、同じUUIDが何か他のものに使用されるという関連する危険を実行せずにラベル付けに使用できます。 UUIDでマークされた情報は、設計者の競合を解消することなく、後で単一のデータベースでマージできます。

UUID標準の実装の例は次のとおりです。

名前ベースのUUID(バージョン3および5) [ 編集 | ソーステキストを編集します ]

UUIDは、これ以上詳細な名前から生成されます。名前は、割り当てられた名前ルーム内のオブジェクト、リソースなどの明確な識別子です。名前ルームのuuidに基づいて、uuidは、名前のuuidと名前自体からバイトを形成することにより、名前によって生成され、このバイテーゼシーケンスはmd5またはsha1で貯蔵されます。ハッシュは、利用可能なUUIDビットで定義された方法で定義されます。

RFC 4122 名前の部屋DNS、URL、ISO OID、および「X.500 Distinguished Name」用の例の名前のルームUUIDが含まれています。

たとえば、DNS名から www.example.org 次のように、UUIDバージョン5を生成できます。

  1. 「DNS」名の名前空間UUIDは6BA7B810-9DAD-11D1-80B4-00C04FD430C8です。
  2. 名前のByteFolgeはこのByteFolgeになります www.example.org 取り付けられた(脂肪のNamepace uuidからのバイト):
    0x6b 0xa7 0xb8 0x10 0x9d 0xad 0x11 0xd1 0x80 0xb4 0x00 0xc0 0x4f 0xd4 0x30 0xc8 0x77 0x77 0x77 0x2e 0x65 0x78 0x61 0x6d 0x70 0x6c 0x65 0x2e 0x6f 0x72 0x67
  3. このバイテーゼシーケンスは、SHA1で追跡できます。その結果、次のSHA1-HASH:74738FF55367E9589AEE98FFFDCD187694028007
  4. SHA1-Hashesのビットは、UUIDバージョン5の利用可能なビットに分割されます。
  5. Generierter UUID:74738ff5-5367- 5 958- 9 AEE-98FFFDCD1876。 (脂肪のマークされた場所には、UUIDバリアントとバージョンからの固定ビットが含まれています。)

a グローバルに一意の識別子 分散コンピューターシステムで使用される128ビット(16バイト)の数字です。 GUIDは、Universally University Identifier Standard(UUID)の実装を表します。

GUIDは通常、8-4-4-4-12形式です xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx それぞれが表示されます バツ 16進システムからのサインの場合、したがって、数0〜9または文字a -fである可能性があります。 B. 936DA01F-9ABD-4D9D-80C7-02AF85C822A8 (32文字/数字、バインディングスクリード36文字)。

3番目のブロックの4つの高品質ビット(左からカウント)は、GUIDのバージョンを示しており、そこからGUIDの生成に使用されるアルゴリズムのタイプを締めくくることができます。 4番目のブロックの最大3つの最大ビットは、使用されるバリアントを識別します。この例では、バージョンは4で、936DA01F-9ABD-の8のバリアントで見ることができます。 4 d9d- 8 0C7-02AF85C822A8。この例と同じバリアントは、このバリアントの最初の2ビットカウントのみがあるため、8、AまたはBの代わりにAまたはBでマークすることもできます。 [5]

ユニークな識別子を取得するための考えられる方法は、中央登録事務所による割り当てです。コンピューターネットワークカードの場合、基礎となるMACアドレスのためのこのような中央レジストリオフィスがすでにあります。コンピューターが一度にデータレコードのみを作成できると想定している場合、データセットのグローバルに明確な識別を開始コンピューターとタイムラインのMACアドレスから決定できます。バージョン1のガイドは、MACアドレスと計算システムの現在の時刻に基づいています。 MACアドレスの使用は議論の余地があります。これにより、特定のホストがGUIDの著者であるかどうかが明らかになるためです。これは、GUIDプロデューサーのプライバシーに影響を与える可能性があります。 [6]

現在のバージョン4では、MACアドレスはGUIDを作成するために使用されなくなりました。したがって、著者の閉鎖はほとんど不可能です。 GUIDの大部分は現在、多くの擬似であり、暗号化的に安全ではありません。

Microsoftは、GUIDとも呼ばれるコンポーネントオブジェクトモデルでUUIDSを使用しています。ただし、これらのIDは独自の仕様の一部を満たしています。ここで説明するUUIDは、フィールドの上位2ビットにあります clock_seq_high_and_reserved 認識可能。あなたには常に価値があります 。ヘキサデンツィのマリダル表現では、4番目の数字の最初の16進数桁は常に8の間です ヘックス およびb ヘックス 、Z。 B. 5945C961-E74D-478F- 8 AFE-DA53CF4189E3。 Microsoftが使用する歴史的なUUIDは、このフィールドの上位3ビットに価値があります 110 、したがって、六マル部門には、4番目の数字の最初の16進数があります。 ヘックス またはd ヘックス 。例:のガイド iunknown -ComのインターフェースはUUID 000000-0000-0000-を所有しています c 000-0000000046。

MicrosoftのWindowsオペレーティングシステムでは、たとえばオフィスドキュメント、COMインターフェイス、またはActive-Xコントロールを明確に識別するために、多くの場所でGUIDが使用されています。別のアプリケーションは、GUIDパーティションテーブルのデータキャリアとパーティションタイプの識別です。

同じUUIDが複数回生成され、さまざまな参照オブジェクトが割り当てられると、衝突が発生します。バージョン1と2では、標準の実装が意図的または意図せずに逸脱している場合にのみ衝突が発生する可能性があります。ハッシュベースのバージョン3および5、および擬似されたバージョン4では、衝突は実装に偏りなく作成することもできます。ただし、可能性は非常に低いため、通常無視できます。これの可能性は、誕生日の問題に従って計算できます。 [7] たとえば、計算する必要があるバージョン4 UUIDの数は2.71兆です。これは次のように計算されます。

n 初め 2 + 14+ 2 × ln 2 )) × 21222 71 × 18 {Displaystyle Napprox {frac {1} {2}}+{sqrt {{frac {1} {4}}+2times ln (2) Times 2}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}

1秒あたり10億UUIDを生成した場合、この数のUUIDを生成するには85年が必要です。

衝突を見つける確率のために作成する必要があるバージョン4 UUIDの最小数は、この式で作成する必要があります。

n 2 × 2122× ln 11p{displaystyle napprox {sqrt {2times 2 {{122} niges ln {frac {1} {1-p}}}。}。}。}。}。}。}。}。}。}。}。}。}。}。}。

したがって、10億から重複したものの可能性は103兆-4 UUIDです。

  1. クラス uuid Java API仕様Bei Oracle。
    (UUIDを作成するために使用されるアルゴリズムを含む詳細については、参照してください RFC 4122 :普遍的に一意の識別子(UUID)URNネームスペース、セクション4.2「時間ベースのUUIDを作成するためのアルゴリズム」。)
  2. a b 新しいUUIDフォーマット、ドラフトピーボディディスパッチ-New-Uuid-Format-04。 23. 2022年6月、 2022年6月30日にアクセス
  3. Time TempleベースのUUID(英語)のより詳細な説明
  4. Linuxプログラマのマニュアル。 ランダム(4)。の: Linuxプログラミングインターフェイス。 マイケル・ケリスク、2021年3月22日、 2021年10月19日にアクセス (英語)。
  5. リーチ、ポールJ.、食事、マイケル、ザルツ、リッチ: 普遍的に一意の識別子(UUID)urnネームスペース。 インターネットエンジニアリングタスクフォース、ジュリ2015、 2018年3月22日にアクセス (英語)。
  6. ピーター・シエリング、クリスチャン・パーソン: ビッグブラザービル。 Microsoftの秘密ID番号は、故障しています 。の: Cではありません 。 Heise Verlag、ハノーバー1999年6月( オンライン )。
  7. パウロ・イエス、カルロス・バケロ、ポーラ・アルマエイダ: モバイル環境でのID生成。 の: repositorium.sdum.uminho.pt。 テンプレート:Web/一時を引用します
after-content-x4