Locker có thể xem được dữ liệu của bạn không?

Với bất kỳ người sử dụng trình quản lý mật khẩu nào, một câu hỏi luôn được đặt ra là liệu đội ngũ phát triển phần mềm đó hay ai đó khác có thể xem được dữ liệu bí mật của mình hay không. Đây là một câu hỏi cực kỳ chính đáng vì những dữ liệu của người dùng ở đây là các bí mật cá nhân như mật khẩu, ghi chú hay private key của ví tiền điện tử; nếu chúng bị lộ ra, người dùng sẽ phải chịu thiệt hại rất lớn.

Trả lời một cách ngắn gọn, tại Locker, không ai có thể truy cập và đọc được dữ liệu của bạn, ngoài chính bạn. Trong bài viết này, tôi sẽ phân tích chi tiết hơn lý do tại sao chúng tôi có thể đạt được điều này.

Mã hóa

Trước hết, chúng ta cần hiểu về khái niệm Mã hóa – công nghệ chính đứng sau Locker và giúp mọi dữ liệu của bạn được lưu trữ an toàn.

Về cơ bản, mã hóa là một cách xáo trộn thông tin gốc với mục đích chỉ các bên có liên quan mới có thể đọc và hiểu được nội dung. Về mặt kỹ thuật, đây là quá trình chuyển đổi bản rõ (gọi là plaintext) mà con người có thể đọc được thành văn bản không thể hiểu được (đọc lên rất vô nghĩa), còn được gọi là bản mã (hay ciphertext). Nói một cách đơn giản hơn, quá trình mã hóa là việc lấy dữ liệu có thể đọc được và thay đổi theo một quy luật nào đó để nó xuất hiện có vẻ ngẫu nhiên.

Quy luật ở đây, về mặt kỹ thuật, là một thuật toán mã hóa đi kèm với một khóa mã hóa. Thông thường, thuật toán mã hóa là công khai, nghĩa là chúng ta đều biết tên và chi tiết kỹ thuật của nó; trong khi khóa mã hóa là:

  • Bí mật hoàn toàn, chỉ được tiết lộ giữa người gửi và người nhận thông điệp.

Hoặc

  • Bí mật một nửa, là 1 cặp khóa gồm 1 khóa bí mật hoàn toàn và 1 khóa công khai.

Khi nhắc đến mã hóa, chúng ta cũng phải biết đến 2 quá trình đối lập nhau của công nghệ này:

  • Sinh mã (encrypt): là quá trình chuyển từ plaintext thành ciphertext.
  • Giải mã (decrypt): là quá trình chuyển ngược ciphertext thành plaintext.

Mã hóa khóa đối xứng

Có nhiều cách để chúng ta phân loại các phương pháp mã hóa, một trong những cách phổ biến nhất là dựa trên tính đối xứng của khóa mã hóa. Cụ thể như sau:

  1. Nếu chúng ta mã hóa plaintext với khóa k và giải mã ciphertext cũng bằng khóa k đó thì đây được gọi là Mã hóa khóa đối xứng.
  2. Nếu chúng ta mã hóa plaintext với khóa k1, nhưng cần khóa k2 để giải mã ciphertext (k1 khác k2) thì đây được gọi là Mã hóa bất đối xứng, hay mã hóa công khai.

Trong khuôn khổ bài viết này, chúng ta sẽ tập trung tìm hiểu về Mã hóa khóa đối xứng – công nghệ mật mã chủ đạo trong việc mã hóa dữ liệu của Locker.

Mã hóa Caesar

Để dễ hình dung hơn về loại mã hóa này, chúng ta sẽ xem xét một ví dụ điển hình là thuật toán mã hóa Caesar. Hệ mã Caesar là một hệ mã hóa thay thế đơn âm, hoạt động trên bảng chữ cái tiếng Anh 26 ký tự. Cách hoạt động của mã hóa này là thay thế mỗi ký tự m trong plaintext bằng 1 ký tự c sao cho cm luôn cách nhau k ký tự trong bảng chữ cái.

Ví dụ, chúng ta có plaintext là hello và chọn k = 7, thì ciphertext sẽ là olssv vì nếu dịch chuyển h 7 ký tự trong bảng chữ cái thì thu được o, tương tự dịch chuyển e 7 ký tự thu được l và cứ như vậy.

PLAINTEXThello
ENCRYPTh + 7e + 7l + 7l + 7o + 7
CIPHERTEXTolssv

Để có thể giải mã được ciphertext olssv, thì bắt buộc chúng ta phải biết k = 7. Và quá trình giải mã thì ngược với quá trình sinh mã, chúng ta sẽ dịch chuyển ngược 7 ký tự từ o để thu được h, 7 ký tự từ l để thu được e và tiếp tục như vậy. Cuối cùng sẽ có plaintext là hello.

CIPHERTEXTolssv
DECRYPT0 – 7l – 7s – 7s – 7v – 7
PLAINTEXThello

Đến đây, chúng ta sẽ cần thừa nhận một điều rằng để có thể giải mã được ciphertext khi dùng Mã hóa đối xứng, chúng ta sẽ bắt buộc phải có khóa mã hóa k đã được dùng để sinh mã trước đó. Trong một số trường hợp, chúng ta hoàn toàn có thể đoán được k bằng cách thử sai hoặc vét cạn mọi khả năng có thể; như với ví dụ mã hóa Caesar, thử k từ 1-26 và xem kết quả thu được có thể đọc được hay không là một cách hoàn toàn khả dĩ. Nhưng cách này chỉ có thể áp dụng trong những trường hợp mật mã yếu, còn với các thuật toán mật mã hiện đại ngày nay, các tấn công thử sai như vậy là bất khả thi trong một thời gian đủ ngắn, kể cả sử dụng các máy tính có tốc độ xử lý cao nhất.

Mã hóa AES

Thuật toán AES, viết tắt của Advanced Encryption Standard, là một thuật toán mã hóa khóa đối xứng được sử dụng như một mật mã tiêu chuẩn, được triển khai bởi chính phủ Hoa Kỳ và nhiều quốc gia khác để bảo vệ dữ liệu tối mật. Với việc triển khai đúng cách và Khóa mã hóa đủ mạnh, thuật toán AES được đánh giá là không thể bị phá vỡ. Trong phạm vi bài viết này, tôi sẽ không đi sâu vào kiến trúc và chi tiết thuật toán của AES, các bạn có thể đọc thêm về AES tại đây. Thay vào đó, tôi sẽ nói về cách chúng tôi ứng dụng AES tại Locker.

Locker hiện tại đang sử dụng AES với khóa có độ dài 256 bit và chế độ mã hóa khối CBC, gọi tắt là AES-256-CBC. Các bạn có thể so sánh với trường hợp Caesar, với khóa chỉ là 1 số bất kỳ trong khoảng 1-26; còn AES-256-CBC thì có khóa là 1 chuỗi dài 32 ký tự trong đó các ký tự này có thể là số, ký tự alphabet hoặc ký tự không đọc được; vì thế việc đoán hay vét cạn để tìm ra khóa của AES là bất khả thi đến thời điểm hiện tại.

Locker mã hóa dữ liệu người dùng như thế nào?

Khi sử dụng Locker, tất cả người dùng sẽ được yêu cầu tạo một Master Password, đây là giá trị cực kỳ quan trọng liên quan đến mọi thao tác mã hóa phía bên trong. Và nếu bạn quên Master Password, đồng nghĩa với việc bạn sẽ không thể truy cập được dữ liệu của mình nữa (trừ khi bạn đã thiết lập Emergency Access trước đó).

Khi Master Password được tạo, Locker sẽ:

  1. Băm Master Password để tạo ra Master Key dài 256 bit.
  2. Mở rộng độ dài Master Key từ 256 bit thành Stretched Master Key dài 512 bit.
  3. Sinh ngẫu nhiên ra một giá trị Symmetric Key dài 256 bit.
  4. Sử dụng AES-256-CBC để mã hóa Symmetric Key với khóa là Stretched Master Key để thu về Encrypted Symmetric Key.
  5. Giá trị Encrypted Symmetric Key sẽ được lưu vào máy chủ Locker.
Quá trình khởi tạo khoá khi tạo Master Password

Tôi phải nhấn mạnh rằng, từ bước 1 đến 4 ở trên, tất cả hoàn toàn được diễn ra trên máy tính/thiết bị di động của bạn và chúng tôi không thể biết hay lưu lại các giá trị Master Password hay Symmetric Key.

Sau khi bạn đã đăng nhập thành công vào Locker, và bạn chọn lưu một mật khẩu hoặc một dữ liệu bí mật khác (tôi gọi là Item), đây là những gì thực sự sẽ diễn ra trên chính thiết bị của bạn (không phải máy chủ Locker):

  1. Tải Encrypted Symmetric Key từ máy chủ Locker về.
  2. Tính toán Stretched Master Key từ Master Password tương tự như các bước phía trên.
  3. Sử dụng AES-256-CBC để giải mã Encrypted Symmetric Key với khóa là Stretched Master Key để thu về Symmetric Key.
  4. Sử dụng AES-256-CBC để mã hóa Item với khóa là Symmetric Key để thu về Encrypted Item.
  5. Gửi Encrypted Item vào máy chủ Locker để lưu.
Quá trình mã hoá dữ liệu

Hy vọng các mô tả của tôi về quá trình kỹ thuật đến đây vẫn rõ ràng và dễ hiểu. Như bạn đã thấy ở trên, chúng tôi chỉ lưu Encrypted Symmetric KeyEncrypted Item vào máy chủ Locker. Và những dữ liệu này là các ciphertext vô nghĩa và không có khả năng sử dụng được.

Chúng tôi có thể xem được dữ liệu của bạn không?

Để có thể đọc được dữ liệu của bạn, tức là đọc được Item, chúng tôi sẽ cần phải giải mã được Encrypted Item. Khi đó, chúng tôi sẽ cần có Symmetric Key trước.

Tiếc là chúng tôi chỉ có Encrypted Symmetric Key, vì thế một lần nữa chúng tôi sẽ phải tìm cách giải mã được giá trị này. Nhưng như bạn đã biết ở sơ đồ trước, Encrypted Symmetric Key bị mã hóa bởi Stretched Master Key, vốn là giá trị được mở rộng từ chính Master Password của bạn. Đồng nghĩa với việc, chúng tôi phải biết được Master Password mới có thể giải mã Encrypted Symmetric Key để thu về Symmetric Key.

Điều này hoàn toàn bất khả thi với Locker khi Master Password chỉ tồn tại trong trí nhớ của bạn và trên thiết bị của bạn (trong ngắn hạn).

Kết luận

Với những gì được trình bày ở đây, tôi hy vọng bạn đọc có thể nhận thấy việc truy cập và xem dữ liệu bí mật của bạn là hoàn toàn không thể với đội ngũ Locker. Chúng tôi duy trì an ninh ở mức độ cao nhất, và minh bạch công nghệ với người dùng để đảm bảo mọi dữ liệu của bạn luôn trong trạng thái an toàn nhất. Chúng tôi cũng làm việc với các đối tác an ninh mạng độc lập và cộng đồng chuyên gia an ninh mạng để đánh giá và duy trì sự an toàn của Locker, đảm bảo rằng không có ai, ngoài chính bạn, có thể truy cập dữ liệu của bạn tại Locker.