1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài tập lớn nhập môn attt tìm hiểu giao thức pgp

13 3 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm hiểu giao thức PGP
Tác giả Đào Quốc Tuấn, Nguyễn Minh Quang
Người hướng dẫn PGS. TS. Nguyễn Khanh Văn
Trường học Đại học Bách khoa Hà Nội
Chuyên ngành Nhập môn An toàn thông tin
Thể loại Bài tập lớn
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 13
Dung lượng 419,3 KB

Nội dung

Theo cách này, PGP có thể tận dụng hiệu quả của mật mã khóa đối xứng cho việc mã hóa dữ liệu lớn với tính bảo mật của mật mã khóa công khai hoặc khóa bất đối xứng cho việc trao đổi khóa

Trang 1

ĐẠI HỌC BÁCH KHOA HÀ NỘI

BÀI TẬP LỚN NHẬP MÔN ATTT

Tìm hiểu giao thức PGP

ĐÀO QUỐC TUẤN

tuan.dq210891@sis.hust.edu.vn

NGUYỄN MINH QUANG

quang.nm215461@sis.hust.edu.vn

Ngành Khoa học máy tính

Giảng viên hướng dẫn: PGS TS Nguyễn Khanh Văn

Bộ môn: Nhập môn An toàn thông tin

Trường: Công nghệ Thông tin và Truyền thông

HÀ NỘI, 6/2024

Trang 2

Table of Contents

III.2 Giải thích của hàm và thuật toán đã sử dụng 5

III.2.c Hàm băm bảo mật (Secure hash function - SHA) 7

Trang 3

I Giới thiệu

Từ những ngày đầu của internet, nhu cầu về các phương pháp mã hóa mạnh

mẽ đã tăng lên khi giao tiếp kỹ thuật số trở nên phổ biến trên nhiều nền tảng Pretty Good Privacy, hay PGP, được phát triển bởi Phil Zimmermann vào năm

1991, là một hệ thống mã hóa cung cấp cả: Quyền riêng tư mật mã và Xác thực cho giao tiếp dữ liệu

PGP thường được sử dụng để mã hóa và giải mã văn bản, e-mail, tệp, thư mục và toàn bộ phân vùng đĩa nhằm tăng cường bảo mật cho giao tiếp email PGP và phần mềm tương tự tuân theo tiêu chuẩn OpenPGP (RFC 4880), một tiêu chuẩn mở để mã hóa và giải mã dữ liệu Các phiên bản hiện đại của PGP có thể tương tác với GnuPG và các hệ thống tuân thủ OpenPGP khác

II Tổng quan

Mã hóa PGP là sự kết hợp giữa mật mã khóa đối xứng và mật mã khóa công khai Theo cách này, PGP có thể tận dụng hiệu quả của mật mã khóa đối xứng cho việc mã hóa dữ liệu lớn với tính bảo mật của mật mã khóa công khai (hoặc khóa bất đối xứng) cho việc trao đổi khóa an toàn Phương pháp mã hóa này cho phép người dùng chưa từng gặp nhau có thể gửi các tin nhắn được bảo mật

mà không cần trao đổi khóa mã hóa riêng tư

PGP đặc biệt nổi tiếng với hiệu quả trong việc bảo mật giao tiếp email, lưu trữ tệp và các hình thức truyền dữ liệu kỹ thuật số khác Hệ thống này ban đầu được cung cấp dưới dạng phần mềm miễn phí vào năm 1991, và vì vậy đã lan truyền nhanh chóng trong số những người dùng muốn có mức độ bảo mật cao hơn cho các tin nhắn e-mail của họ

Cách hoạt động chung

Để hiểu cách PGP hoạt động, sẽ hữu ích nếu nhìn vào một sơ đồ:

Trang 4

Figure 1 How PGP encryption works [4]

PGP hoạt động thông qua sự kết hợp của các kỹ thuật mật mã, nén dữ liệu

và băm (hashing) Nó tương tự như các phương pháp mã hóa phổ biến khác như Kerberos, xác thực người dùng mạng; Secure Sockets Layer (SSL), bảo mật các trang web; và Secure File Transfer Protocol (SFTP), bảo vệ dữ liệu trong quá trình truyền tải

Nhìn chung, PGP sử dụng hệ thống khóa công khai, trong đó mỗi người dùng có một khóa mã hóa duy nhất được công khai và một khóa riêng chỉ họ biết Một tin nhắn được mã hóa khi người gửi sử dụng khóa công khai của người nhận để mã hóa tin nhắn, sau đó tin nhắn được giải mã khi người nhận

mở nó bằng khóa riêng của họ

Ở mức độ bề mặt, chúng ta có thể hiểu mã hóa PGP theo phương pháp 3 bước sau:

● Đầu tiên, PGP của User A tạo ra một khóa phiên ngẫu nhiên bằng cách sử dụng một trong hai thuật toán chính Khóa này là một số rất lớn không thể đoán được và chỉ được sử dụng một lần

● Tiếp theo, khóa phiên này được mã hóa bằng khóa công khai của User B -người nhận dự định của tin nhắn Khóa công khai được liên kết với danh tính của một người cụ thể, và bất kỳ ai cũng có thể sử dụng nó để gửi tin nhắn cho họ

● Người gửi A gửi khóa phiên PGP đã mã hóa của mình cho người nhận B,

Trang 5

và họ có thể giải mã nó bằng khóa riêng của mình Sử dụng khóa phiên này, người nhận bây giờ có thể giải mã tin nhắn thực sự

Chi tiết về phương pháp mã hóa PGP sẽ được thảo luận thêm trong chương tiếp theo

Vậy tại sao chúng ta phải mã hóa khóa phiên bằng phương pháp mật mã khóa công khai?

Mật mã khóa công khai chậm hơn nhiều so với mã hóa đối xứng (trong đó

cả người gửi và người nhận đều có cùng một khóa) Tuy nhiên, việc sử dụng mã hóa đối xứng yêu cầu người gửi chia sẻ khóa mã hóa với người nhận dưới dạng văn bản rõ ràng, và điều này sẽ không an toàn Vì vậy, bằng cách mã hóa khóa đối xứng sử dụng hệ thống khóa công khai (bất đối xứng), PGP kết hợp hiệu quả của mã hóa đối xứng với tính bảo mật của mật mã khóa công khai

III Kiến trúc

III.1 Sơ đồ mã hóa PGP

Figure 2 PGP cryptographic functions [7]

Notation:

H = Hàm Hash

|| = Hàm Combine

EP = Mã hóa Public-key

EC = Mã hóa Symmetric

DP = Giải mã Public-key

DC = Giải mã Symmetric

Z = Hàm nén Zip

Trang 6

Z^-1 = Hàm trích xuất Zip

Ks = Secret key (hoặc Session key)

KUa = Public key của A

KRa = Private key của A

KUb = Public key của B

KRb = Private key của B

E KUb [Ks] = Secret key được mã hóa bởi public key của B

E KRa [H(M)] = Hashed message được mã hóa bởi private key của A

A và B đều tạo cặp khóa của họ (Khóa Công khai và Khóa Riêng) bằng cách sử dụng thuật toán RSA A và B nên biết Public key của nhau

Ở phía A/Người gửi:

1 A viết một tin nhắn M, mà cô ấy dự định gửi cho B

2 M được cung cấp dưới dạng đầu vào cho thuật toán băm SHA-512 để nhận băm nhị phân 512 bit (được biểu diễn dưới dạng chuỗi thập lục phân

128 bit) (Thuật toán băm SHA-512 là một biến thể thuộc loại thuật toán SHA-2)

3 Băm này được mã hóa bằng khóa riêng của A (băm được ký điện tử bằng thuật toán RSA) Các đầu vào cho RSA là KRA và băm Đầu ra từ RSA

là băm được ký điện tử hoặc băm đã mã hóa EH

4 Bây giờ, M và EH được ghép lại với nhau ( || )

5 M và EH (ở dạng mảng chuỗi) đóng vai trò là đầu vào cho thuật toán nén ZIP (Z) để nhận M đã nén và EH đã nén, cũng ở dạng mảng chuỗi

6 Đầu ra của bước trên bây giờ được mã hóa bằng thuật toán mã hóa đối xứng DES Để làm điều này, trước tiên chúng ta sẽ tạo Secret Key (Ks) cho DES Khóa này và đầu ra của bước 5 sẽ đóng vai trò là đầu vào cho thuật toán mã hóa DES, sẽ cung cấp cho chúng ta đầu ra đã mã hóa (cũng

ở dạng mảng chuỗi)

7 Cuối cùng nhưng không kém phần quan trọng, vì M được mã hóa bằng SecretKey, nó cũng phải được gửi cho B Chúng ta sẽ mã hóa Secret Key của thuật toán DES bằng Khóa Công khai của B Chúng ta sẽ sử dụng RSA cho việc này và đầu vào cho nó sẽ là Khóa Công khai của B và SecretKey

8 Đầu ra của bước 6 và 7 bây giờ được ghép lại ( || ) và gửi dưới dạng tin nhắn cuối cùng cho B

Trang 7

Toàn bộ thông điệp được gửi dưới dạng một mảng các chuỗi (String finalmessage[]) chứa các nội dung sau tại các chỉ mục:

0: Thông điệp đã nén M, được mã hóa với Khóa Bí mật

1: Băm kỹ thuật số đã ký EH sau đó được nén và mã hóa với Khóa Bí mật (E KUb[Ks])

2: Kết quả của bước 7

Ở phía B / Người nhận:

1 B sẽ đầu tiên giải mã (DP) Khóa Bí mật của DES bằng các Khóa Riêng của mình Các đầu vào cho thuật toán RSA sẽ là Khóa Riêng của B và finalmessage[2] Đầu ra từ RSA sẽ cung cấp cho B Khóa Bí mật

2 Khóa Bí mật này bây giờ sẽ đóng vai trò là một trong các đầu vào cho thuật toán giải mã DES (DC) của finalmessage[0] và finalmessage[1] Hai thông điệp này cũng sẽ đóng vai trò là các đầu vào cho thuật toán giải

mã DES Đầu ra của bước này sẽ là phiên bản đã giải mã của finalmessage[0] và finalmessage[1]

3 Các đầu ra của bước trên sẽ được cung cấp làm đầu vào cho thuật toán ZIP (Z^-1) để giải nén

4 Từ đầu ra của bước trên, chúng ta sẽ có được băm kỹ thuật số đã ký và thông điệp gốc M Chúng ta sẽ kiểm tra xem liệu băm này có được ký bởi

A hay không Để làm điều này, chúng ta sẽ tính toán băm của thông điệp gốc M bằng cách sử dụng SHA-512 (calculated_hash) Chúng ta cũng sẽ giải mã băm kỹ thuật số đã ký bằng các khóa công khai của A bằng cách

sử dụng RSA (Đầu vào cho RSA: băm kỹ thuật số đã ký và các khóa công khai của A và Đầu ra từ RSA: decrypted_hash)

5 So sánh decrypted_hash và calculated_hash Nếu chúng giống nhau, thì xác thực được đạt được, nghĩa là thông điệp thực sự được gửi bởi A

III.2 Giải thích của hàm và thuật toán đã sử dụng

III.2.a Mật mã khóa đối xứng

Trong mật mã khóa đối xứng, cùng một khóa được sử dụng cho cả mã hóa

và giải mã Khóa chia sẻ này phải được giữ bí mật giữa các bên giao tiếp

Trang 8

Figure 3 Symmetric-key encryption: the same key is used for both encryption and decryption [1]

Quá trình thực hiện:

Mã hóa: Người gửi sử dụng khóa bí mật chung để mã hóa thông điệp gốc,

biến nó thành văn bản mã hóa

Giải mã: Người nhận sử dụng cùng một khóa bí mật chung để giải mã văn

bản mã hóa trở lại thành văn bản gốc ban đầu

Mật mã khóa đối xứng thường được sử dụng để bảo đảm tính bảo mật của

dữ liệu, chẳng hạn như mã hóa tập tin hoặc bảo mật các kênh giao tiếp

III.2.b Mật mã khóa công khai

Figure 4 A n unpredictable (typically large and random ) number is used to begin generation of an acceptable pair of keys

suitable for use by an asymmetric key algorithm.[3]

Mật mã khóa công khai (hoặc mật mã không đối xứng) sử dụng một cặp khóa: một khóa công khai và một khóa riêng Khóa công khai được chia sẻ công khai, trong khi khóa riêng được giữ bí mật

Trang 9

Quá trình thực hiện:

Mã hóa: Người gửi sử dụng khóa công khai của người nhận để mã hóa thông

điệp

Giải mã: Chỉ người nhận, người sở hữu khóa riêng tương ứng, mới có thể giải

mã và đọc được thông điệp

Mật mã khóa công khai thường được sử dụng cho trao đổi khóa an toàn, chữ ký số và đảm bảo tính xác thực và toàn vẹn của thông điệp

III.2.c Hàm băm bảo mật (Secure hash function - SHA)

SHA là viết tắt của thuật toán băm bảo mật SHA là phiên bản sửa đổi của MD5 và được sử dụng để băm dữ liệu và chứng chỉ Một thuật toán băm rút gọn

dữ liệu đầu vào thành một dạng nhỏ hơn không thể hiểu được bằng cách sử dụng các phép toán bit, các phép cộng mô-đun và các hàm nén Băm tương tự như mã hóa, điểm khác biệt duy nhất giữa băm và mã hóa là băm chỉ có chiều một chiều, nghĩa là một khi dữ liệu đã được băm, kết quả băm không thể bị bẻ khóa, trừ khi sử dụng tấn công vét cạn

SHA hoạt động theo cách ngay cả khi chỉ một ký tự trong thông điệp thay đổi, thì nó sẽ tạo ra một giá trị băm khác Hiệu ứng này quan trọng trong mật

mã, vì nó có nghĩa là ngay cả thay đổi nhỏ nhất trong thông điệp đầu vào cũng thay đổi hoàn toàn đầu ra Điều này sẽ ngăn chặn các kẻ tấn công không thể hiểu được nội dung ban đầu của giá trị băm và báo cho người nhận biết liệu thông điệp có bị thay đổi trong quá trình truyền tải hay không

Ví dụ, băm của hai thông điệp tương tự nhưng khác nhau, tức là “Heaven”

và “heaven” là khác nhau Tuy nhiên, chỉ có sự khác biệt giữa một chữ cái viết hoa và một chữ cái viết thường

Thông điệp ban đầu được băm với SHA-1, kết quả là giá trị băm

“06b73bd57b3b938786daed820cb9fa4561bf0e8e” Nếu thông điệp thứ hai được băm với SHA-1, giá trị băm sẽ trông như sau:

“66da9f3b8d9d83f34770a14c38276a69433a535b”

Figure 5 SHA (Secure Hash Algorithm) Process Simulation [9]

Trang 10

SHA cũng giúp tiết lộ xem một thông điệp gốc có bị thay đổi theo bất kỳ cách nào hay không Bằng cách tham chiếu đến giá trị băm gốc, người dùng có thể biết liệu ngay cả một chữ cái có bị thay đổi hay không, vì các giá trị băm sẽ hoàn toàn khác nhau Một trong những phần quan trọng nhất của SHA là chúng mang tính quyết định (deterministic) Điều này có nghĩa là miễn là hàm băm được sử dụng được biết đến, bất kỳ máy tính hoặc người dùng nào cũng có thể tái tạo lại giá trị băm Tính quyết định của SHA là một trong những lý do mà mỗi chứng chỉ SSL trên Internet đều bắt buộc phải được băm bằng hàm SHA-2

III.2.d Hàm Zip

ZIP là một định dạng tệp lưu trữ hỗ trợ nén dữ liệu không mất mát Một tệp ZIP có thể chứa một hoặc nhiều tệp hoặc thư mục đã được nén

ZIP là một định dạng tệp phổ biến được sử dụng để nén nhiều tệp vào một nơi Điều này giúp giảm kích thước tệp và dễ dàng hơn trong việc truyền và lưu trữ Sau khi nhận được, người nhận có thể giải nén (hoặc trích xuất) tệp ZIP và

sử dụng nó ở định dạng gốc

Figure 6 Zip Process Simulation [10]

Các tệp ZIP hoạt động tương tự như các thư mục tiêu chuẩn khác Chúng lưu trữ dữ liệu và tệp vào một vị trí duy nhất Tuy nhiên, nội dung của các tệp

Trang 11

ZIP được nén, giảm bớt dung lượng dữ liệu mà máy tính của bạn cần.

Thông thường, nén tệp hoạt động bằng cách phân tích toàn bộ tệp, nhận diện các mẫu và dữ liệu giống nhau hoặc lặp lại, và thay thế các bản sao bằng một mã nhận dạng duy nhất Mã này thường nhỏ hơn nhiều so với các mục gốc

và yêu cầu ít không gian hơn Kết quả là, tệp nén có kích thước nhỏ hơn đáng kể

Định dạng tệp ZIP cho phép sử dụng nhiều thuật toán nén khác nhau, mặc

dù DEFLATE là phổ biến nhất

Microsoft đã tích hợp hỗ trợ ZIP (dưới tên "compressed folders") trong các phiên bản của Microsoft Windows từ năm 1998 thông qua phần bổ sung

"Plus! 98" cho Windows 98 Hỗ trợ gốc đã được thêm vào từ năm 2000 trong Windows ME Apple đã tích hợp hỗ trợ ZIP trong Mac OS X 10.3 (thông qua BOMArchiveHelper, hiện là Archive Utility) và các phiên bản sau Hầu hết các

hệ điều hành miễn phí đều có hỗ trợ ZIP tích hợp theo cách tương tự như Windows và macOS

IV Ưu điểm và nhược điểm

IV.1 Ưu điểm của PGP

Mã hóa PGP mang lại một lợi thế vượt trội nhờ cam kết vững chắc đối với các giao thức bảo mật mạnh mẽ Được biết đến rộng rãi với hiệu quả trong việc bảo vệ các liên lạc riêng tư, đặc biệt là trong các môi trường dựa trên đám mây,

mã hóa PGP đóng vai trò như một rào cản đáng gờm chống lại các nỗ lực truy cập trái phép Các tệp và email được mã hóa PGP chống lại sự xâm nhập từ các

cá nhân độc hại, tin tặc, hoặc thậm chí là các thực thể chính phủ, củng cố vị thế của nó như là lựa chọn ưu tiên để bảo vệ tính bảo mật dữ liệu trong một thế giới

kỹ thuật số đầy rẫy các mối đe dọa tiềm ẩn

Chẳng hạn, một tập đoàn đa quốc gia chịu trách nhiệm truyền tải dữ liệu tài chính nhạy cảm qua biên giới có thể tự tin dựa vào mã hóa PGP để bảo vệ các liên lạc của họ khỏi sự đánh chặn của các đối thủ trên mạng, từ đó duy trì tính toàn vẹn của các hoạt động và tạo niềm tin với các bên liên quan

Tuy nhiên, sự xuất hiện của các lỗ hổng như EFAIL, nhắm mục tiêu vào

mã hóa OpenPGP và S/MIME, là lời nhắc nhở sâu sắc về cuộc chiến liên tục để củng cố các triển khai PGP chống lại các mối đe dọa và lỗ hổng đang phát triển

IV.2 Nhược điểm của PGP

Trang 12

Phức tạp: Mặc dù có hiệu quả không thể phủ nhận, mã hóa PGP thường gặp phải chỉ trích về sự khó sử dụng Những phức tạp liên quan đến việc mã hóa

dữ liệu đòi hỏi một sự đầu tư đáng kể về thời gian và công sức, từ đó giới thiệu những phức tạp vào quá trình truyền tải thông điệp Do đó, các tổ chức cân nhắc

áp dụng mã hóa PGP cần phân bổ nguồn lực cho các sáng kiến đào tạo nhân viên

để đảm bảo sử dụng thành thạo trong khung hoạt động của họ

Quản lý khóa: Hiểu biết toàn diện về cơ chế quản lý khóa phức tạp của PGP là cần thiết để ngăn chặn các vi phạm bảo mật vô tình Dù xuất phát từ việc

sử dụng không đúng cách hoặc quản lý khóa không đúng, các lỗi trong quản lý khóa có thể làm suy yếu tư thế bảo mật của người dùng, đặc biệt là trong các môi trường bảo mật cao nơi bất kỳ lỗ hổng nào cũng có thể bị khai thác dẫn đến hậu quả thảm khốc

Thiếu tính ẩn danh: Trong khi mã hóa PGP cung cấp một lớp bảo mật mạnh mẽ cho các thông điệp, nó thiếu khả năng ẩn danh hóa danh tính của người gửi và người nhận Giới hạn vốn có này khiến người dùng có nguy cơ bị truy vết, làm suy yếu sự riêng tư và bảo mật của họ Hơn nữa, việc không mã hóa dòng chủ đề càng nhấn mạnh sự cần thiết phải cẩn trọng khi truyền tải thông tin nhạy cảm Để giảm bớt các lo ngại này, người dùng có thể lựa chọn các phương pháp thay thế như duyệt web ẩn danh hoặc các nền tảng nhắn tin mã hóa như Signal

Tương thích: Việc sử dụng hiệu quả mã hóa PGP phụ thuộc vào cả người gửi và người nhận sử dụng các phiên bản phần mềm tương thích Sự tương thích cần thiết này có thể tạo ra các thách thức về mặt logistic, đặc biệt là trong các tình huống liên quan đến hệ sinh thái công nghệ đa dạng hoặc hệ thống cũ Do

đó, tính khả dụng của mã hóa PGP có thể bị hạn chế trong các môi trường không thể đảm bảo sự tương thích liền mạch, do đó cần phải có các biện pháp bảo mật thay thế

V Kết luận

Giao thức Pretty Good Privacy (PGP) đã chứng minh là một tiêu chuẩn mã hóa mạnh mẽ và linh hoạt trong lĩnh vực bảo mật dữ liệu Cách tiếp cận kết hợp của nó, kết hợp các điểm mạnh của cả mã hóa khóa đối xứng và khóa công khai, cung cấp một giải pháp toàn diện cho việc mã hóa, giải mã và xác thực dữ liệu Kiến trúc của giao thức PGP, bao gồm việc sử dụng các hàm băm an toàn

và các thuật toán nén, đảm bảo tính toàn vẹn và bảo mật của dữ liệu Nó mang lại những ưu điểm đáng kể như mã hóa mạnh, chữ ký số và khả năng tương thích với nhiều hệ thống và dịch vụ

Tuy nhiên, giống như bất kỳ công nghệ nào, PGP không phải là không có nhược điểm Những nhược điểm này bao gồm sự phức tạp trong quản lý khóa

và khả năng xảy ra lỗi người dùng khi xử lý khóa một cách an toàn Ngoài ra,

Ngày đăng: 02/11/2024, 20:29

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Wikipedia. "Symmetric-key algorithm." Accessed June 1, 2024 Sách, tạp chí
Tiêu đề: Symmetric-key algorithm
[2] Wikipedia. "Pretty Good Privacy." Accessed June 1, 2024 Sách, tạp chí
Tiêu đề: Pretty Good Privacy
[3] Wikipedia. "Public-key cryptography." Accessed June 1, 2024 Sách, tạp chí
Tiêu đề: Public-key cryptography
[4] Varonis. "PGP encryption." Accessed June 1, 2024 Sách, tạp chí
Tiêu đề: PGP encryption
[5] Digital Guardian. "What is PGP encryption: Defining and outlining uses." Accessed June 1, 2024 Sách, tạp chí
Tiêu đề: What is PGP encryption: Defining and outlining uses
[6] Fortinet. "PGP encryption." Accessed June 1, 2024 Sách, tạp chí
Tiêu đề: PGP encryption
[7] Sourav, P. "PGP." IIT Kharagpur. Accessed June 1, 2024 Sách, tạp chí
Tiêu đề: PGP
[8] FreeCodeCamp. "Understanding PGP by simulating it." Accessed June 1, 2024 Sách, tạp chí
Tiêu đề: Understanding PGP by simulating it
[9] Encryption Consulting. "What is SHA?" Accessed June 1, 2024 Sách, tạp chí
Tiêu đề: What is SHA
[10] Spiceworks. "What is a ZIP file?" Accessed June 1, 2024 Sách, tạp chí
Tiêu đề: What is a ZIP file
[11] Fortinet. "PGP encryption." Accessed June 1, 2024 Sách, tạp chí
Tiêu đề: PGP encryption