286
MT MÃ RSA MT NG DNG CA S NGUYÊN T
VÀ LÝ THUYẾT ĐỒNG DƯ
Nguyn Th Khánh Hòa1
1. Khoa Sư Phạm, Trường Đại hc Th Du Mt
TÓM TT
Bài viết trình bày ng dng ca s nguyên t và lý thuyết đồng dư trong mật mã RSA.
T khóa: mt mã RSA; ng dng ca s nguyên t; ng dng ca lý thuyết đồng dư.
1. GII THIU
“Học toán để làm gì?” hay "Toán hc có áp dng được vào thc tin cuc sng không?" - Đây
là nhng câu hi vn gây nhc nhi cho c hc sinh, sinh viên và ph huynh Vit Nam trong nhng
năm gần đây. Bên cạnh quan điểm cho rng hc Toán là cn thiết, cũng không ít người có suy nghĩ
ngược li. Mc đích bài viết này là cung cp mt ví d áp dng toán hc vào thc tiễn đời sng.
giúp cho những người dy toán có thêm ví d để to hứng thú cho người hc. Đồng thi th giúp
các bn hc sinh, sinh viên thấy được nhng ng dng rt hu ích ca toán hc trong cuc sng.
Mt hc là một lĩnh vực liên quan đến các k thut ngôn ng toán học để đảm bo an
toàn thông tin, c th là trong thông tin liên lc. Trong lch s, mt mã hc gn lin vi quá trình mã
hóa; nghĩa gắn vi các cách thức để chuyển đi thông tin, làm cho thông tin tr thành dng
không th đọc được nếu như không có các kiến thc bí mật. Quá trình mã hóa được s dng ch yếu
để đảm bo tính mt ca các thông tin quan trng, chng hn trong công tác tình báo, quân
s hay ngoi giao cũng như các mt v kinh tế, thương mại. Trong những năm gần đây, lĩnh vc
hoạt động ca mật hđã được m rng: mt hóa hiện đại cung cấp chế cho nhiu hot
động hơn chỉ duy nht vic gi mt mt lot các ng dụng như: chng thc khoá công
khai, ch s, bu c đin t hay tiền điện t. Trong mt hc, RSA là mt thut toán mt
hóa khóa công khai. Đây thuật toán đầu tiên được s dụng để to ra ch điện tử. đánh du
mt s tiến b vượt bc của lĩnh vực mt hc. Hiện nay RSA đang được s dng ph biến
trong thương mại điện t và được cho là đảm bo an toàn với điều kiện độ dài khóa đủ ln.
Nguyên lý ca mt mã RSA chính là da trên các kiến thức cơ bản v s nguyên t lý thuyết
đồng dư. Hay nói cách khác, mật mã RSA chính là mt ng dụng đơn giản nhưng cực k hu ích ca
s nguyên t và lý thuyết đồng dư.
2. NI DUNG
Phn thuyết bản v s nguyên t cùng nhau (mc 2.1), s nguyên t (mc 2.2)
thuyết đồng dư (mục 2.3) được trình bày theo (Nguyn Tiến Tài, 1999).
2.1. S nguyên t cùng nhau
2.1.1. Đnh nghĩa 1: Cho hai s nguyên 𝑎,𝑏 (𝑏0). Nếu có mt s nguyên 𝑞 sao cho 𝑎=𝑏.𝑞
thì ta nói 𝑎 chia hết cho 𝑏. Khi đó ta cũng nói 𝑏 là ước ca 𝑎.
Ví d: 3 là ước ca 6 6=2.3.
2.1.2. Định nghĩa 2: Các s nguyên 𝑎1,𝑎2,,𝑎𝑛 được gi nguyên t cùng nhau nếu ước
chung ln nht ca chúng bng 1.
Ví d: 916 là hai s nguyên t cùng nhau vì 𝑈𝐶𝐿𝑁(9;16)=1.
287
2.2. S nguyên t
2.2.1. Định nghĩa: S t nhiên lớn hơn 1 không có ước nào khác ngoài 1 và chính nó được gi
là s nguyên t.
Ví d: 2,3,5,7,11,13, là nhng s nguyên t.
S 4 không phi s nguyên t vì nó có ước (khác 14) là 2.
2.2.2. Phân tích mt s t nhiên thành tích nhng tha s nguyên t:
Định lý: Mi s t nhiên lớn hơn 1 đều phân tích đưc thành tích nhng tha s nguyên t và
s phân tích đó là duy nhất nếu không k đến th t ca các tha s.
Ví d: Ta có s phân tích thành tích ca các tha s nguyên t ca s 12 và 143 như sau:
12=22×3 143=11×13
2.3. Lý thuyết đồng dư
2.3.1. Định nghĩa đồng dư thức: Cho 𝒎 là mt s nguyên dương. Ta nói hai số nguyên 𝒂𝒃
đồng dư với nhau theo môđun 𝒎 nếu trong các phép chia 𝒂𝒃 cho 𝒎 ta được cùng mt s dư, khi
đó ta viết 𝒂𝒃 (𝒎𝒐𝒅𝒎)
H thức trên được gọi là đồng dư thức.
Ví d: 𝟓𝟏 (𝒎𝒐𝒅 𝟐); 𝟏𝟐𝟐 (𝒎𝒐𝒅 𝟓).
2.3.2. Mt s tính cht của đồng dư thức
Tính cht 1: 𝒂𝒃(𝒎𝒐𝒅𝒎)𝒂=𝒃+𝒎𝒕,𝒕ℤ.
Nói thêm, nếu 𝟎𝒃<𝒎 thì 𝒃 chính là s dư khi chia 𝒂 cho 𝒎.
Tính cht 2: 𝒂𝒃 (𝒎𝒐𝒅𝒎),𝒃𝒄 (𝒎𝒐𝒅𝒎)𝒂𝒄 (𝒎𝒐𝒅𝒎).
Tính cht 3: 𝒂𝒃 (𝒎𝒐𝒅𝒎)𝒂 ± 𝒄𝒃 ± 𝒄 (𝒎𝒐𝒅𝒎),∀𝒄ℤ.
Tính cht 4: 𝒂 + 𝒄𝒃 (𝒎𝒐𝒅𝒎)𝒂𝒃 𝒄 (𝒎𝒐𝒅𝒎),∀𝒄ℤ.
Tính cht 5: 𝒂𝒃 (𝒎𝒐𝒅𝒎)𝒂+𝒌𝒎𝒃 (𝒎𝒐𝒅𝒎),∀𝒌ℤ.
Tính cht 6: 𝒂𝒃 (𝒎𝒐𝒅𝒎)𝒂𝒄𝒃𝒄 (𝒎𝒐𝒅𝒎),∀𝒄ℤ.
Tính cht 7: 𝒂𝒃 (𝒎𝒐𝒅𝒎)𝒂𝒏𝒃𝒏 (𝒎𝒐𝒅𝒎),∀𝒏ℤ,𝒏>𝟎.
Tính cht 8: {𝒂𝒃 (𝒎𝒐𝒅𝒑)
𝒂𝒃 (𝒎𝒐𝒅𝒒)
𝑼𝑪𝑳𝑵(𝒑,𝒒)=𝟏𝒂𝒃 (𝒎𝒐𝒅𝒎) vi 𝒎=𝒑.𝒒
Ví d: Tìm các s nguyên dương 𝑥 nh nht tho 727𝑥 (𝑚𝑜𝑑143)
Gii:
Ta có 722=143×36+36 72236 (𝑚𝑜𝑑143)
723=143×2610+18 72318 (𝑚𝑜𝑑143)
Do đó 727=722×722×723362×18 (𝑚𝑜𝑑143)
362×18=143.163+19 362×18 19 (𝑚𝑜𝑑143)
Suy ra 72719 (𝑚𝑜𝑑143)
Vy s nguyên dương nhỏ nht cn tìm là 𝑥=19.
2.3.3. Đnh lý Euler: Cho 𝒎mt s t nhiên khác 𝟎𝒂 là mt s nguyên nguyên t vi 𝒎.
Khi đó ta có 𝒂𝝋(𝒎)𝟏(𝒎𝒐𝒅𝒎)
Vi 𝒎=𝒑𝟏
𝜶𝟏𝒑𝟐
𝜶𝟐𝒑𝒌
𝜶𝒌 là s phân tích 𝒎 thành tích ca các tha s nguyên t.
𝝋(𝒎)=𝒎.(𝟏𝟏
𝒑𝟏).(𝟏𝟏
𝒑𝟐)(𝟏𝟏
𝒑𝒌).
288
Nhn xét: i) Nếu 𝒑 là s nguyên t thì 𝝋(𝒑)=𝒑(𝟏𝟏
𝒑)=𝒑𝟏.
ii) Nếu 𝒎=𝒑.𝒒 (𝒑,𝒒 là s nguyên t) thì 𝝋(𝒎)=(𝒑𝟏).(𝒒𝟏)
2.3.4. Phương trình đồng dư bậc nht mt n
Trong bài viết này ta ch xét phương trình có dạng
𝒂𝒙𝒃 (𝒎𝒐𝒅𝒎) vi 𝒂<𝒎𝑼𝑪𝑳𝑵(𝒂,𝒎)=𝟏.
Khi đó nghiệm của phương trình này sẽ là:
𝑥𝑏
𝑎 (𝑚𝑜𝑑𝑚) (Nếu 𝑎 là ước ca 𝑏).
𝑥𝑏+𝑘𝑚
𝑎 (𝑚𝑜𝑑𝑚) vi 1𝑘𝑎1 (Nếu 𝑎 không là ước ca 𝑏).
d: Tìm các s nguyên dương 𝑑 nh nht tho mãn 7𝑑1(𝑚𝑜𝑑120).
Gii: Phương trình đã cho có nghiệm là
𝑑1+6.120
7 (𝑚𝑜𝑑120)𝑑103 (𝑚𝑜𝑑120)𝑑=103+120𝑘 (𝑘)
Vy s nguyên dương nhỏ nht cn tìm là 𝑑=103.
2.4. Thut toán mt mã khoá công khai RSA
2.4.1. Mô t sơ lược
Thut toán RSA được Ron Rivest, Adi Shamir và Len Adleman mô t lần đầu tiên vào
năm 1977 ti Hc vin Công ngh Massachusetts (MIT). Tên ca thut toán ly t 3 ch cái đầu ca
tên 3 tác gi.
Ta th phng trc quan mật khoá công khai RSA như sau: B mun gi cho A mt
thông tin mt và B mun ch mình A có th đọc được. Để làm được điều này, A gi cho B mt chiếc
hộp có khóa đã m sn và gi li chìa khóa. B nhn chiếc hộp, cho vào đó một t giy viết thư bình
thường và khóa lại (như loại khoá thông thường ch cn sp cht li. Sau khi sp cht khóa, ngay c
B cũng không thể m lại được-không đọc li hay sửa thông tin trong thư đưc nữa). Sau đó B gửi
chiếc hp li cho A. A m hp vi chìa khóa của mình và đọc thông tin trong thư. Trong dụ này,
chiếc hp vi khóa m đóng vai trò khóa công khai, chiếc chìa khóa chính là khóa bí mt.
Như vậy quá trình vn hành ca mt mã RSA s gồm các bước chính đó là:
- A to khoá công khai (là chiếc hp d trên) và khoá bí mt (chiếc chìa khoá ca hp
A gi li, không gửi đi d trên). Sau đó A ng bố khoá công khai (gi cho B). Quá trình này
gi là to khoá.
- B s hoá thông tin mun gi cho A (bng cách s dụng khoá công khai A đã cung
cp). Quá trình này gi là mã hoá.
- Sau khi nhn được thông tin đãhoá t B, A s dùng khoá bí mật để gii mã đoạn thông tin
mà B đã gửi. Quá trình này gi là gii mã.
Tiếp theo, chúng ta s đi sâu vào ba quá trình trên để thấy rõ được mt mã khoá công khai RSA
chính là mt ng dng ca s nguyên t và lý thuyết đồng dư.
2.4.2. To khoá
- Chn hai s nguyên t 𝒑,𝒒 ln.
- Tính 𝒏=𝒑.𝒒; 𝒎=(𝒑𝟏).(𝒒𝟏).
- Chn s t nhiên 𝒆 sao cho 𝒆𝒎 nguyên t cùng nhau.
- Tìm 𝒅 sao cho 𝒅.𝒆𝟏(𝒎𝒐𝒅𝒎) (nghĩa là 𝒅.𝒆 khi chia cho 𝒎 s dư 1).
Sau đó A gửi khoá công khai là hai s 𝒏,𝒆 và gi khoá bí mt là 𝒅.
2.4.3. Mã hoá
289
- Chia đoạn văn bn X cn gi thành nhiu phn nh, mi phn biu din bi mt s 𝒙 tho
mãn 𝟎𝒙<𝒏. (Trong phm vi ca bài viết, ta không đi sâu vào bước chuyển đổi văn bản này,
nhm làm cho bài viết ngn gn và ch tp trung vào ng dng ca s nguyên tlý thuyết đồng dư
trong mt mã RSA).
- Gi s 𝒙 là thông tin bí mt cn gi, B tìm 𝒚 sao cho 𝒚𝒙𝒆(𝒎𝒐𝒅𝒏).
Sau đó B sẽ gi 𝒚 cho A.
2.4.4. Gii mã
- A nhn 𝒚 t B ri dùng khoá bí mt 𝒅 để tìm 𝟎𝒙<𝒏 tho 𝒙𝒚𝒅(𝒎𝒐𝒅𝒏).
- T 𝒙, A s tìm lại văn bản X theo phương pháp chuyển đoạn văn bản A và B đã thoả thun
t trước.
2.4.5. Ví d
Sau đây sẽ mt ví d vi nhng s nguyên t nh c th để d hình dung v thut toán RSA.
Còn trong thc tế người ta s dng nhng s rt ln.
Gi s B mun gi t “Hi” cho A. Lúc này B phải chuyển đổi đoạn văn bản “Hi” thành số.
Hin nay có rt nhiều phương pháp giúp chuyển đổi đoạn văn bản thành số. Để cho bài viết ngn gn
ch tp trung vào ng dng ca s nguyên tlý thuyết đồng dư trong mật mã RSA, tôi ch chn
cách dùng Bảng ASCII (tên đầy đủ American Standard Code for Information Interchange -
Chuẩn mã trao đổi thông tin Hoa K) mà không đi sâu vào các cách chuyển đổi văn bản khác.
Theo bng mã ASCII, ch “H” sẽ ng vi s 72 và ch “i” ứng vi s 105.
A
B
To
khoá
- Chn 𝑝=11,𝑞=13.
- Tính 𝑛=11.13=143; 𝑚=10.12=120.
- Chn 𝑒=7 nguyên t cùng nhau vi 120.
- Chn 𝑑=103 đ 7𝑑1(𝑚𝑜𝑑120).
Khoá công khai là 𝑛=143,𝑒=7 (gửi đi).
Khoá bí mt 𝑑=103 (gi li).
hoá
- Mun gi 𝑥1=72,𝑥2=105<143 cho A.
- B hoá 𝑥1=72,𝑥2=105 thành 𝑦1=
19,𝑦2=118.
t khoá công khai 𝑛=143,𝑒=7
điều kin 𝑦1727(𝑚𝑜𝑑143); 𝑦2
1057(𝑚𝑜𝑑143).
- Gi "19 118" cho A.
Gii
- Nhận được 𝑦1=19,𝑦2=118 t B.
- T 𝑑=103 𝑥119103(𝑚𝑜𝑑143);𝑥2
118103(𝑚𝑜𝑑143)
A tính được 𝑥1=72,𝑥2=105.
- Da vào Bng mã ASCII, A s biết được thông điệp B
đã gửi là “Hi”.
mt vấn đề trong ví d trên cần được làm sáng t đó là: Có rt nhiu giá tr 𝒚 tho điều kin
𝒚𝟕𝟐𝟕(𝒎𝒐𝒅𝟏𝟒𝟑). Tuy nhiên ta s luôn nhận được mt giá tr 𝒙 duy nht tho 𝒙
𝒚𝟏𝟎𝟑(𝒎𝒐𝒅𝟏𝟒𝟑)𝒙<𝟏𝟒𝟑.
Điu này s được chng minh trong mc 2.4.6. Vic chng minh này s cho ta thy ng dng
ca lý thuyết đồng dư trong mật mã RSA.
2.4.6. Tính đúng đắn ca thut toán
(Kết qu dưới đây được chng minh da vào các tính cht ca mục 2.3.2 và định lý Euler).
Gi s 𝟎𝒙,𝒙′<𝒏 ,𝒚𝒙𝒆(𝒎𝒐𝒅𝒏) 𝐯à 𝒙𝒚𝒅(𝒎𝒐𝒅𝒏). Ta s chng minh 𝒙′=𝒙.
T hai đồng dư thức trên ta suy ra 𝒙𝒙𝒅𝒆(𝒎𝒐𝒅𝒏) (1).
Nếu ta chứng minh được 𝒙𝒅𝒆𝒙(𝒎𝒐𝒅𝒏) thì t (1) ta suy ra 𝒙𝒙(𝒎𝒐𝒅𝒏).
𝟎𝒙,𝒙′<𝒏 nên ta suy ra 𝒙=𝒙. Ta được điều phi chng minh.
290
Phn còn lại là dành để chng minh 𝒙𝒅𝒆𝒙(𝒎𝒐𝒅𝒏).
* Trường hp 1: Nếu 𝑼𝑪𝑳𝑵(𝒙,𝒏)=𝟏 thì theo định lý Euler ta có
𝒙𝝋(𝒏)𝟏(𝒎𝒐𝒅𝒏)
𝝋(𝒏)=(𝒑𝟏).(𝒒𝟏)=𝒎 nên 𝒙𝒎𝟏(𝒎𝒐𝒅𝒏) (2).
Mt khác vì 𝒅𝒆𝟏(𝒎𝒐𝒅𝒎) nên 𝒅𝒆=𝟏+𝒌𝒎 vi 𝒌.
Do đó từ (2) suy ra 𝒙𝒌𝒎𝟏(𝒎𝒐𝒅𝒏) 𝒙𝟏+𝒌𝒎𝒙(𝒎𝒐𝒅𝒏)𝒙𝒅𝒆𝒙(𝒎𝒐𝒅𝒏).
* Trường hp 2: Nếu 𝑼𝑪𝑳𝑵(𝒙,𝒏)𝟏 thì vì 𝒏=𝒑.𝒒;𝟎𝒙<𝒏
nên 𝑼𝑪𝑳𝑵(𝒙,𝒏)=𝒑 hoc 𝑼𝑪𝑳𝑵(𝒙,𝒏)=𝒒.
Không mt tính tng quát, gi s 𝑼𝑪𝑳𝑵(𝒙,𝒏)=𝒑. Khi đó
𝒙𝟎(𝒎𝒐𝒅𝒑)𝒙𝒅𝒆𝟎(𝒎𝒐𝒅𝒑)𝒙𝒅𝒆𝒙(𝒎𝒐𝒅𝒑) (3)
Mt khác vì 𝒅𝒆𝟏(𝒎𝒐𝒅𝒎) nên 𝒅𝒆=𝟏+𝒌𝒎 vi 𝒌.
Và vì 𝑼𝑪𝑳𝑵(𝒙,𝒒)=𝟏 nên theo định lý Euler ta có
𝒙𝝋(𝒒)𝟏(𝒎𝒐𝒅𝒒)𝒙𝒒−𝟏𝟏(𝒎𝒐𝒅𝒒)𝒙(𝒑−𝟏)(𝒒−𝟏)𝟏(𝒎𝒐𝒅𝒒)𝒙𝒎𝟏(𝒎𝒐𝒅𝒒)
𝒙𝒌𝒎 𝟏(𝒎𝒐𝒅𝒒) 𝒙𝟏+𝒌𝒎𝒙(𝒎𝒐𝒅𝒒)𝒙𝒅𝒆𝒙(𝒎𝒐𝒅𝒒) (4)
T (3) và (4) suy ra 𝒙𝒅𝒆𝒙(𝒎𝒐𝒅𝒑𝒒)𝒙𝒅𝒆𝒙(𝒎𝒐𝒅𝒏).
2.4.7. Độ an toàn ca mt mã khoá công khai RSA
Nếu k tấn công tìm được 2 s nguyên t 𝑝𝑞 sao cho 𝑛=𝑝𝑞 thì th d dàng tìm được
giá tr (𝑝1)(𝑞1) qua đó xác đnh được khoá bí mt 𝑑 t 𝑒. Tuy nhiên độ an toàn ca mt mã
khoá công khai RSA tính đến thời điểm hin ti vẫn được đảm bo bi bài toán phân ch mt s
nguyên ln thành tích ca các tha s nguyên t nói chung bài toán phân tích mt s nguyên ln
thành tích ca hai tha s nguyên t nói riêng đã và vẫn đang là vấn đề ln ca toán hc.
Tính đến tháng 2 năm 2020 s ln nhất được phân tích bng mt thuật toán thông thưng (s
này được hiu RSA-250), mt s 250 ch s (829 bit) ch ca hai s nguyên t ln.
Công trình nh toán này được thc hin bi hàng chc nghìn máy nh trên toàn thế gii chy cùng
lúc với nhau và được hoàn thành sau hơn ba tháng (Zimmermann & Paul, 2020).
Mc vic phân tích mt s thành tích ca các tha s nguyên tố, đặc bit bài toán phân
tích nhng s ln thành tích ca 2 s nguyên t là mt bài toán tn rt nhiu thi gian và công sức để
gii quyết, nhưng với s phát trin không ngng ca ngành khoa hc máy tính, các nhà khoa hc trên
thế gii vn quyết định s khuyến cáo người dùng v cách chn các s nguyên t p, q, e và độ dài ca
n như sau:
- Các s p, q nên là các s nguyên t ln, xa nhau và nên chn ngu nhiên bng các thut toán.
- S e và d không nên quá lớn để tiết kim thi gian mã hoá và giải mã, nhưng cũng không nên
chn s quá nh vì s rt d b b khoá. Giá tr thường dùng hin nay ca e là mt s có 5 ch s.
- Độ dài của n (tính theo bít) cũng được khuyến cáo tăng dần theo các m. Chẳng hn, theo
khuyến cáo ca NIST (Vin tiêu chun và Công ngh M) thì t 2019 đến 2030, độ dài ca n nên t
1024 đến 15360 bít; theo khuyến cáo ca ECRYPT-CSA (cơ quan đưa ra các khuyến ngh v s dng
an toàn mt ca Liên minh Châu Âu) thì t 2022 đến 2068, độ dài ca n nên t 3072 đến 15360
bít (Hoàng Văn Thức và nnk.,2023).
3. KT LUN
Trên đây tôi đã trình bày lược về mật khoá công khai RSA với mục đích làm ứng
dụng của số nguyên tố thuyết đồng dư trong thuật toán này. Qua bài viết, chúng ta có thể thấy
rằng chỉ dựa trên những kiến thức đơn giản bản của số nguyên tố thuyết đồng nhưng
đã tạo nên một thuật toán về hoá rất an toàn. Thuật toán này đang sẽ tiếp tục được sử dụng