Mã hóa thông tin - Cách hiểu đơn giản nhất dành cho kẻ ngoại đạo tìm hiểu về mã hóa

3381
10-10-2020
Mã hóa thông tin - Cách hiểu đơn giản nhất dành cho kẻ ngoại đạo tìm hiểu về mã hóa

Gần đây, một số ngân hàng đã bắt đầu cho phép khách hàng tự đăng kí tài khoản ngân hàng ngay tại nhà. Thay vì phải đến các phòng giao dịch, khách hàng chỉ cần kết nối mạng, cung cấp thông tin xác minh và tài khoản đã được tạo. Đương nhiên, thông tin của khách hàng được đảm bảo an toàn như việc đăng kí qua phòng giao dịch. 

Vậy làm cách nào để những thông tin được coi là nhạy cảm có thể đến được ngân hàng qua Internet mà vẫn được bảo đảm? Bài viết dưới đây, Bizfly Cloud sẽ giải thích một trong những phần "lõi" của sự an toàn kia, đó là mã hóa thông tin.

Mã hóa thông tin là gì?

Mã hóa thông tin là cách thức xáo trộn dữ liệu mà chỉ hai bên trao đổi thông tin mới có thể hiểu được. Về kỹ thuật, mã hóa là quá trình chuyển đổi từ văn bản gốc sang bản mã. Cụ thể, mã hóa lấy các dữ liệu có thể đọc được và thay đổi, xáo trộn chúng để dữ liệu này không còn như ban đầu. Phương thức này sẽ cần sử dụng khóa mã hóa - một tập hợp các giá trị toán học mà cả người gửi và người nhận tin nhắn đều biết.

Mặc dù được mã hóa xuất hiện ngẫu nhiên, dữ liệu sẽ được tiến hành mã hóa theo cách hợp lý, có thể dự đoán được, nhằm đảm bảo người nhận có thể sử dụng khóa để mã hóa dữ liệu và biến đổi lại thành dữ liệu ban đầu. Mã hóa cần phải đảm bảo sự phức tạp nhằm tránh việc một bên thứ ba có thể đoán và giải được mã.

Ngoài ra, dữ liệu cũng có thể được mã hóa “ở trạng thái nghỉ” trong quá trình lưu trữ hoặc “quá cảnh” khi đang được chuyển đến nơi khác.

Mã hóa là cách thức xáo trộn dữ liệu mà chỉ hai bên trao đổi thông tin mới có thể hiểu được

Mã hóa là cách thức xáo trộn dữ liệu mà chỉ hai bên trao đổi thông tin mới có thể hiểu được

Định nghĩa khá phức tạp, nên chúng ta sẽ trả lời một số câu hỏi để làm rõ khái niệm mã hóa ở trên:

1. Biến đổi dữ liệu là gì?

Biến đổi dữ liệu là một quy tắc nào đó biến đổi một lượng dữ liệu này thành một lượng dữ liệu khác. Nếu nhìn theo khía cạnh toán học, thì biến đổi dữ liệu chính là một dạng hàm số y = f(x) với x là dữ liệu ban đầu, y là dữ liệu sau khi biến đổi từ dữ liệu x và f là hàm biến đổi.

Trong mật mã học, khi nghiên cứu về mã hóa thông tin, dữ liệu ban đầu được gọi là Plaintext (kí hiệu là P), dữ liệu sau khi mã hóa được gọi là Ciphertext (kí hiệu là C), hàm biến đổi/mã hóa được gọi là phương pháp mã hóa và được kí hiệu là E (Encryption).

2. Dữ liệu sau khi biến đổi khác với dữ liệu ban đầu, nhưng có thể đọc hay hiểu được không?

Nhiều tài liệu khi nói về dữ liệu sau khi biến đổi, hay Ciphertext (kí hiệu C), thường cho rằng Ciphertext không thể đọc hoặc hiểu được, nhưng thật sự điều đó không chính xác.

Chúng ta cùng xem qua ví dụ sau với một trong những phương pháp mã hóa thông tin đơn giản nhất: Mã hóa không thành có và có thành không.

  • Bob: Hôm qua trời có mưa không?
  • Alice: Không (Sự thật là có)
  • Eve: (Hiểu là Không theo lời của Alice)

Nhưng trước đó, Bob và Alice đã thỏa thuận trước về câu trả lời: nếu Không thì câu trả lời chính xác là có và ngược lại.

Câu trả lời "Không" của Alice chính là Ciphertext, còn dữ liệu ban đầu là "Có" hay Plaintext. Ta có thể thấy cả Ciphertext và Plaintext đều có thể đọc và hiểu được. Vì vậy nhận định Ciphertext không thể đọc được là không chính xác. Chỉ cần hai bên (Alice và Bob) thống nhất cách mã hóa và giải mã thì người thứ ba sẽ có thể hiểu sai ý nghĩa, ngay cả với những Ciphertext có thể hiểu được.

Lí do nhiều tài liệu lại cho rằng Ciphertext không thể đọc hay hiểu được là do rất nhiều các phương pháp mã hóa thông tin, đặc biệt là hầu như tất cả các phương pháp mã hóa sử dụng trong các hệ thống thông tin và truyền tin hiện tại đều biến đổi thông tin thành các dạng không thể đọc được.

Trong mật mã học, người gửi và nhận thông tin thường được gọi là Alice và Bob, còn người thứ ba "nghe trộm (Eavesdropper)" thường được gọi là Eve

3. Nếu Ciphertext không giải mã được thì sao?

Mã hóa luôn đi kèm với giải mã. Nếu như chỉ "mã hóa thông tin" mà không có phương thức giải mã, chúng ta không gọi đó là "Encryption". Một trong những kiểu "mã hóa" không có phương thức giải mã phổ biến đó là các hàm băm (Hash function).

Phương thức giải mã phổ biến đó là các hàm băm (Hash function)

Phương thức giải mã phổ biến đó là các hàm băm (Hash function)

Từ "mã hóa" trong tiếng Việt đôi lúc được sử dụng cho cả hai từ "Encryption" và "Encoding", nhưng thật sự hai khái niệm này khác nhau. Thêm nữa, từ "Encoding" trong tiếng Anh cũng có được sử dụng cho nhiều định nghĩa liên quan đến dữ liệu. Vì vậy, rất khó để dịch các định nghĩa về "Encoding" sang tiếng Việt.

4. Một nhóm người có thể sử dụng, vậy ít nhất là có hai bên: bên gửi (mã hóa) dữ liệu và bên nhận (giải mã) dữ liệu?

Người giải mã dữ liệu có thể là chính bản thân người mã hóa. Ví dụ như mã hóa thông tin cá nhân trên iOS, mã hóa dữ liệu bằng mật khẩu qua các chương trình nén trên PC như WinRAR, WinZip,...

Để mã hóa và giải mã, rất nhiều các phương pháp mã hóa cần thêm một số giá trị nhất định để sử dụng trong quá trình mã hóa và giải mã. Những giá trị đó được gọi là chìa khóa (Key), kí hiệu là K.

Nói tóm lại, một hệ thống mã hóa (Cryptosystem) là một bộ (P, C, K, E, D) gồm các thành phần sau:

  • P là tập các Plaintext (từ hiện)
  • C là tập các Ciphertext (từ mã)
  • K là tập khóa mã (Key)
  • E là phương pháp mã hóa và D là phương pháp giải mã.

Các hành động sử dụng các cách khác nhau để dịch ngược P từ C mà không được biết K hoặc D được gọi là các hình thức tấn công mã hóa, hay còn gọi là phá khóa, phá mã,...

Mã hóa thông tin trong quá khứ

Khi nhìn vào định nghĩa mã hóa thông tin, chúng ta có thể thấy một trong những lĩnh vực rất cần thiết để áp dụng mã hóa trong quá khứ: Trao đổi liên lạc giữa các bên trong chiến tranh. Hai đồng minh cần phải trao đổi thông tin mà đảm bảo kẻ thù không thể đọc được, vì vậy việc mã hóa dữ liệu khi trao đổi là một trong những yếu tố quyết định trong việc truyền tin mà không thể tạo được một kênh kết nối an toàn và bí mật.

Một trong những cách mã hóa đơn giản nhưng rất phổ biến đó là mã hóa Ceasar (Caesar cipher), cách mã hóa thông tin này đơn giản là dịch chuyển một khoảng nhất định trong bảng chữ cái được sắp xếp theo thứ tự.

Ví dụ: HELLO chuyển sang trái 3 kí tự sẽ thành EBIIL (H->E, E->B, L->I, O->L)

Một trong những cách mã hóa đơn giản nhưng rất phổ biến đó là mã hóa Ceasar

Một trong những cách mã hóa đơn giản nhưng rất phổ biến đó là mã hóa Ceasar

Việc giải mã được làm theo chiều ngược lại, chuyển sang phải 3 kí tự.

Đây là một trong những cách mã hóa thông tin trong máy tính nào hiện nay, ngay cả với việc thử tất cả trường hợp thì thời gian phá được hệ thống mã hóa này có thể đếm được bằng giây.

Cách tấn công vào hệ thống mã hóa cơ bản nhất là brute force, hay nói cách khác là thử tất cả các trường hợp. Như ví dụ trên, chỉ cần thử 25 trường hợp thì hầu hết sẽ tìm ra được phương pháp giải mã.

Có một số trường hợp nếu như thử cả 25 trường hợp, một đoạn kí tự có thể cho ra 2 cách (Ví dụ Ciphertext "ALIIP" có thể ra hai từ có nghĩa là "DOLLS" và "WHEEL"). Tuy nhiên với những đoạn văn dài, tỉ lệ ra đúng đoạn văn bản trước khi mã hóa là gần như 100%.

Trong chiến tranh thế giới lần thứ II, một trong những cỗ máy mã hóa thông tin nổi tiếng nhất thời đó là Enigma. Được phát triển bởi phe Trục, có cách mã hóa các đoạn chữ với 26 chữ cái Latinh thành một đoạn chữ khác. Mỗi ngày, cách mã hóa lại thay đổi, kiến cho phe Đồng  minh nếu như thử lần lượt từng cách mã hóa thì phải cần hơn 17000 cách thử trong 24 giờ [1]. Tuy nhiên, cỗ máy đã bị hóa giải ngay trong thời kì đó.

Tại sao lại cần mã hóa thông tin?

Mã hóa thông tin là việc làm vô cùng quan trọng và cần thiết, bởi chúng ngoài việc giúp bảo mật dữ liệu mà còn bởi những lý do sau:

  • Bảo đảm sự riêng tư của tài liệu kể cả khi có lỡ bị lộ ra ngoài cho người khác biết. Khi đó chỉ có những người có quyền xem được tài liệu mã hóa mới có thể giải mã.
  • Việc mã hóa thông tin sẽ giúp bảo mật tối đa sự rò rỉ dữ liệu ra bên ngoài. Nhờ đó mà bạn có thể trao đổi những tài liệu, thông tin nhạy cảm cho đúng đối tượng muốn hướng đến.
  • Khi chuyển dữ liệu đã được mã hóa thông tin qua đường truyền internet, tính toàn vẹn của dữ liệu sẽ được giữ nguyên không thay đổi, không như các cách trao đổi dữ liệu truyền thống trước kia như gửi thư, gửi đồ, mật mã,...
  • Việc mã hóa thông tin tại nhiều cơ quan nhà nước, doanh nghiệp lớn được pháp luật ủng hộ và có quy định rõ ràng nhằm giúp bảo vệ bí mật nhà nước, doanh nghiệp,... Người nào vi phạm sẽ bị xử lý ngay lập tức.

Các loại mã hóa thông tin

1. Mã hóa đối xứng

Mã hóa đối xứng sử dụng cùng một loại chìa khóa trong việc mã hóa và giải mã. Tuy nhiên, chìa khóa phải đảm bảo bí mật giữa hai bên trao đổi thông tin. Nếu như bên thứ ba (Eve) có được chìa khóa thì sẽ có thể sử dụng để giải mã thông tin được truyền đi. Một số loại mã hóa khóa đối xứng nổi tiếng như DES, AES,...

2. Mã hóa bất đối xứng

Mã hóa bất đối xứng sử dụng hai loại khóa khác nhau: khóa công khai là khóa không cần giữ bí mật với các bên khác và khóa bí mật, loại khóa chỉ được biết bởi chính người sở hữu. Một số loại mã hóa có thể kể đến là RSA,...

3. Mã hóa một chiều (Hash)

Hay còn được gọi là mã hóa Hash, là một phương pháp được sử dụng để mã hóa dữ liệu mà không cần phải giải mã. Ví dụ: Khi người dùng sử dụng tính năng đăng nhập vào một trang web, mật khẩu do người dùng nhập sẽ được trang web đó xử lý thành một chuỗi ký tự mã hóa để đối chiếu với cơ sở dữ liệu của trang web xem có khớp hay không. Từ đó người dùng có thể đăng nhập dễ dàng mà không lo bị lộ mật khẩu. 

4. Mã hóa cổ điển

Mã hoá cổ điển là loại mã hóa thông tin đơn giản và tồn tại lâu nhất trên thế giới. Loại mã hóa này không cần khóa bảo mật, chỉ cần cả người gửi và người nhận cùng biết về thuật toán này là được. Tuy nhiên, mã hóa cổ điển được xem là không có độ an toàn cao, vì nếu có thêm một người thứ ba biết được thuật toán thì coi như thông tin sẽ không còn bảo mật nữa.

Hiện nay, các công nghệ mật mã đã được tích hợp rất sâu vào các hệ thống máy tính và truyền tin, ví dụ như việc dần thay thế giao thức HTTP bằng HTTPS (HTTP sử dụng TLS/SSL). Trong giao thức HTTP, bên gửi và nhận dữ liệu đều không mã hóa dữ liệu được gửi của mình. Vì vậy, kẻ thứ ba (được gọi là man-in-the-middle, trong mô hình Alice-Bob-Eve thì chính là Eve) hoàn toàn có thể đọc được dữ liệu mà hai bên gửi cho nhau. HTTPS đã khắc phục nhược điểm của HTTPS bằng việc mã hóa dữ liệu trước khi gửi để các kẻ có ý định đọc thông tin được gửi chỉ còn cách giải mã dữ liệu – một công việc hoàn toàn không hề đơn giản.

Do đặc tính mã hóa dữ liệu khi gửi đó, các hệ thống truy cập bằng tài khoản, các hệ thống liên quan đến tiền tệ đều ưu tiên sử dụng HTTPS. Ngay cả trong một số trình duyệt cũng có cảnh báo cho người dùng như "You should not enter any sensitive information on this site (for example, passwords or credit cards), because it could be stolen by attackers." (Tạm dịch là bạn không nên nhập bất kì thông tin nhạy cảm nào vào trang web này (ví dụ mật khẩu hoặc thẻ tín dụng), bởi vì những kẻ tấn công có thể đánh cắp dữ liệu đó.)

Mã hoá cổ điển là loại mã hóa đơn giản và tồn tại lâu nhất trên thế giới

Mã hoá cổ điển là loại mã hóa đơn giản và tồn tại lâu nhất trên thế giới

Như đã đề cập tới brute force ở trên, hầu hết các cách mã hóa thông tin đều "có thể" phá nếu như có một hệ thống máy tính có khả năng tính toán đủ lớn để thực hiện việc giải mã. Vì vậy, một số nhà nghiên cứu cho rằng, chỉ cần có đủ thời gian và khả năng tính toán đủ lớn, tất cả các cách mã hóa mà không giới hạn số lần giải mã đều có thể phá được.

AES 256bit, một cách mã hóa khóa đối xứng, nếu như sử dụng brute force với siêu máy tính mạnh nhất hiện tại (Supercomputer Fugaku [2]) có khả năng tính toán là gần 420 PetaFLOPS (420 x  1015 FLOPS), giả sử mỗi lần kiểm tra một khóa cần 500 FLOPS thì thời gian để thử hết tất cả các trường hợp khóa của AES 256bit là hơn 4.37 x 1054 năm.

Tìm hiểu về các loại mã hóa thông tin

Touch ID của Apple cũng là một dạng mật khẩu

Một lưu ý rằng mật khẩu không phải là một loại mã hóa thông tin, về bản chất mật khẩu và mã hóa không hề liên quan đến nhau: mật khẩu dùng để xác thực một người có quyển sử dụng dữ liệu hay không còn mã hóa dùng để ngăn cản người sử dụng không được phép truy cập dữ liệu. Tuy nhiên, mật khẩu được tích hợp vào trong các phương pháp sử dụng đồng thời mã hóa và mật khẩu do mật khẩu có nhiều đặc điểm có thể bổ trợ cho mã hóa: Dễ ghi nhớ và có tính cá nhân, đặc biệt là các dạng mật khẩu như vân tay, khuôn mặt,…

Mã hóa thông tin với tương lai

Dữ liệu sau khi mã hóa có an toàn không? Để dễ hình dung, chúng ta hãy cùng nhắc đến một trong những loại malware được coi là nguy hiểm nhất hiện nay: ransomware. Loại phổ biến hiện nay sẽ mã hóa thông tin trong máy tính bị nhiễm sau đó đòi tiền để nhận được chìa khóa giải mã. Khi đó người dùng chỉ có các phương án sau:

  • Trả tiền để mong có thể lấy lại được dữ liệu. Cách này có thể sẽ cứu được dữ liệu (đương nhiên, nếu như chủ của ransomware đó giữ lời) nhưng số tiền là khá lớn và không phải ai cũng có thể trả được.
  • Chờ các nhóm và tập đoàn bảo mật đưa ra các công cụ cứu dữ liệu. Cách này rất bị động và không phải ransomware nào cũng có công cụ giải mã. (Vì vậy, đừng quá tin vào những quảng cáo 100% ransomware data recovery.)
  • Dữ liệu được backup ở chỗ khác và chưa bị nhiễm. Cách này được coi là khả thi và đảm bảo nhất (nếu như có backup)
  • Bỏ dữ liệu đã bị mã hóa.
Mã hóa thông tin với tương lai

WannaCry, một ransomware xuất hiện vào năm 2017, ước lượng đã nhiễm vào xấp xỉ 200000 máy tính[3] trên 150 quốc gia

Trong 4 cách trên, ta có thể thấy chỉ có đúng 1 cách là sử dụng giải mã dữ liệu bị mã hóa. Hơn nữa, các công cụ đó có thể được phát hành sau 3, 4 tháng, thậm chí là vài năm sau khi ransomware xuất hiện và chỉ sử dụng được với một số ransomware có chìa khóa dùng để giải mã đơn giản. Cho nên, dữ liệu sau khi mã hóa nếu không biết chìa khóa hay phương thức thì rất khó để giải mã. 

Vậy thử hình dung nếu như chúng ta tới hai tương lai, một tương lai không có mã hóa thông tin và một tương lai tất cả mọi thứ đều được mã hóa.

Trước tiên, nếu tất cả mọi thứ đều được mã hóa thì sao? Android Encryption trên Android, Data Protection trên iOS và iPad, FileVault trên Mac, BitLocker trên Windows. Mọi dữ liệu của người dùng sẽ được an toàn, và đôi lúc an toàn ngay cả với người dùng. Nếu như quên hoặc mất mật khẩu trong các loại mã hóa sử dụng mật khẩu, người dùng sẽ phải tìm cách khôi phục bằng các công cụ khôi phục nếu như có hỗ trợ, sử dụng bản backup hoặc bỏ dữ liệu. Rõ ràng, lúc này "Eve" không phải là mối lo ngại nhất mà chính là việc quên mật khẩu.

Nếu như ngược lại, tất cả dữ liệu không mã hóa thì sao. Bạn vừa nhập thông tin thẻ tín dụng lên một trang web mua sắm nào đó? Tin nhắn thẻ tín dụng vừa sử dụng 50 triệu mà bạn chưa kịp mua một món gì cả (và ngay ở hiện tại, việc sử dụng các thẻ tín dụng bị đánh cắp thông tin cũng là một trong những việc vi phạm pháp luật phổ biến nhất với thẻ tín dụng). Và sau đó, các hình thức mua sắm trực tuyến sẽ không còn ai sử dụng nữa do không đảm bảo an toàn cho tài chính của người dùng.

Nói tóm lại, mã hóa thông tin luôn đi cùng với sự phát triển của các hệ thống trao đổi thông tin, đặc biệt là Internet cũng như việc bảo vệ thông tin của mỗi người. Tuy nhiên, không nên áp dụng mã hóa quá nhiều dẫn đến ảnh hưởng ngược lại tới người dùng hơn cả việc an toàn. Đồng thời những hành động đối phó với việc sử dụng mã hóa để trục lợi cũng cần phải có những biện pháp thích hợp để ngăn chặn.

Chú thích:

[1] https://en.wikipedia.org/wiki/Encryption Chú thích 6

[2] https://www.top500.org/lists/top500/2020/06/

[3] https://en.wikipedia.org/wiki/WannaCry_ransomware_attack Chú thích 35

Theo Bizfly Cloud tìm hiểu

>> Có thể bạn quan tâm: Cisco Talos phát hiện lỗ hổng của Chrome cho phép điều khiển từ xa

Bizfly Cloud là nhà cung cấp dịch vụ điện toán đám mây với chi phí thấp, được vận hành bởi VCCorp.

Bizfly Cloud là một trong 4 doanh nghiệp nòng cốt trong "Chiến dịch thúc đẩy chuyển đổi số bằng công nghệ điện toán đám mây Việt Nam" của Bộ TT&TT; đáp ứng đầy đủ toàn bộ tiêu chí, chỉ tiêu kỹ thuật của nền tảng điện toán đám mây phục vụ Chính phủ điện tử/chính quyền điện tử.

Độc giả quan tâm đến các giải pháp của Bizfly Cloud có thể truy cập tại đây.

DÙNG THỬ MIỄN PHÍ và NHẬN ƯU ĐÃI 3 THÁNG tại: Manage.bizflycloud

SHARE