2013-10-03 24 views
5

Python'da parola girmeyi içeren bir program yapıyorum. Ben şifre almak için kullanabilir varsayarak:RAM'da Python değişkenlerinin üzerine güvenli bir şekilde yazılsın mı?

import getpass 
password = getpass.getpass("Password: ") 

Ve sonra karma, güvenli RAM dan unhashed şifre tüm izlerini kaldırmak için herhangi bir yolu var mı?

+0

Bu yazı size yardımcı olabilir düşünüyorum: [http://stackoverflow.com/questions/1316767/how-can-i-explicitly-free-memory-in-python][1] [1]: http://stackoverflow.com/questions/1316767/how-can-i-explicitly-free-memory-in-python –

+3

Bunu neden yapmak isteyebilirsiniz? Hafızanızı okuyabilmek (gerçekten gerçekten çok zor) için bir bilgisayar korsanının root erişimini alması gerekirdi. Lütfen bu sahte güvenlik duygusunu yaratmadan enerjinizi daha hassas/ortak [saldırı vektörleri] (https://www.owasp.org) üzerinde odaklayın. – RickyA

+0

@RickyA tkbx'in ne yapmaya çalıştığını bilmiyorsunuz, aslında iyi bir soru. – Joe

cevap

3

Daha önce tartışıldığı gibi, özel bir uygulamanıza sahip olsanız bile, bunu pythonda yapmak için kusursuz bir yol yoktur (bu bir yol olsa da).

Şimdi uygulamanızın ne yapması gerektiğini bilmiyorum, ancak size şüphe duymadan ne diyebileceğimi bilmiyorum, verileriniz RAM'in veri tabanında olduğundan daha güvenilirdir.

Belleğin çalışma şekli çok karmaşık. Her işlemin, bitişik olması gerekmeyen, kendi sanal bellek alanı vardır. Tam bellek blokları diske değiştirilir ve başka bir bellek bloğuna geri konur. Tüm bellek sadece bir dizi bayttır ve bir tam sayı dizisi, bir dizge, bir kedi veya basit bir rastgele veri arasındaki farkı söylemek neredeyse imkansızdır. Bazı veri blokları, kısmen çok miktarda kısmi veri oluşturarak yeniden tahsis edilmiştir. Bunun ne istediğini, 1, 2, 8 veya 16Gb rastgele veriyi düşünün, ve potansiyel hacker tüm bu 0 ve 1'lerde bir şifre bulmak zorunda kalacak.

İşlemin yürütülmesi sırasında birisinin şifrenizi kırmak istemesi durumunda makineye root olarak canlı erişim olması gerekir; Daha önce belirttiğim nedenlerden sonra sadece takaslara bakarak bunu yapamaz.

Ancak, bu tür bir erişim varsa, şifreyi almanın başka yolları vardır. Örneğin, basitçe programı ayıklayın ya da daha iyisi, sadece kaynağı değiştirin ve şifreyi yazdırın :)

Hackerların çoğu böyle bir güçlükle uğraşmaktan rahatsız olmaz. Hacking, çoğunlukla kullanıcının hacker'ını kendi isteğine göre yapmasını sağlayan social engineering'dur. Phishing, böyle bir yöntemdir.

+0

Bu soruya cevap vermek yerine çoğaltmak için oy vermelisiniz. Yeni bir cevabınız varsa, asıl soruya koyabilirsiniz. – Joe

+0

Bu adam mantıklı! – RickyA

+1

"Potansiyel hacker, tüm bu 0'larda ve 1'lerde bir şifre bulmak zorunda kalacak". Öncelikle, hackerların * yapamayacağı fikri * bunu yapmak büyük bir açıklamadır. Hafızada belirli şeyleri bulmaya ya da başlayacak çok şey olduğunu düşünmeyeceğiniz takaslara dayanan birçok pratik istismar vardır. İkincisi, aslında yaptığınız şey, takas dosyasını metin gibi görünen her şey için taramaktır. Sadece şifreden çok daha fazlasını bulursunuz, sonra bunu tahminlerin bir listesi olarak kullanın. Yani, bir saman işe yarayana kadar her bir samanla dikmeye çalışarak samanlıkta iğne bulabilirsin. –

İlgili konular