Mật khẩu đặc biệt có vấn đề đối với các lập trình viên. Bạn không được phép lưu trữ chúng mà không mã hóa chúng và bạn không được tiết lộ những gì đã được nhập khi người dùng của bạn nhập một. Điều này trở nên đặc biệt quan trọng đối với tôi khi tôi quyết định muốn tăng cường bảo mật cho máy tính xách tay của mình. Tôi mã hóa thư mục chính của mình—nhưng khi tôi đăng nhập, bất kỳ mật khẩu nào được lưu dưới dạng văn bản thuần túy trong tệp cấu hình đều có khả năng bị lộ trước những con mắt tò mò
Cụ thể, tôi sử dụng một ứng dụng có tên là Mutt làm ứng dụng email khách của mình. Nó cho phép tôi đọc và soạn email trong thiết bị đầu cuối Linux của mình, nhưng thông thường, nó sẽ yêu cầu mật khẩu trong tệp cấu hình của nó. Tôi đã hạn chế quyền đối với tệp cấu hình Mutt của mình để chỉ tôi mới có thể xem tệp đó, nhưng tôi là người dùng duy nhất trên máy tính xách tay của mình, vì vậy tôi không thực sự lo lắng về việc người dùng đã được xác thực vô tình nhìn vào cấu hình của tôi. Thay vào đó, tôi muốn bảo vệ bản thân khỏi việc đăng cấu hình của mình lên mạng một cách đãng trí, để khoe khoang quyền hoặc kiểm soát phiên bản, với mật khẩu của tôi bị lộ. Ngoài ra, mặc dù tôi không mong muốn có những vị khách không mời trên hệ thống của mình, nhưng tôi muốn đảm bảo rằng kẻ xâm nhập không thể lấy được mật khẩu của tôi chỉ bằng cách chạy
8 trên cấu hình của tôi$ ./test.py
Enter password: my-Complex-Passphrase
Python GnuPG
Thêm tài nguyên Python
- IDE là gì?
- bảng ăn gian. Trăn 3. 7 cho người mới bắt đầu
- Khung GUI Python hàng đầu
- Tải xuống. 7 thư viện PyPI thiết yếu
- Nhà phát triển mũ đỏ
- Nội dung Python mới nhất
Mô-đun Python
9 là trình bao bọc Python cho ứng dụng$ ./test.py
Enter password: my-Complex-Passphrase
0. Tên của mô-đun là$ ./test.py
Enter password: my-Complex-Passphrase
9, bạn không được nhầm lẫn với mô-đun có tên là$ ./test.py
Enter password: my-Complex-Passphrase
2$ ./test.py
Enter password: my-Complex-Passphrase
GnuPG [GPG] là hệ thống mã hóa mặc định cho Linux và tôi đã sử dụng hệ thống này từ năm 2009 trở đi. Tôi cảm thấy thoải mái với nó và có mức độ tin tưởng cao vào tính bảo mật của nó
Tôi quyết định rằng cách tốt nhất để lấy mật khẩu của mình vào Mutt là lưu trữ mật khẩu của mình trong tệp GPG được mã hóa, tạo lời nhắc cho mật khẩu GPG của tôi để mở khóa tệp được mã hóa và giao mật khẩu cho Mutt [thực ra là lệnh
3,$ ./test.py
Enter password: my-Complex-Passphrase
Nhận đầu vào của người dùng bằng Python khá dễ dàng. Bạn thực hiện cuộc gọi tới
4 và bất kỳ loại người dùng nào được lưu trữ dưới dạng biến$ ./test.py
Enter password: my-Complex-Passphrase
print["Enter password: "]
myinput = input[]
print["You entered: ", myinput]
Vấn đề của tôi là khi tôi nhập mật khẩu vào thiết bị đầu cuối theo lời nhắc mật khẩu của mình, mọi thứ tôi nhập đều hiển thị cho bất kỳ ai nhìn qua vai tôi hoặc cuộn qua lịch sử thiết bị đầu cuối của tôi
$ ./test.py
Enter password: my-Complex-Passphrase
Nhập mật khẩu vô hình với getpass
Như thường lệ, có một mô-đun Python đã giải quyết được vấn đề của tôi. Mô-đun này là
5 và từ quan điểm của người dùng, nó hoạt động giống hệt như$ ./test.py
Enter password: my-Complex-Passphrase
4 ngoại trừ việc không hiển thị những gì người dùng đang nhập$ ./test.py
Enter password: my-Complex-Passphrase
Bạn có thể cài đặt cả hai mô-đun với pip
________số 8Đây là tập lệnh Python của tôi để tạo lời nhắc mật khẩu
#!/usr/bin/env python
# by Seth Kenlon
# GPLv3
# install deps:
# python3 -m pip install --user python-gnupg getpass4
import gnupg
import getpass
from pathlib import Path
def get_api_pass[]:
homedir = str[Path.home[]]
gpg = gnupg.GPG[gnupghome=os.path.join[homedir,".gnupg"], use_agent=True]
passwd = getpass.getpass[prompt="Enter your GnuPG password: ", stream=None]
with open[os.path.join[homedir,'.mutt','pass.gpg'], 'rb'] as f:
apipass = [gpg.decrypt_file[f, passphrase=passwd]]
f.close[]
return str[apipass]
if __name__ == "__main__":
apipass = get_api_pass[]
print[apipass]
Lưu tệp dưới dạng
7 nếu bạn muốn dùng thử. Nếu bạn đang sử dụng$ ./test.py
Enter password: my-Complex-Passphrase
3 và muốn sử dụng giải pháp này để nhập mật khẩu của riêng mình, thì hãy lưu nó vào một số vị trí mà bạn có thể trỏ$ ./test.py
Enter password: my-Complex-Passphrase
3 tới trong tệp$ ./test.py
Enter password: my-Complex-Passphrase
0 của mình [tôi sử dụng$ python -m pip install --user \
python-gnupg getpass4
1]$ python -m pip install --user \
python-gnupg getpass4
Kiểm tra lời nhắc mật khẩu
Để xem tập lệnh đang hoạt động, trước tiên bạn phải tạo một tệp được mã hóa [Tôi cho rằng bạn đã thiết lập GPG]
5$ ./test.py
Enter password: my-Complex-Passphrase
Bây giờ hãy chạy tập lệnh Python
6$ ./test.py
Enter password: my-Complex-Passphrase
Không có gì hiển thị khi bạn nhập, nhưng miễn là bạn nhập chính xác cụm mật khẩu GPG của mình, bạn sẽ thấy thông báo kiểm tra
Tích hợp lời nhắc mật khẩu với offlineimap
Tôi cần tích hợp lời nhắc mới của mình với lệnh
3. Tôi đã chọn Python cho tập lệnh này vì tôi biết rằng$ ./test.py
Enter password: my-Complex-Passphrase
3 có thể gọi các ứng dụng Python. Nếu bạn là người dùng$ ./test.py
Enter password: my-Complex-Passphrase
3, bạn sẽ đánh giá cao rằng yêu cầu "tích hợp" duy nhất là thay đổi hai dòng trong tệp$ ./test.py
Enter password: my-Complex-Passphrase
0 của bạn$ python -m pip install --user \
python-gnupg getpass4
Đầu tiên, thêm một dòng tham chiếu tệp Python
1$ ./test.py
Enter password: my-Complex-Passphrase
Và sau đó thay thế dòng
6 trong$ python -m pip install --user \
python-gnupg getpass4
0 bằng một lệnh gọi hàm$ python -m pip install --user \
python-gnupg getpass4
8 trong$ python -m pip install --user \
python-gnupg getpass4
7$ ./test.py
Enter password: my-Complex-Passphrase
6$ ./test.py
Enter password: my-Complex-Passphrase
Không còn mật khẩu trong tệp cấu hình của bạn
vấn đề an ninh
Đôi khi bạn cảm thấy gần như hoang tưởng khi nghĩ về những chi tiết vụn vặt về bảo mật trên máy tính cá nhân của mình. Cấu hình SSH của bạn có thực sự cần giới hạn ở mức 600 không?
Tuy nhiên, biết rằng tôi không có dữ liệu nhạy cảm được giấu kín trong các tệp cấu hình của mình giúp tôi dễ dàng chuyển các tệp vào kho lưu trữ Git công khai, sao chép và dán các đoạn mã vào các diễn đàn hỗ trợ và chia sẻ kiến thức của mình dưới dạng . Chỉ riêng điều đó, bảo mật được cải thiện đã giúp cuộc sống của tôi dễ dàng hơn. Và với rất nhiều mô-đun Python tuyệt vời có sẵn để trợ giúp, thật dễ dàng để thực hiện
Đọc gì tiếp theo
Không bao giờ quên mật khẩu của bạn với thuật toán mã hóa Python này
Thuật toán độc đáo này sử dụng Python và Chia sẻ bí mật của Shamir bảo vệ mật khẩu chính của bạn khỏi tin tặc và sự lãng quên của chính bạn
Moshe Zadka
Tạo mật khẩu ngẫu nhiên với tập lệnh Bash này
Loại bỏ rắc rối khi chọn mật khẩu với tập lệnh Bash đơn giản này
Greg Pittman
19 Tháng Mười Một, 2019thẻ
An ninh và sự riêng tư
con trăn
Seth Kenlon
Seth Kenlon là một người đam mê UNIX, người ủng hộ văn hóa tự do, nghệ sĩ đa phương tiện độc lập và mọt sách D&D. Anh ấy đã làm việc trong ngành công nghiệp điện ảnh và máy tính, thường là cùng một lúc