Hướng dẫn dùng gnupg trong PHP
(+84) 247 109 9656 Show
CyStack Editor 30 Th01 2018
Cách thức làm việc của khóa công khai mã hóa (Public Key Encryption)Một vấn đề mà nhiều người dùng phải đối mặt là làm thế nào để giao tiếp an toàn và xác nhận danh tính của người mà họ đang nói chuyện. Nhiều nỗ lực để giải quyết câu hỏi này đã được đưa ra nhằm chuyển giao mật khẩu hoặc các chứng nhận xác thực khác qua một môi trường mà chúng ta nghi ngờ là không được an toàn cho lắm. Đảm bảo rằng chỉ có người dùng được chỉ định mới có thể đọcĐể giải quyết vấn đề
này, GPG dựa vào một khái niệm bảo mật được gọi là mã hóa khóa công khai. Ý tưởng là bạn có thể phân chia các giai đoạn mã hoá và giải mã của việc truyền tin thành hai phần riêng biệt. Bằng cách đó, bạn có thể tự do phân phối/gửi đi phần mã hóa, miễn là bạn đảm bảo bảo mật phần giải mã. Điều này sẽ cho phép truyền một chiều có thể được tạo và mã hóa bởi bất kỳ ai, nhưng chỉ được giải mã bởi người dùng được chỉ định (người có khoá giải mã riêng). Nếu cả hai bên tạo cặp khóa công khai hoặc khóa riêng và cung cấp cho nhau khóa mã hoá công khai của họ, họ có thể mã hóa thông điệp cho nhau. Vì vậy, trong trường hợp này, mỗi bên đều có khóa cá nhân riêng và khoá công khai của người dùng khác. Xác nhận tính xác thực của người gửiMột lợi ích khác của hệ thống này là người gửi thông điệp có thể “ký” thông điệp bằng khóa cá nhân của họ. Khóa công khai mà người nhận có thể dùng để xác minh được rằng chữ ký đó thực sự đã được gửi bởi người dùng chỉ định. Thiết lập khóa GPGGPG được cài đặt mặc định trong hầu
hết các hệ điều hành. $ sudo apt-get update $ sudo apt-get install gnupg Trên CentOS, bạn có thể thiết lập GPG bằng cách gõ: $ sudo yum install gnupg2 Để bắt đầu sử dụng GPG để mã hóa các thông tin liên lạc của bạn, bạn cần phải tạo một cặp khóa. Bạn có thể làm điều này bằng cách phát hành lệnh sau: $ gpg --gen-key Đến đây, có thể bạn sẽ gặp một vài câu hỏi như sau:
Tại
thời điểm này, GPG sẽ tạo ra các phím bằng cách sử dụng Entropy. Entropy mô tả số lượng định tính mức độ không thể đoán trước và không xác định được tồn tại trong một hệ thống. GPG cần Entropy này để tạo ra một bộ khóa an toàn. Tạo Chứng chỉ Thu hồiBạn cần phải có một cách để làm mất hiệu lực cặp khóa của bạn trong trường hợp có vi phạm bảo mật hoặc trong trường hợp bạn bị mất khóa bí mật. Có một cách dễ dàng để làm điều này với phần mềm GPG. $ gpg --output ~/revocation.crt --gen-revoke Bạn sẽ được yêu cầu xác nhận việc tạo khoá thu hồi và sau đó được nhắc đưa ra lý do nó đang bị thu hồi. Thông tin này sẽ được hiển thị cho những người dùng khác nếu việc thu hồi được sử dụng trong tương lai. Bạn có thể chọn bất kỳ lựa chọn nào có sẵn, nhưng vì điều này được thực hiện trước khi diễn ra, bạn sẽ không có những chi tiết cụ thể. Thông thường, bạn nên tạo một giấy chứng nhận
thu hồi cho từng tình huống có khả năng linh hoạt tối đa. Output Revocation certificate created. Please move it to a medium which you can hide away; if Mallory gets access to this certificate he can use it to make your key unusable. It is smart to print this certificate and store it away, just in case your media become unreadable. But have some caution: The print system of your machine might store the data and make it available to others!
Bạn nên ngay lập tức hạn chế quyền truy cập vào tệp tin chứng chỉ được tạo ra để ngăn chặn truy cập trái phép: $ chmod 600 ~/revocation.crt Chứng chỉ thu hồi phải được giữ an toàn để người dùng khác không thể thu hồi khóa của bạn. Như thông báo trạng thái, bạn nên xem xét sao lưu chứng chỉ lên các máy khác và in ra, miễn là bạn có thể đảm bảo nó đúng cách. Cách nhập khoá công khai của người dùng khácGPG sẽ vô dụng nếu bạn không thể nhận các khóa công khai khác từ những người mà bạn muốn liên lạc. $ gpg --import name_of_pub_key_file Cũng có khả năng người mà bạn muốn liên lạc với đã tải lên khóa của họ đến một máy chủ khóa công khai. Những máy chủ chính này được sử dụng để chứa khóa công khai của mọi người từ khắp nơi trên thế giới. https://pgp.mit.edu/ Bạn cũng có thể tìm kiếm máy chủ khoá từ trong GPG bằng cách gõ lệnh sau: $ gpg --keyserver pgp.mit.edu --search-keys search_parameters Bạn có thể sử dụng phương pháp tìm kiếm này theo tên hoặc địa chỉ email. Bạn có thể nhập khoá mà bạn tìm thấy bằng cách làm theo hướng dẫn. Cách xác minh và đăng nhập khóaMặc dù bạn có thể tự do phân phối tệp tin khóa công khai của mình và mọi người có thể sử dụng nó để liên hệ với bạn một cách an toàn, điều quan trọng là bạn có thể tin tưởng rằng khoá này thuộc về người mà bạn nghĩ nó trong quá trình truyền khoá công khai ban đầu. Xác minh danh tính của người khácLàm thế nào để bạn biết rằng người cung cấp cho bạn khóa công khai là chính danh? Trong một số trường hợp, điều này có thể đơn giản. Bạn có thể ngồi ngay bên cạnh người với máy tính xách tay của bạn, cả hai cùng mở và trao đổi các khóa. Đây là một cách khá an toàn để xác định rằng bạn đang nhận khóa chính xác, và chính danh. gpg --fingerprint Output
pub 4096R/311B1F84 2013-10-04
Key fingerprint = CB9E C70F 2421 AF06 7D72 F980 8287 6A15 311B 1F84
uid Test User <>
sub 4096R/8822A56A 2013-10-04 Điều này sẽ tạo ra một chuỗi số liệu được quản lý nhiều hơn để so sánh. Bạn có thể so sánh chuỗi này với người đó, hoặc với người khác có quyền truy cập vào người đó. Ký một khóa của họViệc ký một khóa sẽ cho phép phần mềm của bạn hiểu rằng bạn tin tưởng vào khóa mà bạn đã được cung cấp và bạn đã xác minh rằng nó được liên kết với đúng người bạn cần nói chuyện. $ gpg --sign-key Khi bạn ký khóa, điều này có nghĩa là bạn
xác minh rằng bạn tin tưởng rằng người đó đúng là người họ tự nhận. Điều này cũng có thể giúp người khác quyết định xem có nên tin tưởng vào người đó hay không. Nếu ai đó tin cậy bạn, và họ thấy bạn đã ký được khóa của người này, họ cũng có thể tin tưởng vào danh tính của họ. $ gpg --output ~/signed.key --export --armor Bạn sẽ phải nhập mật khẩu lại. Sau đó,
khoá công khai của họ, được ký bởi bạn, sẽ được hiển thị. Gửi cho họ điều này, để họ có thể tận dụng lợi ích từ việc đạt được “dấu phê duyệt” của bạn khi họ cần tương tác với người khác. $ gpg --import ~/signed.key Giờ đây họ có thể chứng minh với những người khác rằng bạn tin tưởng rằng danh tính của họ là chính xác. Làm thế nào để làm cho khóa công khai của bạn luôn có sẵnNhờ có cách mà mã hóa khóa công khai được thiết kế, không có gì độc hại hay nguy hiểm có thể xảy ra nếu những người lạ có khoá công khai của bạn. gpg --output ~/mygpg.key --armor --export Output -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.11 (GNU/Linux) mQINBFJPCuABEACiog/sInjg0O2SqgmG1T8n9FroSTdN74uGsRMHHAOuAmGLsTse 9oxeLQpN+r75Ko39RVE88dRcW710fPY0+fjSXBKhpN+raRMUKJp4AX9BJd00YA/4 EpD+8cDK4DuLlLdn1x0q41VUsznXrnMpQedRmAL9f9bL6pbLTJhaKeorTokTvdn6 5VT3pb2o+jr6NETaUxd99ZG/osPar9tNThVLIIzG1nDabcTFbMB+w7wOJuhXyTLQ JBU9xmavTM71PfV6Pkh4j1pfWImXc1D8dS+jcvKeXInBfm2XZsfOCesk12YnK3Nc u1Xe1lxzSt7Cegum4S/YuxmYoh462oGZ7FA4Cr2lvAPVpO9zmgQ8JITXiqYg2wB3 . . . Sau đó, bạn có thể gửi tệp này cho bên kia qua một phương tiện phù hợp. $ gpg --list-keys Phần được đánh dấu trong đầu ra dưới đây là ID chính (tìm kiếm pub dọc theo cột bên trái nếu bạn không chắc chắn dùng cái nào). Đó là một cách ngắn nhất để tham khảo khóa của phần mềm nội bộ. Output
pub 4096R/311B1F84 2013-10-04
uid Test User <>
sub 4096R/8822A56A 2013-10-04 Để tải khoá của bạn lên một máy chủ khoá nào đó, bạn có thể sử dụng cú pháp sau: $ gpg --send-keys --keyserver pgp.mit.edu key_id Khóa sẽ được tải lên máy chủ được chỉ định. Sau đó, nó có thể sẽ được phân phối cho các máy chủ chính khác trên thế giới. Mã hóa và giải mã thư với GPGBạn có thể dễ dàng mã hóa và giải mã thông điệp sau khi bạn chia sẻ khóa với bên kia. Mã hóa thông điệpBạn có thể mã hóa thông điệp bằng cách sử dụng cờ “–encrypt” cho GPG. Cú pháp cơ bản sẽ là: $ gpg --encrypt --sign --armor -r name_of_file Cú pháp này giúp mã hóa thông điệp sử dụng khóa công khai của người nhận, ký nó bằng khóa riêng của bạn để đảm bảo rằng nó đúng là do bạn gửi đi, và kết xuất thông điệp dưới dạng văn bản thay vì byte thô. Tên tập tin sẽ giống như tên tập tin đầu vào, nhưng với một phần mở rộng .asc. Giải mã thưKhi bạn nhận được một thông điệp, chỉ cần gọi GPG vào tệp tin thông điệp: $ gpg file_name.asc Phần mềm sẽ nhắc bạn ngay khi cần thiết. Cách thức bảo trì chínhCó một số thủ tục mà bạn có thể cần phải sử dụng thường xuyên để quản lý cơ sở dữ liệu quan trọng của mình. $ gpg --list-keys Thông tin khóa của bạn có thể trở nên lỗi thời nếu bạn đang dựa vào thông tin lấy từ các máy chủ khoá công khai. Bạn không muốn dựa vào các phím thu hồi, bởi vì điều đó có nghĩa là bạn tin cậy các phím có khả năng bị xâm nhập. $ gpg --refresh-keys Thao tác này sẽ tìm nạp thông tin mới từ các máy chủ chính. $ gpg --keyserver key_server --refresh-keys Bạn có thể nhận được thông báo lỗi nếu bất kỳ khóa nào của bạn không thể tìm thấy trên máy chủ khoá. Kết luậnSử dụng GPG một cách chính xác có thể giúp bạn bảo mật truyền tin của bạn với những người khác nhau. Điều này cực kỳ hữu ích, không chỉ khi xử lý các thông tin nhạy cảm, mà còn trong giao tiếp hàng ngày. Chúng tôi luôn sẵn sàng lắng nghe bạn. Nếu cần hỗ trợ các vấn đề cụ thể liên quan đến bảo mật cho sản phẩm và hệ thống doanh nghiệp của mình, liên hệ ngay với chúng tôi tại đây! Chia sẻ Đăng ký để cập nhật hàng tuần Bài viết liên quan |