Chat với #LongNguyenCIA để được tư vấn về khoá học CIA online
: https://m.me/nguyenvulong.cia.
Cảm nhận của học viên về khoá học CIA với Team #LongNguyenCIA
: https://www.facebook.com/longnguyen.cia/reviews
.
CÂU CHUYỆN ALICE MUỐN GỬI THƯ CHO BOB MÀ EVE CỨ MUỐN XEM TRỘM | LongNguyenCIA
.
.
Trong CIA P3 có một đoạn nói về Public-Key (Asymmetric) Encryption, tình cờ hôm qua đọc The Code Book lại nhìn thấy nữa, cảm giác rất hay nên muốn chia sẻ với các bạn, để hiểu thêm về câu chuyện Alice muốn gửi thư cho Bob mà Eve cứ muốn xem trộm. Một câu đố về lịch sử phát triển của các loại mật mã mà có lẽ bạn đã từng đọc qua ở đâu đó trên Internet<Một đoạn tóm tắt trong The Code Book - ngắn mà vui>
Câu hỏi về Alice, Bob và Eve - 3 nhân vật tiêu chuẩn để thảo luận về mật mã
Alice muốn gửi một bức thư cho Bob hoặc ngược lại, còn Eve thì đang cố nghe lén. Vấn đề truyền thống của mã hóa đó là, trước khi trao đổi một bức thư mã hóa, thì chúng phải chia sẻ một chìa khóa mã.
➡️ Vấn đề phân phối chìa khóa mã. Làm sao chia sẻ chia khóa mã một cách an toàn mà không phải gặp nhau.
☑️ Cách 1: sử dụng từ thời xa xưa
* Alice sẽ gặp nhau trực tiếp, ví dụ 1 tuần 1 lần, để trao đổi chìa khóa mã đủ dùng trong 1 tuần (sổ mã chứa 7 khóa)
➡️ Thông tin sẽ gián đoạn nếu họ không thể gặp nhau
➡️ Họ có thể thuê trung gian chuyển hộ, nhưng sẽ giảm an toàn và tăng chi phí
.
QC
.
☑️ Cách 2: sơ đồ trao đổi chìa khóa mã Diffie - Hellman - Merkle được trình bày 1976
Mô tả kiểu lý thuyết, nếu Alice muốn gởi thư cho Bob, Alice sẽ nói Bob gửi cho Alice một cái hộp, trên đó gắn sẵn ổ khóa của Bob (móc 1 bên tai để vẫn mở được hộp nhe), Alice sẽ cho thư vào hộp, xong gắn ổ khóa mình vào ổ khóa của Bob (móc vào bên tai còn lại, và ổ khóa của Bob). Lúc này Bob đã có thể mở hộp mà không cần chìa của Alice.
* sử dụng hàm số một chiều tổng quát là Y^x(mod P). Alice và Bob sẽ thống nhất trước Y và P, ví dụ là 7^x(mod 11)
* sau đó
Alice bí mật chọn 1 số, ví dụ 3 = A, thay vào hàm 7^3(mod 11) = 2 = alpha
Bob bí mật chọn 1 số, ví dụ 6 = B, thay vào hàm 7^6(mod 11) = 4 = beta
* Alice trao đổi kết quả với Bob 2, 4 mà không cần giữ bí mật, Eve có thể nghe lén kết quả này, nhưng sẽ không thể biết chìa khóa thật, chính Alice và Bob lúc này còn chưa biết chìa khóa là gì mà
* Alice và Bob sẽ thực hiện 1 tính toán nữa để xác định chìa khóa Alice dùng hàm beta^A(mod 11) = 4^3(mod 11) = 9
Bob dùng hàm alpha^B(mod 11) = 2^6(mod 11) = 9
* Số 9 sẽ được dùng làm chìa khóa để mã hóa thư
➡️ Alice sẽ không cần trực tiếp gặp Bob để trao đổi chìa khóa, nhưng vẫn cần liên hệ trước để gửi các thông số tính toán chìa khóa
.
.
☑️ Cách 3: hệ thống bất đối xứng RSA - Rivest, Shamir, Adleman được công khai 1977 (hoặc một hệ tương tự được phát minh độc lập bởi Ellis, Cocks, Williamson)
Mô tả kiểu lý thuyết, Alice sẽ làm sẵn một loại ổ khóa mang tên Alice và để sẵn ở bưu điện, Bob muốn gửi thư cho Alice thì cứ để thư vào hộp và khóa lại bằng khóa của Alice, lúc này không ai có thể mở được trừ người giữ chìa khóa là Alice
* Alice chọn cho mình một chìa khóa công khai (public key) là N, N là tích của 2 số nguyên tố rất lớn p và q (private key). Alice sẽ công khai N và giữ bí mật p và q
* Bob sẽ sử dụng một hàm một chiều để mã hóa thư với chìa khóa là N và gửi nội dung đã mã hóa cho Alice, C = M*e*(mod N)
Eve có thể đọc trộm thư và biết chìa khóa N, nhưng vì mà hóa bằng hàm một chiều (mod N), nên không thể đảo ngược để biết nội dung
* Nhưng Alice thì có thể đảo ngược kết quả dựa trên p và q, M = C*d*(mod N) với d tính toán dựa trên e, p và q
➡️ Alice không cần liên hệ trước với Bob, chỉ cần công khai N
➡️ Về nguyên tắc thì có thể tìm ra được p và q dựa trên N, nhưng N thường rất lớn > 10^130, tương đương số 1 và 130 số 0 sau đó. Tuy nhiên với công bố năm 2019 của Google về việc họ có thể cho máy tính lượng tử giải toán, thì khả năng bảo mật của RSA đã không còn chắn chắn nữa. Phần thắng có vẻ đang ở bên giải mã. 🔎 google-quantum-supremacy-sycamore-computer-qubit-milestone
.
☑️ Cách 3: hệ thống bất đối xứng RSA - Rivest, Shamir, Adleman được công khai 1977 (hoặc một hệ tương tự được phát minh độc lập bởi Ellis, Cocks, Williamson)
Mô tả kiểu lý thuyết, Alice sẽ làm sẵn một loại ổ khóa mang tên Alice và để sẵn ở bưu điện, Bob muốn gửi thư cho Alice thì cứ để thư vào hộp và khóa lại bằng khóa của Alice, lúc này không ai có thể mở được trừ người giữ chìa khóa là Alice
* Alice chọn cho mình một chìa khóa công khai (public key) là N, N là tích của 2 số nguyên tố rất lớn p và q (private key). Alice sẽ công khai N và giữ bí mật p và q
* Bob sẽ sử dụng một hàm một chiều để mã hóa thư với chìa khóa là N và gửi nội dung đã mã hóa cho Alice, C = M*e*(mod N)
Eve có thể đọc trộm thư và biết chìa khóa N, nhưng vì mà hóa bằng hàm một chiều (mod N), nên không thể đảo ngược để biết nội dung
* Nhưng Alice thì có thể đảo ngược kết quả dựa trên p và q, M = C*d*(mod N) với d tính toán dựa trên e, p và q
➡️ Alice không cần liên hệ trước với Bob, chỉ cần công khai N
➡️ Về nguyên tắc thì có thể tìm ra được p và q dựa trên N, nhưng N thường rất lớn > 10^130, tương đương số 1 và 130 số 0 sau đó. Tuy nhiên với công bố năm 2019 của Google về việc họ có thể cho máy tính lượng tử giải toán, thì khả năng bảo mật của RSA đã không còn chắn chắn nữa. Phần thắng có vẻ đang ở bên giải mã. 🔎 google-quantum-supremacy-sycamore-computer-qubit-milestone
.
.
☑️ Cách 4: cách này được đưa ra bởi Phil Zimmermann, dự án PGP (Pretty Good Privacy) để giảm thời gian mã hóa và giải mã
* Alice sử dụng mã hóa đối xứng để mã hóa thư, và có một chìa khóa mã cần được gửi cho Bob
* Alice dùng RSA để mã hóa chìa khóa mã
* Alice gửi cả 2 cho Bob
➡️ Bob sẽ giải mã RSA để lấy chìa khóa, và dùng chìa khóa để mở thư
Một vấn đề nữa nảy sinh là làm sao biết đây là Alice mà không phải là một ai khác,
* Alice sẽ tạo một chữ ký, ví dụ mà m, và mã hóa nó bằng chìa khóa riêng (private key), sigma = m^d(mod N)
* Sau đó cho đoạn sigma và thư và làm các bước mã hóa đối xứng -- lấy chìa khóa -- mã hóa RSA cho chìa khóa -- gửi cho Bob
* Bob sẽ giải mã RSA -- lấy chìa khóa -- giải mã thư, và kiểm tra xem thư này có phải là của Alice không bằng chìa khóa công khai của Alice và sigma, sigma^e = m(mod N)
----
Vấn đề đọc trộm chưa thể giải quyết bằng kỹ thuật nhưng vẫn còn những cách cổ điển có thể dùng
* Eve trộm chìa khóa riêng của Alice
* Xem trộm trước khi Alice mã hóa hoặc sau khi Bob giải mã
* Eve giả làm Bob với Alice, và Eve giả làm Alice với Bob
☑️ Cách 4: cách này được đưa ra bởi Phil Zimmermann, dự án PGP (Pretty Good Privacy) để giảm thời gian mã hóa và giải mã
* Alice sử dụng mã hóa đối xứng để mã hóa thư, và có một chìa khóa mã cần được gửi cho Bob
* Alice dùng RSA để mã hóa chìa khóa mã
* Alice gửi cả 2 cho Bob
➡️ Bob sẽ giải mã RSA để lấy chìa khóa, và dùng chìa khóa để mở thư
Một vấn đề nữa nảy sinh là làm sao biết đây là Alice mà không phải là một ai khác,
* Alice sẽ tạo một chữ ký, ví dụ mà m, và mã hóa nó bằng chìa khóa riêng (private key), sigma = m^d(mod N)
* Sau đó cho đoạn sigma và thư và làm các bước mã hóa đối xứng -- lấy chìa khóa -- mã hóa RSA cho chìa khóa -- gửi cho Bob
* Bob sẽ giải mã RSA -- lấy chìa khóa -- giải mã thư, và kiểm tra xem thư này có phải là của Alice không bằng chìa khóa công khai của Alice và sigma, sigma^e = m(mod N)
----
Vấn đề đọc trộm chưa thể giải quyết bằng kỹ thuật nhưng vẫn còn những cách cổ điển có thể dùng
* Eve trộm chìa khóa riêng của Alice
* Xem trộm trước khi Alice mã hóa hoặc sau khi Bob giải mã
* Eve giả làm Bob với Alice, và Eve giả làm Alice với Bob
.
#LongNguyenCIA Học CIA Online
.
-----------------------------------------------------------------------
Like & Share bài viết cho bạn bè của bạn,
.
Chat với #LongNguyenCIA để được tư vấn về khoá học CIA online:
.
Giới thiệu về Team #LongNguyenCIA
1) Hoàn thành CIA trong 10 tháng : http://bit.ly/getCIAin10months
2) Hoàn thành CISA (663/800 điểm) trong 6 tháng : http://bit.ly/getCISAin6months
.
Cảm nhận của học viên về khoá học CIA với Team #LongNguyenCIA
.
CIA Vietnam Community: https://www.facebook.com/groups/cia.vietnam hy vọng có thể cùng nhau chia sẻ chuyện nghề, chuyện học kiểm toán nội bộ,
-----------------------------------------------------------------------