Penyulitan dalam MySQL: Putaran Kunci Utama

Dalam menjangkakan permulaan pendaftaran baru untuk kursus "Pangkalan data" kami terus menerbitkan satu siri artikel tentang penyulitan dalam MySQL.

Dalam artikel sebelumnya dalam siri ini, kita telah membincangkan cara penyulitan kunci induk berfungsi. Hari ini, berdasarkan pengetahuan yang diperoleh sebelum ini, mari kita lihat putaran kunci utama.

Putaran kunci induk melibatkan penjanaan kunci induk baharu dan menyulitkan semula kekunci ruang meja (yang disimpan dalam pengepala ruang meja) dengan kunci baharu ini.

Mari kita ingat kembali rupa pengepala ruang jadual yang disulitkan:

Penyulitan dalam MySQL: Putaran Kunci Utama

Daripada artikel sebelumnya, kami tahu bahawa pelayan membaca pengepala semua ruang jadual yang disulitkan pada permulaan dan mengingati ID KUNCI terbesar. Contohnya jika kita mempunyai tiga jadual dengan KEYID = 3 dan satu jadual dengan KEYID = 4, maka ID kunci maksimum ialah 4. Mari kita panggil ID KUNCI ini - ID KUNCI MAX.

Cara putaran kunci induk berfungsi

1. Pengguna melaksanakan ALTER INNODB MASTER KEY.

2. Pelayan meminta cincin kunci untuk menjana kunci induk baharu dengan pelayan UUID dan KEYID bersamaan dengan satu tambah MAXUTAMAID. Jadi kita mendapat id kunci induk sama dengan INNODBKUNCI-UUID-(MAXUTAMAID + 1). Selepas penjanaan kunci induk berjaya, MAX KEY ID ditambah dengan satu (iaitu MAXUTAMAID=MAXUTAMAID + 1).

3. Pelayan mengimbas semua ruang jadual yang disulitkan dengan kunci induk, dan untuk setiap ruang jadual:

  • menyulitkan kunci ruang meja dengan kunci induk baharu;

  • mengemas kini id kunci kepada MAX baharuUTAMAID;

  • jika UUID berbeza daripada UUID pelayan, maka kemas kini UUID pelayan.

Seperti yang kita ketahui, ID Kunci Induk yang digunakan untuk menyahsulit jadual terdiri daripada UUID dan ID KUNCI dibaca daripada pengepala ruang meja. Apa yang kami lakukan sekarang ialah mengemas kini maklumat ini dalam pengepala penyulitan ruang jadual supaya pelayan menerima kunci induk yang betul.

Jika kita mempunyai ruang meja dari lokasi yang berbeza, seperti sandaran yang berbeza, maka ia mungkin menggunakan kekunci induk yang berbeza. Semua kunci induk ini perlu diambil dari repositori apabila pelayan dimulakan. Ini boleh melambatkan permulaan pelayan, terutamanya jika kedai kunci sebelah pelayan digunakan. Dengan putaran kunci induk, kami menyulitkan semula kekunci ruang meja dengan kunci induk tunggal yang sama untuk semua ruang meja. Pelayan kini harus menerima hanya satu kunci induk semasa permulaan.

Ini, sudah tentu, hanya kesan sampingan yang menyenangkan. Tujuan utama putaran kunci induk adalah untuk menjadikan pelayan kami lebih selamat. Sekiranya kunci induk entah bagaimana dicuri daripada bilik kebal (contohnya, daripada Pelayan Bilik Kebal), adalah mungkin untuk menjana kunci induk baharu dan menyulitkan semula kekunci ruang meja, membatalkan kekunci yang dicuri. Kami selamat...hampir.

Dalam artikel sebelumnya, saya bercakap tentang bagaimana sebaik sahaja kunci ruang meja dicuri, pihak ketiga boleh menggunakannya untuk menyahsulit data. Dengan syarat terdapat akses kepada cakera kami. Jika kunci induk dicuri dan anda mempunyai akses kepada data yang disulitkan, anda boleh menggunakan kunci induk yang dicuri untuk menyahsulit kekunci ruang meja dan mendapatkan data yang dinyahsulit. Seperti yang anda lihat, putaran kunci induk tidak membantu dalam kes ini. Kami menyulitkan semula kunci ruang meja dengan kunci induk baharu, tetapi kunci sebenar yang digunakan untuk menyulitkan/menyahsulit data tetap sama. Oleh itu, "penggodam" boleh terus menggunakannya untuk menyahsulit data. Tadi saya membayangkan itu Pelayan Percona untuk MySQL boleh melakukan penyulitan semula ruang meja yang benar, bukan hanya penyulitan semula kunci ruang meja yang mudah. Ciri ini dipanggil benang penyulitan. Walau bagaimanapun, fungsi ini masih percubaan pada masa ini.

Putaran kunci induk berguna apabila kunci induk dicuri, tetapi tiada cara untuk penyerang menggunakannya dan menyahsulit kekunci ruang meja.

Daftar untuk pelajaran demo percuma.

Baca lebih lanjut:

Sumber: www.habr.com