Làm sao để phân biệt Hashing và Encryption
Đến bây giờ, hai khái niệm hashing và encryption vẫn mang đến những sự nhầm lẫn cho nhiều người. Bài viết này, DIGISTAR gửi đến bạn khái niệm và góc nhìn toàn diện nhất về chúng. Mong rằng bài viết này giúp bạn phần nào xua tan những điểm mà bạn còn mập mờ về chúng.
1. Hashing
Hashing (băm) ở đây ta có thể hiểu chúng đơn giản như sau. Nó là quy trình gồm một chuỗi ký tự hoặc một khối dữ liệu (đầu vào) được xử lý bởi một hàm băm (hash function) để cho kết quả là giá trị băm (hash value). Giá trị băm có kích thước cố định và nhỏ hơn so với chuỗi ký tự ban đầu. Về lý thuyết, với mỗi giá trị đầu vào khác nhau tùy ý, sau khi được xử lý qua hàm băm sẽ cho ra một giá trị băm khác nhau. Nhưng trên thực tế, điều này vẫn không phải không có ngoại lệ. Chúng được gọi là sự đụng độ về giá trị băm (collision).
(Nguồn: https://en.wikipedia.org)
Hình ảnh trên cho ta thấy một ví dụ của sự đụng độ giữa giá trị “John Smith” và “Sandra Dee”.
Một hàm băm tốt chỉ khi tạo ra được các giá trị băm khác nhau với các chuỗi đầu vào khác nhau. Hoặc độ đụng độ dữ liệu phải đạt mức có thể chấp nhận được. Hashing được ứng dụng rộng rãi trong tìm kiếm, truy xuất dữ liệu trên databases có kích thước lớn. Ngoài ra, nó còn làm giảm chi phí tính toán trong một tập hợp dữ liệu lớn.
(Nguồn: https://en.wikipedia.org)
Ví dụ một hàm băm tốt khi mỗi đầu vào cho ra một giá trị băm riêng biệt
Kết luận về Hashing:
Hashing gồm một vài đặc trưng sau:
- Với mỗi một đầu vào ngẫu nhiên, hashing phải tạo ra được một giá trị băm tương ứng.
- Không thể dịch ngược từ giá trị băm quay trở lại chuỗi ký tự ban đầu.
- Đầu vào khác nhau phải xuất ra được các giá trị băm khác nhau.
Tóm lại, hàm băm sản xuất ra các giá trị băm ngẫu nhiên giúp nâng cao tính bảo mật trong liên lạc. Băm còn được ứng dụng rộng rãi trong tìm kiếm dữ liệu, là thuật toán trong Encryption. Hashing được ứng dụng rộng rãi từ lưu mật khẩu, xác định tính toàn vẹn dữ liệu, đồ họa máy tính, điện tử, viễn thông…
2. Encryption
Mã hóa là sự thay đổi dữ liệu thành những đoạn mã gồm nhiều ký tự ngẫu nhiên. Điều này nhằm hạn chế tối đa bị đánh cắp thông tin từ các hacker. Đây là cách hiệu quả nhất để bảo mật dữ liệu trong các hệ thống truyền thông hiện đại.
Để người nhận đọc được nội dung gửi đã mã hóa, người nhận có một khóa bảo mật để giải mã. Dữ liệu khi chưa được mã hóa sẽ tồn tại dưới dạng một văn bản thông thường. Và đương nhiên bất kỳ ai cũng có thể đọc và lấy được thông tin cần thiết trong đó. Trong khi dữ liệu mã hóa sẽ tồn tại dưới dạng văn bản mật mã. Bạn hay bất kỳ ai đều không thể lấy được bất kỳ thông tin nào cần thiết. Bởi vì bây giờ chúng chỉ là một mớ các ký tự hỗn loan không theo trật tự nào. Nội dung này chỉ đọc được sau khi được giải mã thành dạng gốc (plain text).
Mã hóa gồm các hình thức sau:
Mã hóa đối xứng
Sử dụng khóa bí mật để mã hóa và giải mã thông điệp. Khóa bí mật có thể là một từ, một số hoặc một chuỗi ký tự ngẫu nhiên. Cả người gửi và người nhận cần phải có mã này để gửi và giải mã thông điệp.
Mã hóa bất đối xứng
Nó bao gồm một khóa công khai (public key) được chia sẻ với tất cả mọi người và một khóa riêng (private key) chỉ do người nhận nắm. Khóa công khai được sử dụng để mã hóa thông điệp và khóa riêng được sử dụng để giải mã. Hình thức mã hóa này có chút chậm hơn so với mã hóa đối xứng.
Mã hóa Hybrid
Là phương pháp pha trộn cả hai hình thức là mã hóa đối xứng và bất đối xứng. Vừa tận dụng được thế mạnh cũng vừa giảm thiểu tối đa những điểm yếu từ 2 phương pháp.
- Quá trình mã hóa: Sử dụng một giải thuật hoặc một hàm toán học (E) để tính toán lên dữ liệu đầu vào (P). Sau đó, quá trình xử lý sẽ trở thành thông tin đã được mã hóa (C).
- Quá trình giả mã: Áp dụng giải thuật (D) lên thông tin đã mã hóa (C) để trở thành thông tin đã giả mã (P).
Một số thuật toán mã hóa phổ biến hiện nay: AES (mã hóa đối xứng), PGP (mã hóa bất đối xứng).
Tóm lại, hàm Hashing được ứng dụng rất rộng rãi và sử dụng cho nhiều mục đích. Trong khi mã hóa duy trì tính an ninh, bảo mật cho dữ liệu. Trong cơ chế hoạt động của mã hóa, yêu cầu phải có các khóa tham gia quá trình mã hóa và giải mã.
Mã hóa là kỹ thuật mang tính 2 chiều, gồm mã hóa và giải mã. Bạn có thể mã hóa một văn bản thành chuỗi ký tự ngẫu nhiên. Sau đó bạn lại giải mã để đọc và truy xuất thông tin trong đó. Ngược lại, băm chỉ mang tính một chiều. Hashing không thể đảo ngược quá trình từ giá trị băm trở thành dữ liệu ban đầu. Mong rằng với nội dung đã trình bày, thực sự giúp ích hơn cho bạn trong công việc của mình.