Diễn Đàn SEO - vnseo.edu.vn - Trong thời đại số hóa ngày nay, mật mã đóng một vai trò rất quan trọng. Và tôi nghĩ người lập trình viên cần phải trang bị các kiến thức cơ bản về mã hóa. Vì vậy, trong bài viết này tôi muốn giới thiệu đến các bạn tổng quan về các hệ mật mã, cách chúng làm việc, ưu và nhược điểm của từng hệ mật mã, cách chúng phối hợp, bổ sung cho nhau như thế nào. Có rất nhiều loại phương pháp mã hóa khác nhau, mỗi loại có những ưu và nhược điểm riêng. Thông thường phương pháp mã hóa dữ liệu được phân chia thành 5 loại chính - Hệ mã dòng - Stream Cipher Với các hệ mã dòng (stream cipher), ta sẽ xử lý trên từng bit của bản rõ. Một hệ mã dòng rất nổi tiếng đó là One Time Pad (OTP), lưu ý các bạn đừng nhầm lẫn với One Time Password. Với bản rõ m và khóa k có cùng độ dài theo bit, One-Time-Pad được xác định như sau: E(m, k) = m XOR k = c D(c, k) = c XOR k = (m XOR k) XOR k = m #Các loại mã hóa Với OTP, khóa k phải đáp ứng 3 điều kiện sau đây: Độ dài của khóa phải bằng kích thước bản rõ. Khóa phải được chọn hoàn toàn ngẫu nhiên (truly random) Và khóa chỉ được sử dụng một lần Do khóa có độ dài bằng bản rõ, nên nếu ta có thể truyền khóa một cách bí mật đến bên nhận thì ta cũng có thể sử dụng cách đó để truyền luôn bản rõ. Đây cũng nhược điểm của OTP. Trong thực tế, người ta thường chọn ngẫu nhiên một khóa k có độ dài nhỏ hơn rất nhiều so với bản rõ, và dùng một hàm tạo số ngẫu nhiên (Pseudo Random Generator - PRG) để mở rộng độ dài của khóa k đó. Vì vậy, biến thể của OTP được dùng trong thực tế như sau: E'(m, k) = E(m, PRG(k)) = m XOR PRG(k) = c D'(c, k) = D(c, PRG(k)) = (m XOR PRG(k)) XOR PRG(k) = m trong đó, k có kích thước nhỏ hơn rất nhiều so với m. - Mã hóa cổ điển Đây là phương pháp mã hóa đầu tiên, và cố xưa nhất, và hiện nay rất ít được dùng đến so với các phương pháp khác. Ý tưởng của phương pháp này rất đơn giản, 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, mà không dùng đến bất kì key nào. Do đó, độ an toàn của thuật toán sẽ chỉ dựa vào độ bí mật của thuật toán, vì chỉ cần ta biết được thuật toán mã hóa, ta sẽ có thể giải mã được thông tin. - Mã hóa một chiều Đôi khi ta chỉ cần mã hóa thông tin chứ không cần giải mã thông tin, khi đó ta sẽ dùng đến phương pháp mã hóa một chiều (Chỉ có thể mã hóa chứ không thể giải mã). Thông thường phương pháp mã hóa một chiều sử dụng một hàm băm (hash function) để biến một chuỗi thông tin thành một chuỗi hash có độ dài nhất định. Ta không có bất kì cách nào để khôi phục (hay giải mã) chuỗi hash về lại chuỗi thông tin ban đầu. Đặc điểm của hash function là khi thực hiên băm hai chuỗi dữ liệu như nhau, dù trong hoàn cảnh nào thì nó cũng cùng cho ra một chuỗi hash duy nhất có độ dài nhất định và thường nhỏ hơn rất nhiều so với chuỗi gốc, và hai chuỗi thông tin bất kì dù khác nhau rất ít cũng sẽ cho ra chuỗi hash khác nhau rất nhiều. Do đó hash function thường được sử dụng để kiểm tra tính toàn vẹn của dữ liệu. Thuật toán mã hóa một chiều (hàm băm) mà ta thường gặp nhất là MD5 và SHA. - Mã hóa bất đối xứng #Các loại mã hóa Mã hóa bất đối xứng là phương pháp mã hóa mà trong đó key mã hóa và key giải mã khác nhau. Nghĩa là key ta sử dụng để mã hóa dữ liệu sẽ khác với key ta dùng để giải mã dữ liệu. Tất cả mọi người đều có thể biết được public key, và có thể dùng public key này để mã hóa thông tin. Nhưng chỉ có người nhận mới nắm giữ private key, nên chỉ có người nhận mới có thể giải mã được thông tin. Để thực hiện mã hóa bất đối xứng thì: Bên nhận sẽ tạo ra một gặp khóa (public key và private key). Bên nhận sẽ dữ 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. Bên gửi trước khi gửi dữ liệu sẽ mã hóa dữ liệu bằng thuật toán mã hóa bất đối xứng với key là public key từ bên nhận. Bên nhận sẽ giải mã dữ liệu nhận được bằng thuật toán được sử dụng ở bên gửi, với key giải mã là private key. Điểm yếu lớn nhất của mã hóa bất đối xứng là tốc độ mã hóa và giải mã rất chậm so với mã hóa đối xứng, nếu dùng mã hóa bất đối xứng để mã hóa dữ liệu truyền – nhận giữa hai bên thì sẽ tốn rất nhiều chi phí. Do đó, ứng dụng chỉnh của mã hóa bất đối xứng là dùng để bảo mật secret key cho mã hóa đối xứng: Ta sẽ dùng phương pháp mã hóa bất đối xứng để truyền secret key của bên gửi cho bên nhận. Và hai bên sẽ dùng secret key này để trao đổi thông tin bằng phương pháp mã hóa đối xứng. Thuật toán mã hóa bất đối xứng thường thấy: RSA. Hy vọng bài viết cung cấp cho các bạn những thông tin hữu ích và tổng quan về các loại mã hóa cơ bản Rất mong nhận được góp ý từ tất cả mọi người. Nguồn: SecurityBox