2009-08-25 12 views
16

Bazı hassas verileri benim için şifrelemek için Windows DPAPI kullanıyorum. Şifre kayıt defterinde saklanır. Bu her şey iyi çalışıyor, ama birisi .NET'te ProtectedData.Protect() için sağlanan (isteğe bağlı) olan 'entropi' baytları hakkında anlayışımı açıklığa kavuşturup kavramayacağını merak ediyordum.Windows DPAPI - entropiyle ne yapmalı?

'Entropy' bayt dizisi, bir başlatma vektörüne veya başka şifreleme planları ile kullanılan tuza benziyor gibi görünüyor, ancak MSDN'deki entropy baytlarının iyi bir açıklamasını göremedim. Kod örnekleri entropi baytında sadece sabit kodu gördüm! Entropi baytları bir ProtectedData.Protect() & ProtectedData.Unprotect ürününe bir IV veya tuza benzer mi? Entropi baytları bu nedenle şifrenin yanında güvenli bir şekilde saklanabilir mi, yoksa güvenliği tehlikeye atabilir mi?

cevap

13

Entropi, verileri koruyan uygulamaya özgü ikinci bir anahtardır. Genel fikir, doğru bir şekilde hatırlarsam, birden fazla uygulamanın tek bir kullanıcı hesabı altında verileri şifrelemesine izin vermek, ancak yine de birbirlerinin arasında güvenliği sağlamaktı. Örneğin, uygulamanız UserA altındaki verileri şifreleyebilir. Uygulamam, UserA'nın altındaki bu verilerin şifresini çözmek istediyse, DPAPI'nin kullanıcılar anahtarını kullandığı için, bunu yapmamı engelleyecek bir şey yoktur. Ancak, bir uygulamaya özel "entropi" yi katıyorsanız, UserA'yı korumak için herhangi bir verinin şifresini çözmek için entropinizi bilmem gerekir. Entropi, tuza benzer olarak düşünülebilir, çünkü şifrelenmiş içeriği daha fazla tasarlamak için ek bir anahtar veya sır kullanılır. Tuzun aksine, uygulamanızın entropisi belirli bir kimlik bilgisi altında her şifreleme işlemi için aynı kalmalıdır. Tuzla, genellikle olabildiğince sık değiştirmek için en iyisi.

Entropi aslında ek bir anahtardır ve başka bir şifreleme anahtarı gibi ele alınmalıdır. Özel ve güvenli tutun.

BTW, bence 'entropi' bu amaç için kullanmanın acımasız bir kelimesiydi. “Farklılaştırıcı” gibi bir şey, hatta belki “ayırıcı” gibi bir kelime bile olsa, daha iyi olurdu. : P Çok kafa karıştırıcı terim kullanımı.

+0

Teşekkürler, harika cevap. Yani ben app içine entropi kodlamak sanırım tam bir felaket değil, ama bir anahtar gibi davranmak daha iyi. Yine de bir anahtarı şifrelediğim için, anahtarı korumak için başka bir "anahtar" bulundurmak biraz çılgına dönüşüyor. – saille

+0

Evet, onun biraz kıvrık bir konsepti. Fakat "entropi" nin takmayı amaçladığı güvenlik deliği çok gerçektir. Pencerelerde kimlik bilgisine özgü şifreleme, kullanıcı için çok uygundur, ancak kötü amaçlı programların, bu verileri çözmemeleri gerektiğinde şifresini çözmesi için yeni fırsatlar sunar. Ayrıca, herhangi bir "diğer" programın iyi niyetli olduğunu düşünmeyin. Kullanıcının bile bilmediği kötü amaçlı yazılım, sistemlerinde entropik olmayan şifrelenmiş veriler için tarama yapmayı deneyebilir. – jrista

1

Uygulamanın kendisini korumak için şifre kullanmak istiyorsanız kullanışlıdır. Parola (veya parola ile şifrelenirken uygulama verilerinin yeniden okunmasına gerek kalmayacak şekilde şifreyle oluşturulan ve şifrelenmiş başka bir anahtar), uygulama verilerinin depolanması sırasında entropi olarak kullanılabilir.