Mã hóa đầu cuối (E2EE) ở Messenger Facebook hoạt động thế nào?

      Mã hóa đầu cuối (E2EE) ở Messenger Facebook hoạt động thế nào?

Mã hóa đầu cuối (E2EE) là một loại mã hóa được rất nhiều hệ thống lớn sử dụng như Whatsapp, Messenger,... Đơn giản vì tính bảo mật của nó khiến cho bên thứ ba khi cố can thiệp vào, thậm chí kể cả chính hệ thống đó khi bị hacker hoặc chính phủ hoặc nhà cung cấp dịch vụ truy cập vẫn sẽ không thể đọc được dữ liệu vì đã được mã hóa.



Việc mã hóa đầu cuối khiến kể cả Meta cũng không thể xem tin nhắn của chúng ta
 

Cách hoạt động của End-to-end encryption (E2EE)

Mã hóa là việc biến đoạn văn bản thành dữ liệu không đọc được, để tránh người khác xâm nhập dữ liệu.
Về nguyên tắc, một dữ liệu khi mã hóa và giải mã, cần có một key (khóa), và key này không được để cho bên thứ 3 biết (Giống như việc bạn gửi két sắt cho khách hàng mà chỉ có bạn với khách hàng biết được mật khẩu (key) )
Nhưng làm sao để tạo ra một key mà cả hai bên client đều biết, mà server lại không biết?


Từ đó, kỹ thuật trao đổi khóa Diffie Hellman ra đời. Kỹ thuật này được công bố vào năm 1976, và đã được ứng dụng cực kỳ rộng rãi (thậm chí bạn vừa thực hiện trao đổi khóa Diffie Hellman cách đây vài phút trước). 
Về cơ bản, chúng ta sẽ sử dụng hai loại khóa: public key và private key để thực hiện kỹ thuật này. Ở đây mình sẽ sử dụng màu sắc để thể hiện cách hoạt động mà không thông qua toán học.
Đầu tiên, tại server chúng ta sẽ khởi tạo một biến generator (g), còn tại hai phía client sẽ tạo hai private key. (a và b)



Để tạo public key cho client 1 và client 2, chúng ta cần mix ag và bg tương ứng.



Bạn có thể thấy rằng, tại server sẽ chỉ đọc được ba giá trị: ag, bg và g. Theo 
Diffie Hellman, sẽ không có cách nào đọc ngược từ giá trị mix, giống như việc bạn không thể biết được hai màu ban đầu a và g là gì từ ag (ý mình là dẫu bạn có biết cam = đỏ + vàng thì cũng không biết được chính xác độ đỏ và độ vàng là bao nhiêu)
Tiếp đó, hai khóa public này sẽ trao đổi với nhau.
Hệ thống cũng như những kẻ tấn công vẫn chỉ biết được g, bg và ag. 
Bây giờ, chúng ta sẽ mix private key với hai public key đã trao đổi với nhau.

Và như bạn thấy, hai key đã được hình thành. Phía server cũng như những kẻ tấn công chỉ có thể thấy g, bg, ag và không có cách nào có thể ghép lại thành key abg (chỉ có thể ghép ra bgg, agg, abgg, abggg). Và như mình nói ở ban đầu, không có cách nào có thể tách ag hoặc bg ra để tìm được a và b. 
Chúng ta sẽ sử dụng key này để mã hóa dữ liệu đầu cuối (phía client)


Và đó là cách mà các hệ thống sử dụng mã hóa đầu cuối.

Kết luận: E2EE là một phát minh tuyệt vời. Các hệ thống có thể tự tin bảo mật thông tin của khách hàng kể cả khi chính phủ yêu cầu truy xuất thông tin. Tuy nhiên, hacker vẫn có thể xâm nhập thông qua đầu dùng cuối vì đó là nơi giải mã tin nhắn, cũng như người dùng là lớp bảo mật yếu nhất và dễ xâm nhập nhất. Cảm ơn các bạn đã đón đọc!


Người viết: Lê Công Diễn

Mang đi nhớ ghi nguồn



















Nhận xét

Bài đăng phổ biến từ blog này

Deploy project Springboot MIỄN PHÍ sử dụng Render

Ứng dụng Mã hóa bất đối xứng (Asymmetric cryptography) vào Chữ ký số (Digital Signature)

API và HTTP - Một số khái niệm cơ bản cần biết về Web (Phần 2)