PostgreSQL 18 memperkenalkan sokongan asli untuk UUIDv7, varian UUID berasaskan cap masa yang direka untuk menyelesaikan isu prestasi jangka panjang dengan indeks pangkalan data. Walaupun penambahan ini menjanjikan prestasi yang lebih baik untuk beban kerja intensif tulis, ia telah mencetuskan perdebatan sengit dalam komuniti pembangun mengenai implikasi keselamatan dan privasi dalam mendedahkan maklumat cap masa dalam pengecam.
Pecahan Struktur UUIDv7:
- 48 bit: Cap masa Unix (ketepatan milisaat)
- 12 bit: Ketepatan sub-milisaat atau data rawak
- 62 bit: Nilai rawak
- Jumlah entropi: ~74 bit (tidak termasuk cap masa)
![]() |
---|
PostgreSQL 18 memperkenalkan UUIDv7, meningkatkan prestasi sambil menimbulkan perbincangan keselamatan |
Kebimbangan Keselamatan Teras: Kebocoran Maklumat
Kontroversi utama berpusat pada cap masa terbenam UUIDv7, yang mendedahkan bila rekod pangkalan data dicipta. Tidak seperti UUIDv4 tradisional yang mengandungi data rawak semata-mata, UUIDv7 menggunakan 48 bit untuk cap masa Unix dan 74 bit untuk nilai rawak. Pilihan reka bentuk ini telah memecahbelahkan pembangun sama ada faedah prestasi mengatasi risiko privasi yang berpotensi.
Beberapa pembangun telah membangkitkan kebimbangan mengenai pendedahan maklumat melalui cap masa ini. Data masa boleh mendedahkan kecerdasan perniagaan seperti corak pertumbuhan pengguna, lonjakan aktiviti, atau jadual operasi. Dalam persekitaran kompetitif, metadata ini boleh memberikan pandangan tentang prestasi syarikat yang organisasi lebih suka merahsiakannya.
Perbandingan Keselamatan mengikut Versi UUID:
- UUIDv4: 122 bit rawak, tiada kebocoran maklumat
- UUIDv7: 74 bit rawak, mendedahkan cap masa penciptaan
- UUIDv1: Mengandungi alamat MAC dan cap masa (warisan)
- Kerumitan serangan: 4.7 × 10²² kombinasi yang mungkin untuk bahagian rawak UUIDv7
Masalah Tank Jerman Dikunjungi Semula
Perbincangan komuniti telah menarik persamaan dengan Masalah Tank Jerman yang terkenal dari Perang Dunia Kedua, di mana pasukan Bersekutu menganggarkan pengeluaran tank Jerman dengan menganalisis nombor siri. Begitu juga, cap masa UUIDv7 boleh membocorkan maklumat tentang corak aktiviti sistem dan kadar pertumbuhan.
Anda telah melemahkan sistem anda. Untuk selama-lamanya, setiap orang yang menulis sebarang kod yang memindahkan data dari jadual ini ke tempat lain perlu ingat bahawa kunci utama mendedahkan masa penciptaan.
Kebimbangan meluas melampaui kelemahan keselamatan langsung kepada pertimbangan privasi yang lebih luas. Apabila UUID didedahkan dalam URL atau API, maklumat cap masa menjadi boleh diakses oleh sesiapa yang boleh memerhati pengecam ini.
Senario Serangan Praktikal
Walaupun mempunyai 62 bit rawak yang tinggal selepas cap masa, pembangun bimbang tentang serangan korelasi. Jika penyerang tahu kira-kira bila pengguna mencipta akaun dan boleh mengecilkan UUID berpotensi berdasarkan masa, entropi yang tinggal mungkin tidak memberikan perlindungan yang mencukupi dalam semua senario.
Walau bagaimanapun, ramai pembangun berhujah kebimbangan ini terlalu dibesar-besarkan untuk kebanyakan aplikasi. Realiti matematik adalah jelas: walaupun dengan pengetahuan cap masa yang sempurna, penyerang memerlukan berbilion tekaan sesaat selama beberapa dekad untuk memaksa brute satu UUID.
Variasi Pelaksanaan Menambah Kerumitan
Gambaran keselamatan menjadi lebih keruh apabila mempertimbangkan pelaksanaan UUIDv7 yang berbeza. Walaupun PostgreSQL 18 memberikan jaminan yang kuat dengan ketepatan sub-milisaat 12-bit, pelaksanaan lain berbeza dengan ketara. Pelaksanaan Python 3.14, sebagai contoh, hanya menggunakan 32 bit rawak, mengurangkan ruang carian secara dramatik untuk penyerang berpotensi.
Ketidakkonsistenan ini merentasi platform bermakna pembangun tidak boleh menganggap sifat keselamatan seragam apabila bekerja dengan UUIDv7 merentasi sistem dan perpustakaan yang berbeza.
Ciri-ciri Utama PostgreSQL 18:
- Fungsi
uuidv7()
asli dengan jaminan monotonik - Alias
uuidv4()
untukgen_random_uuid()
- Fungsi pengekstrakan cap masa yang dikemas kini untuk UUIDv7
- Pecahan cap masa sub-milisaat 12-bit untuk pengurutan
- Sokongan I/O tak segerak (peningkatan prestasi 2-3x)
- Versi protokol wayar baharu 3.2
Pendekatan Alternatif dan Cadangan
Komuniti telah mencadangkan beberapa penyelesaian untuk organisasi yang bimbang tentang kebocoran cap masa. Ini termasuk menggunakan fungsi penyulitan atau HMAC untuk mengaburkan pengecam yang menghadap awam, melaksanakan UUID rawak berasingan untuk API luaran sambil mengekalkan UUIDv7 untuk operasi dalaman, atau menggunakan pendekatan hibrid yang mengubah UUIDv7 kepada UUIDv4 pada sempadan API.
Untuk kebanyakan aplikasi, konsensus mencadangkan bahawa UUIDv7 berfungsi dengan baik untuk operasi pangkalan data dalaman di mana prestasi penting, manakala pengecam rawak berasingan mengendalikan keperluan yang menghadap awam di mana privasi adalah penting.
Perdebatan ini menyerlahkan ketegangan asas dalam reka bentuk pangkalan data moden: mengimbangi pengoptimuman prestasi dengan perlindungan privasi. Apabila PostgreSQL 18 menghampiri keluaran September, pembangun perlu menilai dengan teliti sama ada faedah UUIDv7 sejajar dengan keperluan keselamatan dan privasi khusus mereka.
Rujukan: UUIDv7 Comes to PostgreSQL 18