Hatta Yönetici güvenli iki yönlü DB şifreleme

2 Cevap php

Ben eldeki ilginç bir şifreleme sorun var. Ben çözülebilir eğer biliyorum ama buraya değil:

Bir veritabanı, hassas kullanıcı bilgilerini içeren etmektir. Gibi, kullanıcı bilgilerini (iki yönlü şifreleme) şifreli olmalıdır. Kullanıcı adı / şifre vardır ve bu iki yönlü şifreleme kullanılabilir. Şimdi, şifreleme veritabanı tablolarını inceleyen hatta yönetici kullanıcı bilgilerinin mantıklı mümkün olmamalıdır böyle bir şekilde dizayn edilmelidir.

Ancak, tasarım kullanıcı şifresini unutabilir durumlarda dikkat çekmek için var. Istedim - şifre şifreleme için kullanılırsa, şifre unutma bilgileri kaybolur demektir. Kullanıcı şifresi kendisi komut kodlanmış bir anahtar ile (yerine tek yönlü karma) bir iki yönlü algoritma kullanarak veritabanında kayıtlı ise, yönetici (tabii yönetici erişimine sahip komut bakarak kodlanmış anahtarını bulabilir script).

Herkes bu işten bir yol biliyor mu?

Not: Bu gerçek bir sorundur. Benim şirket mutlak bir güvenlik fanatik (ISO 27001 ve tüm) ve ben yukarıda belirtilen işlevselliği ile bir sistem tasarımı için emanet edilmiştir. Bu arada, ben bir PHP komut dosyası ve MySQL kullanıyorum.

EDIT: Belki de daha önce net değildi, kullanıcı / düzenlemek bir gün-gün bazında bu kullanıcı bilgilerini görmek gerekiyor.

2 Cevap

Ne istediğiniz bir kurtarma ajandır. Iki kez tüm verileri şifrelemek: kullanıcı anahtarı ile, bir kez kurtarma aracısı (kamu) anahtar; en az ikinci bir asimetrik olması gerekir. Resmi bir erişim protokolü (örneğin dört göz prensibi) ile, bir amacı, fiziksel kasada kurtarma aracısı tuşunu basılı tutun. Genellikle, yönetici şifreli verilere erişemez, ama kullanıcı anahtarını kaybeder ve kurtarma yetkili ise, o zaman kurtarma anahtarı elde edilir.

M-out-of-n insanlar kullanmak için kabul etmek zorunda böylece kurtarma aracısının anahtarını şifrelemek için yolları da vardır.

Edit: Bir uygulama stratejisi her şeyi iki kere şifrelemek için. Alternatif olarak, bağımsız kurtarılabilir yepyeni bir simetrik anahtarı oluşturun ve sadece iki kez o anahtarı şifrelemek için gereken her veri seti için; Orijinal veriler yalnızca oturum anahtarı ile şifreli olsun. Bu yaklaşım, birden fazla bağımsız okuyucular uzatabilirsiniz; (- bir kurtarma aracısı olarak tüm okuyucuların genel anahtarlar ile oturum anahtarını şifrelemek böylece) o okuyucu başına asimetrik anahtarları gerektirir.

Ben Microsoft'un Encrypting File System, uygulanan bu düzeni vardır hangi terminolojiyi kopyalanan.

Yapılamaz.

Tüm durumlarda, birisi şifresini anahtarını yeniden muktedir vardır. En seçenekleri düşünelim:

  1. Key sunucuda depolanan. Başaramamak: yönetici erişimine sahip.
  2. Anahtar kullanıcının şifre ile şifrelenmiş. Başaramamak: kullanıcı bunu unutabilirsiniz.

Çözüm yönetici olan erişimi kısıtlama dinlenmek için, ve yerine imkansız, bunu sadece çok zorlaştırır. Örneğin, veri, kullanıcının şifre ile şifrelenmiş saklanan bir anahtar ile şifrelenmiş, ancak bu anahtar yönetici tarafından olayların normal akışı içinde ulaşılamaz bazı diğer sistem emanette olsaydı (belki de sadece başka bir yönetici erişimi var? ) sonra hala () emanette anahtarlarına erişimi olan kim müdahale ile şifre unutma bir kullanıcı kurtarabilirsiniz, ama yönetici sadece tüm verileri veritabanı indirmek ve okuyamaz.