Mã hóa là gì?
Mã hóa là một kỹ thuật được sử dụng để chuyển đổi một tin nhắn hoặc dữ liệu thành một dạng khó hiểu để bảo vệ thông tin trong quá trình truyền đi hoặc lưu trữ. Mã hóa có thể được sử dụng để bảo vệ thông tin riêng tư, tránh việc truy cập trái phép hoặc việc thay đổi dữ liệu không được cho phép.
Có hai loại chính của mã hóa: mã hóa khóa đối xứng và mã hóa công khai khóa. Trong mã hóa khóa đối xứng, cùng một khóa bí mật được sử dụng để mã hóa và giải mã tin nhắn. Điều này có nghĩa là người gửi và người nhận tin nhắn đều có quyền truy cập vào cùng một khóa và có thể sử dụng nó để mã hóa và giải mã tin nhắn. Mã hóa khóa đối xứng là một phương pháp mã hóa nhanh và hiệu quả, nhưng nó yêu cầu khóa bí mật được chia sẻ một cách an toàn giữa người gửi và người nhận. Nếu khóa bị đánh cắp, an toàn của tin nhắn đã mã hóa cũng bị đe dọa.
Trong mã hóa công khai khóa, một cặp khóa gồm khóa công khai và khóa bí mật được sử dụng. Khóa công khai được sử dụng để mã hóa tin nhắn, và khóa bí mật được sử dụng để giải mã nó. Điều này cho phép người gửi mã hóa tin nhắn bằng khóa công khai của người nhận, mà không cần phải chia sẻ khóa bí mật. Tuy nhiên, mã hóa công khai khóa thường chậm hơn so với mã hóa khóa đối xứng và yêu cầu sử dụng thêm tài nguyên hệ thống để thực hiện. Nó cũng có thể dễ dàng bị tấn công bằng cách tìm cách truy cập vào khóa công khai. Mã hóa công khai khóa được sử dụng rộng rãi trong các giao thức mã hóa như SSL/TLS (Secure Sockets Layer/Transport Layer Security) và PGP (Pretty Good Privacy).
Tuy nhiên, không có một phương pháp mã hóa là hoàn toàn an toàn và không bị tấn công được. Do đó, việc lựa chọn phương pháp mã hóa phù hợp và cập nhật và bảo mật khóa mã hóa là rất quan trọng để bảo vệ thông tin của bạn.
Ngày nay do sự tiện dụng nên
Mã hóa đối xứng
Mã hóa đối xứng, còn được gọi là mã hóa khóa bí mật chung hoặc mã hóa khóa chung, là một loại mã hóa trong đó sử dụng cùng một khóa bí mật để mã hóa và giải mã một tin nhắn. Điều này có nghĩa là người gửi và người nhận tin nhắn đều có quyền truy cập vào cùng một khóa và có thể sử dụng nó để mã hóa và giải mã tin nhắn.
Mã hóa đối xứng là một phương pháp mã hóa nhanh và hiệu quả, nhưng nó yêu cầu khóa bí mật được chia sẻ một cách an toàn giữa người gửi và người nhận. Nếu khóa bị đánh cắp, an toàn của tin nhắn đã mã hóa cũng bị đe dọa.
Một số ví dụ về thuật toán mã hóa đối xứng bao gồm AES (Advanced Encryption Standard), DES (Data Encryption Standard) và Blowfish. Những thuật toán này được sử dụng rộng rãi để truyền dữ liệu an toàn, bao gồm trong các giao thức như SSL/TLS (Secure Sockets Layer/Transport Layer Security) và PGP (Pretty Good Privacy).
Mã hóa bất đối xứng
Trái lại, mã hóa bất đối xứng hay mã hóa công khai khóa, mà cụ thễ như thuật toán RSA, sử dụng một cặp khóa: khóa công khai và khóa bí mật. Khóa công khai được sử dụng để mã hóa tin nhắn, và khóa bí mật được sử dụng để giải mã nó. Điều này cho phép người gửi mã hóa tin nhắn bằng khóa công khai của người nhận, mà không cần phải chia sẻ khóa bí mật. Tuy nhiên, mã hóa công khai khóa thường chậm hơn so với mã hóa đối xứng khóa.
RSA
RSA (Rivest-Shamir-Adleman) là một hệ thống mã hóa công khai khóa rất phổ biến, nó dựa trên khó khăn của việc tách số hữu tỉ thành những số nguyên tố lớn. Nó được phát triển năm 1977 bởi Ron Rivest, Adi Shamir và Leonard Adleman.
Trong mật mã học, RSA là một thuật toán mật mã hóa khóa công khai. Đây là thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hóa. Nó đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã học trong việc sử dụng khóa công cộng. RSA đang được sử dụng phổ biến trong thương mại điện tử và được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn.
Theo: wikipedia
Trong thuật toán RSA, một người dùng tạo ra một khóa công khai và một khóa bí mật. Khóa công khai bao gồm một số nguyên dương (modulus) n và một số mũ (exponent) e, và khóa bí mật bao gồm cùng một số nguyên dương `n` và một số mũ khác `d`. Số nguyên dương `n` là tích của hai số nguyên tố lớn, và các số mũ `e` và d được chọn sao cho e không chung nhau với một giá trị được định nghĩa từ các số nguyên tố và `d` là ngược lại của e theo mô hình này.
Quá trình tạo ra `private key` giống như là phương trình `y = f(x)` chỉ có 1 chiều.
- y sẽ là public key và với mỗi x, biết x thì sẽ tìm được y.
- Nhưng ngược lạ cho dù có biết y thì cũng khó mà tìm được x, về lý thuyết phương trình y=f(x) có thể tìm được x bằng các thử quét tất cả các giá trị x có thể, với phần cứng máy tính hiện tại cũng mất khoảng thời gian rất lâu để tìm đúng giá trị x.
Để mã hóa một tin nhắn bằng thuật toán RSA, người gửi có được khóa công khai của người nhận và lũy thừa tin nhắn đó tới số mũ của khóa công khai `e` theo mô hình số nguyên dương `n`. Người nhận có thể giải mã tin nhắn bằng cách lũy thừa tin nhắn mã hóa tới số mũ của khóa bí mật `d` theo mô hình số nguyên dương `n`.