2013-10-03 14 views
5

Tôi đang tạo một chương trình bằng Python sẽ liên quan đến việc băm mật khẩu. Giả sử tôi sử dụng quyền này để lấy mật khẩu:Ghi đè an toàn các biến Python trong RAM?

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

Sau đó, băm, có cách nào để xóa an toàn tất cả dấu vết của mật khẩu chưa được chuyển khỏi RAM không?

+0

Tôi nghĩ bài này có thể giúp bạn: [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

Tại sao bạn có thể muốn làm điều đó? Để có thể đọc (thực sự thực sự khó khăn) bộ nhớ của bạn một hacker nên đã có được quyền truy cập root anyway. Hãy tập trung năng lượng của bạn vào các vectơ tấn công hợp lý/phổ biến hơn (https://www.owasp.org) hơn là tạo ra cảm giác an toàn sai lầm này. – RickyA

+0

@RickyA Bạn không biết tkbx đang cố gắng làm gì, đó thực sự là một câu hỏi hay. – Joe

Trả lời

3

Như đã thảo luận ở trên, không có cách nào để thực hiện điều này trong python ngay cả khi bạn đã thực hiện tùy chỉnh (mặc dù đây có thể là một cách).

Bây giờ tôi không biết ứng dụng của bạn phải làm gì, nhưng những gì tôi có thể nói với bạn mà không nghi ngờ gì là dữ liệu của bạn an toàn hơn trong RAM so với trong cơ sở dữ liệu của bạn.

Cách hoạt động của bộ nhớ rất phức tạp. Mỗi quá trình có không gian bộ nhớ ảo riêng của nó mà không cần phải tiếp giáp. Toàn bộ khối bộ nhớ được hoán đổi vào đĩa và đặt trở lại trong một khối bộ nhớ khác. Toàn bộ bộ nhớ chỉ là một tập hợp các byte và hầu như không thể nói sự khác biệt giữa một mảng các số nguyên, một chuỗi, một con mèo hoặc dữ liệu ngẫu nhiên đơn giản.

Một số khối dữ liệu được phân bổ lại một phần tạo ra một lượng lớn dữ liệu một phần. Hãy tưởng tượng điều này sẽ như thế nào, 1, 2, 8 hoặc thậm chí 16Gb dữ liệu ngẫu nhiên và hacker tiềm năng sẽ phải tìm một mật khẩu trong tất cả các số 0 và 1.

Nếu ai đó muốn hack mật khẩu của bạn trong quá trình thực hiện quy trình, anh ấy sẽ cần phải có quyền truy cập trực tiếp vào máy dưới dạng root; anh ta không thể làm điều đó bằng cách chỉ nhìn vào sự hoán đổi sau đó vì những lý do tôi đã nói trước đó.

Nhưng nếu một số người có loại quyền truy cập này thì có rất nhiều cách khác để nhận mật khẩu. Ví dụ chỉ cần gỡ lỗi chương trình, hoặc tốt hơn, chỉ cần thay đổi nguồn và làm cho nó in mật khẩu :)

Hầu hết các tin tặc sẽ không bận tâm qua những rắc rối như vậy. Hacking chủ yếu là về social engineering, về cơ bản làm cho người dùng cung cấp cho hacker mật khẩu của nó sẵn sàng. Phishing là một trong những phương pháp như vậy.

+0

Bạn nên bỏ phiếu để đóng câu hỏi này vì nó là một bản sao thay vì trả lời nó. Nếu bạn có câu trả lời mới, bạn có thể đặt câu trả lời cho câu hỏi gốc. – Joe

+0

Anh chàng này có ý nghĩa! – RickyA

+1

"hacker tiềm năng sẽ phải tìm một mật khẩu trong tất cả các số 0 và 1" này. Thứ nhất, ý tưởng rằng tin tặc * không thể bao giờ * làm điều này là một tuyên bố lớn để thực hiện. Có vô số các khai thác thực tế dựa vào việc tìm kiếm những thứ cụ thể trong bộ nhớ hoặc trao đổi nơi bạn không nghĩ rằng có nhiều thứ để bắt đầu. Thứ hai, những gì bạn thực sự làm là quét các tập tin trao đổi cho bất cứ điều gì trông giống như văn bản. Bạn tìm thấy nhiều hơn chỉ là mật khẩu, sau đó sử dụng nó như là một danh sách các dự đoán. Đó là, bạn có thể tìm thấy một cây kim trong một đống cỏ khô bằng cách cố gắng để may với mỗi bit của cỏ khô lần lượt cho đến khi một công trình. –