MySQL'de Şifreleme: Ana Anahtar Döndürme

Kurs için yeni bir kaydın başlaması beklentisiyle "Veri tabanı" MySQL'de şifreleme hakkında bir dizi makale yayınlamaya devam ediyoruz.

Bu dizinin bir önceki makalesinde tartışmıştık ana anahtar şifreleme nasıl çalışır. Bugün, daha önce edinilen bilgilere dayanarak, ana tuşların dönüşüne bakalım.

Ana anahtar döndürme, yeni bir ana anahtar üretilmesini ve tablo alanı anahtarlarının (tablo alanı başlıklarında saklanan) bu yeni anahtarla yeniden şifrelenmesini içerir.

Şifrelenmiş bir tablo alanının başlığının nasıl göründüğünü hatırlayalım:

MySQL'de Şifreleme: Ana Anahtar Döndürme

Önceki makaleden, sunucunun başlangıçta tüm şifrelenmiş tablo alanlarının başlıklarını okuduğunu ve en büyük KEY ID'sini hatırladığını biliyoruz. Örneğin, KEY içeren üç tablomuz varsaID = 3 ve KEY ile bir tabloID = 4, o zaman maksimum anahtar ID'si 4 olacaktır. Buna ANAHTAR ID - MAKS ANAHTAR ID diyelim.

Ana anahtar döndürme nasıl çalışır?

1. Kullanıcı, ALTER INNODB MASTER KEY'i çalıştırır.

2. Sunucu, anahtarlığın sunucu UUID ve KEY ile yeni bir ana anahtar oluşturmasını ister.Kimlik bir artı MAX'a eşittirANAHTARİD. Böylece, INNODB'ye eşit ana anahtar kimliği elde ederiz.ANAHTAR-UUID-(MAKS.ANAHTARKimlik + 1). Ana anahtarın başarılı bir şekilde oluşturulmasının ardından, MAX KEY ID bir artırılır (yani MAXANAHTARID=MAKSANAHTARKimlik + 1).

3. Sunucu, ana anahtarla şifrelenmiş tüm tablo alanlarını ve her tablo alanı için tarar:

  • tablo alanı anahtarını yeni ana anahtarla şifreler;

  • anahtar kimliğini yeni MAX olarak güncellerANAHTARİD;

  • UUID, sunucu UUID'sinden farklıysa sunucu UUID'sini güncelleyin.

Bildiğimiz gibi, bir tablonun şifresini çözmek için kullanılan Ana Anahtar Kimliği, tablo alanı başlığından okunan bir UUID ve bir ANAHTAR Kimliğinden oluşur. Şimdi yaptığımız şey, sunucunun doğru ana anahtarı alması için tablo alanı şifreleme başlığındaki bu bilgiyi güncellemektir.

Farklı yedeklemeler gibi farklı konumlardan tablo alanlarımız varsa, bunlar farklı ana anahtarlar kullanabilir. Sunucu başlatıldığında tüm bu ana anahtarların havuzdan alınması gerekecektir. Bu, özellikle bir sunucu tarafı anahtar deposu kullanılıyorsa, sunucunun başlatılmasını yavaşlatabilir. Ana anahtar döndürme ile tablo alanı anahtarlarını, tüm tablo alanları için aynı olan tek bir ana anahtarla yeniden şifreliyoruz. Sunucu artık başlangıçta yalnızca bir ana anahtar almalıdır.

Bu, elbette, sadece hoş bir yan etkidir. Ana anahtar rotasyonunun temel amacı, sunucumuzu daha güvenli hale getirmektir. Ana anahtarın bir şekilde kasadan (örneğin Vault Sunucusundan) çalınması durumunda, yeni bir ana anahtar oluşturmak ve çalınan anahtarı geçersiz kılarak tablo alanı anahtarlarını yeniden şifrelemek mümkündür. Güvendeyiz... neredeyse.

Önceki bir makalede, bir tablo alanı anahtarı çalındığında, üçüncü bir tarafın onu verilerin şifresini çözmek için nasıl kullanabileceğinden bahsetmiştim. Diskimize erişim olması şartıyla. Ana anahtar çalınırsa ve şifrelenmiş verilere erişiminiz varsa, tablo alanı anahtarının şifresini çözmek ve şifresi çözülmüş verileri almak için çalınan ana anahtarı kullanabilirsiniz. Gördüğünüz gibi, ana anahtarın dönüşü bu durumda yardımcı olmuyor. Tablo alanı anahtarını yeni ana anahtarla yeniden şifreliyoruz, ancak verileri şifrelemek/şifresini çözmek için kullanılan gerçek anahtar aynı kalıyor. Bu nedenle, "bilgisayar korsanı" verilerin şifresini çözmek için onu kullanmaya devam edebilir. Daha önce ima etmiştim MySQL için Percona Sunucusu sadece basit tablo alanı anahtarı yeniden şifrelemesini değil, gerçek tablo alanı yeniden şifrelemesini gerçekleştirebilir. Bu özelliğe şifreleme dizileri denir. Ancak, bu işlevsellik şu anda hala deneyseldir.

Ana anahtar döndürme, ana anahtar çalındığında kullanışlıdır, ancak bir saldırganın bunu kullanması ve tablo alanı anahtarlarının şifresini çözmesi mümkün değildir.

Ücretsiz bir demo dersi için kaydolun.

Daha fazla oku:

Kaynak: habr.com