Bahasa Melayu

Alat pembangun · UUID penjana

UUID Berasaskan Nama (v3 dan v5): ID Deterministik Daripada Ruang Nama

· Latar belakang

uuid kriptografi pelayar-apis

Ruang nama dan nama digabungkan, dicincang dengan SHA-1 dan bait terhasil diformatkan sebagai UUIDv5
Ilustrasi vektor ToolAcre asal

Apabila rekod luaran yang sama mesti sentiasa mendapat pengecam yang sama, UUID rawak tidak akan berfungsi. Versi 3 dan 5 UUID mencincang ruang nama dan nama ke dalam ID yang stabil; siaran ini menerangkan cara dan masa untuk menggunakannya.

Mengimport semula pelanggan yang sama dua kali — masalah penduaan yang diselesaikan oleh ID deterministik

Saluran paip import data menerima rekod pelanggan daripada sistem luaran dengan ID luaran yang stabil dalam sistem tersebut. Jika anda menjana UUID rawak baharu untuk setiap import dijalankan, mengimport pelanggan yang sama dua kali menghasilkan dua pengecam yang berbeza dan rekod pendua. Penduaan ini mengalir ke hiliran ke dalam sistem pelaporan, pengebilan dan sokongan. Jika anda memperoleh UUID daripada ID luaran pelanggan dan ruang nama yang stabil yang mewakili sumber import anda, setiap import menghasilkan UUID yang sama untuk pelanggan yang sama, membolehkan anda mengenal pasti dan mengemas kini rekod sedia ada. Determinisme ini ialah ciri penentu UUID v3 dan v5: ia tidak dijana secara bebas tetapi diperoleh daripada input, dan input yang sama sentiasa menghasilkan UUID yang sama.

Ruang nama tambah nama — cara input digabungkan dan dicincang, dan sebab ruang nama menghalang perlanggaran antara sumber yang berbeza

A v3 atau v5 UUID berasal daripada tiga komponen: ruang nama UUID (biasanya dipratentukan), nama (sebarang rentetan bait), dan algoritma cincang (MD5 untuk v3, SHA-1 untuk v5). Gabungkan 16 bytes daripada ruang nama UUID dengan UTF-8 bait nama, cincang gabungan, ambil yang pertama 16 bytes daripada keluaran cincang, dan tafsirkan bait tersebut sebagai a UUID dengan versi nibble ditetapkan kepada 3 atau 5. Ruang nama membahagikan ruang ID: v5 UUID daripada DNS ruang nama tidak pernah bertembung dengan UUID v5 dari URL ruang nama. RFC 9562 mentakrifkan empat ruang nama yang telah ditetapkan: oleh DNS nama, oleh URL, oleh OID, dan oleh X.500 nama terbilang. Organisasi boleh mencipta ruang nama mereka sendiri dengan menjana v4 UUID.

MD5 dalam v3 dan SHA-1 dalam v5 — sebab cincangan yang lemah boleh diterima di sini, kerana ID itu bukan kawalan keselamatan

Versi 3 menggunakan MD5 dan versi 5 menggunakan SHA-1, pilihan bertarikh pada tarikh spesifikasi dan pelaksanaan yang tersedia. Untuk UUID berasaskan nama, perbezaan ini tidak penting kerana fungsi cincang bukanlah sempadan keselamatan atau kawalan kriptografi. UUID tidak membuktikan keaslian atau integriti; ia sahaja menukar rentetan panjang berubah-ubah menjadi nilai 128-bit tetap. Model serangan tidak relevan kerana UUID disimpan dan dibandingkan sebagai nilai legap, bukan sebagai bukti atau kawalan keselamatan. Pelaksanaan baharu harus menggunakan v5 (SHA-1) dan bukannya v3 (MD5), bukan atas sebab keselamatan yang menarik tetapi kerana v5 ialah standard moden dan tersedia secara meluas.

Ruang nama yang dipratentukan — DNS, URL, OID dan X.500 dan masa untuk mencetak sendiri

RFC 9562 menentukan tepat empat UUID ruang nama yang dipratentukan dengan perwakilan bait tertentu: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 untuk DNS, 6ba7b811-9dad-11d1-80b4-00c04fd430c8 untuk URL, 6ba7b812-9dad-11d1-80b4-00c04fd430c8 untuk OID dan 6ba7b814-9dad-11d1-40cb4d untuk X.500 nama terbilang. V5 UUID yang diperolehi daripada ruang nama DNS dan nama www.example.com akan sentiasa sama dan tidak akan bertembung dengan v5 UUID daripada ruang nama URL. Menggunakan ruang nama yang dipratentukan memastikan kesalingoperasian: jika berbilang pasukan secara bebas menggunakan v5 dengan ruang nama DNS, mereka menjana UUID yang sama untuk nama DNS yang sama. Memilih atau mencetak ruang nama adalah sebahagian daripada reka bentuk skema.

Contoh yang berkesan — memperoleh v5 UUID secara konsep daripada ruang nama URL dan rekod URL, langkah demi langkah

Dapatkan v5 UUID secara konseptual daripada URL ruang nama dan nama https://example.com/api/users/42. Ruang nama UUID sebagai 16 bytes ialah 6b a7 b8 11 iklan 9h 11 d1 80 b4 00 c0 4f d4 30 c8. Namanya ialah UTF-8 rentetan https://example.com/api/users/42, iaitu 30 bytes. Gabungkan bait ruang nama (16) dan bait nama (30) untuk mendapatkan 46 bytes jumlah. Kirakan SHA-1 hash, menghasilkan a 20cincangan -bait. Ambil yang pertama 16 bytes dan mentafsirkannya sebagai a UUID dengan versi nibble ditetapkan kepada 5 dan bit varian ditetapkan kepada RFC standard. Mengiranya semula dengan input yang sama menghasilkan hasil yang sama. Kebanyakan pembangun menggunakan bahasa mereka UUID perpustakaan untuk mengira v5.

Di mana corak pecah — apabila nama berubah, apabila ruang nama tidak konsisten merentas pasukan dan apabila input adalah rahsia

UUID berasaskan nama menganggap bahawa nama itu stabil dan konsisten merentas sistem dan larian import. Jika rekod luaran yang sama mempunyai nama yang berbeza dalam sistem yang berbeza, penjanaan v5 daripada setiap nama menghasilkan UUID yang berbeza dan gagal mengenal pasti orang yang sama. Jika ruang nama tidak dipersetujui merentas pasukan (setiap pasukan mencetak ruang nama sendiri untuk sumber yang sebenarnya sama), mereka menjana UUID yang berbeza dan gagal memadankan rekod. Jika input adalah data sensitif, menjana v5 UUID bermakna UUID ialah nilai deterministik awam yang boleh dicari oleh sesiapa sahaja jika mereka mengetahui inputnya. Determinisme terputus apabila input berubah atau takrifan ruang nama tidak konsisten.

Perkara yang tidak dilindungi ini — penjana ToolAcre diambil daripada CSPRNG, jadi ID berasaskan nama memerlukan perpustakaan UUID bahasa anda

ToolAcre menjana UUID v4 sahaja, diambil daripada penjana selamat kriptografi pelayar untuk kebebasan. Derivasi UUID berasaskan nama memerlukan pustaka UUID bahasa anda atau pelaksanaan yang mengira SHA-1 dan memformatkan hasil dengan betul. Siaran ini menerangkan konsep dan kes penggunaan; melaksanakan penjanaan v5 adalah mudah dalam mana-mana bahasa dengan akses kepada perpustakaan kriptografi standard. Mekanik terbitan v5 adalah mudah; cabarannya ialah menyepadukannya ke dalam skema sistem di mana ruang nama adalah stabil, nama itu konsisten dan pendekatannya didokumentasikan dengan baik untuk pasukan anda. Pasukan pembangunan harus mendokumentasikan pilihan ruang nama.

Bawa pulang: deterministik apabila anda memerlukannya, rawak sebaliknya — gunakan v5 untuk pemetaan stabil dan penjana ToolAcre untuk semua yang sepatutnya tidak dapat dielakkan

Gunakan v5 untuk pemetaan stabil antara pengecam luaran dan rekod dalaman anda. Determinisme menghalang import pendua dan menjadikan rekod padanan merentas sistem mudah dan boleh dipercayai. Jangan gunakan UUID berasaskan nama untuk pengecam yang perlu tidak dapat dielakkan atau untuk senario yang memerlukan kerahsiaan dan rahsia yang kukuh. ToolAcre menjana UUID v4 rawak untuk pengecam yang mesti bebas dan berbeza tanpa kebolehramalan. Apabila sistem anda memerlukan ID deterministik yang memetakan input kepada pengecam tetap, pustaka UUID bahasa anda boleh mengiranya. Determinisme ialah ciri yang berkuasa apabila anda mengawal input..