Tìm Hiểu Một Vài Khái Niệm Liên Quan Đến “mã Hóa”

Cập nhật thông tin chi tiết về Tìm Hiểu Một Vài Khái Niệm Liên Quan Đến “mã Hóa” mới nhất ngày 04/12/2020 trên website Zdungk.com. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất. Cho đến thời điểm hiện tại, bài viết này đã đạt được 6,039 lượt xem.

Enconding

Về mặt định nghĩa mà nói, ta có thể đưa ra khái niệm sau về chuyện thế nào gọi là encoding

Đọc nghe hơi rối rắm phải không. Một vài ví dụ về encoding mà ta thường xuyên sử dụng :

  • Đầu tiên là base64 encoding. Đây là một trong số những kiểu encode dùng để chuyển dữ liệu từ dạng mã nhị phân sang dạng text. Tưởng tượng như ta đang có nhu cầu gửi email một bức ảnh chẳng hạn. Vì email không thể truyền data dạng binary đi được rồi, nên ta cần phải encode base64 để chuyển nó sang dạng text
  • Hay một kịch bản khác thường hay gặp hơn, đó là url encoding . Như ta đã biết, url chỉ có thể chứa những kí tự trong bảng mã ASCII. Tuy nhiên, trong thực tế, các đường dẫn url của ta thường xuyên cần phải chứa những kí tự đặc biệt nằm ngoài bảng mã này, thế nên, ta cần sử dụng encoding để chuyển nó về định dạng chấp nhận được. Cụ thể, các thuật toán url encode, thường sẽ thay thế các kí tự đặc biệt bằng một chuỗi bắt đầu với % gắn với 2 giá trị số hex

Tóm lại , ta có thể rút ra một vài điểm cần lưu ý về encoding :

  • Mục đích của encode là để đảm bảo khả năng sử dụng (usability) của dữ liệu
  • Từ nhu cầu trao đổi dữ liệu, nên các phép encode đều có thể đảo ngượcthuật toán encode đều được công khai
  • Đầu vào của encode không nhất thiết phải là text

Encryption

Tóm lại, ta có thể rút ra đặc điểm nhận dạng của encrption :

  • Mục đích của encryption là tính bảo mật của dữ liệu
  • Các thuật toán encryption được sử dụng là bí mật, chỉ có người gửi và người nhận được quyền biết
  • Để dữ liệu ban đầu có thể đến được tay người nhận, các quá trình encryption là có thể đảo ngược

Hashing

Hashing cũng tương tự như các khái niệm trên, nhận một giá trị đầu vào, và qua thuật toán biến đổi, cho một giá trị đầu ra. Tương tự như encryption, muốn thực hiện một phép hashing , ta cần 3 yếu tố đầu vào : chuỗi input ta muốn hash, thuật toán dùng để hash, và chuỗi secret key. Thế nhưng , mục đích của phép hash là nhằm đảm bảo tính toàn vẹn của dữ liệu, nghĩa là với input thay đổi, luôn luôn cho ta một output thay đổi. Nhưng khác với encryption, hashing là một quá trình không thể đảo ngược. Kể cả khi bạn có chuỗi output, secret key và thuật toán, bạn cũng không thể lấy lại được chuỗi input. Với đặc điểm này , phép hashing thường được dùng trong các quá trình xác thực, để nhận biết xem, dữ liệu nhận được và dữ liệu truyền đi có bị thay đổi gì hay không. Cụ thể, người gửi và người nhận cùng thống nhất với nhau một secret key. Khi gửi, người gửi hashing dữ liệu gửi tạo thành một signature gửi đi kèm với dữ liệu. Khi nhận, người nhận hashing dữ liệu nhận được, và so sánh với signature người nhận gửi kèm. Nếu không có gì khác biệt, dữ liệu nhận được đảm bảo là toàn vẹn. Nếu bạn làm việc với Java Web Token, hẳn sẽ nhận ra kịch bản này rất quen thuộc. Một vài thuật toán hashing thông dụng như SHA-3 , MD5

Qua đây, ta có thể rút ra một vài đặc điểm của hashing:

  • Mục đích của hashing là Tính toàn vẹn của dữ liệu
  • Các thuật toán hashing được sử dụng là công khai, mọi người đều có thể biết được
  • Hashing là một quá trình không thể đảo ngược , người nhận không thể qua chuỗi output để tìm ra được chuỗi input.

Obfuscation

Kết quả cuối cùng của Obfuscation, khái niệm cuối cùng mà mình muốn nói đến hôm nay, sẽ kiểu như hình trên. Khác với các khái niệm trước, mục tiêu mà chúng nhắm đến thường không phân biệt là người hay chương trình ( có đọc được dữ liệu này không, có xem trộm được dữ liệu này không, có đảm bảo được dữ liệu này là hàng xịn không ), Obfuscation chỉ có ý nghĩa với con người. Đây là một quá trình làm cho dữ liệu trở nên khó hiểu , khó đọc hơn, từ đó khiến chúng khó bị sao chép hay tấn công hơn. Kịch bản hay gặp nhất là khi ta cần bảo source code bị người dùng tiếp cận của mìn,như các file js chẳng hạn. Ví dụ bạn bật thử F12 lên, vào trong source của ngay trang viblo, sẽ thấy một file js rất lằng nhằng khó hiểu, đó chính là đã qua quá trình obfuscation rồi đó. Máy đọc vẫn hiểu, người đọc thì không . Tuy nhiên cần lưu ý rằng, quá trình này chỉ là một cản trở nhỏ, không phải là một biện pháp bảo đảm an toàn, bởi lẽ, rất dễ để đảo ngược quá trình này.

Tóm lại, đặc điểm nhận dạng của thằng này là :

  • Obfuscation nhằm đến mục tiêu ngăn ngừa (cản trở thì đúng hơn) con người hiểu được dữ liệu
  • Mục đích của nó là nhắm đến tính đọc hiểu ( readability ) của dữ liệu
  • Các phép toán thực hiện Obfuscating là công khai
  • Qúa trình này có thể đảo ngược một cách rất dễ dàng.
  • Đặc điểm riêng nhất của nó, đó là Obfuscation chỉ có ý nghĩa với con người. Chương trình có thể hiểu dữ liệu đã qua hoặc chưa qua obfuscation một cách không mấy khác biệt.

Bạn đang xem bài viết Tìm Hiểu Một Vài Khái Niệm Liên Quan Đến “mã Hóa” trên website Zdungk.com. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất. Chúc bạn một ngày tốt lành!