UUID / GUIDの形式がなぜですか?


14

グローバル一意識別子(GUID)は、セキュリティ上の理由があると思われる特定の形式のグループ化された文字列です。

GUIDは、最も一般的には、次のような5つのグループに分けられた16進数のシーケンスとしてテキストで記述されます。

3F2504E0-4F89-11D3-9A0C-0305E82C3301

GUID / UUID文字列がXバイト長の16進数を使用してエンコードされたランダムバイトだけではないのはなぜですか?

このテキスト表記には、ハイフンで区切られた次のフィールドが含まれます。

| Hex digits | Description
|-------------------------
| 8            | Data1
| 4            | Data2
| 4            | Data3
| 4            | Initial two bytes from Data4
| 12           | Remaining six bytes from Data4

UUID標準にはいくつかのバージョンもあります。

バージョン4 UUIDは通常、128ビットの生の配列として内部的に保存され、通常は次のような形式で表示されます。

uuid:xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx


4
いいえ、セキュリティ上の理由ではない可能性があります。ビット文字列はダッシュの有無にかかわらず同じエントロピーを持っています。「ここに16進数の文字があります。md5..またはsha1 .. no、wait、it ......」などと言うのではなく、GUIDを一目で認識できるようにすると思います。また、GUIDは通常、単なるランダムバイトではありません。



最新バージョンに固有の(バージョン4)
NH。

回答:


11

RfC4122から– Universally Unique IDentifier(UUID)URN名前空間

UUID文字列表現の正式な定義は、次のABNFによって提供されます。

UUID                   = time-low "-" time-mid "-"
                         time-high-and-version "-"
                         clock-seq-and-reserved
                         clock-seq-low "-" node

したがって、これらは元の時刻およびMACベースのUUIDとは異なるフィールドです。RFCは、それがApollo Network Computing Systemに由来すると述べています。


2

ダッシュ付きのテキスト表現は、Guid / UUIDの4つのフィールドを5つのグループに分けています(最後のフィールドは最初の2バイトの後に分離されています)。 Guid Text Encoding

表現はセキュリティとは何の関係もありません。さまざまな計算方法があり、必ずしも安全な識別子とは限らない一意の識別子を意図しています。

フィールドが分​​割される最も可能性の高い理由は(標準では言及されていませんが)、コンポーネント部分の可読性/分離のためです。


2
それは、フォーマットが何であるか、すでに質問にあった情報を教えてくれます。OPが求めていた理由は説明されていません。
キーストンプソン

1
読みやすく識別しやすいように、それらをフィールドに分離しています。たぶん最後のものは、その長さのためにさらに分割されました。
ターンキー

1
論理的。同じ理由で、電話番号、クレジットカード番号、およびその他の多くの長い番号が、印刷または書き留められるとグループに分けられます。
12
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.