Tải bản đầy đủ (.docx) (25 trang)

tìm hiểu về giao thức bảo mật PGP

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (591.59 KB, 25 trang )

AN TOÀN BẢO MẬT
VÀ HỆ THỐNG
THÔNG TIN
Tên đề tài: Tìm hiểu về giao thức bảo mật PGP: kiến
trúc, hoạt động, ứng dụng

Giao thức bảo mật PGP (Pretty Good Privacy)
I.

Giới thiệu.
1.

Lịch sử của giao thức bảo mật PGP.
Giao thức bảo mật PGP được phát triển bởi Philip Zimmermann
vào năm 1991.. PGP viết tắt cho Pretty Good Privacy. Cái tên này
được lấy cảm hứng từ một cửa hàng bán đồ tạp hóa “Ralph’s Pretty
Good Grocery”.


Phiên bản đầu tiên của PGP sử dụng thuật toán mã hóa khóa đối
xứng được Zimmerman tự tay phát triển. Ông đặt tên cho thuật toán
đó là BassOmatic. Tại thời điểm đó, ông là một nhà phi hạt nhân trong
thời kỳ đó và muốn phát triển một chương trình giúp cho người dùng
có thể trao đổi thông tin một cách bảo mật nhất có thể trên mạng
Internet. Ông cho ra mắt phiên bản PGP với mục đích không phải để
kinh doanh. Tất cả các source code được đính kèm với các bản sao
được công bố. PGP nhanh chóng được sử dụng rộng rãi trên mạng
Internet.
Phil đã phát triển nên giao thức PGP cung cấp các tình riêng
tưvà tính xác thực trên thông điệp truyền. PGP được sử dụng rộng
rãi và thừa nhận thành chuẩn thực tế (RFC 3156). PGP cho phép


mã hóa dữ liệu sử dụng mã khóa bí mật và mã khóa công khai,
đồng thời cho phép tạo và kiểm tra chữ ký số, hỗ trợ hầu hết các
thuật toán mã hóa hiện đại như 2DES, AES, RSA,…
Không lâu sau khi được công bố, PGP đã được phát triển rộng
rãi trên các nước trên thế giới. Vào năm 1993, Zimmermann đã trở
thành đối tượng bị điều tra của chính phủ Mỹ với tội danh “Xuất khẩu
vũ khí quân sự trái phép”. Theo quy định của chính phủ Mỹ thời đó,
nếu như hệ thông mã hóa sử dụng khóa lớn hơn 40 bits thì sẽ được coi
là vũ khí quân sự, còn PGP thì sử dụng khóa 128 bits và lớn hơn.
Zimmerman đã chống lại quy định này bằng cách ông cho xuất bản
một cuốn sách chứa đầy đủ thông tin về PGP, bao gồm cả source code.
Sau nhiều năm điều tra không đem lại kết quả, chính phủ Mỹ đã phải
bộ và đóng cuộc điều tra lại.
Vào 12-1997, PGP được công ty Network Associates, Inc (hay
hiện nay còn được biết đến với tập đoàn McAfee) mua lại. Tại đây,
đội ngũ phát triển của PGP đã có thể tích hợp mã hóa trên đĩa, tường
lửa, hệ thống phát hiện xâm nhập và IPSec VPNs và hệ thống của
mình.
2.

PGP hiện nay.
Vào tháng 8-2002, một số thành viên trong đội ngũ phát triển
PGP đã thành lập nên PGP Corporation, và mua lại quyền sở hữu PGP
từ Network Associates, Inc (ngoại trừ phiên bản dùng trên command


line). Từ đó, PGP đã thành lập văn phòng hỗ trợ kỹ thuật trên khắp
nước Mỹ và các nước trên thế giới như Đức và Nhật Bản.
29-04-2010, Symantec Corp đã mua lại PGP với mức giá 300
triệu USD với mục tiêu là phát triển nó cho việc bảo mật các doanh

nghiệp.
3.

Khái quát về Open PGP.
Ở trong PGP Inc, các nhà phát triển vẫn có những hoài nghi về
vấn đề bản quyển. Mã hóa PGP đang được phát triển rất rộng rãi trên
thế giới, có rất nhiều công ty, tập đoàn muốn được cài đặt nó vào hệ
thống của mình. Zimmerman tin rằng là tạo ra một chuẩn mã hóa PGP
sẽ là điều quan trọng cho cộng đồng mã hóa. Vào tháng 7-1997, PGP,
Inc đã đề xuất với IETF (Internet Engineering Task Force, là một tổ
chức phát triển các tiêu chuẩn trên Internet) rằng họ muốn đặt ra một
chuẩn gọi là OpenPGP. Họ cho phép IETF quyền được sử dụng cái tên
OpenPGP để miêu tả tiêu chuẩn mới này. Sau đó, IETF đã chấp thuận
và nhóm làm việc OpenPGP ra đời.
Mã hóa của OpenPGP có thể đảm bảo được sự bảo mật trong
việc vận chuyển các file và tin nhắn, cũng như cung cấp những tiến
trình để đảm bảo tính xác thực của tin nhắn. Bộ công cụ văn phòng
mã nguồn mở Libre Office đã tích hợp OpenPGP vào phần mềm trong
phiên bản 5.4.0 trên Linux. OpenPGP cũng được dùng để bảo vệ các
file quan trọng trong thiết bị di động và trên cloud.
OpenPGP được sử dụng chủ yếu để mã hóa e-mail. Giao thức
OpenPGP là định dạng tiêu chuẩn trong việc mã hóa e-mail.

4.

Độ bảo mật của PGP.
Theo những thông tin chính thức hiện có, gần như không có
một cách nào để có thể bẻ khóa mã hóa bằng PGP. Từ năm 1995, nhà
mật mã học Bruce Scheiner đã phát biểu rằng những phiên bản đầu
của PGP có mức độ bảo mật mạnh tương tự với mật mã hóa của quân



đội. Tuy nhiên, PGP vẫn được cho là có những điểm yếu có thể bị
khai thác trên lý thuyết. PGP không chỉ bảo về được dữ liệu khi truyền
đi mà còn cả khi lưu trữ dữ liệu.
Trong những phiên bản đầu tiên, PGP sử dụng thuật toán RSA
để mã hóa. Phiên bản thứ hai thì PGP sử dụng giải thuật mã hóa khóa
đối xứng IDEA. Tại phiên bản hiện tại, PGP đã được bổ sung thêm
nhiều thuật toán mã hóa khác. Phần lớn các điểm yếu đều đến từ việc
sử dụng các thuật toán mã hóa này.
Tuy nhiên, PGP có thể rất khó khăn cho kẻ gian giải mã được
nhưng vẫn có nhiều cách khác để chúng lấy được dữ liệu. Những kỹ
thuật như rubber-hose (Ép cung, tra tấn người giữ khóa để lấy khóa)
hay black-bag cryptanalysis (Cài đặt trojan hay key log vào máy nạn
nhân để đánh cắp khóa) có thể phá vỡ bảo mật PGP. Trong những
trường hợp như vậy thì gần như không có phần mềm mã hóa nào có
thể bảo vệ được dữ liệu cả.
5.

Tại sao PGP lại quan trọng?
Có thể chúng ta không biết nhưng email là một cách rất an toàn
để liên lạc. Khi email của bạn rời khỏi tài khoản và được gửi qua
internet, chúng sẽ đươc chuyển qua các mạng nằm ngoài tầm kiểm
soát của bạn. Khi đó khả năng chúng có thể bị chặn và giả mạo là rất
cao.
Nếu chúng ta cần gửi một tin nhắn có giá trị và tính bảo mật
cao, email bình thường sẽ không phù hợp. Bởi tin nhắn cá nhân của
bạn có thể bị cướp bởi những tin tặc, chúng có thể sử dụng những tin
nhắn này để thực hiện hành vi gian lận danh tính. Trong trường hợp
này sẽ xảy ra nguy hiểm rất lớn khi các tin nhắn quan trọng của chính

phủ có thể rơi vào tay các điệp viên. Một người rình rập thậm chí có
thể đọc mọi thứ đi qua hộp thư đến của họ.
Những mối nguy hiểm này là một phần lý do tại sao PGP được
phát minh ra để mang lại một số lợi ích riêng tư và bảo mật cho Wild
West, đó là liên lạc qua email.


II.

Kiến trúc.
1.

Mô hình kiến trúc.

Kiến trúc tổng quan
Hai dịch vụ chính mà PGP cung cấp cho người dùng là: mã hóa
và xác thực thông điệp. Khi thiết kế một ứng dụng bảo mật email,
người thiết kế phải đương đầu với hai vẫn đề chính, trước hết, phải
bảo mật ứng dụng bằng những giải thuật nào?
Trong trường hợp của PGP, những dịch vụ vủa nó dựa vào 3
giải thuật: IDEA (mã hóa khóa bí mật), RSA (mã hóa khóa công khai)
và MD5 (Hàm băm an toàn).
2.

Thiết kế của PGP.
Giao thức PGP kết hợp các kỹ thuật để đảm bảo an toàn bảo
mật như mã hóa bằng hàm băm, nén dữ liệu, giải thuật khóa đối xứng,
bất đối xứng và cuối cùng là các kỹ thuật phân phối khóa công khai.



Mỗi một bước trong giao thức được sử dụng rất nhiều các thuật toán
khác nhau. Phiên bản đầu tiên sử dụng giao thức này được gọi là
mạng lưới tín nhiệm, Web Of Trust (WOT). WOT là một hệ thống
dùng để thiết lập độ xác thực và tin cậy giữa các khóa công khai với
chủ của nó. Đây là một mô hình có độ tin cậy được phân tán trên
mạng máy tính, là một sự thay thế cho mô hình tin cậy tập trung trong
khoảng thời gian bấy giờ, phụ thuộc hoàn toàn vào chữ ký số của bên
thứ ba, hay còn gọi là Certificate Authority. Cũng như mạng máy tính,
tồn tại nhiều mạng lưới tín nhiệm hoạt động độc lập với nhau. Mỗi
người sử dụng trong mô hình này có thể là thành viên của nhiều mạng
và như vậy họ trở thành cầu nối giữa các mạng đó.
Các phiên bản PGP vế sau dựa trên các kiến trúc tương tự như
hạ tầng hóa công khai.hạ tầng khóa công khai (viết tắt PKI) là một cơ
chế để cho một bên thứ 3 (thường là nhà cung cấp chứng thực số)
cung cấp và xác thực định danh các bên tham gia vào quá trình trao
đổi thông tin. Cơ chế này cũng cho phép gán cho mỗi người sử dụng
trong hệ thống một cặp khóa công khai/khóa bí mật. Các quá trình này
thường được thực hiện bởi một phần mềm đặt tại trung tâm và các
phần mềm phối hợp khác tại các địa điểm của người dùng. Khóa công
khai thường được phân phối trong chứng thực khóa công khai.


Mô hình miêu tả phương thức hoạt động của giao thức PGP

3.

Vân tay PGP.
Trong mô hình giao thức PGP còn sử dụng vân tay PGP – PGP
fingerprint. Vân tay PGP công khai là phiên bản dài hơn của khóa
công khai sau khi được hàm băm xử lý. Sử dụng vân tay PGP sẽ làm

tăng độ tin cậy của khóa công khai hơn vì độ lớn của nó lớn hơn khóa
công khai nhiều. Từ dấu vân tay PGP, người dùng có thể nhận được
khóa công khai tương ứng với đoạn thông điệp.

4.

Tính thích ứng của PGP.
Hiện nay, PGP được phát triển bởi tập đoàn Symantec. Vì vậy,
tính thích ứng trong giao thức PGP là một yếu tố quan trọng. Hiện


nay, giao thức PGP vẫn đang được phát triển. Khi đó, giao thức cũng
áp dụng những thuật toán mã hóa và các tính năng bảo mật mới. Vì
vậy, các hệ thống PGP cũ sẽ không có khả năng giải mã thông điệp kể
cả khi có được khóa bí mật. Vì vậy, những đối tác sử dụng giao thức
PGP sẽ luôn phải cập nhật phần mềm và hệ thống của mình để có thể
trao đổi thông tin được với nhau, hoặc ít nhất là 2 bên cùng đồng nhất
trong một phiên bản của hệ thống PGP.
III.

Hoạt động của giao thức PGP.
1.

Khái niệm cơ bản.
Giả dụ như bạn có một gói hàng có chứa nhiều thông tin quan
trọng muốn gửi đến cho bạn của mình. Bạn sẽ phải gửi gói hàng đó
thông qua đường bưu điện cho người bạn đó. Kẻ trộm có thể dễ dàng
đánh cắp gói hàng đó và chiếm lấy những thông tin quan trọng.
Có một số giải pháp cho vấn đề này. Ta có thể gặp người bạn đó
và đưa cho họ một bản sao của chiếc chìa khóa cho gói hàng. Như

vậy, cả 2 đều sẽ có chìa khóa để mở gói hàng. Điều này không cần
thiết cho lắm vì bạn là người gửi sẽ không có nhu cầu phải mở lại gói
hàng một lần nữa. Hơn nữa, nếu như người bạn đó lại làm mất chiếc
chìa khóa vào tay kẻ xấu. Như vậy, tạo ra bản sao của 2 chiếc chìa
khóa cũng sẽ tạo nên một lỗ hổng bảo mật.
Giải pháp tốt nhất ở đây sẽ là tạo ra 2 khóa. Một khóa chỉ có
khả năng khóa gói hàng lại. Còn khóa còn lại chỉ có khả năng mở gói
hàng ra. Và tùy vào nhu cầu của bạn, bạn sẽ đưa chìa khóa cho đúng
người.
Đây là cách mà giao thức PGP hoạt động: Bạn sẽ có một khóa
công khai (public key) dùng để mã hóa gói tin và một khóa bí mật
(private key) dùng để giải mã gói tin. Bạn sẽ gửi khóa công khai cho
tất cả những người bạn của mình để họ có thể mã hóa được tin nhắn
gửi cho bạn. Sau đó, bạn sẽ dùng khóa bí mật của mình để giải mã tin
nhắn đó. Và bạn cũng sẽ làm điều ngược lại với những người bạn của
mình. Khóa công khai và khóa bí mật được kết nối với nhau, nếu bạn


mã hóa một thứ gì đó bằng mã công khai, thì người khác có thể giải
mã bằng khóa bí mật đồng bộ.

2.

Cách sử dụng vân tay PGP.
• Những chiếc khóa tự bản thân nó là những dãy số rất lớn. Vì vậy,
như đã nói ở trên, PGP sẽ sử dụng vân tay PGP để rút ngắn khóa
này lại. Để có thể tạo ra vân tay PGP, ta sẽ làm như sau:
- Khóa công khai sẽ được mã hóa thành các byte. Để đảm bảo
rằng tạo vân tay PGP của một khóa là độc nhất, ta cần phải
mã hóa các khóa công khai một cách rõ ràng và những dữ

liệu được thêm mới sẽ được thay đổi và lưu bên cạnh với
khóa công khai.
- Đoạn bytes được mã hóa sẽ đi qua hàm băm như là SHA-1,
SHA-2.
- Nếu cần thiết, đầu ra của hàm băm có thể được rút ngắn lại
để thuận tiện cho việc sử dụng hơn.
• Vân tay PGP hỗ trợ rất tốt trong việc chuyển khóa công khai.


Ví dụ:
Ta có khóa công khai với ID ngắn, ID dài và vân tay như sau:
fingerprint: 0D69 E11F 12BD BA07 7B37 26AB 4E1F 799A A4FF 2279
long id:
4E1F 799A A4FF 2279
short id:
A4FF 2279
Ta có thể thấy rằng ID ngắn thuận tiện cho việc sử dụng hơn
nhưng nó có khả năng tạo ra sự xung đột trong hệ thống. Khi số lượng
các khóa càng nhiều thì càng có khả năng rằng sẽ có các khóa bị trùng
nhau. Đây là số lượng các ID khóa có thể tạo ra với độ dài của mỗi
thành phần:
2^32 =
4294967296
2^64 =
18446744073709551616
2^160 = 1461501637330902918203684832716283019655932542976
Khóa ngắn có độ dài 32 bits, khóa dài có độ dài 64 bit và vân
tay có độ dài 160 bits.
Bằng cách sử dụng vân tay, ta có thể tránh được sự xung đột
này. Nó vẫn sẽ xảy ra nhưng khả năng đó là rất thấp.

Như vậy, sử dụng vân tay PGP, ta có thể tăng độ bảo mật vì tạo
ra không gian khóa lớn, khó có thể vét cạn được và tránh được trường
hợp xung đột khi số lượng khóa tăng.

3.

Mã hóa
Hoạt động thực tế của PGP để gửi và nhận thông điệp bao gồm
5 dịch vụ: chữ ký số, mã hóa thông điệp trong PGP.
Quy trình thực hiện theo các bước sau:



Quá trình mã hóa 1 thông điệp trong PGP

4.

Giải mã.
Hình dưới mô tả quá trình giải mã một thông điệp trong PGP.
Về cơ bản, để giải mã, PGP chỉ cần thực hiện đảo ngược các bước của
quá trình mã hóa.



Quá trình giải mã một thông điệp trong PGP

5.

Khóa
Khóa là một giá trị làm việc với một thuật toán mã hóa để tạo ra

một bản mã cụ thể. Về cơ bản khóa là những con số rất lớn. Kích
thước của khóa được đo bằng bit. Trong các thuật toán mã hóa, khóa
càng lớn thì tính bảo mật càng cao.
Nền tảng những thao tác của PGP là yêu cầu mỗi người dùng có
một cặp khóa công khai – bí mật cũng như các bản sao chép các khóa
công khai của người nhận.
Khóa được lưu trữ ở dạng mã hóa. PGP lưu trữ các khóa trong
hai tập tin trên đĩa cứng của bạn. Một cho khóa công cộng và một cho
khóa bí mật. Những tập tin này được gọi là một vòng khóa.

a.

Khóa công khai.
PGP thường lưu lại những chìa khóa công khai mà người dùng
thu được. Các khóa này được tập hợp và lưu lại trên vòng khóa công
khai. Mỗi mục vòng gồm các phần:
- Khóa công khai.
- User ID chủ nhân của khóa công khai này, tên đặc trưng của
-

b.

chủ nhân.
Một key ID, là định danh cho khóa này.
Thông tin khác liên quan đến độ tin cậy của khóa và chủ

nhân của nó.
Khóa bí mật.
Để sử dụng PGP, người dùng cần phải có một khóa bí mật. Nếu
muốn người dùng có thể tạo nhiều khóa bí mật. Vòng khóa bí mật

chứa đựng thông tin của mỗi khóa.
- Khóa riêng gồm 128 bit được sinh ra nhờ một passphrase và
-

hàm băm MD5.
User ID.


Key ID của khóa công khai tương ứng.
Chữ ký số trong giao thức PGP.
Giao thức PGP hỗ trợ việc kiểm tra tính xác thực và toàn vẹn
của tin nhắn. Ta có thể kiểm tra xem tin nhắn có bị thay đổi trong quá
trình chuyển dữ liệu hay không và có đích thực là tin nhắn được gửi từ
người bạn của ta. Bởi vì nội dung của tin nhắn đã bị mã hóa, những
thay đổi trên nội dung này sẽ dẫn đến việc giải mã sai kể cả khi ta có
khóa thích hợp. Người gửi tin lúc này sẽ sử dụng PGP để tạo ra một
chữ ký số cho tin nhắn với một thuật toán mã hóa có thể là RSA hoặc
DSA. PGP sẽ tạo ra một giá trị băm từ một đoạn dữ liệu của người
gửi sau đó tạo ra một chữ ký số từ giá trị băm đó bằng khóa bí mật.
Chữ ký số cho người nhận thông tin xác minh tính xác thực của
nguồn gốc thông tin, và cũng xác nhận rằng thông tin còn nguyên vẹn.
Một chữ ký số công khai rất quan trọng trong cung cấp chứng thực và
toàn vẹn dữ liệu.
Cách thức làm việc của chữ ký số được mô tả trong hình:
-

6.

Lược đồ ký trên một thông điệp PGP
Người gửi tạo ra một thông điệp.

- PGP sử dụng MD5 băm thông điệp tạo ra một mã băm 128 bit.


- Người gửi lấy khóa bí mật trên vòng khóa để sử dụng
- PGP mã hóa mã băm bằng RSA sử dụng chìa khóa bí mật của
người gửi, và gán kết quả vào thông điệp. Key ID của khóa công khai
của người gửi tương ứng gắn liền với chữ ký.

Lược đồ kiểm tra chữ ký trên một thông điệp PGP của người nhận
Trong lược đồ trên
-

PGP lấy Key ID được gán trong chữ ký và sử dụng nó để lấy

-

khóa công khai đúng từ vòng khóa công khai.
PGP sử dụng RSA với khóa công khai của người gửi để giải
mã khôi phục mã băm.


-

PGP tạo ra một mã băm mới cho thông điệp và so sánh nó
với mã băm giải mã. Néu cả hai trùng nhau, thông điệp được
xác thực.

Sự kết hợp của MD5 và RSA cung cấp một sơ đồ chữ ký số
hiệu quả. Với sức mạnh của RSA, người nhận chắc chắn rằng chỉ
người sở hữu riêng với khóa thích hợp mới có thể tạo chữ ký. Với sức

mạnh của MD5, người nhận chắc chắn rằng không ai khác có thể tạo
ra một thong điệp mới mà mã băm trùng với mã băm của thông điệp
gốc và vì vậy không thể trùng với chữ ký của thông điệp gốc.
7.

Mạng lưới tin cậy – Web of Trust.
Một trong những yếu tố quan trọng nhất khi mã hóa thông điệp
và chứng nhận chữ ký là đảm bảo rằng người nhận khóa công khai
đích thực là chủ thể được chọn để gửi đến. Nếu như ta tải về một khóa
công khai mà không kiểm tra trước thì sẽ có rất nhiều khả năng tồi tệ
xảy ra như khóa đó bị giả mạo. Từ những phiên bản đầu tiên, PGP đã
có những điều khoản nhằm xác thực việc phát tán các khóa. Những
điều khoản này được thiết kế dưới dạng mã hóa nên những hành động
giả mạo có thể phát hiện được. Tuy nhiên, nếu như tạo ra một chứng
chỉ để có thể phát hiện được những thay đổi trên khóa là không hiệu
quả, việc này chỉ có thể phát hiện sau khi khóa được tạo chứ không
phải trước đó. Người dùng cũng phải gửi khóa với chứng chỉ đến
đúng địa chỉ người nhận. Vì vậy, khóa công khai này có thể sẽ được
kết nối đến với một bên người dùng thứ 3 để có thể chứng thực việc
trao đổi khóa giữa hai bên. Sẽ có rất nhiều lớp bảo mật được tạo ra
nếu như ta đi theo mô hình này. Tuy vậy trên thực tế, có rất ít chương
trình thực hiện việc xác thực khóa công khai này vì nó khá khó để cài
đặt.

8.

Độ bảo mật của PGP.


Theo những thông tin chính thức hiện có, gần như không có

một cách nào để có thể bẻ khóa mã hóa bằng PGP. Từ năm 1995, nhà
mật mã học Bruce Scheiner đã phát biểu rằng những phiên bản đầu
của PGP có mức độ bảo mật mạnh tương tự với mật mã hóa của quân
đội. Tuy nhiên, PGP vẫn được cho là có những điểm yếu có thể bị
khai thác trên lý thuyết. PGP không chỉ bảo về được dữ liệu khi truyền
đi mà còn cả khi lưu trữ dữ liệu.
Trong những phiên bản đầu tiên, PGP sử dụng thuật toán RSA
để mã hóa. Phiên bản thứ hai thì PGP sử dụng giải thuật mã hóa khóa
đối xứng IDEA. Tại phiên bản hiện tại, PGP đã được bổ sung thêm
nhiều thuật toán mã hóa khác. Phần lớn các điểm yếu đều đến từ việc
sử dụng các thuật toán mã hóa này.
Tuy nhiên, PGP có thể rất khó khăn cho kẻ gian giải mã được
nhưng vẫn có nhiều cách khác để chúng lấy được dữ liệu. Những kỹ
thuật như rubber-hose (Ép cung, tra tấn người giữ khóa để lấy khóa)
hay black-bag cryptanalysis (Cài đặt trojan hay key log vào máy nạn
nhân để đánh cắp khóa) có thể phá vỡ bảo mật PGP. Trong những
trường hợp như vậy thì gần như không có phần mềm mã hóa nào có
thể bảo vệ được dữ liệu cả.
9.

Mô hình hoạt động của giao thức PGP.
• Giao thức PGP hỗ trợ 3 mô hình hoạt động chính:
- Mô hình PGP chỉ đảm bảo tính xác thực thông điệp.
- Mô hình PGP chỉ đảm bảo tính bí mật thông điệp.
- Mô hình PGP đảm bảo tính xác thực và bí mật thông điệp.
• Để thuận tiện cho việc mô tả hoạt động của các mô hình PGP, ta có
các ký hiệu sau:
- H : Hàm băm một chiều.
- EC: Hàm mã hóa khóa đối xứng.
- DC: Hàm giải mã khóa đối xứng.

- EP: Hàm mã hóa khóa bất đối xứng.
- DP: Hàm giải mã khóa bất đối xứng.
- Z: Hàm nén.
- Z -1: Hàm giải nén.
- PUa : Khóa công khai của bên A.
- PRa : Khóa riêng của bên A.
- PUb : Khóa công khai của bên B.


a.

PRb : Khóa riêng của bên B.
Ks : Khóa phiên.

Mô hình PGP chỉ đảm bảo tính xác thực thông điệp.

Mô hình này sử dụng chữ ký số để xác thực tính toàn vẹn và chủ thể
gửi thông điệp. Điều kiện thực hiện mô hình này là bên gửi A phải sở hữu
cặp khóa (khóa công khai PUa và khóa riêng PRa).
Quá trình thực hiện gửi/nhận thông điệp M đảm bảo tính xác thực tại
mỗi bên như sau:
-

-

Bên gửi A:
+ Tính toán giá trị băm (giá trị đại diện) của thông điệp M sử
dụng hàm băm H.
+ Sử dụng khóa riêng PRa để mã hóa giá trị băm của M tạo
thành chữ ký số.

+ Ghép chữ ký số vào thông điệp M.
+ Nén thông điệp và chữ ký số sử dụng hàm nén Z.
+ Gửi bản dữ liệu đã nén cho người nhận.
Bên nhận B:
+ Giải nén dữ liệu nhận được sử dụng hàm Z-1.
+ Tách chữ ký số khỏi thông điệp M và sử dụng khóa công
khai của bên gửi PUa để giải mã chữ ký số để khôi phục giá
trị hàm băm h1. Bên gửi A có thể sử dụng các phương pháp
đổi khóa công khai PUa cho bên nhận.


+ Tính toán giá trị băm h2 của thông điệp M sử dụng hàm
băm H.
+ So sánh 2 giá trị băm h1 và h2: Nếu h1 = h2 thì thông điệp
truyền là toàn vẹn và thông điệp được gửi bởi bên A. Nếu
h1# h2 thì thông điệp M có thể đã bị sửa đổi, hoặc không
được ký và gửi bởi bên A.
b.

Mô hình PGP chỉ đảm bảo tính bí mật thông điệp.

Mô hình này sử dụng kết hợp giữa mã hóa khóa đối xứng và mã
hóa khóa bất đối xứng để đảm bảo tính bí mật của thông điệp.
Điều kiện thực hiện mô hình này là bên nhận B phải sở hữu cặp
khóa (khóa công khai PUb và khóa riêng PRb).
Quá trình thực hiện gửi/nhận thông điệp M đảm bảo tính bí mật
tại mỗi bên như sau:
-

Bên gửi A:

+ Nén thông điệp M sử dụng hàm nén Z.
+ Sinh khóa phiên Ks và sử dụng khóa Ks để mã hóa thông
điệp M sử dụng hàm mã hóa đối xứng EC.
+ Sử dụng công khai PUb của bên nhận B để mã hóa khóa
phiên Ks sử dụng hàm mã hóa bất đối xứng EP. Bên nhận B
có thể sử dụng các phương pháp trao đổi khóa công khai để
chuyển khóa công khai PUb cho bên gửi.
+ Ghép chữ bản mã của Ks vào bản mã của thông điệp M.
+ Gửi bản mã dữ liệu cho người nhận.


-

Bên nhận B:
+ Tách bản mã của Ks vào bản mã của thông điệp M.
+ Giải mã bản mã Ks sử dụng hàm giải mã khóa bất đối
xứng DP và khóa riêng PRb để khôi phục Ks.
+ Sử dụng khóa phiên Ks và hàm giải mã khóa đối xứng DC
nén
để giảibảnmã
khôikí phục
thông
điệpmãđã
nén M.

mã hóa
hóa khóa phiên
định dạng ascii armor
+ Giải nén khôi phục thông điệp M sử dụng hàm Z-1.


Mô hình PGP đảm bảo tính bí mật và xác thực thông điệp.
Mô hình này là sự kết hợp của cả 2 mô hình đã mô tả ở trên. Ta sẽ
sử dụng chữ ký số để xác minh tính toàn vẹn và chủ thể của thông điệp.
Đồng thời mã hóa đối xứng và mã hóa bất đối xứng để đảm bảo tính bảo
mật của thông điệp.
Điều kiện để thực hiện được mô hình này là cả 2 bên gửi và nhận
đều phải có cặp khóa công khai và bí mật của riêng mình. Theo đó, bên
gửi A thực hiện ký và mã hóa thông điệp, còn bên nhận B thực hiện giải
mã và kiểm tra chữ ký thông điệp.
c.

Mô hình PGP đảm bảo tính xác thực và bảo mật
Bên gửi A:
+ Đầu tiên, sử dụng khóa bí mật tạo giá trị băm của chữ ký số.
+ Sau đó mã hóa file dữ liệu với khóa công khai của bên nhận.
+ Ghép chữ ký số và file được mã hóa với nhau và gửi đi.
- Bên nhận B:
+ Sau khi nhận được file, bên nhận giải mã file với khóa riêng
của mình.
-


+ Chứng nhận chữ ký số với khóa công khai của người gửi.
+ Tổng hợp lại thành file gốc.
IV.

V.

Ưu điểm/ Nhược điểm của giao thức PGP.
1.


Ưu điểm của PGP.
• Bảo mật là điểm lợi lớn. PGP thường được xem là an toàn hơn mã
hóa đối xứng.
• Ngay cả khi kênh truyền các tệp bị xâm phạm, các khóa và tệp
riêng vẫn an toàn. Tương tự, chúng vẫn an toàn khi kênh chia sẻ
public key bị xâm phạm.
• Signing files là một thủ tục được tích hợp, giúp tự động xác thực
danh tính người gửi, đảm bảo không bị bên thứ ba giả mạo.
• Có thể làm việc với ngay lập tức với bất kì người sử dụng
OpenPGP nào, cộng đồng lớn nhất trên thế giới.

2.

Nhược điểm của PGP.
• Người dùng cuối cần trao đổi khóa và sử dụng công nghệ mã hóa
của họ một cách chính xác. Họ thường vô tình gửi các private key
của mình cho nhau.
• Hiệu suất chậm hơn mã hóa đối xứng.

Ứng dụng của giao thức PGP.
1.

Open PGP.
OpenPGP như đã nói ở trên là một chuẩn mã hóa e-mail được
IETF công nhận. Hiện nay, có rất nhiều phần mềm e-mail hỗ trợ
OpenPGP trực tiếp hoặc gián tiếp. Các phần mềm e-mail của bên thứ
ba này không được nhóm làm việc OpenPGP phát triển mà là các
công ty công nghệ khác. Ví dụ một số phần mềm như Outlook với
gpg4o, gpg4win của Microsoft, Apple Mail với GPGTools của Apple,

KMail: Kleopatra của Linux.
Không chỉ dừng ở các trình duyệt web, PGP còn được hỗ trợ ở
các plugins hay extension như Mailvelope, FlowCrypt, Psono.

2.

PGP4Win.
Ban đầu, GPG4Win (GNU Privacy Guard for Windows) không
chỉ dùng để mã hóa e-mail. Nó còn có thể được dùng để mã hóa thư


mục và tệp trong hệ thống Windows. GPG4Win là phần mềm phân
phối chính thức cho Windows.
3.

VI.

Portable PGP.
Là một phần mềm mã nguồn mở, viết trên nền tảng Java. Nó
cho phép người dùng mã hóa, giải mã, ký và chứng thực tin nhắn và
file với một giao diện rất thân thiện.

Ví dụ thực tế:
“Ứng dụng của giao thức PGP trong việc gửi/nhận email”.
1.

Viết email có nội dung “Hello”, sau đó nội dung được mã hóa bởi
khóa ký tự.

2.


Nội dung nhận được sau khi mã hóa.



bản mã

chuyển về file mã hóa

khôi phục khóa phiên

giải mã

giải nén

kiểm tra ch


×