C ++ uygulamamda hassas bilgileri (gizli tutmak istediğim simetrik bir şifreleme anahtarı) depolamam gerekiyor. Basit yaklaşım, bunu yapmaktır:
std::string myKey = "mysupersupersecretpasswordthatyouwillneverguess";
Ancak, uygulamayı strings
işlem aracılığıyla (veya bir ikili uygulamadan dizeleri çıkaran herhangi bir başka yöntem) çalıştırmak yukarıdaki dizeyi ortaya çıkaracaktır.
Bu tür hassas verileri gizlemek için hangi teknikler kullanılmalıdır?
Düzenle:
Tamam, neredeyse hepiniz "çalıştırılabilir dosyanız tersine mühendislik yapılabilir" dediniz - tabii ki! Bu benim bir evcil hayvanım, bu yüzden burada biraz rant yapacağım:
Neden bu sitedeki güvenlikle ilgili tüm soruların% 99'u (tamam, belki biraz abartıyorum) "tamamen güvenli bir program oluşturmanın mümkün bir yolu yok" torrentiyle yanıtlanıyor - bu bir yardımcı değil Cevap! Güvenlik, mükemmel kullanılabilirlik ile bir uçta güvenlik olmaması ve diğer tarafta mükemmel güvenlik, ancak kullanılabilirlik olmaması arasında değişen bir ölçektir.
Mesele şu ki, ne yapmaya çalıştığınıza ve yazılımınızın çalışacağı ortama bağlı olarak o kayan ölçekte konumunuzu seçiyorsunuz. Askeri kurulum için bir uygulama yazmıyorum, bir ev bilgisayarı için bir uygulama yazıyorum . Güvenilmeyen bir ağdaki verileri önceden bilinen bir şifreleme anahtarıyla şifrelemem gerekiyor. Bu durumlarda, "belirsizlik yoluyla güvenlik" muhtemelen yeterince iyidir! Elbette, yeterli zamana, enerjiye ve beceriye sahip biri ikili programa tersine mühendislik uygulayabilir ve parolayı bulabilir, ama bilin bakalım ne oldu? Umrumda değil:
Birinci sınıf bir güvenli sistemi uygulamak için harcadığım süre, crackli sürümler nedeniyle satış kaybından daha pahalıdır (aslında bunu sattığımdan değil, ama benim fikrimi anladınız). Yeni programcılar arasında programlamadaki bu mavi gökyüzü "mümkün olan en iyi şekilde yapalım" eğilimi en azından aptalca.
Bu soruyu yanıtlamak için zaman ayırdığınız için teşekkür ederiz - çok yardımcı oldular. Ne yazık ki sadece bir cevabı kabul edebiliyorum, ancak tüm faydalı cevapları yukarı oyladım.