PGP là một phần mềm dùng để mã hóa dữ liệu và xác thực, thường áp dụng để mã hóa và giải mã văn bản, email, file phục vụ cho việc bảo mật khi sử dụng email. Phiên bản PGP đầu tiên do Phil Zimmerman công bố vào năm 1991. Hiện nay, tập đoàn PGP cung cấp phần mềm mã hóa dựa trên nền tảng này.
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
-&&& -Bài tập lớn
Mật mã và an toàn dữ liệu
Đề tài: Công nghệ PGP
Giảng viên: PGS.TS Trịnh Nhật Tiến
Học viên thực hiện: Lê Huy Hoàng
Khóa: K20-KTPM
Mã HV: 13025162
Hà Nội - 2014
Trang 2MỤC LỤC
PGP 3
1 Tổng quan về PGP 4
1.1 Giới thiệu chung 4
1.2 Hoạt động của PGP 5
2 Demo mã hóa email bằng PGP 8
2.1 Download và cài đặt Mozilla Thunderbird 8
2.2 Download và cài đặt chương trình quản lý khóa Gnu4win 9
2.3 Cài đặt phần mềm hỗ trợ mã hóa Enigmail trên Thunderbird 9
2.4 Quản lý khóa 9
2.5 Mã hóa 11
2.6 Tạo chữ ký điện tử 13
2.7 Giải mã 13
TÀI LIỆU THAM KHẢO 15
Trang 3Email (thư điện tử) là một dịch vụ rất phổ biến và quan trọng trong cuộc sống hiện nay Tuy nhiên, vì email được gửi qua Internet là mạng công cộng nên cũng kèm theo rất nhiều rủi ro về bảo mật, người ngoài có thể đọc trộm các email mà ta gửi hoặc nhận Việc đó là không sao với những email có nội dung không quan trọng, không đòi hỏi độ bảo mật Nhưng với những email quan trọng như việc làm ăn, những thông tin nhạy cảm không thể tiết lộ ra ngoài, việc bảo mật cho các email này là rất cần thiết
Hiện nay có nhiều công nghệ giúp cho việc bảo mật email, trong đó công nghệ PGP là một trong những công nghệ phổ biến, được nhiều người sử dụng để bảo mật email trên Internet với các ưu điểm như hiệu quả, dễ sử dụng và miễn phí
Trang 41 Tổng quan về PGP
1.1 Giới thiệu chung
PGP là một phần mềm dùng để mã hóa dữ liệu và xác thực, thường áp dụng để mã hóa
và giải mã văn bản, email, file phục vụ cho việc bảo mật khi sử dụng email Phiên bản PGP đầu tiên do Phil Zimmerman công bố vào năm 1991 Hiện nay, tập đoàn PGP cung cấp phần mềm mã hóa dựa trên nền tảng này
Một số phiên bản PGP:
PGP 1.0: Phiên bản PGP 1.0 sử dụng thuật toán khoá công khai RSA, thuật toán mã Bass-o-Matic, thuật toán băm MD4, và thuật toán nén dữ liệu LZHUF Thuật toán Bass-o-Matic do Zimmermann tạo ra và được đem đến hội thảo Crypto tổ chức vào tháng 8 năm 1991
PGP 2.0-2.3: Sau giai đoạn suy giảm năm 1991-1992, một nhóm lập trình với các thành viên trên toàn thế giới đã cải tiến lại PGP dựa trên phiên bản 2.0 thay đổi lớn nhất là thay thế thuật toán Bass-o-Matic bằng IDEA Tác giả chính là Branko Lankester(người Phần Lan) và Peter Gutmann(người Niu Di Lân)
PGP 2.4.x: Công ty ViaCrypt đă mua bản quyền sử dụng RSA, Zimmermann hợp tác với công ty này và họ phát hành bản PGP thương mại phiên bản này không vi phạm bất cứ bản quyền nào và không còn miễn phí nữa
PGP 4.0 và 4.5: Giống như phiên bản 2.4, những phiên bản này được phát hành dưới dạng sản phẩm thương mại của công ty ViaCrypt Cả hai phiên bản này đều có hai thành phần: phiên bản thương mại và phiên bản cá nhân Phiên bản thương mại
có thêm chức năng sắp xếp phục hồi dữ liệu
PGP Phone: Phil Zimmermann đă thử xây dụng một chương trình với mục đích đảm bảo an ninh cho các cuộc gọi trên Internet Vì điện thoại Internet đòi hỏi phải
có kết nối rất tốt cho nên chương tŕnh đã hoạt động không được tốt Ngày 21/03/1999 mă nguồn của chương trình này đă được công khai với người sở hữu mới lúc này là NAI, họ không muốn mất nhiều thời gian vào chương tŕnh này và sau đó không thấy có tiến bộ nào khác nữa
PGP 5.0: Phiên bản này đă chấm dứt chuỗi lịch sử phát triển bất hợp pháp của PGP Mọi vấn đề về pháp lý đã được giải quyết Chương tŕnh mới này đã hỗ trợ giao diện
đồ hoạ, được phát triển từ nhiều nguồn khác nhau và được chạy trên hệ điều hành Windows 95/NT, Apple Macintos
PGP 5.5: Đây là phiên bản có nhiều đặc tính cải tiến, từ giao diện đến công cụ xoá sạch tệp dữ liệu PGP được phân phối dưới dạng cả phần mềm miễn phí và phiên bản thương mại PGP5.5.3 được phát hành vào ngày 4/07/1997
Trang 5 PGP 7.0: Phát hành vào ngày 10/09/2000 Phiên bản phần mềm miễn phí xuất hiện sau vào ngày 3/2/2001 Phiên bản này đưa ra nhiều cải tiến trong phần mạng PGP
Hiện nay PGP đã có bản 8.0
1.2 Hoạt động của PGP
PGP sử dụng kết hợp mã hóa khóa công khai và mã hóa khóa đối xứng
Chú thích cho các hình vẽ:
Ks: Khóa phiên
Pra: private key của user A
PUa: public key của user A
EP: mã hóa public key
DP: giải mã public key
EC: mã hoá tin nhắn
DC: giải mã tin nhắn
H: Hàm băm
||: Kết nối, ghép chuỗi
Z: nén sử dụng giải thuật ZIP
R64: convert sang định dạng ASCII 64 bit
1.2.1 Bảo mật
Hình 1.2.1 Bảo mật email bằng PGP
Người sử dụng đầu tiên phải có một cặp khóa: Khóa công khai và khóa bí mật, người nhận gửi khóa công khai cho người gửi
Người gửi tạo tin nhắn và một số ngẫu nhiên 128 bit làm khóa phiên Người gửi mã hóa tin nhắn sử dụng DES, CAST/IDEA hoặc 3DES với khóa phiên đó
Người gửi sử dụng RSA với khóa công khai của người nhận để mã hóa khóa phiên, tin nhắn đã mã hóa và khóa phiên được gửi cho người nhận
Trang 6Người nhận sử dụng RSA với khóa bí mật để giải mã, khôi phục khóa phiên và sử dụng khóa phiên để giải mã tin nhắn
1.2.2 Xác thực
Hình 1.2.2 Xác thực email bằng PGP
Đầu tiên, người gửi tạo tin nhắn, sử dụng SHA-1 để sinh băm 160 bit của tin nhắn Người gửi sử dụng RSA với khóa bí mật của mình để ký trên băm và gửi cho người nhận
Người nhận sử dụng RSA với khóa công khai của người gửi để giải mã và khôi phục băm
Người nhận kiểm tra tin nhắn nhận được với băm của nó và so sánh với băm đã được giải mã Nếu hai giá trị này giống nhau thì có thể khẳng định là văn bản chưa bị thay đổi
kể từ khi gửi và người gửi đúng là người sở hữu khóa bí mật tương ứng
1.2.3 Bảo mật và xác thực
Hình 1.2.3 Kết hợp bảo mật và xác thực email bằng PGP
Người gửi tạo chữ ký và đính vào tin nhắn, sau đó mã hóa cả mẩu tin và chữ ký rồi gửi cho người nhận
1.2.4 Nén
Trang 7Mặc định PGP sẽ nén tin nhắn sau khi ký nhưng trước khi mã hóa, PGP sử dụng thuật toán nén Zip để nén tin nhắn
1.2.5 Các chùm khóa PGP
Mỗi người sử dụng PGP sẽ có một cặp chùm khóa:
Chùm khóa công khai chứa mọi khóa công khai của những người sử dụng PGP khác mà người đó biết và được đánh số bằng định danh khóa (ID key)
Chùm khóa riêng chứa các cặp khóa công khai / khóa bí mật của người đó được đánh số bởi định danh khóa và mã của khóa lấy từ giai đoạn duyệt hàm băm
1.2.6 Quản lý khóa PGP
Trong quá trình mã hóa cũng như kiểm tra chữ ký, một điều vô cùng quan trọng là khóa công khai được sử dụng thực sự thuộc về người được cho là sở hữu của nó PGP hỗ trợ cơ chế phân phối khóa công khai và xác thực khóa đó có thuộc về chủ sở hữu không
Cụ thể, OpenPGP cung cấp các chữ ký tin cậy cho người sử dụng để có thể tạo ra các nhà cung cấp CA Mỗi người sử dụng PGP có 1 CA của mình, người sử dụng có thể tạo ra các khóa công khai để phân phối cho người khác và các khóa này được đảm bảo là tin cậy, nhờ vậy người đó có thể ký khóa cho người khác, đồng thời cũng có thể thu hồi khóa đó nếu biết khóa đó bị mất hoặc vô hiệu
Trang 82 Demo mã hóa email bằng PGP sử dụng API
Download API cho PGP tại địa chỉ https://www.bouncycastle.org/csharp/index.html
Demo mã hóa và giải mã file text
3 Demo mã hóa email bằng PGP sử dụng Thunderbird
3.1 Download và cài đặt Mozilla Thunderbird
Download tại link h t t p : / /w w w m o z i l l a or g / e n - U S/ t h u n d e r b i r d / do w n l o a d /
Để tạo một tài khoản mail bạn chọn Create a new account
Cửa sổ Mail Account Setup hiện ra cho phép điền các thông tin cần thiết
Trang 9Có hai tùy chọn để cấu hình Mail
IMAP: Có thể thiết lập một mail account trên nhiều PC/Laptop một lúc mà ta có thể xem mail được tất cả IMAP chỉ lấy về các header của các mail, khi nào cần
mở thì IMAP mới lấy xuống từng email riêng biệt
POP3: Với POP3, email sẽ được lưu trữ trên mailbox của remote server cho đến khi check mail, khi check mail thì tất cả mail ngay lập tức được download về máy tính và không còn lưu trữ trên server nữa
3.2 Download và cài đặt chương trình quản lý khóa Gnu4win
Download từ địa chỉ h t t p : / / w ww g p g 4 wi n or g / d o w n l o a d h t m l
3.3 Cài đặt phần mềm hỗ trợ mã hóa Enigmail trên Thunderbird
Vào Tools -> Add-ons và tìm Enigmail
3.4 Quản lý khóa
Trang 10Vào OpenPGP -> Key management
Vào Generate -> New Key Pair để tạo cặp khóa
Trang 11Vào Generate -> Revocation Certificate để tạo chứng chỉ thu hồi dùng khi muốn thu hồi khóa
Vào File -> Export Keys to File để tạo khóa bí mật và khóa công khai
3.5 Mã hóa
Soạn mail trên Thunderbird và Import Public Key vào bằng cách File -> Import Keys From File
Trang 12Để mã hóa email click vào biểu tượng trên thanh công cụ Thunderbird Cửa sổ hiện lên như sau
Khi gửi email thì hiện lên thông báo
Trang 13Có 3 tùy chọn.
Just encypt/sign the message text, but not the attachments: Mã hóa và tạo chữ ký
nhưng không mã hóa file đính kèm
Encrypt/sign each attachment separately and send the message using inline PGP:
Mã hóa, tạo chữ ký và mã hóa file đính kèm
Encrypt/sign the message as a whole and send it using PGP/MIME: Mã hóa và
ký sử dụng S/MIME
3.6 Tạo chữ ký điện tử
Trong cửa sổ Key Management, chuột phải vào Key chọn Sign Key
Kiểm tra Key bằng cách chuột phải vào Key, chọn View Signatures
Trang 14Khi bạn nhận được một mail đã mã hóa thì Thunderbird sẽ tự động giải mã, nếu chữ
ký là chính xác thì sẽ hiển thị:
Trang 15TÀI LIỆU THAM KHẢO
[1] h t t p : / / e n wi k i p e d i a or g / w i k i / P r e t t y _ G oo d _ P r i v a c y
[2] h t t p : / / w ww .e n i g m a il n e t / d o c u m e n t a t i o n / h a n db o o k p h p
[3] h t t p : / / w ww .e n i g m a il n e t / d o c u m e n t a t i o n / b a s i c p h p
[4] h t t p : / / w ww p g p i o r g / d o c / p g p i n t ro /
[5] Tài liệu hướng dẫn mã hóa với PGP, Trần Anh Đức – Phòng nghiệp vụ VNCERT