MÃ HÓA ĐẦU CUỐI CỦA WHATSAPP HOẠT ĐỘNG NHƯ THẾ NÀO?

Cả thế giới đã đều xôn xao về thông tin “Whatsapp đã phát triển công nghệ mã hóa đầu cuối” (ND: End-to-End Encryption, E2EE). Tuy nhiên không nhiều người hiểu rõ: về mặt kỹ thuật, E2EE hoạt động như thế nào. Cũng tìm hiểu công nghệ này có tác dụng gì đối với quyền riêng tư của bạn nhé.

Hãy nhìn tổng quan cách mà một hệ thống mã hóa hoạt động. (Hình 1). PlainText (tức là các văn bản, hình ảnh, văn bản và các loại dữ liệu khác) là dữ liệu chưa mã hóa, còn CipherText là dữ liệu đã mã hóa, ở dạng không thể đọc được.

PlainText được mã hóa thông qua một Secret Key (ND tạm dịch: mã bảo mật) để sinh ra CipherText.

PlainText + SecretKey = CipherText

Để khôi phục về dữ liệu ở dạng ban đầu, ta giải mã CipherText với cùng secret key ban đầu.

CipherText – Secret Key = PlainText

Vấn đề của quá trình này là, nếu dùng cùng một secret key để mã hóa và giải mã dữ liệu, vậy làm thế nào để gửi secret key của người gửi đến người nhận để họ có thể giải mã được dữ liệu? Nếu truyền đi cũng tông qua internet, thì vẫn có nguy cơ ai đó lấy cắp được secret key và giải mã được dữ liệu của bạn. Vậy giải pháp là gì?

Đó là: ta sẽ dùng 2 key thay vì chỉ 1 secret key. Một key sẽ phục vụ hóa trình mã hóa, key còn lại dùng cho giải mã. Cặp key này có quan hệ toán học chặt chẽ với nhau sao cho dữ liệu dùng key mã hóa chỉ có thể được giải mã với duy nhất một key giải mã.

Như vậy ý tưởng là ai cũng có một private key cho riêng mình, và chia sẻ đi public key (tức key còn lại trong cặp key) để mọi người có thể kết nối được. (Hình 2)

Ai đó, chẳng hạn Bob, muốn gửi tin nhắn tới Alice. Tin nhắn sẽ được mã hóa bằng public key của Alice. Tuy nhiên không có ai khác ngoài Alice có thể giải mã được nó, bởi chỉ có cô ấy mới có private key. (Hình 3)

Public và private key của mỗi người được sinh ra khi mà chúng ta cài đặt (hoặc nâng cấp) WhatsApp. Vậy tại sao lại gọi là “mã hóa đầu-cuối”?

Bởi private key của bạn được sinh ra ở trên máy bạn, và nó chỉ ở đó chứ không hề được truyền qua mạng máy tính, vì thể nên quá trình giải mã chỉ có thể thực hiện được trên máy của bạn. Không một ai khác có thể làm điều này (kể cả WhatsApp, nhà mạng hay bất kỳ ai).

Xác thực vân tay là gì?

Khi bạn kiểm tra thông tin về một người danh bạ của mình, WhatsApp sẽ đưa ra thông tin về public key của người đó, thứ mà phía bạn sẽ dùng để mã hóa tin nhắn. (Hình 4)

60 chữ số trong Hình 5 là một dạng thu gọn của public key của bạn và của người bạn muốn liên lạc. Quét mã QR tương ứng, hoặc đối chiếu 60 chữ số này là cách để đảm bảo là cả hai phía đang dùng cùng các public key, và E2EE được thiết lập chính xác.

Lưu ý: mã hóa là một chủ đề rất rộng và có rất nhiều thứ để nói. Trên đây tôi chỉ trình bày về những nguyên lý cơ bản nhất dành cho người không chuyên.

—-

Phản hồi: Nakul Jain

Cảm ơn Sohel về câu trả lời rất rõ ràng của bạn. Tôi có một vài thắc mắc, bạn có thể giải thích thêm được không?

1. Lần đầu nhắn tin, làm sao Bob có được public key của Alice. WhatsApp đâu có chức năng “kết bạn”?

2. WhatsApp có lưu tất cả public key của những người trong danh bạ của tôi vào thiết bị tôi đang dùng không? Hay là WhatsApp có một server để lưu các public key của tất cả mọi người?

3. Trong nhóm trên WhatsApp thì cơ chế E2EE hoạt động như thế nào nhỉ? Tin nhắn có được mã hóa khi tôi gửi vào nhóm chat không?

—-

Chào Nakul. Những câu hỏi của bạn rất hay.

1. Khi public-private key lần đầu dược tạo ra ở máy của bạn, WhatsApp sẽ đẩy public key cua rbạn lên server cua rhọ. Nếu ai đó muốn gửi tin nhắn lần đầu cho bạn, WhatsAPP sẽ gửi public key của bạn đến điện thoại của người đó.

Nếu bạn để ý, sẽ có thông báo trong đoạn chat giữa 2 người là “tin nhắn bạn gửi đi tới liên hệ này đã được mã hóa bởi E2EE”. Điều này có nghĩa là, lúc này cả 2 người đã có được public key của nhau.

2. Như đã trình bày trên, máy điện thoại của bạn có chứa public key của những người trong danh bạ của bạn.

3. Mã hóa trong chat nhóm cũng hoạt động giống chat riêng tư thôi. Giả sử có 10 người trong nhóm, thì tin nhắn của bạn sẽ được mã hóa theo 9 cách khác nhau. Ở mỗi phía nhận sẽ giải mã theo cách riêng biệt với private key của họ.

Ở trong chat nhóm cũng có thông báo “tin nhắn bạn gửi đi tới nhóm này đã được mã hóa bởi E2EE”, có nghĩa là bất kỳ ai trong nhóm chat cũng đã đều có đủ public key của các thành viên khác.

Mã hóa – giải mã theo kiểu truyền thống
Mỗi một cặp public key và private key sẽ được sinh ra khi bạn cài đặt WhatsApp
Hóa trình mã hóa – giải mã của tin nhắn gửi từ Bob đến Alice
Lựa chọn để kiểm tra lại E2EE có hoạt động đúng hay không với một liên hệ nào đó trên WhatsApp
Quét mã QR của nhau hoặc đối chiếu những con số này để kiểm tra các bộ public key là khớp với nhau giữa 2 người

Leave a Reply

Your email address will not be published. Required fields are marked *