Tải bản đầy đủ (.pdf) (78 trang)

luận văn công nghệ thông tin giải thuật mã hóa mật mã rsa

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 (1.45 MB, 78 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC DÂN LẬP KỸ THUẬT CÔNG NGHỆ



LUẬN VĂN TỐT NGHIỆP


ĐỀ TÀI:
GIẢI THUẬT MÃ HOÁ MẬT MÃ RSA








GVHD: LÊ MẠNH HẢI
SVTH: LÊ PHƯỚC HOÀI CHINH
PHẠM THỊ THU TRANG
MSVS: 98
TH
029 – 98
TH
271
KHÓA 98






TP. HỒ CHÍ MINH
2003


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC DÂN LẬP KỸ THUẬT CÔNG NGHỆ



LUẬN VĂN TỐT NGHIỆP


ĐỀ TÀI:
GIẢI THUẬT MÃ HOÁ MẬT MÃ RSA








GVHD: LÊ MẠNH HẢI
SVTH: LÊ PHƯỚC HOÀI CHINH
PHẠM THỊ THU TRANG
MSVS: 98
TH
029 – 98
TH

271
KHÓA 98





TP. HỒ CHÍ MINH
2003




NHẬN XÉT CỦA GIÁO VIÊN HƯỚN DẪN
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………

…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………

TP.Hồ Chí Minh, ngày tháng năm 2003
Giáo viên hướng dẫn.



Lê Mạnh Hải



NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
…………………………………………………………………………………………

…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………

…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………


TP.Hồ Chí Minh, ngày tháng năm 2003
Giáo viên phản biện.


Lời cảm ơn

Lời đầu tiên, chúng em xin chân thành cảm ơn thầy Lê Mạnh Hải,
thầy đã hết lòng truyền đạt kiến thức,kinh nghiệm, giúp chúng em hoàn
thành luận văn này.
Cũng xin bày tỏ lòng biết ơn đối với các thầy cô đã tận tình truyền đạt
kiến thức trong những năm học vừa qua.
Xin gửi lời tri ân đến trường Đại học Dân lập Kỹ Thuật Công Nghệ
đã đào tạo biết bao thế hệ sinh viên trở thành người hữu ích.


Những người thực hiện
.


Giải thuật mã hoá mật mã RSA


- 1 -


Chương I:
Tổng quan

A. Mở đầu

I. Bảo mật :

Bảo mật thông tin đã sử dụng trong lịch sử thời đại La Mã trong việc
trao đổi thông tin và nhà quân sự chiến lược tài ba Cesar đã sử dụng nhằm bảo
vệ thông tin, không muốn kẻ địch biết được mục đích của mình và ông đã mã
hóa các thông báo của mình và chỉ những người trong nhóm của ông mới biết
được quy tắc mã hóa và giải mã thông báo đó mà người khác không thể nào
biết được. Ngày nay, nhu cầu bảo mật các thông tin về kinh tế, quân sự, ngoại
giao càng tăng thì việc bảo vệ thông tin càng được nâng cao. Các kênh truyền
thông của những buổi ban đầu còn đơn giản, nó ít được nhiều người quan tâm,
và nó được truyền đi bởi “những người đưa tin” được tin cậy tốt, thì ngày nay
để tránh những rủi ro có thể xảy ra và sự linh hoạt trong việc truyền đi những
thông báo được an toàn hơn ngành mã hóa mật mã được ứng dụng rộng rãi.
Thế kỷ 20, thế kỷ của thời đại thông tin, đã có rất nhiều thay đổi, con
người liên hệ trao đổi thông tin với nhau thông qua mạng toàn cầu Internet, và
chính việc tham gia này đã làm thay đổi rất nhiều trong vấn đề bảo mật. Về dữ
liệu, chúng ta cần quan tâm đến những yếu tố sau: tính bảo mật, tính toàn vẹn
và tính kịp thời. Các hệ thống máy tính bảo mật được phân chia theo thời gian
và các mạng máy tính có quan hệ chặt chẽ với việc bảo mật các kênh truyền
thông với nhau. Đặc tính của kênh truyền là môi trường truyền thông truy xuất
chung nên việc bảo mật về mặt vật lý được đề cập, do đó phải thông qua ứng
dụng của ngành bảo mật. Nhiệm vụ chính của bảo mật là mã hoá. Ơ đây việc
mã hóa được quan tâm ở mức độ là chuyển đổi dữ liệu thành mật mã.
Cho đến cuối những năm 70 số học vẫn được xem như là một trong

những ngành lý thuyết thuần tuý nhất của toán học. Quan niệm đó thay đổi khi
nó được áp dụng để xây dựng những hệ mật mã khóa công khai. Các lý thuyết
mới của số học thuật toán được ứng dụng vào thực tiễn. Mật mã không chỉ
dùng trong bí mật quân sự, như thời kỳ của nhà quân sự thiên tài Cesar đã áp
dụng, mà còn dùng trong ngoại giao, kinh tế và thương mại. Mật mã hiện đại
có những đòi hỏi mới mang tính nguyên tắc hơn so với mật mã thường dùng
trước đây. Khác với hoạt động quân sự hoặc ngoại giao, trong kinh doanh thì số
lượng các đơn vị phải cùng trao đổi những thông tin mật rất lớn. Những hệ
thống mật mã cũ khi biết được khoá lập mã của họ ta dễ dàng tìm ra khoá giải
mã. Hiển nhiên muốn gửi một thông báo mật cho một đối tượng nào đó ta cần
phải biết khóa lập mã của họ, vì vậy những người cùng một hệ mã đều biết bí
mật của nhau. Nhiều người cùng sử dụng một hệ mã thì không còn là bí mật
nữa. Các hệ thống mật mã hiện đại tức là các hệ mật mã khóa công khai đã
khắc phục được những nhược điểm đó: người tham gia trong hệ thống chỉ cần
giữ bí mật khóa giải mã riêng của mình trong khi khóa lập mã được thông báo
công khai. Việc biết khóa lập mã không cho phép tìm ra khóa giải mã trong
Giải thuật mã hoá mật mã RSA


- 2 -
một thời gian chấp nhận được, ngay cả khi sử dụng cả máy tính hiện đại với
hàng tỉ phép tính trong một giây.

II. Nhiệm vụ:

Nhiệm vụ của đề tài này là nghiên cứu về giải thuật mã hoá mật mã
RSA , xây dựng một chương trình dùng giải thuật RSA để mã hoá và giải mã
một tập tin.txt. Chương trình này chỉ giới hạn sử dụng trên máy đơn.

III. Bố cục:


Chương 1 : Tổng quan.
Chương 2 : Tìm hiểu về RSA.
Chương 3 : Giao diện của chương trình.
Chương 4 : Kết luận.

















B. Tìm hiểu mật mã.

1. Mật mã:

Mật mã là nghệ thuật của chữ viết bí mật được xuất phát từ chữ viết của
các từ Hy Lạp. Cái chính là mật mã có khả năng gửi thông tin giữa hai người
với nhau và ngăn chặn những người khác can thiệp vào. Mật mã được dùng để
bảo vệ bí mật thông tin khi thông tin được truyền đi.

Một văn bản được mã hóa được biểu thị bằng M hay là P. Nó có thể là
một chuỗi các bít, một tập tin văn bản, một ảnh, một chuỗi số hóa âm thanh,
một hình ảnh phim kỹ thuật số… và hơn thế nữa. Trong chừng mực của một
máy tính có liên quan đến, M là dữ liệu nhị phân đơn giản. Văn bản được mã
Giải thuật mã hoá mật mã RSA


- 3 -
hóa có mục đích là truyền đi hay lưu trữ. Trong tình huống này, M là thông báo
phải được mã hóa.
Văn bản đã được mã hóa được biểu thị bằng C. Nó cũng là dữ liệu nhị
phân: đôi khi cùng kích thước với M, và cũng có lúc lớn hơn rất nhiều. E được
biểu thị cho công việc mã hóa và D dùng để thể hiện việc giải mã các thông
báo đã được mã hóa gửi đến.
Ta có:
E (M) = C
D (C) = M
D (E(M)) =M

Mật mã hiện đại giải quyết vấn đề với một khóa, khóa này được biểu thị
bằng K. Khóa này có thể là một trong những con số lớn có giá trị lớn.
Ta có:
E
K
(M) = C
D
K
(C) = M
D
K

(E
K
(M)) = M

- Quá trình mã hóa và giải mã dùng chung một khóa:






- Quá trình mã hóa và giải mã sử dụng hai khóa khác nhau:



Ví dụ, một người muốn mã hóa những tập tin trên ổ cứng để ngăn chặn
những kẻ xâm nhập vào có thể đọc được dữ liệu. Trong một hệ thống nhiều
người sử dụng, việc mã hóa dữ liệu cho phép bảo mật thông tin trên một kênh
truyền không an toàn. Trong một ngữ cảnh thông thường: Lan muốn gửi một
thông báo cho Nam nhưng không muốn một ai khác ngoài Nam có thể đọc
được nó. Lan mã hóa dữ liệu với một khóa mã hóa, thông báo đã mã hóa đã mã
hóa gửi đi cho Nam. Nam giải mã thông báo đã mã hóa đó với một khóa giải
mã và đọc được nó. Một người cố lấy cho bằng được khóa giải mã hoặc cố tình
chuyển lại tình trạng cũ mà không cần phải có khóa bảo mật. Trong một hệ
thống mã hóa an toàn, thông tin đã mã hóa không thể chuyển đổi lại thành
Giải thuật mã hoá mật mã RSA


- 4 -
thông tin ban đầu mà không có khóa giải mã. Hệ thống mật mã đối xứng chỉ có

một khóa duy nhất vừa là khóa mã hóa vừa là khóa giải mã.

2. Giao thức mật mã

a. Giới thiệu về giao thức:

Mật mã giải quyết những vấn đề bao gồm tính bảo mật, tính xác thực,
tính toàn vẹn. Bạn có thể học tất cả về thuật toán và kỹ thuật mã hóa, nhưng đó
là những lý thuyết suông nếu bạn không thể giải quyết vấn đề. Đó lý do chúng
ta quan tâm đến các giao thức số nguyên tố.
Một giao thức là một chuỗi các bước bao gồm hai hay nhiều phần được
thiết kế để thực hiện một tác vụ. Một “chuỗi các bước “có nghĩa là giao thức có
tính liên tục, từ lúc bắt đầu đến lúc kết thúc. Mỗi bước phải được thực thi lần
lượt và bước sau không thể thực thi khi bước trước chưa thực thi xong.
Giao thức mật mã là một giao thức sử dụng mật mã. Giao thức mật mã
bao gồm vài giải thuật mật mã nhưng nhìn chung mục đích của giao thức đơn
giản chỉ là bảo mật.

Bây giờ chúng ta hãy xem xét đến một giao thức được ứng dụng trong
mạng máy tính ARPA để xây dựng một kênh truyền dẫn ảo được bảo mật.
Chúng ta chọn lớp mạng của mô hình tham chiếu mạng hệ mở bảy tầng (OSI).



Hình 1. Mô hình tham chiếu mạng hệ mở.

Sơ đồ tổng quát cho việc trao đổi thông tin của giao thức này được mô tả theo
hình ở sau.

Giải thuật mã hoá mật mã RSA



- 5 -


Hình 2: Chuyển đổi thông tin giữa hai người sử dụng là A và B.

Người sử dụng chương trình A dùng chương trình mã hoá, thông qua hệ
điều hành đến mạng truyền thông. Thông qua giao diện này, chương trình qua
hệ điều hành của người sử dụng chương trình B và người B sử dụng chương
trình mã hoá để cho ra thông điệp mà người A gửi đến.

b. Truyền thông sử dụng giao thức mã hóa đối xứng.

Mã đối xứng là hệ mật mã sử dụng cùng một khóa cho cả việc mã hoá
cũng như giải mã một thông điệp.
Những hệ thống mã hoá đối xứng có những vấn đề cho phép sau:
 Khóa phải được phân bổ một cách bí mật. Chúng có giá trị cho tất cả
các thông điệp được mã hoá, biết khóa có thể biết hết tất cả các thông điệp.
 Nếu khóa bị lấy cắp thì người thứ ba có thể giải mã được các thông điệp
đã được mã hóa với một khóa. Người này có thể nguỵ tạo một phần và tạo ra
những thông điệp bị lỗi để lừa những người khác.
 Một khóa bí mật được sử dụng cho một cặp người tham gia trên một
mạng, tổng số những con số các khóa tăng một cách nhanh chóng khi số lượng
người sử dụng tăng lên. Một mạng của n người sử dụng yêu cầu n(n-1)/2 khóa.
Ví dụ, với 10 người sử dụng yêu cầu 45 khóa khác nhau để nói chuyện với
người khác và 100 người sử dụng cần 4950 khóa.
Giải thuật đối xứng giống như một két sắt. Khoá là chìa khoá duy nhất
để mở két sắt đó. Một người với một sự phối hợp có thể mở két sắt và đưa dữ
Giải thuật mã hoá mật mã RSA



- 6 -
liệu ra ngoài. Nếu có khoá này, bạn có thể mở két sắt để đưa dữ liệu vào và
khoá két lại.

c. Hàm một chiều.

Hàm một chiều là hàm trọng tâm trong hệ mật mã dùng khóa công khai.
Hàm một chiều là một hàm cơ bản cho hầu hết những giao thức.
Hàm cửa bẫy một chiều là hàm một chiều đặc biệt, đó là một cửa bẫy bí mật.
Hàm này dễ dàng tính toán theo một hướng nhất định và rất khó khăn khi tính
toán theo một hướng khác. Nhưng nếu bạn biết bí mật thì bạn có thể tính toán
các hàm theo hướng khác đó.

d. Hàm ánh xạ.

Hàm ánh xạ có nhiều tên: hàm giảm, hàm thu gọn… Hàm này là trọng
tâm của mật mã hiện đại. Hàm ánh xạ là một hàm cơ bản cho nhiều giao thức.
Hàm ánh xạ được sử dụng trong ngành khoa học máy tính trong một thời gian
dài. Hàm ánh xạ làm việc theo một chiều, dễ dàng tính toán một giá trị băm từ
một hình ảnh trứơc đó.
Mã xác nhận thông tin (MAC), còn gọi là mã xác nhận dữ liệu, là một
hàm ánh xạ kèm theo một khóa bí mật. Bạn có thể tạo ra một MAC ngoài một
hàm ánh xạ hay một thuật giải mã hóa.

e. Truyền thông sử dụng nghi thức mã khóa công khai

Hệ mã khóa công khai hay còn gọi là hệ mã bất đối xứng.
Mã bất đối xứng là hệ mật mã sử dụng một cặp khóa trong đó một khóa

được công bố rộng rãi gọi là khoá công khai và một khóa được lưu giữ bí mật
gọi là khóa riêng. Cặp khóa này dùng để mã hoá cũng như giải mã dữ liệu,
trong đó khóa công khai sẽ dùng để mã hóa và khóa bí mật dùng để giải mã dữ
liệu đã được mã hóa.
Trong mạng có nhiều người sử dụng, hệ mã hoá khóa công khai mới là
giải pháp bảo mật tối ưu. Người sử dụng sở hữu một khóa công khai và một
khóa bí mật. Khóa công khai đó được phổ biến trong cơ sở dữ liệu ở một số
nơi.
Trên thực tế, giải thuật khóa công khai không phải là sự thay thế cho
giải thuật đối xứng. Chúng không được sử dụng để mã hóa thông tin, chúng
được sử dụng để mã hóa những khóa chẳng hạn như khoá DES.
Giải thuật khóa công khai thường chậm. Những giải thuật mã hóa đối
xứng nói chung nhanh hơn rất nhiều lần lần so với giải thuật mã hóa khóa công
khai. Với những máy tính có bộ xử lý cao và trong vòng những năm tới có thể
dùng giải thuật mật mã khóa công khai để mã hoá và giải mã dữ liệu với tốc độ
có thể so sánh với mật mã đối xứng ngày nay. Với băng thông tăng lên và đó là
điều cần thiết để mã hóa dữ liệu nhanh hơn mật mã khóa công khai có thể quản
lý.

Giải thuật mã hoá mật mã RSA


- 7 -
3. Các chế độ mật mã.

Giải thuật mật mã khối mã hoá dữ liệu theo những khối. Kích thước
khối thông dụng nhất là 8 byte. Mật mã khối bảo mật cao hơn mật mã dòng, tuy
nhiên những giải thuật mật mã khối thực thi chậm hơn những mật mã khác.
Những mật mã khối sử dụng cùng một giải thuật mã hoá cho mỗi khối.
Do đó, một khối văn bản thường trả về cùng một văn bản mật mã khi mã hoá

với cùng một khoá và một giải thuật.




 CBC ( Cipher Block Chaining mode): chế độ mắc xích những khối mã hóa.

Chế độ CBC giới thiệu về thông tin phản hồi. Trước khi mỗi khối văn
bản thường được mã hoá, nó kết hợp với văn bản mật mã của khối trước bằng
một thao tác OR đối với từng bít. Điều này đảm bảo rằng ngay cả khi có nhiều
khối văn bản thường giống nhau thì mỗi khối đó sẽ được mã hoá sang những
khối văn bản mật mã khác nhau. Khởi tạo được kết hợp với khối văn bản
thường số nguyên tố bằng thao tác OR cho từng bít trước khi khối được mã
hoá.
Nếu có một bít đơn của khối văn bản thường bị hư, khối văn bản thường
tương ứng cũng sẽ bị hư. Thêm vào đó, một bít trong khối theo sau, ở cùng một
vị trí như bít hư số nguyên tố sẽ bị hư.



Hình 3: Chế độ mắc xích những khối mã hóa.

Giải thuật mã hoá mật mã RSA


- 8 -
 CFB (Cipher Feedback mode ): chế độ phản hồi mật mã.

Chế độ CFB này sử dụng một thanh ghi dịch từng khối nhỏ trong văn
bản và được chia thành nhiều phần, không xử lý nguyên một khối lớn. Ví dụ,

nếu kích thước của khối là 8 byte, với 1 byte xử lý vào lúc đầu, thanh ghi dịch
được chia thành 8 phần và chế độ này xử lý 8 phần.
Nếu một bít trong văn bản mật bị hư thì một bít trong văn bản thường
cũng bị hư và thanh ghi dịch bị sai lạc. Điều này làm cho nhiều sự gia tăng của
văn bản thường bị hư cho đến khi bít hư bị dịch ra khỏi thanh ghi dịch.

 CTS (Cipher Text Stealing mode) chế độ sao chép nguyên văn mật mã.

Chế độ CTS sử dụng một chiều dài bất kỳ của văn bản thường và tạo ra
văn bản mật mã có chiều dài với chiều dài của văn bản tĩnh. Chế độ này thực
thi cũng giống như chế độ CBC nhưng khác với hai khối cuối cùng của văn
bản thường.

 ECB ( Electronic Codebook mode): chế độ các ký hiệu điện tử

Chế độ ECB mã hoá mỗi khối một cách riêng lẻ. Nghĩa là những khối
văn bản thường bất kỳ giống nhau và nằm trong cùng một thông báo hoặc nằm
trong một thông báo khác được mã hoá với cùng một khoá sẽ bị biến đổi thành
những khối văn bản mật mã giống nhau.



Hình 4: Quá trình di chuyển của các ký hiệu điện tử.


Giải thuật mã hoá mật mã RSA


- 9 -





Hình 5: Mô hình mã hóa bằng các ký hiệu điện tử.

Nếu văn bản thường được mã hoá bản sao quan trọng, nó sẽ làm cho văn
bản mật mã bị phá vỡ mỗi lúc một khối. Và kẻ địch có thể thay đổi hoặc trao
đổi những khối riêng mà không cần phải dò tìm.
Nếu 1 bít trong khối văn bản mật mã bị hư, toàn bộ khối văn bản tĩnh tương
ứng cũng sẽ bị hư.

 OFB ( Output Feedback mode): chế độ phản hồi đầu ra.

Chế độ OFB tương tự như chế độ CFB, sự khác biệt duy nhất giữa hai
chế độ này là cách mà thanh ghi dịch được đưa vào.
Nếu một bít trong văn bản mật mã bị hư, bít tương đương của văn bản
thường cũng sẽ bị hư. Tuy nhiên, nếu có thêm hoặc mất những bít từ văn bản
mật mã, văn bản thường chỉ bị hư từ vị trí đó.

Giải thuật mã hoá mật mã RSA


- 10 -

4. Một số giải thuật mật mã:

4.1. Một số khái niệm trong thuật toán số học:

4.1.1. Số nguyên tố :


a. Định nghĩa :
Số nguyên tố là số nguyên lớn hơn 1, không chia hết cho số nguyên
dương nào ngoài 1 và chính nó. Số nguyên lớn hơn một không phải là số
nguyên tố được gọi là hợp số.

b. Các tính chất:
- Mọi hợp số n đều có ước nguyên tố nhỏ hơn căn bậc 2 của n.
Thật vậy, vì n là một tập hợp số nên ta có thể viết n = a b, trong đó a và b là
các số nguyên với 1 < a ≤ b < n. Rõ ràng ta phải có a hoặc b không vượt quá
căn bậc hai của n.

- Mọi số nguyên lớn hơn một đều phân tích được một cách duy nhất
thành tích các số nguyên tố, trong đó các thừa số được viết với thứ tự không
giảm.

4.1.2. Phi hàm Euler :

a. Các định nghĩa:

- Phi – hàm Euler þ( n ) là hàm số học có giá trị tại n bằng số các số
không vượt quá n và nguyên tố cùng nhau với n.
Ví dụ :
þ( 1 ) = 1, þ( 2 ) = 1, þ( 3 ) = 2, þ( 4 ) = 2, þ( 5 ) = 4, …
Từ định nghĩa ta có hệ quả :
Số p là số nguyên tố khi và chỉ khi þ( p ) = p – 1.

- Hệ thặng dư thu gọn modulo n là tập hợp þ( n ) số nguyên sao cho mỗi
phần tử của tập hợp nguyên tố cùng nhau với n và không có hai phần tử nào
đồng dư với nhau modulo n.
Nói cách khác, trong hệ thặng dư đầy đủ modulo n, ta chỉ giữ lại những giá trị

nào nguyên tố cùng nhau với n.


Ví dụ :
Các số 1, 2, 3, 4, 5, 6 lập thành hệ thặng dư thu gọn modulo 7. Đối với
modulo, có thể lấy tập hợp 1, 3, 5, 7.


b. Các tính chất:
Giải thuật mã hoá mật mã RSA


- 11 -

- Nếu r
1,
r
2,
r
3
, …, r
þ(n)
là một hệ thặng dư thu gọn modulo n và a là số
nguyên dương, ( a, n ) = 1 thì tập hợp a r
1,
a r
2,
a r
þ(n)
cũng là hệ thặng dư thu

gọn modulo n.
- Nếu m là số nguyên dương và a nguyên tố cùng nhau với m thì
a
þ(m)
= 1 ( mod m ).
- Giả sử n = p
1
a
1
p
2
a
2
…p
k
a
k
là phân tích của n thành thừa số nguyên tố.
Khi đó ta có :
þ( n ) = n ( 1 – 1/ p
1
)( 1 – 1/p
2
) … ( n – 1/ p
k
)

4.1.3 Định lý Fermat:

Nếu p là số nguyên tố thì a

p-1


1 (mod p) với tất cả a

Z
p.

4.1.4. Định lý đệ quy ước số chung lớn nhất ( GCD):

Với bất kỳ một số nguyên không âm a và bất kỳ số nguyên dương b thì Gcd (a,
b)= gcd (b, a mod b)

4.2. Một số thuật giải sử dụng trong mã hoá.

Sự phát triển của xã hội ngày nay mật mã không chỉ dùng trong bí mật
quân sự như thời kỳ của nhà quân sự thiên tài Cesar đã áp dụng mà còn dùng
trong ngoại giao, kinh tế và thương mại. Người ta chia các hệ mã thành hai loại
chính là hệ mã cổ điển và hệ mã hiện đại. Với những hệ thống mật mã cũ khi
biết được khoá lập mã của họ ta dễ dàng tìm ra khoá giải mã, hiển nhiên muốn
gửi một thông báo mật cho một đối tượng nào đó ta cần phải biết khóa lập mã
của họ, vì vậy những người cùng một hệ mã đều biết bí mật của nhau dẫn đến
không còn là bí mật nữa. Các hệ thống mật mã hiện đại tức là mật mã khóa
công khai đã khắc phục được những nhược điểm đó: người tham gia trong hệ
thống chỉ cần giữ bí mật khóa giải mã riêng của mình trong khi khóa lập mã
được thông báo công khai. Việc biết khóa lập mã không cho phép tìm ra khóa
giải mã trong một thời gian chấp nhận được ngay cả khi sử dụng cả máy tính
hiện đại. Những mật mã khóa công khai số nguyên tố tìm thấy là những mật mã
dùng đến các hàm số học.


4.2.1. Mã Ceasar.

Mật mã Cesar là mật mã mà mỗi ký tự thứ i trong bảng chữ cái được
dịch tới ký tự thứ (i+j).
Ta có qui trình mật mã như sau :
Mã hóa : E : i ® i+j
Giải mã : D : i ® i-j
Mã Cesar chuyển các thông báo mật bằng cách sau đây:
Lập bảng tương ứng mỗi chữ cái một số. Nhờ bảng tương ứng đó ta có
thể chuyển một văn bản dạng chữ số.
Giải thuật mã hoá mật mã RSA


- 12 -
Sau đó ta cộng thêm k vào mỗi chữ số nhận được, lại nhờ vào bảng tương ứng
giữa chữ và số ta biến đổi bảng chữ số mới này thành dạng chữ viết. Ta đã
nhận được một văn bản mật cần chuyển đi. Đây chính là quá trình mã hóa.
Sau khi nhận được văn bản mật ta giải mã bằng cách chuyển các chữ
thành số nhờ vào bảng tương ứng chữ và số, sau đó ta trừ đi k ở mỗi chữ số và
lại chuyển nó về dạng chữ để có lại văn bản ban đầu. Quá trình trên là quá trình
giải mã.
Chú ý:
Khi phép cộng hoặc trừ đưa ta vượt qua khỏi giới hạn của bảng tương
ứng ta thay số đó bằng thặng dư dương bé nhất modulo số và chữ.

Ví dụ:

Ta lập bảng tương ứng các chữ cái theo bảng: ( Ở đây ta xét theo kiểu
chữ của Việt Nam nên xuất hiện các chữ có dấu, còn nếu khi ta chuyển mã trên
mạng thì ta sẽ đưa ra theo chuẩn của quốc tế.)


A Ă Â B C D Đ E Ê G
1 2 3 4 5 6 7 8 9 10
H I K L M N O Ô Ơ P
11 12 13 14 15 16 17 18 19 20
Q R S T U Ư V X Y
21 22 23 24 25 26 27 28 29

Số nguyên tố ta lập bảng tương ứng, từ đó ta chuyển văn bản sang dạng
chữ số. Sau đó ta cộng thêm 3 vào mỗi chữ số nhận được. Và thông qua bảng
tương ứng chữ và số ta lại đưa ra dạng chữ viết. Ta nhận được một văn bản mật
cần phải mã hóa. Đó là quá trình mã hóa. Khi nhận được văn bản mật ta giải
mã bằng cách biến nó thành dạng chữ số và dựa vào bảng tương ứng và sau đó
ta trừ đi 3.
Chẳng hạn văn bản cần gửi đi là: MOI BAN DI CHOI.
Ta sẽ chuyển câu trên sang dạng chữ số dựa vào bảng tương ứng bên
trên: 15 17 12 4 1 16 7 12 5 11 17 12 (1)
Ta lập theo công thức sau:
C

P + 3(mod 29) (*)
( P là văn bản, C là chữ số tương ứng trong văn bản mật )
Ta cộng thêm 3 vào (1):
18 20 15 7 4 19 10 15 8 14 20 15

Chuyển trở lại dạng chữ ta được văn bản như sau:
ÔPMĐBƠGMELPM
 văn bản mật được mã hóa.
Theo (*) thì 3 là khóa của Cesar
Công thức tổng quát là: C


P + k(mod 29) k là số tùy ý giữa 1-29.

Giải thuật mã hoá mật mã RSA


- 13 -
4.2.2. Mã khối.

Khác với hệ mã Cesar, ở đây không mã hóa từng chữ mà ta mã hóa các
khối chữ cái. Việc sử dụng mã khối đã nâng cao rất nhiều tính bảo mật nhưng
khóa của mã vẫn có thể bị dò ra do việc nghiên cứu tần số xuất hiện của các
khối chữ cái. Mã khối xuất hiện nhằm chống lại việc sử dụng tần suất của các
chữ cái trong văn bản để dò ra khóa giải mã.

Chuẩn mật mã mã hóa dữ liệu DES ( Data Encryption Standard)

Mã hoá dữ liệu chuẩn DES sử dụng cặp khóa đối xứng, mã hóa dữ liệu
theo từng khối.
Khóa đối xứng: Việc bảo mật trong một hệ thống mật mã có hai vấn đề
mà ta cần quan tâm. Đó là chiều dài của giải thuật và chiều dài khoá. Nhưng
nếu có được thì đối với ngưòi giải mã không còn cách nào khác tốt hơn để phá
vỡ hệ thống mật mã là thử lần lượt từng khoá bằng phương pháp tấn công “sức
mạnh tàn bạo”, đây là phương pháp giải quyết một bài toán khó bằng cách lặp
đi lặp lại nhiều lần một thủ tục đơn giản
Chuẩn này được đưa ra vào năm 1977, được sử dụng trong các ứng dụng
trên đất nước Mỹ, và chuẩn nâng cao hơn của chuẩn này là DAE. Một số chính
phủ của một số nước mong muốn được sử dụng chuẩn DEA này cho đất nước
mình vào các mạng ngân hàng và thương mại tầm cỡ quốc tế. Diffie và
Hellman đã dự đoán chuẩn DEA này sẽ bị tấn công bởi những tin tặc hay một

máy chuyên dụng với một triệu con chip trị giá khoảng 20 triệu dollar, và máy
có thể tìm ra mã mật mã bất kỳ bằng cách tìm hết không gian khóa trong một
ngày. Và với tốc độ ngày nay thì việc phát triển ngày càng cao của công nghệ
phần cứng thì việc tìm ra khóa không còn là vấn đề nữa.
DES mã hóa các khối dữ liệu 64 bít với khóa 56 bít.
Mã hoá dùng cặp khóa đối xứng theo từng khối.



Hình 6: Mã hóa dữ liệu với cặp khóa bảo mật đối xứng.

DES thực thi hiệu quả trong phần cứng nhưng trong phần mềm thì DES
thực thi không hiệu quả lắm. Mặc dù khó thực hiện những công việc thực thi
phần mềm, người ta vẫn khẳng định rằng DES được thiết kế chuyên biệt cho
công việc này có thể vì giới hạn việc sử dụng DES để các tổ chức có thể có đủ
những điều kiện dựa trên phần cứng hoặc cũng có thể DES dễ dàng điều khiển
tiếp can đến kỹ thuật. Những tiến bộ trong việc tạo ra các CPU làm cho nó có
Giải thuật mã hoá mật mã RSA


- 14 -
thể thực hiện DES trong phần mềm. Những tiến bộ trong việc tăng tốc độ chip
và việc các khóa DES bị phá huỷ bằng một bít thông minh và sự tra cứu toàn
diện. Hiện nay đã có DES với chiều dài khóa lên đến 128 bít để tăng thêm tính
bảo mật trong thời đại bùng nổ của công nghệ ngày càng nhanh.

4.2.3. Mã mũ.

Hệ mã này được Pohlig và Hellman đưa ra năm 1978.
Giả sử p là một số nguyên tố lẻ và khoá lập mã e là một số nguyên

dương sao cho (e, p-1)=1.
Sau đó ta nhóm thành từng nhóm 2m chữ số theo nguyên tắc sau: 2m là
số nguyên chẳn lớn nhất sao cho mọi số tương ứng với m chữ cái đều nhỏ hơn
p. Mỗi chữ được biểu diễn không quá 29. Một số có m chữ cái sẽ được biểu
diễn không quá m lần số 29 viết liên tiếp nhau. Lập khối chữ tương ứng trong
văn bản mật theo công thức sau:
C

P
e
(mod p), 0

P< p
Văn bản mật sẽ chứa những khối chữ số các số nguyên nhỏ hơn p. Để
giải mã một khối C trong văn bản mật ta cần biết khóa giải mã d. Đó là số d
thỏa mãn de=1(mod p -1) có nghĩa là nghịch đảo của e modulo p-1. Nghịch đảo
đó tồn tại do giả thuyết (e, p-1)=1. để tìm lại được khối P trong văn bản ta nâng
khối C lên luỹ thừa d modulo p.
Ta có: C
d


(P
e
)
d


P
de


P
k(p-1) +1

P(mod p)
Trong đó: de=k(p-1) +1 đối với số nguyên k nào đó.

a. Độ phức tạp của thuật toán lập mã và giải mã đối với mã mũ.

Với một khối P trong văn bản, mã hóa bằng cách tính P
e
(mod p), các
phép tính bít cần thiết là O((log
2
p)
3
). Ta tìm nghịch đảo d của e modulo p-1.
Sau đó ta tính thặng dư nguyên dương bé nhất của C
d
modulo p: số phép tính
đòi hỏi là O((log
2
p)
3
). Để giải mã một văn bản được mã hóa bằng mã mũ
không thể tính được nếu không biết khóa e.

b. Mã mũ và hệ thống có nhiều đối tượng tham gia.

Ưu điểm của hệ mã mũ là trong hệ thống có nhiều đối tượng tham gia

trao đổi thông tin từng cặp đối tượng hoặc từng nhóm có khả năng sử dụng
khóa mật mã đang dùng để tạo ra những khoá mật mã chung, bí mật với các đối
tượng còn lại. Giả sử p là một số nguyên tố lớn và a là số nguyên cùng nhau
với p. Mỗi đối tượng trong hệ thống chọn một số k nguyên tố cùng nhau với p-
1 để làm khóa cho mình. Khi hai đối tượng với các khóa k1, k2 muốn lập một
khóa chung để trao đổi thông tin đối tượng thứ nhất gửi cho đối tượng thứ hai
số nguyên tố ý theo công thức:

1
y


1
k
a
(mod p) 0<
1
y
< p

Đối tượng thứ hai sẽ tìm khóa chung k bằng cách
Giải thuật mã hoá mật mã RSA


- 15 -

k

2
1

k
y

21
kk
a
(mod p) 0 < k < p

Tương tự đối tượng thứ thể thứ hai gửi cho đối tượng thứ nhất số
nguyên
2
y
:

2
y


2k
a
(mod p) 0<
2
y
< p
và đối tượng thứ nhất tìm ra khóa chung k theo công thức:

k

2
2

k
y

21
kk
a
(mod p)

4.2.4. Mã khóa công khai.

Với các hệ mã trên thì khóa lập mã phải được giữ bí mật, nếu chẳng may
khóa này bị tìm ra thì việc giải mã sẽ không gặp khó khăn lắm. Một nguyên tắc
mới được đưa ra là cho dù biết được khóa lập mã nhưng chưa chắc đã tìm ra
khóa giải mã trong một thời gian có thể chấp nhận. Mỗi đối tượng giữ bí mật
khóa giải mã riêng của mình trong lúc đó khoá lập mã được thông báo công
khai. Và nếu một vài đối tượng trong hệ thống bị mất khóa giải mã thì các đối
tượng còn lại có thể không bị ảnh hưởng. Đó chính là hệ mã mũ, độ phức tạp
trong việc tìm logarit modulo p là quá lớn.
Trong một hệ thống có nhiều đối tượng tham gia trao đổi thông tin và
mỗi đối tượng chọn cho mình một khóa lập mã k và một công thức mã hóa
công khai E(k). Tất cả những đối tượng có khóa lập mã công khai từ k
1
, k
2
, …,
k
n
. Khi đối tượng thứ i muốn gửi một thông điệp cho đối tượng thứ j, mỗi chữ
được chuyển đổi thành số và được nhóm thành từng khối với độ dài nào đó.
Sau đó, mỗi khối P trong văn bản được mã hóa bằng khóa lập mã E(k

j
) của đối
tượng thứj và gửi đi dưới dạng C= E(k
j
)(P). Giải mã thông điệp này đối tượng
thứ j chỉ việc dùng khóa giải mã D
kj
:
D
kj
(C) = D
kj
E
kj
(P) =P
Vì D
kj
và E
kj
là khóa giải mã và khóa lập mã của cùng đối tượng thứ j.
Các đối tượng nếu nhận được văn bản mật cũng không thể nào giải mã được vì
cho dù biết khóa lập mã E
kj
thì không hẳn là tìm ra khóa giải mã D
kj
.

4.2.5. Sơ lược về RSA.

RSA là hệ thống bảo mật khóa công khai cho cả mã hóa và việc xác

nhận; được phát minh vào năm 1977 bởi Ron Rivest, Adia và Leonard
Adleman. Được xây dựng trên cơ sở mã mũ trong đó khóa là cặp (e, n), gồm
mũ e và modulo n. Số n là tích hai số nguyên tố lớn nhất nào đó, n=pq, sao cho
(e,

(n)) = 1, trong đó

(n) là hàm Euler.
Những kỹ thuật đặc trưng sử dụng những thao tác toán học thành một
văn bản mã. Những thao này gọi là chức năng một chiều, chức năng tương đối
Giải thuật mã hoá mật mã RSA


- 16 -
dễ thực hiện theo một hướng nhưng chuyển đổi theo hướng ngược lại thì khó
hơn nhiều.
Chế độ bảo mật của RSA dựa vào việc phân tích những số rất lớn ra
thừa số nguyên tố.



Bảng tóm tắt quá trình mã hoá RSA:

Khoá chung Khoá riêng Mã hoá Giải mã
n, tích hai số
nguyên tố p, q
e, nguyên tố
cùng nhau với
(p-1)(q-1)
c = m

e
mod (p-1)(q-1) m = c
d
mod n

Ơ đây, vì thời gian có hạn chúng tôi tập trung tìm hiểu về giải thuật mã hoá
RSA và ứng dụng của giải thuật này.

4.3. Một số vấn đề liên quan đến việc sử dụng khóa:

a. Văn bằng chứng nhận sử dụng khoá:

Giấy chứng nhận là những văn bằng kỹ thuật số được chứng thực để liên
kết một khóa công khai với một cá nhân hay những thực thể khác. Cho phép
kiểm tra những yêu cầu đưa ra khóa công khai trên thực tế đưa đến một cá
nhân. Văn bằng chứng nhận ngăn chặn người nào đó từ một khóa giả để thể
hiện dưới dạng người khác nữa.
Văn bằng chứng nhận chứa một khóa chung và một cái tên. Chúng chứa
hạn sử dụng của khóa, tên của nơi cấp văn bằng chứng nhận có liên quan đến
văn bằng đó, số sản xuất của chứng nhận, và những thông tin khác nữa. Hầu
hết các văn bằng này được xác định bởi chuẩn Quốc tế CCITT X.509; văn bằng
có thể đọc hay viết bằng nhiều ứng dụng tuân theo chuẩn X.509. Xa hơn nữa là
cải tíên đã được tìm thấy trong chuẩn PKCS và chuẩn PEM. Chi tiết về định
dạng của văn bằng cũng được tìm thấy trong KEN.
Một văn bằng được ban hành bởi một nhà cung cấp bản quyền và được ký với
khóa bảo mật của nhà cung cấp này.

b. Văn bằng được sử dụng như thế nào?

Một văn bằng cốt lõi là phát sinh những bí mật có tính chất pháp lý của

khóa công khai. Người nào đó kiểm tra một chữ ký cũng có thể kiểm tra văn
bằng chứng nhận của người ký, để đảm bảo rằng không có sự giả mạo hay lỗi
được tìm thấy. Hầu hết bảo mật của chứng nhận thường bao gồm việc kèm theo
một hay nhiều văn bằng chứng nhận và mỗi thông báo được ký. Người nhận
Giải thuật mã hoá mật mã RSA


- 17 -
thông báo có thể kiểm tra văn bằng bằng cách sử dụng khóa công khai của văn
bằng và kiểm tra chữ ký của thông báo. Có nhiều văn bằng kèm theo thông
báo, định hình một loạt các chuỗi xích có trật tự, ở một khía cạnh nào đó một
văn bằng chứng thực cho việc xác nhận của những văn bằng trước đó.
Nhiều người gửi thì cũng nhiều người nhận hơn, nhu cầu đó là gửi kèm
theo, kiểm tra, xác nhận. Chẳng hạn, nếu Alice gửi thông báo đến cho Bob
hàng ngày, Alice có thể gửi kèm một loạt các mắc xích văn bằng từ những
ngày đầu tiên mà Bob kiểm tra. Từ đó trở đi Bob chỉ cần lưu trữ khóa công
khai của Alice và không cần thiết phải kiểm tra văn bằng hay việc kiểm tra văn
bằng là không cần thiết.
Một người gửi là người của công ty thì cần biết người nhận có thể cần gửi theo
chỉ chỉ một văn bằng (ban hành bởi công ty đó), nhưng ngược lại một người
gửi thuộc công ty thì không nhận ra được người nhận cần gửi kèm theo hai văn
bằng. Thói quen tốt là gửi kèm theo phải nay đủ một loạt các văn bằng chứng
nhận để người ban hành của văn bằng có mức độ cao nhất trong chuỗi đó được
người nhận biết đến.
Theo như chuẩn PKCS cho hệ thống mã hoá dùng khóa công khai, mỗi
chữ ký chỉ đến một văn bằng chứng nhận đã phê chuẩn khóa công khai của
người ký. Đặc biệt mỗi chữ ký chứa tên của người ban hành văn bằng và số sản
xuất của văn bằng. Do đó cho dù không có văn bằng được gửi kèm theo với
thông báo người kểim tra có thể vẫn sử dụng một loạt các văn bằng để kiểm tra
tình trạng của khóa công khai.


c. Nhà cung cấp văn bằng.

Văn bằng chứng nhận được ban hành bởi nhà cung cấp văn bằng (gọi tắt
là CA), được sự ủy thác của nhà quản trị trung tâm sẵn sàng xác minh các đặc
tính của văn bằng. Một công ty có thể phát hành bằng chứng nhận cho nhân
viên của họ, một trường đại học cung cấp cho sinh viên, một thành phố cung
cấp cho công dân của họ. Để mà ngăn chặn việc giả mạo văn bằng, khoá công
khai của của CA đáng tin cậy: một CA không những phải công khai khoá công
khai của họ mà còn cung cấp một văn bằng từ ở mức độ cao hơn để chứng nhận
tính pháp lý của khóa công khai của họ. Sau đó những giải quyết đưa đến cấp
bậc cao hơn của CA.
Chẳng hạn như, Alice phát sinh cặp khoá cô ta sở hữu và gửi khóa công
khai đến cho CA với một sự chứng minh của giấy chứng minh của cô ta. CA
kiểm tra giấy chứng minh và đưa tra những bước cần thiết để đảm bảo rằng
những yêu cầu được đưa đến từ Alice và ròi gửi cho cô một văn bằng chứng
nhận chứng thực liên kết giữa cô ta và khóa công khai của cô ta, theo cùng với
một mắc xích cấp bậc đến khi nào yêu cầu để chứng minh tính hợp pháp của
khóa công khai của cô ta.
Những CA khác có thể ban hành những văn bằng chứng nhận với những
mức độ khác nhau của những yêu cầu nhận diện. Một CA có thể nhất định cần
giấy đăng ký của người điều khiển, những CA khác muốn hình thức yêu cầu
văn bằng phải được công chứng nhưng cũng có cái phải bắt có dấu chỉ điểm
của người yêu cầu một văn bằng. Mỗi một CA cần được công bố những chuẩn
Giải thuật mã hoá mật mã RSA


- 18 -
và những điều kiện chứng nhận mà nó sở hữu, vì vậy những người kiểm tra cần
kiểm tra vào những mức độ thích hợp riêng tư trong tên chứng nhận – liên kết

khóa.
Ví dụ một giao thức ban hành văn bằng chứng nhận là Apple
Computer's Open Collaborative Environment (OCE) (môi trường cộng tác mở
của máy tính Apple). Những người sử dụng Apple OCE cần phát sinh một cặp
khóa và rồi yêu cầu và nhận văn bằng chứng nhận cho khóa công khai; văn
bằng này yêu cầu phải có dấu chỉ điểm.

d. Chứng nhận đơn vị chữ ký CSU (Certificate Signing Unit)

Chứng nhận lưu trữ khóa bí mật là một điều vô cùng quan trọng, những
khóa bí mật của tổ chức chứng nhận đã được lưu trữ một cách bí mật, bởi vì sự
bàn bạc cho phép không kiểm tra việc giả mạo chữ ký. Việc bảo mật phải được
yêu cầu là lưu trữ khóa trong một hộp chống trộm cắp; hộp đó được gọi là
Certificate Signing Unit hay CSU. Cách tốt nhất là CSU triệt phá những những
gì bên trong nó nếu một khi nó bị mở và được bảo vệ để chống lại những xâm
nhập sử dụng bức xạ điện từ. Không bất kỳ nhân viên nào của tổ chức chứng
nhận có thể truy cập vào khóa riêng bí mật đó được, nhưng chỉ có khả năng sử
dụng khóa bí mật đó trong việc cấp văn bằng chứng nhận.
Có nhiều thiết kế có thể thực hiện được cho CSU. CSU được hoạt hoá
bởi một chuỗi các khóa dữ liệu đó là những khóa vật lý có khả năng chứa
những thông tin kỹ thuật số. Những khoá dữ liệu sử dụng kỹ thuật chia sẻ bảo
mật do đó vài người phải dụng tất cả những khóa dữ liệu của họ để được kích
hoạt CSU. Điều này ngăn chặn nhân viên CA cung cấp văn bằng giả.
Chú ý rằng nếu CSU bị phá, trong hoả hoạn, không bảo mật nào bị xâm
phạm. Văn bằng chứng nhận đã được ký bởi CSU có giá trị tồn tại mãi, cho đến
khi nào người kiểm tra sử dụng đúng khóa công khai.





Anh hưởng của những tấn công vào tổ chức cấp văn bằng:

Người ta có thể nói về nhiều vụ tấn công nhắm vào những tổ chức cung
cấp văn bằng chứng nhận, do đó những tổ chức này phải được chuẩn bị để
chống lại những tấn công đó.
Ta xem xét đến một tấn công sau. Giả sử rằng Bob muốn giả dạng Alice.
Nếu Bob có thể có được những thông báo ký như Alice, anh ta có thể gửi thông
báo vào ngân hàng của Alice và nói “ Tôi muôn rút ra 10000 $ từ tài khoản của
tôi. Gửi tiền cho tôi”. Để tấn công điều này, Bob phát sinh một cặp khóa và gửi
khóa đến nơi cung cấp văn bằng chứng nhận và nói “Tôi là Alice. Đây là khóa
công khai của tôi. Làm ơn gửi cho tôi một bằng chứng nhận”. Nếu như CA bị
lừa và gửi đến cho anh ta một văn bằng và anh ta có thể lừa ngân hàng thì anh
ta đã tấn công một cách thành công. Để ngăn chặn việc tấn công này CA phải
kiểm tra bằng chứng nhận yêu cầu thực tế của người tạo ra nó, nghĩa là nó phải

×