PGP sử dụng kết hợp mật mã hóa khóa công khai và thuật toán khóa đối xứng. a. Bảo mật Đầu tiên người sử dụng 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, CASTIDEA 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. Người nhận sử dụng RSA và khóa bí mật để giải mã, khôi phục khóa phiên
Trang 2z
Trang 3ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG
BÀI TẬP NHÓM MÔN AN TOÀN MẠNG MÁY TÍNH
BÀI TẬP 2 – SECURITY MAIL
Giảng viên hướng dẫn : Nguyễn Duy
Sinh viên thực hiện : Nguyễn Thanh Tâm MSSV : 12520909
Đặng Thái Hòa MSSV : 12520596
MỤC LỤC
1. Giới thiệu về PGP
2. Cách thức hoạt động của giao thức PGP
a. Bảo mật
Trang 4b. Xác thực
c. Bảo mật và xác thực
d. Nén
e. Các chùm khóa PGP
f. Quản lý khóa PGP
3. Demo
1. Giới thiệu về PGP
PGP là gì?
PGP (Pretty Good Privacy): là một phần mềm máy tính dùng để mật mã hóa dữ liệu Phiên
bản PGP đầu tiên do Phil Zimmermann công bố vào năm 1991 Kể từ đó, phần mềm này đã co nhiều cải tiến, và hiện nay, tập đoàn PGP cung cấp nhiều phần mềm dựa trên nền tảng này
Với mục tiêu ban đầu là phục vụ cho mã hóa thư điện tử, PGP hiện nayđã trở thành một giải pháp mã hóa cho các công ty lớn, chính phủ cũng như các cá nhân
Trang 5Các phần mềm dựa trên PGP được dùng để mã hóa và bảo vệ thông tin lưu trữ trên máy tính xách tay, máy tính để bàn, máy chủ và trong quá trình trao đổi thông qua email, IM hoặc chuyển file Giao thức hoạt động của hệ thống này có ảnh hưởng lớn và trở thành một trong hai tiêu chuẩn mã hóa (tiêu chuẩn còn lại là S/MIME)
2. Cách thức hoạt động của giao thức PGP
PGP sử dụng kết hợp mật mã hóa khóa công khai và thuật toán khóa đối xứng
a. Bảo mật
- Đầu tiên người sử dụng 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
Người nhận sử dụng RSA và 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
b. Xác thực
- Đầ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
c. Bảo mật và xác thực
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
d. Nén
Mặ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
e. 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
f. Quản lý khóa PGP
Trang 6Trong 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 hay không
Cụ thể PGP 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ó một 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
3. Demo
−2 máy ảo chạy Windows XP
− 1 máy ảo chạy Windows Server 2003
−Chương trình Mail Client Thunderbird, chương trình quản lý khóa Gnu4win
+ Tải Mail Client Thunderbird tại: http://www.mozilla.org/en-US/thunderbird/download/
+ Tải Gnu4win tại: http://www.gpg4win.org/download.html
− Chương trình Mail Server MDaemon
+ Tải MDaemon tại: http://www.altn.com/Downloads/MDaemon-Mail-Server-Free-Trial/
Thực hiện:
Sau khi tải về các chương trình trên, ta tiến hành cài đặt Mail Client Thunderbird và Gnu4win trên hai máy chạy Windows XP
Cài đặt Mail Server MDaemon trên Windows Server 2003
Tiếp theo, cài đặt add-ons Enigmail cho Thunderbird, ta vào Tools -> Add-ons
Tab Add-ons Manager hiện ra ta tìm từ khóa Enigmail sau đó tải về.
Trang 7- Tạo 2 email user1 và user2 bằng MDaemon
Mở Thunderbird từ 2 máy ảo sau đó lần lượt đăng nhập 2 email user1, user2
Trang 8- Tạo Public Key
Trang 9Tại máy user1 ta tạo public key, vào Enigmail → Key management cửa sổ Enigmail Key Management
hiện ra
Vào Generate → New Key Pair
Trang 10Tại đây ta nhập mật khẩu vào khung Passphrase, chọn thời hạn cho key tại Key expires, cuối cùng nhấn
Generate key để tạo key, chọn tiếp Generate Certificate sau đó chọn nơi để Save key và nhấn Save
Chương trình sẽ hiện ra khung nhập Passphrase để xác nhận.
Trang 11Tương tự ta tạo public key ở máy user2.
Sau khi tạo public key xong, ta tiến hành dùng 2 email gửi mail đính kèm key cho nhau
Tại user1, cửa sổ Enigmail Key Management hiện ra thông tin về public key đã tạo Click phải chuột vào thông tin key chọn Send Public Key by Email
Sau đó điền thông tin người nhận, chủ đề, nội dung thư và nhấn Send để gửi
Trang 12Tại user2 ta làm tương tự để gửi public key, đồng thời nhận key từ user1 gửi đến.
Trang 13- Import Public Key
Sau khi 2 user trao đổi public key cho nhau ta tiến hành Import key trên cả 2 user
Từ cửa sổ Enigmail Key Management vào File → Import Keys From File
Chọn key vừa nhận được nhấn Open
Trang 14Thông báo khi Import thành công
Kế tiếp ta tạo chữ kí điện tử cho key vừa Import trên 2 user
Tại cửa sổ Enigmail Key Management ta Click phải chuột vào key chọn Sign Key
Trang 15Chọn I have done very careful checking, sau đó chọn OK
Để mã hóa mail gửi đi bằng public key ta chọn Write để tạo thư, điền thông tin người nhận, chủ đề, nội dung thư … sau đó ta nhấp vào This message will be encrypted
Trang 16Cửa sổ hiện lên ta tick dấu vào dòng
Encrypt Message: để mã hóa thư gửi đi
Sign Message: để dùng chữ kí điện tử
Sau đó nhấn OK
Sau đó ta chọn Send để gửi thư đi
Tại user nhận thư để đọc được thư gửi đến thì ta cần phải nhập mã Passphare để giải mã thư
Trang 17Thư sau khi giải mã thành công sẽ có dòng màu xanh thông báo