Tải bản đầy đủ (.docx) (58 trang)

Giải thuật mã hóa RSA và ứng dụng trong mã hóa dữ liệu và tạo chữ ký điện tử

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (834.48 KB, 58 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC SƯ PHẠM
KHOA TIN HỌC

ĐỒ ÁN MÔN HỌC
ĐỀ TÀI:
GIẢI THUẬT MÃ HÓA RSA VÀ ỨNG DỤNG TRONG MÃ
HÓA DỮ LIỆU VÀ TẠO CHỮ KÝ ĐIỆN TỬ
Sinh viên thực hiện: Huỳnh Ngọc Nam
Lớp: 11CNTT2
Giảng viên hướng dẫn: TS. Nguyễn Trần Quốc Vinh
Đà Nẵng, 2013
MỤC LỤC
MỞ ĐẦU
Trong mật mã học, RSA là một thuật toán 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 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.
1. Lý do chọn đề tài:
Thuật toán mã hóa công khai đã ra đời từ rất lâu đời. Nhưng trước những nhu cầu về giao
dịch an toàn trên mạng Internet ngày nay, những ứng dụng của nó ngày càng tỏ rõ tầm quan
trọng. Mà trong đó, thuật toán mã hóa RSA là phổ biến nhất. Nó được sử dụng rộng rãi cho
công nghệ VPN.
Khi mà các ứng dụng CNTT đã và đang ngày càng phổ biến rộng rãi đã ảnh hưởng rất lớn
đến diện mạo của đời sống xã hội, kinh tế. Mọi công việc của chúng ta đều có thể thực hiện
được từ xa với sự hỗ trợ của máy tính và mạng Internet (từ học tập, giao dich,… đến việc gửi
thư). Tất cả các thông tin liên quan đều được máy tính quản lý và truyền đi trên hệ thống
mạng. Đối với những thông tin bình thường thì không có ai chú ý tới, thế nhưng đối với
những thông tin mang tính chất sống còn đối với một cá nhân hay tổ chức thì vấn đề bảo mật
và giữ cho đến đúng địa chỉ cần đến. Rất nhiều phương pháp bảo mật ra đời và trong số đó
phương pháp mã hóa khóa công khai được xem là phương pháp có tính an toàn khá cao. Với


thuật toán RSA chúng ta có thể mã hóa các dữ liệu của mình thành các dữ liệu không thể
đọc nếu không có khóa bí mật.
2. Mục đích và nhiệm vụ:
• Mục tiêu
o Về học thuật:
Đề tài này tập trung vào việc phân tích thuật toán mã hóa RSA trong quá trình gửi và nhận
các văn bản. Cài đặt và hoạt động của thuật toán RSA.
o Về phát triển và triển khai ứng dụng
Ứng dụng thuật toán mã hóa RSA vào ứng dụng mã hóa dữ liệu gửi đi và tiến hành giải
mã dữ liệu ở phía nhận, thuật toán được triển khai trên ứng dụng bằng java.
• Nhiệm vụ
- Nghiên cứu quá trình thực hiện mã hóa và giải mã của thuật toán trong hệ mã hóa
khóa công khai.
- Cài đặt thuật toán RSA.
- Xây dựng ứng dụng mã hóa và giả mã dữ liệu bằng thuật toán RSA trên java bằng
công cụ Eclipse.
3. Đối tượng và phạm vi
• Đối tượng
- Hệ mã RSA.
- Thuật toán RSA và ứng dụng chữ ký điện tử.
- Mã hóa và giải mã dữ liệu.
• Phạm vi
- Thuật toán RSA thực hiện tính toán với số nguyên vừa và nhỏ.
- Ứng dụng thuật toán phạm vi hẹp, đủ để có thể giao tiếp một cách trực diện chứ
không cần phải thông qua các file.
4. Bố cục
Mở đầu
1. Lý do chọn đề tài
2. Mục đích và nhiệm vụ
3. Đối tượng và phạm vi

Chương 1: CƠ SỞ LÝ THUYẾT
1. Lịch sử.
2. Tổng quan về mã hóa
3. Mật mã hóa khóa công khai
Chương 2: TỔNG QUAN VÀ HOẠT ĐỘNG
1. Mô tả sơ lược
2. Tạo khóa
3. Mã hóa
4. Giải mã
5. Các định lý cơ sở
6. Ví dụ
7. Tạo chữ ký số
8. Các giải thuật có sử dụng
Chương 3: PHÁT BIỂU BÀI TOÁN
1. Phát biểu bài toán
2. Trình bày thuật toán
Chương 4: KẾT QUẢ VÀ ỨNG DỤNG
1. Kết quả
2. Ứng dụng
KẾT LUẬN
PHỤ LỤC
CHƯƠNG 1 CƠ SỞ LÝ THUYẾT
1. Lịch sử phát triển
Trong mật mã học, RSA 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. Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên tại Học
Viện Công Nghệ Massachusetts (MIT) vào năm 1977. Tên của thuật toán được lấy từ 3 chữ cái đầu
tiên của tên 3 tác giả.
Trước đó, vào năm 1973, Clifford Cocks một nhà toán học người Anh làm việc tại GCHQ, đã mô tả
một thuật toán tương tự. Với khả năng tính toán tại thời điểm đó thì thuật toán này không khả thi và
chưa bao giờ được thực nghiệm. Tuy nhiên, phát minh này chỉ được công bố vào năm 1997 vì được

xếp vào loại tuyệt mật.
Thuật toán RSA được MIT đăng ký bằng sáng chế vào năm 1983 tại Hoa Kỳ (Số đăng ký
4.405.829). Bằng sáng chế này hết hạn vào ngày 21/09/2000. Tuy nhiên, do thuật toán đã được công
bố trước khi có đăng ký bảo hộ nên sự bảo hộ hầu như không có giá trị bên ngoài Hoa Kỳ. Ngoài ra,
nếu như công trình của Clifford Cocks đã được công bố trước đó thì bằng sáng chế RSA đã không
thể được đăng ký.
2. Tổng quan về mã hóa
Trong mật mã học, một ngành toán học ứng dụng cho công nghệ thông tin, mã hóa là phương pháp
để biến thông tin (phim ảnh, văn bản, hình ảnh ) từ định dạng bình thường sang dạng thông tin
không thể hiểu được nếu không có phương tiện giải mã.
Giải mã là phương pháp để đưa từ dạng thông tin đã được mã hóa về dạng thông tin ban đầu, quá
trình ngược của mã hóa.
Một hệ thống mã hóa bao gồm các thành phần:
- Thông tin trước khi mã hóa, kí hiệu là P
- Thông tin sau khi mã hóa, kí hiệu là C
- Chìa khóa, kí hiệu là K
- Phương pháp mã hóa/giải mã, kí hiệu là E/D.
Quá trình mã hóa được tiến hành bằng cách áp dụng hàm toán học E lên thông tin P, vốn được biểu
diễn dưới dạng số, để trở thành thông tin đã mã hóa C.
Quá trình giải mã được tiến hành ngược lại: áp dụng hàm D lên thông tin C để được thông tin đã
giải mã P.
3. Mật mã hóa khóa công khai
Mật mã hóa khóa công khai là một dạng mật mã hóa cho phép người sử dụng trao đổi các thông tin
mật mà không cần phải trao đổi các khóa chung bí mật trước đó. Điều này được thực hiện bằng cách
sử dụng một cặp khóa có quan hệ toán học với nhau là khóa công khai và khóa cá nhân (hay khóa bí
mật).
Thuật ngữ mật mã hóa khóa bất đối xứng thường được dùng đồng nghĩa với mật mã hóa khóa công
khai mặc dù hai khái niệm không hoàn toàn tương đương. Có những thuật toán mật mã khóa bất đối
xứng không có tính chất khóa công khai và bí mật như đề cập ở trên mà cả hai khóa (cho mã hóa và
giải mã) đều cần phải giữ bí mật.

Trong mật mã hóa khóa công khai, khóa cá nhân phải được giữ bí mật trong khi khóa công khai
được phổ biến công khai. Trong 2 khóa, một dùng để mã hóa và khóa còn lại dùng để giải mã. Điều
quan trọng đối với hệ thống là không thể tìm ra khóa bí mật nếu chỉ biết khóa công khai.
Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích:
Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã được.
Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được tạo với một khóa bí mật nào đó hay
không.
Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật giữa 2 bên.
Thông thường, các kỹ thuật mật mã hóa khóa công khai đòi hỏi khối lượng tính toán nhiều hơn các
kỹ thuật mã hóa khóa đối xứng nhưng những lợi điểm mà chúng mang lại khiến cho chúng được áp
dụng trong nhiều ứng dụng.
• Các ứng dụng:
- Ứng dụng rõ ràng nhất của mật mã hóa khóa công khai là bảo mật: một văn bản được mã
hóa bằng khóa công khai của một người sử dụng thì chỉ có thể giải mã với khóa bí mật của
người đó.
- Các thuật toán tạo chữ ký số khóa công khai có thể dùng để nhận thực. Một người sử dụng
có thể mã hóa văn bản với khóa bí mật của mình. Nếu một người khác có thể giải mã với
khóa công khai của người gửi thì có thể tin rằng văn bản thực sự xuất phát từ người gắn
với khóa công khai đó.
- Các đặc điểm trên còn có ích cho nhiều ứng dụng khác như: tiền điện tử, thỏa thuận
khóa
CHƯƠNG 2 TỔNG QUAN VÀ HOẠT ĐỘNG
1. Mô tả sơ lược
- Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa bí mật (hay khóa
cá nhân). Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã. Khóa
công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa. Những thông tin
được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng. Nói
cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới
có thể giải mã được.
- Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau: Bob muốn gửi cho

Alice một thông tin mật mà Bob muốn duy nhất Alice có thể đọc được. Để làm được điều
này, Alice gửi cho Bob một chiếc hộp có khóa đã mở sẵn và giữ lại chìa khóa. Bob nhận
chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khóa lại (như loại khoá thông
thường chỉ cần sập chốt lại, sau khi sập chốt khóa ngay cả Bob cũng không thể mở lại được-
không đọc lại hay sửa thông tin trong thư được nữa). Sau đó Bob gửi chiếc hộp lại cho Alice.
Alice mở hộp với chìa khóa của mình và đọc thông tin trong thư. Trong ví dụ này, chiếc hộp
với khóa mở đóng vai trò khóa công khai, chiếc chìa khóa chính là khóa bí mật.
2. Tạo khóa
- Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh không an toàn (ví dụ
như Internet). Với thuật toán RSA, Alice đầu tiên cần tạo ra cho mình cặp khóa gồm khóa
công khai và khóa bí mật theo các bước sau:
B1. Chọn 2 số nguyên tố lớn p và q với , lựa chọn ngẫu nhiên và độc lập.
B2. Tính: .
B3. Tính: giá trị hàm số Ơle = (p-1)*(q-1).
B4. Chọn một số tự nhiên e sao cho 1 < e < ∅(n), và là số nguyên tố cùng nhau với ∅(n).
B5. Tính: d sao cho d*e ∅(n)).
- Một số lưu ý:
Các số nguyên tố thường được chọn bằng phương pháp thử xác suất.
Các bước 4 và 5 có thể được thực hiện bằng giải thuật Euclid mở rộng (xem thêm: số học
môđun).
- Khóa công khai bao gồm:
n, môđun, và
e, số mũ công khai (cũng gọi là số mũ mã hóa).
- Khóa bí mật bao gồm:
n, môđun, xuất hiện cả trong khóa công khai và khóa bí mật, và
d, số mũ bí mật (cũng gọi là số mũ giải mã).
- Một dạng khác của khóa bí mật bao gồm:
p and q, hai số nguyên tố chọn ban đầu.
d mod (p-1) và d mod (q-1) (thường được gọi là dmp1 và dmq1).
(1/q) mod p (thường được gọi là iqmp).

- Dạng này cho phép thực hiện giải mã và ký nhanh hơn với việc sử dụng định lý số dư Trung
Quốc (tiếng Anh: Chinese Remainder Theorem - CRT). Ở dạng này, tất cả thành phần của
khóa bí mật phải được giữ bí mật.
- Alice gửi khóa công khai cho Bob, và giữ bí mật khóa cá nhân của mình. Ở đây, p và q giữ
vai trò rất quan trọng. Chúng là các phân tố của n và cho phép tính d khi biết e. Nếu không sử
dụng dạng sau của khóa bí mật (dạng CRT) thì p và q sẽ được xóa ngay sau khi thực hiện
xong quá trình tạo khóa.
3. Mã hóa
- Giả sử Bob muốn gửi đoạn thông tin M cho Alice. Đầu tiên Bob chuyển M thành một số m <
n theo một hàm có thể đảo ngược (từ m có thể xác định lại M) được thỏa thuận trước.
- Lúc này Bob có m và biết n cũng như e do Alice gửi. Bob sẽ tính c là bản mã hóa của m theo
công thức:
- Hàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ (theo môđun) bằng (thuật
toán bình phương và nhân) Cuối cùng Bob gửi c cho Alice.
4. Giải mã
- Alice nhận c từ Bob và biết khóa bí mật d. Alice có thể tìm được m từ c theo công thức sau:
- Biết m, Alice tìm lại M theo phương pháp đã thỏa thuận trước. Quá trình giải mã hoạt động vì
ta có
.
Do e*d ≡ 1 (mod p-1) và e*d ≡ 1 (mod q-1), (Theo Định lý Fermat nhỏ) nên:

Do p và q là hai số nguyên tố cùng nhau, áp dụng định lý số dư Trung Quốc, ta có:
hay: .
5. Các định lý cơ sở
5.1 Định lý nhỏ của Fermat
- Định lý nhỏ của Fermat (hay định lý Fermat nhỏ - phân biệt với định lý Fermat lớn) khẳng
định rằng nếu p là một số nguyên tố, thì với số nguyên a bất kỳ, a
p
– a sẽ chia hết cho p.
Nghĩa là:

- Một cách phát biểu khác của định lý như sau: nếu p là số nguyên tố và a là số nguyên nguyên
tố cùng nhau với p, thì a
p-1
- 1 sẽ chia hết cho p. Bằng ký hiệu đồng dư ta có:
- Cũng có một cách phát biểu khác là: Nếu p là một số nguyên tố và a là số nguyên không chia
hết cho p, thì a lũy thừa bậc p-1 có số dư bằng 1 khi chia cho p.
- Định lý Fermat nhỏ là cơ sở để kiểm tra tính nguyên tố theo xác suất.
5.2 Định lý số dư Trung Quốc
- Bản chất của bài toán Hàn Tín điểm binh là việc giải hệ phương trình đồng dư bậc nhất

Trong đó đôi một nguyên tố cùng nhau. Trong bài toán Hàn Tín
và .
- Định lý:
Hệ phương trình đồng dư nói trên có nghiệm duy nhất theo mođun

trong đó
, ,
,
Trong đó
là nghịch đảo theo modulo của với

- Áp dụng trong trường hợp đặc biệt:
Cho p va q là 2 số nguyên tố cùng nhau.
Nếu a = b mod p
Và a = b mod q
Thì a = b mod (pq).
6. Ví dụ
- Ở đây chúng ta sử dụng những số nhỏ để tiện tính toán còn trong thực tế phải dùng các số có
giá trị đủ lớn.
Lấy:

p = 61 — số nguyên tố thứ nhất (giữ bí mật hoặc hủy sau khi tạo khóa)
q = 53 — số nguyên tố thứ hai (giữ bí mật hoặc hủy sau khi tạo khóa)
n = pq = 3233 — môđun (công bố công khai)
e = 17 — số mũ công khai
d = 2753 — số mũ bí mật
Khóa công khai là cặp (e, n). Khóa bí mật là d. Hàm mã hóa là:
encrypt(m) = mod n = mod 3233
với m là văn bản rõ. Hàm giải mã là:
decrypt(c) = = mod 3233
với c là văn bản mã.
- Để mã hóa văn bản có giá trị 123, ta thực hiện phép tính:
encrypt(123) = mod 3233 = 855
Để giải mã văn bản có giá trị 855, ta thực hiện phép tính:
decrypt(855) = mod 3233 = 123
Cả hai phép tính trên đều có thể được thực hiện hiệu quả nhờ thuật toán bình phương và
nhân.
7. Ứng dụng chữ ký số
- Thuật toán RSA còn được dùng để tạo chữ ký số cho văn bản. Giả sử Alice muốn gửi cho
Bob một văn bản có chữ ký của mình. Để làm việc này, Alice tạo ra một giá trị băm (hash
value) của văn bản cần ký và tính giá trị mũ d mod n của nó (giống như khi Alice thực hiện
giải mã). Giá trị cuối cùng chính là chữ ký điện tử của văn bản đang xét. Khi Bob nhận được
văn bản cùng với chữ ký điện tử, anh ta tính giá trị mũ e mod n của chữ ký đồng thời với việc
tính giá trị băm của văn bản. Nếu 2 giá trị này như nhau thì Bob biết rằng người tạo ra chữ ký
biết khóa bí mật của Alice và văn bản đã không bị thay đổi sau khi ký.
8. Các giải thuật có sử dụng
8.1 Giải thuật Euclid mở rộng
- Giải thuật Euclid mở rộng sử dụng để giải phương trình vô định nguyên (còn được gọi
là phương trình Đi-ô-phăng)
a*x+b*y=c,
trong đó a, b, c là các hệ số nguyên, x, y là các ẩn nhận giá trị nguyên. Điều kiện cần và đủ để

phương trình này có nghiệm (nguyên) là UCLN(a, b) là ước của c. Khẳng định này dựa trên
một mệnh đề sau:
Trong số học đã biết rằng nếu d=UCLN(a, b) thì tồn tại các số nguyên x, y sao cho
a'*x+b*y = d
- Giải thuật Eclid mở rộng kết hợp quá trình tìm ƯCLN(a, b) trong thuật toán Eclid với việc
tìm một cặp số x, y thoả mãn phương trình Đi-ô-phăng. Giả sử cho hai số tự nhiên a, b, ngoài
ra a>b>0. Đặt , chia cho được số dư và thương số nguyên .
Nếu thì dừng, nếu khác không, chia cho được số dư , Vì dãy các là
giảm thực sự nên sau hữu hạn bước ta được số dư .
;
;
;
trong đó số dư cuối cùng khác 0 là . Bài toán đặt ra là tìm x, y sao cho
Để làm điều này, ta tìm x, y theo công thức truy hồi, nghĩa là sẽ tìm
và sao cho:
với .
Ta có
và , nghĩa là
và . (1)
Tổng quát, giả sử có
với .
với .
Khi đó từ
suy ra
từ đó, có thể chọn
(2)
(3)
Khi ta có được và . Các công thức (1), (2), (3) là công thức truy hồi
để tính x, y.
8.2 Thuật toán bình phương và nhân

- Thuật toán bình phương và nhân là thuật toán tính nhanh lũy thừa tự nhiên của một số
(thực hoặc nguyên), trong trường hợp cơ số là số nguyên có thể được rút gọn theo
một môđun nào đó.
Phép nâng lên lũy thừa tự nhiên bậc n của số x (x được gọi là cơ số) được định nghĩa từ hệ
thức
Với n lớn số phép nhân là rất lớn.
- Code thuật toán
int binhphuong(int m, int e, int n)
{
int []a = new int[100];
int k = 0;
do
{
a[k] = e % 2;
k++;
e = e / 2;
}
while (e != 0);
int kq = 1;
for (int i = k - 1; i >= 0; i )
{
kq = (kq * kq) % n;
if (a[i] == 1)
kq = (kq * m) % n;
}
return kq;
}
CHƯƠNG 3 PHÁT BIỂU VẤN ĐỀ
1. Phát biểu bài toán
- Một cá nhân (hoặc tổ chức) muốn gửi một thông tin mật cho một cá nhân (hoặc tổ chức) khác

mà họ muốn chỉ có cá nhân (hoặc tổ chức) có thể đọc được. Để làm được điều này cá nhân
(hoặc tổ chức) nhận văn bản mật sẽ gửi cho cá nhân (hoặc tổ chưc) gửi văn bản một cái
public key (khóa công khai) mà cá nhân (hoặc tổ chức) đó đã tiến hành tính toán từ trước. Cá
nhân (hoặc tổ chức) đó sẽ tiến hành mã hóa văn bản mật đó bằng public key mà cá nhân
(hoặc tổ chức) kia gửi tới. Sau khi mã hóa xong thì văn bản sẽ không thể nào đọc được, rồi
tiến hành ký vào văn bản đó và gửi văn bản đã mã hóa cùng với chữ ký đó cho cá nhân (hoặc
tổ chức) nhận văn bản.
- Cá nhân (hoặc tổ chức) nhận văn bản sẽ tiến hành giải mã văn bản đã mã hóa. Sau khi giải
mã, văn bản sẽ đọc được bình thường, sau đó sẽ tiến hành đối chiếu với chữ ký mà bên gửi
đã gửi qua xem có thay đổi hay sai sót gì trong quá trình truyền dữ liệu hay không.
2. Trình bày thuật toán
- Đầu tiên, cá nhân (hoặc tổ chức) nhận văn bản sẽ tiến hành khởi tạo 2 số nguyên tố p và q.
- Tiếp theo họ sẽ tiến hành tính toán các key và lưu lại để gửi cho bên gửi tài liệu.
- Số nguyên tố p và q được khởi tạo ngẫu nhiên trong 100 số tự nhiên đầu tiên.
- Public key gồm e và n với n = p*q và e được tạo ngẫu nhiên từ trong 10000 số tự nhiên
đầu tiên sao cho e>0 và e<o=(p-1)*(q-1) và UCLN(e,o)==1(nghĩa là e và o là 2 số
nguyên tố cùng nhau).
- Secret key gồm d và n với n = p*q và d được tính theo giải thuật euclid mở rộng.
- Đối với cá nhân(hoặc tổ chức) muốn gửi tài liệu, họ sẽ tiến hành mã hóa tài liệu với
public key mà bên nhận đã đưa cho, cùng với đó họ sẽ tiến hành ký văn bản của mình theo
các bước:
B1. Tải văn bản muốn mã hóa lên
B2. Tải public key vừa nhận được lên
B3. Tiến hành mã hóa đồng thời với ký
B4. Tiến hành lưu văn bản sau mã hóa và chữ ký lại
- Sau khi lưu lại ta sẽ có văn bản đã được mã hóa, chẳng hạn:
- Các bước mã hóa dữ liệu được thực hiện như sau
B1. Chuyển đổi văn bản chứa trong TextArea đầu tiên thành chuỗi ký tự rồi chuyển tiếp
các ký tự này về dạng mã ACCII.

B2. Sau đó ta dùng giải thuật bình phương và nhân để tiến hành tính k = với e và n
đã cho, m chính là giá trị trong bảng mã ACII của ký tự trong chuỗi.
B3. Chuyển k thành chuỗi ký tự kèm công thức cố định c[i] = k+32.
B4. Xuất chuỗi lên TextArea thứ 2. Riêng đối với chữ ký số ta sẽ lấy bảng băm của chuỗi
ký tự, trong eclipse dùng hàm hashcode.
- Đối với cá nhân(hoặc tổ chức) nhận tài liệu, họ sẽ tiến hành giải mã văn bản đã mã hóa
bằng secret key mà họ đã khởi tạo cùng với public key ban đầu theo các bước sau:
B1. Tải văn bản đã mã hóa lên
B2. Tải secret key lên
B3. Tiến hành giải mã
B4. Lưu văn bản sau khi giải mã

×