it-swarm-tr.com

Sunucu tarafı şifreleme anahtarını nerede saklayabilirim?

Veritabanımda tek bir anahtarla simetrik olarak şifrelenmiş bazı verilerim var. Koduma sabit kodlamak yerine, şifreleme anahtarını saklamanın daha güvenli bir yolunu arıyorum. Nerede güvenle saklayabilirim?

129
Radek

Kabaca azalan sofistike sırayla olasılıklarınız.

  1. Harici bir Donanım Güvenlik Modülü kullanın. Güvenliğe duyarlı işlemleri harici aygıtlara boşaltmak için tasarlanmış bir tüm ürün endüstrisi vardır. Bu çözmek sorunu yeniden konumlandır kadar değil, ama çok daha güvenli bir cihaza yeniden konumlandırır, bu yüzden bir güvenlik kazancıdır. Yüksek bahisli bir şey yapıyorsanız, bu neredeyse kesinlikle çözümünüzü etkileyecektir.

  2. Şifrelemeyi donanımınıza bağlayın. Teorik olarak HSM'ler tam olarak bunu yapar, sadece bir HSM'den sadece donanım destekli kriptodan biraz daha karmaşıklık bekleriz. Ancak gerçek bir HSM'nin masaya getirdiği verime ve uyumluluğa ihtiyacınız yoksa daha ucuz seçenekler vardır. TPM çipleri bu amaç için kısmen icat edildi ve onlarla nasıl entegre edileceğini gösteren birçok örnek var. Ek olarak, özel kripto donanımı oldukça ucuz hale geldi ve Açık Kaynak U2F Anahtarları gibi cihazları yeniden adlandırmak, göründüğünden daha basit.

  3. Şifreleme anahtarını yönetici girişinize bağlayın (ör. Şifreleme anahtarını yönetici girişinizle şifreleyin). Herhangi bir şeyi şifrelemek/şifresini çözmek için oturum açmanızı gerektirdiğinden bu sadece marjinal olarak yararlıdır. Ancak artı tarafta, giriş yapmadığınız sürece hiç kimse hiçbir şeyi şifreleyemez/şifresini çözemez (yani daha büyük kontrol). Windows'daki güvenli depolama alanının çoğu bu şekilde çalışır.

  4. Başlarken şifreleme anahtarını yazın, bellekte saklayın. Bu, çevrimdışı saldırılara karşı korur (anahtarı daha zor olan RAM'den yakalamadıkça). Yukarıdaki seçeneğe benzer, ancak aynı zamanda farklı. Ancak, sunucu kullanılamayan bir duruma önyükleme yapar ve çalışma yapılmadan önce anahtarı manuel olarak sağlamanızı gerektirir.

  5. Anahtarı farklı bir sunucuda saklayın. Örn. anahtarı web sunucusuna ve şifrelenmiş verileri veritabanı sunucusuna yerleştirin. Bu, sizi bir dereceye kadar korur, çünkü birisi anahtarı ve veritabanını almayı bilmek zorunda kalacaktır ve her iki sunucuya da erişimi olmalıdır. İnanılmaz derecede güvenli değil, ama yine de son derece popüler bir seçenek. Yaptıklarını düşünen çoğu insan right ​​bunu bu şekilde yapın. Bunu yapmayı düşünüyorsanız, yukarıda belirtilen ilk iki seçenekten birini de düşünün.

  6. Anahtarı başka bir yerde aynı sunucuda saklayın. Çok az değil, marjinal güvenlik ekler. Çoğu küçük operasyon bunu yapar - yapmamalı, ama yapmalılar. Tipik olarak sadece bir sunucuları vardır ve bir yerde bulutta çalışır. Bu, kilide bırakmak yerine kapıya bir anahtar vurmak gibidir; en beceriksiz saldırganları durdurma garantisi.

  7. Anahtarı veritabanında saklayın. Şimdi denemiyorsunuz bile. Yine de iç karartıcı derecede popüler bir seçenek.

Birçok bulut tabanlı KMS çözümü (örneğin: AWS , GCP , Azure ) en etkin şekilde kullanıldığında şifrelemenizi bulut sanal makinelerinize veya ortamınıza bağlar. VM adresinizin benzersiz kimliği, hipervizörün oluşturması ve iddia etmesi kolaydır ve KMS, bu kimliğin kombinasyonunu ve HSM tarafından yönetilen bir erişime izin vermek için atadığınız izinleri kullanır Bu, Cloud VM'lerin geçici doğasını hesaba katmak için modüle edilen 1 ve 2 seçeneklerinin bir kombinasyonuna benzer.Bu KMS çözümleri genellikle platformun diğer kimlik mekanizmaları ile uyumludur ve giriş anahtarlarını şifreleme anahtarlarını etkili bir şekilde bağlar; seçenek 3.

145
tylerl

Bunun bir süre önce cevaplandığını anlıyorum, ancak Tyler'ın iyi cevabına birkaç örnek vermek için:

  • Hizmet hesabına bir parola bağlamak için # kullanmayı ve onu almak için Powershell cmdlet'ini kullanmayı planlıyorum. Bu şekilde komut dosyalarının çok fazla değiştirilmesine gerek yoktur. Hizmet hesabının parolası Active Directory'de ve önce ele geçirilmesi gerekir. İki sunucuda kullandığım için bu benim için çalışıyor.

  • # 5 için, uyumluluğumuzu karşılamak için harici depolama alanına sahip başka bir sunucuda düz metinde bir anahtar depolayabildik, çünkü bu depolama alanı şifreli ve erişimi kısıtlandı. Tyler'ın belirttiği gibi, ikincisi o kadar güvenli görünmüyor, ancak zorlu bir değerlendirici için bile yeterince iyiydi.

5
Mike

Anahtar yönetimi için iki katmanlı mimari oluşturabilirsiniz.

  1. Bekleme sırasında verilerinizi şifrelemek için tablo alanlarını veya sütun tabanlı şifreleme anahtarı.
  2. Kilidi açmak için ana anahtar 1.

ana anahtar (lar) nız için aşağıdaki gibi anahtar yönetim çözümlerinden birini kullanın:

  • Amazon AWS KMS
  • Oracle Kasası
  • Microsoft MKS.
  • veya açık kaynak kodlu olanlar.

Anahtar yöneticinizin, yönetilen anahtarın kullanıldığı altyapınızdan eşit veya daha yüksek kullanılabilirliği desteklemesi gerektiğini unutmayın.

2
Hugo R