Mã hóa dữ liệu và những điều cần phải biết để bảo mật thông tin.

(27/11/2017)
Một trong những phương thức bảo mật dữ liệu an toàn và được sử dụng phổ biến trong thời đại kỹ thuật số hiện nay là mã hóa dữ liệu. Tuy nhiên, không phải ai cũng hiểu rõ mã hóa dữ liệu là gì, nó có chức năng ra sao và quá trình mã hóa diễn ra như thế nào
Mạng máy tính là một môi trường mở, những thông tin gửi lên internet hoặc nhận về internet đều có thể bị lộ bởi các đối tượng. Một trong những phương thức bảo mật dữ liệu an toàn và được sử dụng phổ biến hiện nay là mã hóa dữ liệu. Tuy nhiên, không phải ai cũng hiểu rõ mã hóa dữ liệu là gì, nó có chức năng ra sao và quá trình mã hóa diễn ra như thế nào.

1.Mã hóa dữ liệu là gì?

Có thể hiểu đơn giản mã hóa là một phương pháp bảo vệ thông tin, bằng cách chuyển đổi thông tin từ dạng có thể đọc và hiểu được thông thường sang dạng thông tin không thể hiểu theo các thông thường chỉ có người có quyền truy cập vào khóa giải mã hoặc có mật khẩu mới có thể đọc được nó. Việc làm này giúp ta có th bảo vệ thông tin tốt hơn, an toàn trong việc truyền dữ liệu. Thực chất việc mã hóa dữ liệu sẽ không thể nào ngăn việc dữ liệu có thể bị đánh cắp, nhưng nó sẽ ngăn việc người khác có thể đọc được nội dung của tập tin đó, vì nó đã bị biến sang thành một dạng ký tự khác, hay nội dung khác. Dữ liệu được mã hóa thường gọi là ciphertext, dữ liệu thông thường, không được mã hóa thì gọi là plaintext. 

2. Vì sao việc mã hóa dữ liệu lại đặc biệt quan trọng?

Việc mã hóa là để đảm bảo tính an toàn cho thông tin, đặc biệt trong thời đại công nghệ số như hiện nay. Đặc biệt là trong giao dịch điện tử. Có thể nói mã hóa chính là việc  đảm bảo bí mật , toàn vẹn thông tin, khi thông tin được truyền trên mạng internet. Mã hóa cũng là nền tảng của kĩ thuật chữ ký điện tử,  hệ thống PKI

3. Chức năng chính của mã hóa dữ liệu

Mục đích của việc mã hóa dữ liệu là bảo vệ dữ liệu số khi nó được lưu trữ trên các hệ thống máy tính và truyền qua Internet hay các mạng máy tính khác. Các thuật toán mã hóa thường cung cấp những yếu tố bảo mật then chốt như xác thực, tính toàn vẹn và không thu hồi. Xác thực cho phép xác minh nguồn gốc của dữ liệu, tính toàn vẹn chứng minh rằng nội dung của dữ liệu không bị thay đổi kể từ khi nó được gửi đi. Không thu hồi đảm bảo rằng người người không thể hủy việc gửi dữ liệu.

Quá trình mã hóa sẽ biến nội dung sang một dạng mới, vì thế sẽ tăng thêm một lớp bảo mật cho dữ liệu. Như vậy cho dù dữ liệu của bạn bị đánh cắp thì việc giải mã dữ liệu cũng vô cùng khó khăn, tốn nhiều nguồn lực tính toán và cần rất nhiều thời gian. Với những công ty, tổ chức thì việc sử dụng mã hóa dữ liệu là điều cần thiết. Điều này sẽ tránh được những thiệt hại khi những thông tin mật nếu vô tình bị lộ ra ngoài, cũng khó lòng giải mã ngay lập tức.

Hiện nay có rất nhiều ứng dụng tin nhắn đều sử dụng mã hóa nhằm bảo mật tin nhắn cho người dùng. Chúng ta có thể kể đến Facebook, WhatApps với loại mã hóa sử dụng được gọi là End-to-End

4.  Các phương pháp mã hóa

Mã hóa cổ điển

Đây là phương pháp mã hóa cổ xưa và đơn giản nhất. Ngày nay phương pháp này không còn được sử dụng nhiều so với những phướng pháp khác. Bởi nó quá đơn giản. Ý tưởng của phương pháp này là: bên A mã hóa thông tin bằng thuật toán mã hóa cổ điển, và bên B giải mã thông tin, dựa vào thuật toán của bên A cung cấp, không cần dùng đến bất kì key nào. Vì thế toàn bộ độ an toàn của kiểu mã hóa này phụ thuộc vào bí mật của thuật toán. Nếu một người thứ ba biết được thuật toán thì xem như thông tin không còn bảo mật nữa. Việc giữ bí mật thuật toán trở nên vô cùng quan trọng, và không phải ai cũng có thể giữ bí mật đó một cách trọn vẹn.

Mã hóa một chiều (hash)

Có những tường hợp chúng ta chỉ cần mã hóa thông tin chứ không cần giải mã nó. Đó là khi chúng ta cần sử dụng kiểu mã hóa một chiều này. Ví dụ, khi bạn đăng nhập vào một trang web, mật khẩu của bạn sẽ được hàm băm (hash function) “băm nhỏ” , chuyển thành một chuỗi các kí tự như “KhhdhujidbH”. Thực chất, cơ sở dữ liệu lưu lại các kí tự mã hóa này chứ không lưu lại mật khẩu của bạn. Lỡ hacker có trộm dữ liệu thì cũng chỉ thấy những kí tự khó hiểu chứ không biết password thật của bạn là gì.

Đặc điểm của hash function đó là trong cùng 1 điều kiện, dữ liệu đầu vào giống nhau thì nó sẽ cho ra kết quả y hệt nhau. Nếu chỉ cần thay đổi một kí tự trong chuỗi, từ chữ hoa sang chữ thường, kết quả sẽ hoàn toàn khác. Cũng vì vậy mà người ta dùng hash function để kiểm tra tính toàn vẹn của dữ liệu.

Hiện nay, hai thuật toán hash function thường được dùng nhất là MD5 và SHA. Nếu bạn download file trên mạng thì đôi khi sẽ thấy dòng chữ MD5 do tác giả cung cấp. Bạn sẽ phải nhập mã hiện lên theo yêu cầu. Mục đích là để bạn so sánh file đã download với file gốc xem có bị lỗi gì không.

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

Kiểu mã hóa này còn có tên gọi khác là mã hóa khóa công khai. Nó  sử dụng đến hai khóa (key) khác nhau. Một khóa gọi là khóa công khai (public key)  và một khóa khác là khóa bí mật (private key). Dữ liệu được mã hóa bằng public key. Tất cả mọi người đều có thể có được key này. Tuy nhiên để giải mã được dữ liệu, người nhận cần phải có private key.

Để thực hiện mã hóa bất đối xứng thì:

- Người nhận sẽ tạo ra một gặp khóa (public key và private key), họ sẽ giữ lại private key và truyền cho bên gửi public key. Vì public key này là công khai nên có thể truyền tự do mà không cần bảo mật.

- Trước khi gửi tin nhắn, người gửi sẽ mã hóa dữ liệu bằng mã hóa bất đối xứng với những key nhận được từ người nhận

- Người nhận sẽ giải mã dữ liệu nhận được bằng thuật toán được sử dụng ở bên người gửi, với key giải mã là private key.

Điểm yếu lớn nhất của kiểu mã hóa này là tốc độ mã hóa và giải mã rất chậm. Nếu dùng kiểu mã hóa bất đối xứng trong việc truyền dữ liệu thì sẽ rất tốn phí và mất thời gian.

Thuật toán mã hóa bất đối xứng thường thấy: RSA.

Mã hóa đối xứng

Phương pháp mã hóa này chỉ cần dùng một key giống nhau để mã hóa và giải mã. Theo một số tài liệu thì mã hóa đối xứng là giải pháp được sử dụng nhất phổ biến hiện nay.

Quy trình mã hóa được miêu tả như sau:

-Dùng giải thuật ngẫu nhiên mã hóa + key để mã hóa dữ liệu gửi đi.

-Bằng cách nào đó, key của người gửi sẽ được gửi đến cho người nhận, có thể là giao trước hoặc sau khi mã hóa file đều được.

-Khi người nhận nhận được dữ kiệu, họ sẽ dùng key này để giải mã dữ liệu để có được dữ liệu chuẩn.

Tuy nhiên vấn đề bảo mật nằm ở chỗ, làm thế nào đẻ chuyển key cho người nhận một cách an toàn. Nếu key này bị lộ, bất kì ai sử dụng giải thuật phía trên đều có thể giải mã được dữ liệu như vậy thì tính bảo mật sẽ không còn nữa.

Chúng ta sẽ thường thấy hai thuật toán thường thấy là DES và AES. Thuật toán DES xuất hiện  từ năm 1977 nên không được sử dụng phổ biến bằng AES. Thuật toán AES có thể dùng nhiều kích thước ô nhớ khác nhau để mã hóa dữ liệu, thường thấy là 128-bit và 256-bit, có một số lên tới 512-bit và 1024-bit. Kích thước ô nhớ càng lớn thì càng khó phá mã hơn, bù lại việc giải mã và mã hóa cũng cần nhiều năng lực xử lý hơn.

5. Mã hóa dữ liệu End-to-End là gì?

End-to-End Encryption (E2EE) là phương thức mã hóa mà chỉ người nhận và gửi có thể hiểu được thông điệp mã hóa này mà thôi. Sẽ không ai biết được những nội dung mà chúng ta đang truyền tải, kể cả những nhà cung cấp dịch vụ Internet.

Phương thức mã hóa này sử dụng mã khóa giữa người nhận và người gửi đang trực tiếp tham gia vào quá trình gửi dữ liệu. Trừ khi bên thứ 3 biết được mã khóa này thì sẽ không thể nào giải mã được.

Cơ chế hoạt động của loại mã hóa End-to-End thông qua giao thức trao đổi khóa Diffie-Hellman. Chúng ta có thể hiểu qua ví dụ gửi tin nhắn, 2 người sẽ tiến hành gửi đi một mã khóa công khai và một mã khóa bí mật. Tin nhắn lúc đó sẽ được tiến hành mã hóa bằng khóa bí mật kết hợp với khóa công khai. Và lúc đó người nhận sẽ sử dụng khóa bí mật để có thể giải mã được thông tin và nội dung tin nhắn.

6. Khóa bí mật và khóa công khai trong End-to-End Encryption?

2 loại khóa này đều được tạo nên từ những dãy số ngẫu nhiên. Khóa công khai sẽ được chia sẻ với mọi người, nhưng khóa bí mật phải được bảo vệ, nó sẽ nằm hoàn toàn ở người có quyền giải mã. 2 mã này hoạt động với nhiệm vụ hoàn toàn khác nhau. Khóa công khai sẽ tiến hành mã hóa dữ liệu, thay đổi nội dung tài liệu. Còn khóa bí mật sẽ đảm nhận nhiệm vụ giải mã nội dung.

Như vậy khi người gửi tin nhắn mã hóa dữ liệu bằng khóa công khai, và người nhận sẽ tiến hành giải mã bằng khóa bí mật và ngược lại.

Thuật toán Rivest-Sharmir-Adleman (RSA) là hệ thống mã hóa khóa công khai, được sử dụng rộng rãi để bảo vệ dữ liệu nhạy cảm, đặc biệt là khi nó được gửi qua một mạng không an toàn như Internet. Sự phổ biến của thuật toán này là do cả khóa công khai và khóa bí mật của nó đều có thể mã hóa dữ liệu và đảm bảo tính bí mật, toàn vẹn, xác thực và không thu hồi của dữ liệu và truyền thông kỹ thuật số thông qua việc sử dụng chữ ký số.

7. Thách thức đối với mã hóa dữ liệu

Hầu hết phương thức tấn công cơ bản vào mã hóa hiện nay là Brute Force (thử và sai liên tục) và thử các khóa ngẫu nhiên cho đến khi khóa đúng được tìm thấy. Có thể giảm thiểu xác suất mở khóa bằng cách tăng chiều dài, độ phức tạp của khóa. Mã hóa càng mạnh thì tài nguyên cần để thực hiện tính toán sẽ tăng lên, cần nhiều thời gian và vật lực hơn để phá mã.

Các phương pháp phá vỡ mã hóa khác bao gồm tấn công kênh phụ và phân tích mật mã. Tấn công kênh bên xảy ra sau khi việc mã hóa hoàn tất thay vì tấn công trực tiếp vào mã hóa. Những cuộc tấn công này có khả năng thành công nếu có lỗi trong thiết kế hệ thống hoặc thực thi. Tương tự như vậy, phân tích mật mã sẽ tìm điểm yếu trong mã hóa và khai thác nó. Kiểu tấn công này có thể thành công nếu có lỗ hổng trong mật mã.

Nhìn chung, việc mã hóa dữ liệu là điều cần thiết để chúng ta có thể tăng sự bảo mật hơn cho tài liệu, đặc biệt là những kiểu tài liệu mật, thông tin tài khoản cá nhân. Hiện nay, việc mã hóa dữ liệu có thể được thực hiện thông qua một số công cụ online như Whisply, hay Nofile.io.

Phạm Lan tổng hợp

Tin khác