Trong phần này và trong các bài giảng tiếp theo, tôi sẽ chỉ cho bạn cách sử dụng Pjp để mã
hóa và giải mã các tệp văn bản, email và chúng tôi cũng sẽ sử dụng nó để ký và xác minh tính toàn vẹn của tệp, email,
v.v. trên.
Bằng cách này, chúng tôi sẽ có thể giao tiếp an toàn vì mọi thứ gửi và nhận sẽ được mã hóa
và chúng tôi sẽ có thể xác minh tính toàn vẹn của dữ liệu được gửi.
Vì vậy, chúng tôi sẽ có thể ký bất cứ thứ gì chúng tôi gửi và người nhận sẽ có thể xác minh rằng dữ liệu
này thực sự đã được gửi từ chúng tôi và không bị giả mạo.
Bây giờ, lý do tại sao chúng ta sẽ sử dụng BGP để mã hóa và xác minh tính toàn vẹn, bởi vì
đây là một mã hóa rất mạnh, đã qua thử thách của thời gian và vẫn chưa bị phá vỡ.
Ngay cả khi dựa trên các báo cáo bị rò rỉ, có vẻ như ngay cả các cơ quan chính phủ cũng chưa thể phá vỡ nó.
Vì vậy, nó là một mã hóa rất, rất mạnh, mặc dù PJP là viết tắt của mã hóa khá tốt.
Tuyên bố này thực sự mang tính châm biếm vì đây là một loại mã hóa rất mạnh và mạnh mẽ.
Bây giờ, trong bài giảng này, tôi muốn giải thích cho bạn cách hoạt động của Pjp nói chung.
Và sau đó trong các bài giảng tiếp theo, chúng ta sẽ xem cách chúng ta có thể sử dụng nó để mã hóa tất cả các loại dữ liệu
và cách sử dụng nó để ký và xác minh tính toàn vẹn.
Bây giờ Pjp là một khóa công khai hoặc một mã hóa bất đối xứng.
Và để hiểu cách hoạt động của nó, trước tiên chúng ta hãy xem xét loại mã hóa truyền thống
khác, mã hóa đối xứng.
Vì vậy, hãy lấy một ví dụ mà chúng tôi có hai người, David và John.
Chúng ta sẽ quên đi cách họ giao tiếp.
Chúng ta sẽ giả định rằng David muốn gửi một tin nhắn cho John.
Và nội dung của tin nhắn này là tin nhắn bí mật.
Bây giờ, nếu David muốn bảo vệ tin nhắn của mình khỏi bất kỳ ai có thể chặn hoặc đọc
tin nhắn này, anh ấy có thể sử dụng khóa mã hóa để mã hóa tin nhắn này và điều này sẽ biến tin
nhắn thành vô nghĩa.
Sau đó, anh ta có thể tiếp tục và gửi tin nhắn này cho John bằng bất kỳ phương thức nào bằng cách gửi dưới dạng email hoặc qua đường bưu điện
hoặc dưới dạng tin nhắn văn bản.
Nó không thực sự quan trọng.
Và nếu tin nhắn này bị chặn, nội dung của tin nhắn sẽ vô nghĩa.
Vì vậy, nó sẽ không hữu ích cho người chặn điều này.
John sẽ nhận được tin nhắn.
Anh ấy sẽ mở tin nhắn.
Tin nhắn vẫn sẽ vô nghĩa.
Và sau đó John sẽ sử dụng cùng một khóa mã hóa để giải mã thông điệp này và tiết lộ nội dung của nó,
đó là thông điệp bí mật.
Rất, rất đơn giản.
Về cơ bản, David sử dụng một khóa để mã hóa tin nhắn.
John sử dụng cùng một khóa để giải mã nó, và bằng cách này, cả hai đều có thể đọc được tin nhắn.
Nhưng bất kỳ ai không có chìa khóa sẽ không thể đọc tin nhắn.
Vì vậy, cùng một chìa khóa được sử dụng bởi David và John.
Do đó, đây được gọi là mã hóa đối xứng.
Bây giờ, bạn có thể đoán nó ngay bây giờ.
Khóa này cần phải ở chế độ riêng tư.
Đó là lý do tại sao nó được gọi là khóa bí mật, bởi vì bất kỳ ai nắm được chìa khóa này, họ sẽ
có thể giải mã bất kỳ tin nhắn nào mà David gửi cho John và ngược lại.
Vì vậy, dựa trên tất cả những gì chúng tôi đã nói cho đến nay, chúng tôi có thể thấy rằng khóa bí mật có thể được sử dụng để giải mã
các tin nhắn.
Vì lẽ đó, nó nên được giữ bí mật.
Nhưng bằng cách nào đó David phải chia sẻ nó với John và bất kỳ ai khác mà David muốn giao tiếp.
Do đó, đây là một lỗ hổng lớn đối với mã hóa đối xứng vì khóa phải bí mật nhưng đồng
thời phải chia sẻ và chia sẻ với nhiều người hơn làm tăng bề mặt tấn công,
chưa kể đến vấn đề chia sẻ khóa thực.
Chúng ta sẽ chia sẻ nó như thế nào?
Chúng ta sẽ gửi nó trong một tin nhắn riêng biệt?
Điều gì sẽ xảy ra nếu tin nhắn đó bị chặn?
Điều gì sẽ xảy ra nếu chúng ta đang gửi nội dung qua Internet và chúng ta biết dữ liệu của mình có thể vượt qua bao nhiêu bước?
Điều này có thể bị chặn, đọc và sau đó phần còn lại của giao tiếp của chúng tôi sẽ được giải mã.
Đây là động lực chính để đưa ra mã hóa an toàn hơn và đây là lúc mã hóa khóa công khai
hoặc bất đối xứng xuất hiện.
Vì vậy, hãy quay lại việc David muốn gửi một tin nhắn cho John.
Và nội dung của tin nhắn là thông điệp bí mật và mã hóa bất đối xứng.
Một khóa được sử dụng để mã hóa tin nhắn.
Tin nhắn được gửi trong không gian và sau đó một phím khác được sử dụng để giải mã tin nhắn.
Vì vậy, như bạn có thể thấy trong mã hóa này, hai khóa khác nhau được sử dụng và do đó có tên là mã hóa bất đối xứng.
Bây giờ hai khóa này được gọi là một cặp khóa.
Chúng có liên quan về mặt toán học.
Một được sử dụng để mã hóa tin nhắn và một được sử dụng để giải mã.
Do đó, khóa giải mã không bao giờ được chia sẻ và đó là lý do tại sao nó an toàn hơn.
Bây giờ bạn đang nghĩ nếu khóa giải mã không bao giờ được chia sẻ, điều này sẽ hoạt động như thế nào?
Vâng, chúng ta hãy quay trở lại và xem xét kỹ hơn cách thức hoạt động của nó.
Vì vậy, một lần nữa, David muốn gửi một thông điệp đến John.
Nội dung tin nhắn là tin nhắn bí mật.
Nhưng trước khi gửi tin nhắn này và trước khi mã hóa nó, John sẽ tạo một cặp khóa, khóa công
khai và khóa riêng tư.
Như tôi đã nói, các khóa này được liên kết toán học và John sẽ gửi khóa công khai cho
David, cho người sẽ gửi tin nhắn.
Vì vậy, khóa công khai có thể được chia sẻ với bất kỳ ai.
Bạn thực sự có thể công khai nó trên Internet, trên các thư mục chính.
Nó không thực sự quan trọng vì nó không thể được sử dụng để xác định khóa cá nhân.
Do đó, hoàn toàn an toàn khi chia sẻ khóa công khai.
Vì vậy, David nhận được khóa công khai.
Anh ta sử dụng khóa công khai để mã hóa tin nhắn.
Tin nhắn được gửi bằng bất kỳ phương thức nào.
Nó không thực sự quan trọng.
Và ngay cả khi nó bị chặn, nó sẽ trở nên vô nghĩa.
John sẽ nhận được tin nhắn.
Anh ấy sẽ mở tin nhắn.
Tin nhắn vẫn sẽ vô nghĩa nhưng anh ta sẽ sử dụng khóa riêng tư để giải mã tin nhắn này.
Bằng cách này, anh ta sẽ nhận được nội dung của thông điệp bí mật.
Và như bạn có thể thấy, khóa riêng tư không bao giờ được chia sẻ.
John đã tạo khóa cá nhân và John giữ khóa cá nhân.
Thứ duy nhất được chia sẻ là khóa công khai, không thể được sử dụng để xác định khóa riêng tư và không
thể được sử dụng để giải mã tin nhắn.
Nó chỉ có thể được sử dụng để mã hóa tin nhắn.
Vì vậy, vào cuối cuộc giao tiếp, David sẽ có khóa công khai của John và John sẽ giữ khóa riêng
tư của họ.
Do đó, bây giờ David luôn có thể gửi tin nhắn cho John và John sẽ luôn có thể giải mã
chúng bằng khóa riêng của anh ấy.
Không chỉ vậy, khi David mã hóa thứ gì đó bằng khóa công khai của John, anh ấy có thể yên tâm rằng không
ai có thể giải mã thông điệp này ngoại trừ John, bởi vì John là người duy nhất có khóa riêng và
khóa riêng của anh ấy không bao giờ được chia sẻ.
Nếu John biết anh ta đang làm gì vì không có lý do gì để chia sẻ nó, ngay cả khi anh ta muốn 100
người gửi tin nhắn cho mình, tất cả những gì anh ta phải làm là chia sẻ khóa công khai chứ không phải khóa riêng tư.
Bây giờ, nếu John muốn gửi điều gì đó cho David, điều tương tự cũng có thể được thực hiện theo hướng ngược lại.
Vì vậy, David sẽ tạo một cặp khóa.
Anh ta sẽ gửi cho John khóa công khai của mình và sau đó John sẽ sử dụng khóa công khai của David để mã hóa tin nhắn.
Khi David nhận được chúng, anh ấy sẽ sử dụng khóa riêng của mình để giải mã chúng.
Vì vậy, ý tưởng là rất, rất đơn giản.
Bạn chia sẻ khóa công khai của mình, do đó, tên công khai hoàn toàn an toàn vì nó không thể được sử dụng
để xác định khóa riêng tư và không thể dùng để giải mã tin nhắn.
Vì vậy, bạn chia sẻ khóa công khai và bất kỳ ai muốn gửi tin nhắn cho bạn, họ sẽ mã hóa tin nhắn đó
bằng khóa công khai của riêng bạn và theo cách này, bạn sẽ là người duy nhất có thể giải mã tin nhắn này.
Tương tự khi bạn muốn gửi một tin nhắn khác.
Ví dụ: nếu bạn muốn gửi một tin nhắn cho tôi, tất cả những gì bạn phải làm là mã hóa tin nhắn đó bằng
khóa công khai của tôi.
Và theo cách này, vì tôi không chia sẻ khóa riêng tư của mình với bất kỳ ai nên tôi sẽ là người duy nhất có thể đọc được
tin nhắn.
Vì vậy, bạn có thể đặt tin nhắn này ở bất cứ đâu.
Bạn có thể chia sẻ nó một cách công khai và sẽ vẫn an toàn vì sẽ không ai có thể đọc được tin nhắn
đó ngoài tôi.