Mật mã RSA - phần 1
I. Tổng quan về mật mã bất đối xứng (Asymmetric ciphers)
1. Tình huống người đưa thư - khó khăn của mật mã đối xứng
Trước khi đi vào tìm hiểu mật mã bất đối xứng, xem xét tình huống như sau: Hai người ở xa A và B gửi thư cho nhau, thư được vận chuyển thông qua một người đưa thư. Ở đây, nội dung lá thư ở dạng plaintext, tức có thể xảy ra trường hợp người đưa thư đọc trộm nội dung lá thư. Bởi vậy, A và B đã nghĩ ra một cách để bảo mật thông tin bức thư, bằng cách đưa lá thư vào một hòm chứa khóa, A và B mỗi người đều có một chiếc chìa để mở khóa hòm và lấy được lá thư bên trong. Tất nhiên, người đưa thư không có chìa khóa nên không thể đọc được thông điệp nữa. Đúng vậy, không khó để nhận ra, tình huống trên chính là một tiêu biểu của mật mã đối xứng: thông điệp được mã hóa bằng cách khóa vào hòm, hai chiếc chìa cùng có thể mở được khóa nên có thể coi là cùng một secret key, attacker - người đưa thư không có quyền biết giá trị của secret key.
Không khó nhận ra, một điểm yếu lớn nhất của mật mã đối xứng là làm sao có thể trao đổi giá trị secret key trước khi thực hiện truyền thông tin. Bởi ở lần đầu tiên trao đổi secret key sẽ ẩn chứa nguy cơ bị đánh cắp giá trị secret key này. Đồng thời, nếu số lượng người truyền tin cho nhau tăng lên, chẳng hạn có người đôi một gửi thư cho nhau, để đảm bảo tính bí mật, chúng ta sẽ cần tới secret key có giá trị khác nhau - Gây khó khăn cho vấn đề lưu trữ và quản lý key.
2. Mật mã bất đối xứng
Những khó khăn của mật mã đối xứng đã thúc đẩy ngành khoa học mật mã cần cho ra đời một loại mật mã mới, với mong muốn người gửi và người nhận có thể sử dụng hai loại chìa khác nhau mà có thể "mở" được cùng một hòm khóa đó - đó chính là mật mã bất đối xứng (Asymmetric ciphers).
Khác với mật mã đối xứng chỉ sử dụng một secret key duy nhất, thì mật mã bất đối xứng sử một một cặp gồm public key (khóa công khai) và private key (khóa bí mật). Giống như tên của chúng, public key cho phép tất cả mọi người biết giá trị, và private key thì chỉ có người giải mã mới được sở hữu. Chính vì vậy, loại mật mã này còn được biết đến với cái tên Public-key cryptography.
Cụ thể chúng ta có thể sử dụng mật mã bất đối xứng thực hiện bảo mật thông tin ra sao, hãy quay về với tình huống người đưa thư. Đầu tiên, mỗi người A và B sẽ tìm cho mình một ổ khóa và chìa khóa tương ứng (lưu ý rằng ổ khóa này là loại có thể đóng khóa mà không cần chìa). Bước đầu, A gửi cho B ổ khóa của A, ngược lại B gửi cho A ổ khóa của B. Lúc này hai người A và B sẽ giữ chìa khóa của mình và khóa của đối phương. Khi A cần gửi thông điệp cho B, A sẽ sử dụng khóa của B để khóa thư vào hòm, khi B nhận được hòm, do sở hữu chìa tương ứng với ổ khóa đó nên B có thể mở khóa và đọc được thông điệp. Khi cần gửi lại, B sẽ sử dụng khóa của A để khóa thư vào hòm, tương tự A có chìa tương ứng với khóa đó cũng sẽ mở và đọc được nội dung thư. Vấn đề được giải quyết dễ dàng bằng cách sử dụng hai bộ khóa.
Để bạn đọc có thể hiểu cách thực hiện kỹ hơn, chúng ta gọi pubK-A, priK-A, pubK-B, priK-B lần lượt là cặp khóa công khai - khóa bí mật của A và B. Quá trình gửi và nhận tin lặp theo theo bước như sau:
- A gửi tin cho B: A sử dụng khóa pubK-B mã hóa.
- B nhận tin từ A: B sử dụng khóa priK-B giải mã.
- B gửi tin cho A: B sử dụng khóa pubK-A mã hóa.
- A nhận tin từ B: A sử dụng khóa priK-A giải mã.
Như vậy, mật mã bất đối xứng cần đáp ứng được yếu tố: public key có thể sử dụng để mã hóa, chỉ sở hữu private key mới có thể giải mã thông điệp. Hay nói cách khác, ai cũng có thể mã hóa thông điệp, nhưng chỉ giá trị private key tương ứng mới có thể giải mã.
3. So sánh mật mã bất đối xứng - đối xứng
Bảng sau so sánh một số đặc điểm nổi bật giữa hai loại mật mã đối xứng - bất đối xứng
Đặc điểm | Mật mã đối xứng | Mật mã bất đối xứng |
---|---|---|
secret key | Sử dụng cùng một secret key thực hiện mã hóa và giải mã | Công việc mã hóa sử dụng public key, giải mã sử dụng private key |
Tốc độ | nhanh | chậm hơn so với mật mã đối xứng |
Độ an toàn | thấp hơn do cần đảm bảo tính bí mật của secret key | Cao hơn do sử dụng một cặp public key và private key |
Mật mã đối xứng có ưu điểm là tốc độ mã hóa nhanh, tính an toàn bị giảm đi do cần đảm bảo giá secret key không bị lộ. Mật mã bất đối xứng có thể truyền tải thông điệp một cách an toàn nhưng nhược điểm là tốc độ mã hóa chậm, tiêu tốn tài nguyên và thời giản. Bởi vậy, khi có sự xuất hiện của mật mã bất đối xứng, thông điệp đầu tiên chứa secret của mật mã đối xứng sẽ được truyền tải thông qua mã hóa bất đối xứng, sau khi xác nhận secret key đã được an toàn tới phía nhận thông điệp, các lần trao đổi thông tin sau đó sẽ sử dụng mật mã đối xứng nhằm tối ưu tốc độ mà vẫn đảm bảo tính an toàn.
II. Mật mã RSA - giới thiệu
Vào năm , tại Học viện Công nghệ Massachusetts (MIT), ba nhà nghiên cứu Ron Rivest, Adi Shamir và Len Adleman đưa ra thuật toán mã hóa RSA sử dụng khóa bất đối xứng. Tên mật mã RSA được ghép lại bằng các chữ cái đầu của ba tác giả. RSA là loại mã hóa tiêu biểu cho mật mã bất đối xứng nói chung và được sử dụng rộng rãi hiện nay.
Quy trình mã hóa và giải mã tổng quát của thuật toán có thể quan sát qua sơ đồ sau:
Dựa vào sơ đồ trên, ký hiệu plaintext là P
, ciphertext là C
, PubK
và PriK
lần lượt là public key và private key. Thực hiện mã hóa, với hàm mã hóa RSA ký hiệu là E()
, chúng ta thu được bản mã qua công thức:
C = E(P, PubK)
Thực hiện giải mã, với hàm giải mã RSA ký hiệu là D()
, chúng ta thu được bản rõ qua công thức:
P = D(C, PriK)
Như vậy, khác với mật mã AES, trong RSA, khi mã hóa và giải mã chúng ta sử dụng hai loại key khác nhau, đồng thời hai hàm E()
và D()
có cơ chế hoạt động phức tạp hơn.
Tài liệu tham khảo
All rights reserved