Với sự phát triển của khoa học kỹ
thuật và công nghệ, cùng với các nhu cầu đặc biệt có liên quan tới an
toàn thông tin, ngày nay các kỹ thuật chính trong an toàn thông tin bao
gồm: Kỹ thuật mật mã (Cryptography), Kỹ thuật nguỵ trang
(Steganography), Kỹ thuật tạo bóng mờ (Watermarking - hay xăm điện
tử). Kỹ thuật mật mã nhằm đảm bảo ba dịch vụ an toàn cơ bản:Bí mật
(Confidential), Xác thực (Authentication), Đảm bảo tính toàn vẹn
(Integrity). Có thể thấy rằng mật mã học là một lĩnh vực khoa học rộng
lớn có liên quan rất nhiều đến toán học nh−: Đại số tuyến tính, Lý
thuyết thông tin, Lý thuyết độ phức tạp tính toán .
157 trang |
Chia sẻ: phuongt97 | Lượt xem: 413 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Giáo trình Mật mã học (Phần 1), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
dùng chế
độ CBC để tạo các khối bản mã n1 y,,y K theo khóa K. Cuối cùng
ta xác định MAC lμ yn. Alice sẽ phát đi dãy các khối bản rõ
n1 x,,x K cùng với MAC. Khi Bob thu đ−ợc x1. . .xn anh ta sẽ khôi
phục lại n1 y,,y K bằng khóa K bí mật vμ xác minh xem liệu ny có
giống với MAC mμ mình đã thu đ−ợc hay không?
Nhận thấy Oscar không thể tạo ra một MAC hợp lệ do anh ta
không biết khóa K mμ Alice vμ Bob đang dùng. Hơn nữa Oscar
thu chặn đ−ợc dãy khối bản rõ n1 x,,x K vμ thay đổi ít nhiều nội
dung thì thì chắc chắn lμ Oscar không thể thay đổi MAC để đ−ợc
Bob chấp nhận.
Thông th−ờng ta muốn kết hợp cả tính xác thực lẫn độ bảo
mật. Điều đó có thể thực hiện nh− sau: Tr−ớc tiên Alice dùng khóa
K1 để tạo MAC cho n1 x,,x K . Sau đó Alice xác định 1nx + lμ MAC
rồi mã hoá dãy 1n1 x,,x +K bằng khóa thứ hai K2 để tạo ra bản
Giáo trình Mật mã học
120
mã 1n1 y,,y +K . Khi Bob thu đ−ợc 1n1 y,,y +K , tr−ớc tiên Bob sẽ
giải mã (bằng 2K ) vμ kiểm tra xem 1nx + có phải lμ MAC đối với
dãy n1 x,,x K dùng K1 hay không.
Ng−ợc lại, Alice có thể dùng K1 để mã hoá n1 x,,x K vμ tạo ra
đ−ợc n1 y,,y K , sau đó dùng 2K để tạo MAC 1ny + đối với dãy
n1 y,,y K . Bob sẽ dùng 2K để xác minh MAC vμ dùng K1 để giải
mã n1 y,,y K .
3.9.4.2. Mã nguồn DES (Xem phụ lục 3)
Bμi tập
1. Thám mã thu đ−ợc bản mã sau:
PSZI QIERW RIZIV LEZMRK XS WEC CSY EVI WSVVC
Biết rằng đây lμ bản mã của mật Xeda với khóa k ch−a biết.
Hãy dùng ph−ơng pháp tìm khóa vét cạn để tìm đ−ợc bản rõ tiếng
Anh t−ơng ứng.
Ghi chú: Ph−ơng pháp tìm khóa vét cạn lμ ph−ơng pháp thử
giải mã bằng mọi khóa có thể có.
2. D−ới đây lμ 4 bản mã thu đ−ợc từ mã thay thế. Một bản
thu đ−ợc từ mã Vigenère, một từ mật mã Affine vμ một bản ch−a
xác định. Nhiệm vụ ở đây lμ xác định bản rõ trong mỗi tr−ờng hợp.
Hãy mô tả các b−ớc cần thực hiện để giải mã mỗi bản mã (bao
gồm tất cả các phân tích thống kê vμ các tính toán cần thực hiện).
Hai bản rõ đầu lấy từ cuốn "The Diary of Samuel
Marchbanks" của Robertson Davies, Clack Iriwin,1947; bản rõ thứ
Ch−ơng 3: Mật mã cổ điển
121
t− lấy từ "Lake Wobegon Days" của Garrison Keillor, Viking
Penguin, 1985.
a. Mã thay thế
EMGLOSUDCGDNCUSWYSFHNSFCYKDPUMLWGYICO|
XYSIPJCK
QPKUGKMGOUCGINCGACKSNISACYKZSCKXEOCKSH
YSXCG
OIDPKZCNKSHICGIWYGKKGKGOLDSILKGOIUSIGLED
SPWZU
GFZCCNDGYYSFUSZCNXEOJNCGYEOWEUPXEZGACG
NFGLKNS
ACIGOIYCKXOUOUZCFZCCNDGYYSFEUEKUZCSOCFZ
CCNC
IACZEJNCSHFZEJZEGMXCYHCIUMGKUSY
Chỉ dẫn: F sẽ giải mã thμnh w.
b. Hệ mã Vigenère
KCCPKBGUFDPHQTYAVINRRTMVGRKDNBVFĐETDGIL
TXRGUD
DKOTFMBPVGEGLTGCKQRACQCWDNAWCRXLZAKFTL
EWRPTVC
QKYVXCHKFTPONCQQRHJVAJUWETMCMSPKQDYHJV
DAHCTRL
SVSKCGCZQọDZXGSFRLSWCWSJTBHAFSLASPRJAHKJ
RJUMV
Giáo trình Mật mã học
122
GKMITZHFPDLSPZLVLGWTFPLKKEBDPGCEBSHCTJR
WXBAFS
PEZQNRWXCVYCGAONWDDKACKAWBBIKFTLOVKCG
GHJVLNHI
FFSQESVYCLACNVRWBBIREPBBVFEXOSCDYGZWPFD
TKFQLY
CWHJVTNHIQ/BTKH/VNPIST
c. Hệ mã Affine
KQEREJEBCPPCJCRKIEACUZBKRVPKRBCIBQCARBJC
VFCUP
KRLOFKPACUZQEPBKRXPEIIEABDKPBCPFCDCCAFIE
ABĐKP
BCPFEQPKAZBKRHALBKAPCCIBURCCDKDCCJC/DFUI
XPAFF
ERBICZDFKABICBBENEFCUPLCVKABPCYDCCDPKBC
OCPERK
IVKSCPICBRKLJPKABL
d. Hệ mã ch−a xác định đ−ợc
BNVSNSIHQCEELSSKKYERIFJKXUMBGVKAMQLJTYA
VFBKVT
DVBPVVRJYYLAOKYMPQSCGDLFSRLLPROYGESEBUU
ALRWXM
MASAZLGLEĐFJBZAVVPXWI
CGJXASCBYEHOSNMULKCEAHTQ
Ch−ơng 3: Mật mã cổ điển
123
OKMFLEBKFXLRRFDTZXCIWBJSICBGAWDVYDHAVFJ
XZIBKC
GJIWEAHTTOEWTUHKRQVVRGZBXYIREMMASCSPBN
LHJMBLR
FFJELHWEYLWISTFVVYFJCMHYUYRUFSFMGESIGRL
WALSVVM
NUHSIMYYITCCQPZSICEHBCCMZFEGVJYOCDEMMPG
HVAAUM
ELCMOEHVLTIPSUYILVGFLMVWDVYDBTHFRAYISYS
GKVSUU
HYHGGCKTMBLRX
3. a. Có bao nhiêu ma trận khả nghịch cấp 2 ì 2 trên Z26.
b. Giả sử p lμ số nguyên tố. Hãy chứng tỏ số các ma trận
khả nghịch cấp 2 ì 2 trên Zp lμ (p2 – 1)(p2 – p).
Chỉ dẫn Vì p lμ số nguyên tố nên pZ lμ một tr−ờng. Hãy sử
dụng khẳng định sau: Một ma trận trên một tr−ờng lμ khả nghịch
khi vμ chỉ khi các hμng của nó lμ các véc tơ độc lập tuyến tính (tức
không tồn tại một tổ hợp tuyến tính các hμng khác 0 mμ tổng của
chúng lμ một véc tơ toμn số 0).
c. Với p lμ số nguyên tố vμ m lμ một số nguyên m ≥ 2. Hãy
tìm công thức tính số các ma trận khả nghịch cấp mìm trên Zp.
4. Giả sử ta đã biết rằng bản rõ "conversation" sẽ tạo nên bản
mã "HIARRTNUYTUS" (đ−ợc mã theo hệ mã Hill nh−ng ch−a
xác định đ−ợc m). Hãy xác định ma trận mã hoá.
Giáo trình Mật mã học
124
5. Hệ mã Affine - Hill lμ hệ mã Hill đ−ợc sửa đổi nh− sau:
Giả sử m lμ một số nguyên d−ơng vμ ( )m26=C = ZP . Trong hệ mật
nμy, khóa K gồm các cặp (L,b), trong đó L lμ một ma trận khả
nghịch cấp mxm trên Z26 vμ ( )m26b Z∈ theo công thức y xL b= + .
Bởi vậy, nếu ( )ijL l= vμ ( )1 mb b , ,b= K thì:
( ) ( ) ( )
1,1 1,2 1,m
2,1 2,2 2,m
1 m 1 m 1 m
m,1 m,2 m,m
l l l
l l l
y , ,y x , ,x b , ,b
. . .
l l l
⎡ ⎤⎢ ⎥⎢ ⎥= +⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦
K
KK K KK
K
Giả sử Oscar đã biết bản rõ 1μ "adisplayedequation" vμ bản
mã t−ơng ứng lμ "DSRMSIOPLXLJBZULLM". Oscar cũng biết
m = 3. Hãy tính khóa vμ chỉ ra tất cả các tính toán cần thiết.
6. Sau đây lμ cách thám mã hệ mã Hill sử dụng ph−ơng pháp
tấn công chỉ với bản mã. Giả sử ta biết m = 2. Chia các bản mã
thμnh các khối có độ dμi 2 kí tự (các bộ đôi). Mỗi bộ đôi nμy lμ bản
mã của một bộ đôi của bản rõ nhờ dùng một ma trận mã hoá ch−a
biết. Hãy nhặt ra các bộ đôi th−ờng gặp nhất trong bản mã vμ coi
rằng đó lμ mã của một bộ đôi th−ờng gặp trong danh sách ở bảng
1.1 (ví dụ TH vμ ST). Với mỗi giả định, hãy thực hiện phép tấn
công với bản rõ đã biết cho tới khi tìm đ−ợc ma trận giải mã đúng.
Sau đây lμ một ví dụ về bản mã để bạn giải mã theo ph−ơng
pháp đã nêu:
LMQETXYEAGTXCTUIEWNCTXLZEWUAISPZYVAPEWL
MGQWVA
XFTGMSQCADAGTXLMDXNXSNPJQSYVAPRIQSMHNO
CVAXFV.
Ch−ơng 3: Mật mã cổ điển
125
7. Ta sẽ mô tả một tr−ờng hợp đặc biệt của mã hoán vị. Giả
sử m, n lμ các số nguyên d−ơng. Hãy viết bản rõ theo thμnh từng
hμng thμnh một hình chữ nhật m x n. Sau đó tạo ra bản mã bằng
cách lấy các cột của hình chữ nhật nμy Ví dụ, nếu m = 4, n = 3
thì ta sẽ mã hoá bản rõ "cryptography" bằng cách xây dựng hình
chữ nhật :
cryp
togr
aphy
Bản mã sẽ lμ: "CTAROPYGHPRY"
a. Hãy mô tả cách Bob giải mã một bản mã (với m, n đã biết).
b. Hãy giải mã bản mã sau: (nhận đ−ợc theo ph−ơng pháp
đã nêu):
MYAMRARUYIQTENCTORAHROYWĐSOYEOUARRGĐE
RNOGW
8. Hãy chứng minh rằng phép giải mã DES có thể thực hiện
bằng cách áp dụng thuật toán mã hoá DES cho bản rõ với bảng
khóa đảo ng−ợc.
9. Cho DES(x,K) lμ phép mã hoá DES của bản rõ x với khóa
K. Giả sử ( )y DES x,K= vμ ( ) ( )( )y ' DES c x ,c K= trong đó c(.) kí
hiệu lμ phần bù theo các bit của biến. Hãy chứng minh rằng
( )y ' c y= (tức lμ nếu lấy phần bù của bản rõ vμ khóa thì bản mã kết
quả cũng lμ phần bù của bản mã ban đầu). Chú ý rằng kết quả
trên có thể chứng minh đ−ợc chỉ bằng cách sử dụng mô tả "mức
cao" của DES - cấu trúc thực tế của các hộp S vμ các thμnh phần
khác của hệ thống không ảnh h−ởng tới kết quả nμy.
Giáo trình Mật mã học
126
10. Mã kép lμ một cách để lμm mạnh thêm cho DES: với hai
khóa 1K vμ 2K cho tr−ớc, ta xác định y = eK2(eK1(x)) (dĩ nhiên đây
chính lμ tích của DES với chính nó). Nếu hμm mã hoá K2e giống
nh− hμm giải mã K1d thì 1K vμ 2K đ−ợc gọi lμ các khóa đối ngẫu
(đây lμ tr−ờng hợp không mong muốn đối với phép mã kép vì bản
mã kết quả lại trùng với bản rõ). Một khóa đ−ợc gọi lμ tự đối ngẫu
nếu nó đối ngẫu với chính nó.
a. Hãy chứng minh rằng nếu 0C gồm toμn các số 0 hoặc gồm
toμn các số 1 vμ 0D cũng vậy thì K lμ tự đối ngẫu.
b. Hãy tự chứng minh rằng các khóa sau ( cho ở dạng hexa)
lμ tự đối ngẫu;
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
F E E F E F E F E F E F E F E F
1 F 1 F 1 F 1 F 0 F 0 F 0 F 0 F
E 0 E 0 E 0 E 0 F 1 F 1 F 1 F 1
c. Hãy chứng tỏ rằng nếu 0C 0101 01= K hoặc 1010 10K
(ở dạng nhị phân) thì XOR các xâu bit Ci vμ C17-i lμ 111 11K , với 1
≤ i ≤ 16 (khẳng định t−ơng tự cũng đúng đối với Di).
d. Hãy chứng tỏ các cặp khóa sau lμ đối ngẫu:
E0 01E0 01F1 0 1 F1 01
FE1FFE1FF0EFE0E
E01FE01FFF1 0 FF1 0
01E001E001 F1 01 F1
1FFE1FFE0EFE0EFE
1FE01FE00EF1 0EF1
mật mã khóa công khai
4.1. gIớI THIệU Về MậT Mã KHóa CÔNG KHAI
Trong mô hình mật mã cổ điển tr−ớc đây mμ hiện nay đang
đ−ợc nghiên cứu Alice (ng−ời gửi) vμ Bob (ng−ời nhận) chọn một
cách bí mật khóa K. Sau đó dùng K để tạo luật mã hóa ek vμ luật
giải mã dk. Trong hệ mật nμy dk hoặc giống ek hoặc dễ dμng nhận
đ−ợc từ nó (ví dụ trong hệ DES quá trình giải mã hoμn toμn t−ơng
tự nh− quá trình mã nh−ng thủ tục khóa ng−ợc lại). Các hệ mật
thuộc loại nμy đ−ợc gọi lμ hệ khóa bí mật, nếu để lộ ek thì lμm cho
hệ thống mất an toμn.
Nh−ợc điểm của hệ mật nμy lμ nó yêu cầu phải có thông tin
tr−ớc về khóa K giữa Alice vμ Bob qua một kênh an toμn tr−ớc khi
gửi một bản mã bất kỳ. Trên thực tế điều nμy rất khó đảm bảo.
Chẳng hạn khi Alice vμ Bob ở cách xa nhau vμ họ chỉ có thể liên
lạc với nhau bằng th− tín điện tử (Email). Trong tình huống đó
Alice vμ Bob không thể tạo một kênh bảo mật với giá phải chăng.
ý t−ởng xây dựng một hệ mật khóa công khai (hay dùng
chung) lμ tìm một hệ mật không có khả năng tính toán để xác
định kd khi biết ek. Nếu thực hiện đ−ợc nh− vậy thì quy tắc mã ek
có thể đ−ợc công khai bằng cách công bố nó trong một danh bạ
Giáo trình Mật mã học
128
(bởi vậy nên có thuật ngữ hệ mật khóa công khai). Ưu điểm của hệ
mật khóa công khai lμ ở chỗ Alice (hoặc bất kỳ ai) có thể gửi một
bản tin đã mã cho Bob (mμ không cần thông tin tr−ớc về khóa
mật) bằng cách dùng mật mã công khai ek. Ng−ời nhận A sẽ lμ
ng−ời duy nhất có thể giải đ−ợc bản mã nμy bằng sử dụng luật
giải bí mật dk của mình.
Có thể hình dung hệ mật nμy t−ơng tự nh− sau. Alice đặt
một vật vμo một hộp kim loại vμ rồi khóa nó lại bằng một khóa số
do Bob để lại. Chỉ có Bob lμ ng−ời duy nhất có thể mở đ−ợc hộp vì
chỉ có anh ta mới biết tổ hợp mã của khóa số của mình.
ý t−ởng về một hệ mật khóa công khai đ−ợc Diffie vμ
Hellman đ−a ra vμo năm 1976. Còn việc hiện thực hoá nó thì do
Rivesrt, Shamir vμ Adleman đ−a ra lần đầu tiên vμo năm 1977,
họ đã tạo nên hệ mật nổi tiếng RSA (sẽ đ−ợc nghiên cứu trong
ch−ơng nμy). Kể từ đó đã công bố một số hệ, độ mật của chúng dựa
trên các bμi tính toán khác nhau. Trong đó, quan trọng nhất lμ các
hệ mật khóa công khai sau:
- Hệ mật RSA:
Độ bảo mật của hệ RSA dựa trên độ khó của việc phân tích
ra thừa số nguyên lớn. Hệ nμy sẽ đ−ợc mô tả trong phần 4.2.
- Hệ mật xếp ba lô Merkle - Hellman:
Hệ nμy vμ các hệ liên quan dựa trên tính khó giải của bμi
toán tổng các tập con (bμi toán nμy lμ bμi toán NP đầy đủ - lμ một
lớp khá lớn các bμi toán không có giải thuật đ−ợc biết trong thời
gian đa thức). Tuy nhiên tất cả các hệ mật xếp ba lô khác nhau
đều đã bị chứng tỏ lμ không mật (ngoại trừ hệ mật Chor-Rivest).
Ch−ơng 4: Mật mã khóa công khai
129
- Hệ mật McEliece:
Hệ nμy dựa trên lý thuyết mã đại số vμ vẫn còn đ−ợc coi lμ
an toμn. Hệ mật McEliece dựa trên bμi toán giải mã cho các mã
tuyến tính (cũng lμ một bμi toán NP đầy đủ). Hệ mật McEliece
đ−ợc trình bμy ở phần 4.6.
- Hệ mật ElGamal:
Hệ mật ElGamal dựa trên tính khó giải của bμi toán
logarithm rời rạc trên các tr−ờng hữu hạn.
- Hệ mật Chor-Rivest:
Hệ mật Chor-Rivest cũng đ−ợc xem nh− một hệ mật xếp ba
lô. Tuy nhiên nó vẫn đ−ợc coi lμ an toμn.
- Hệ mật trên các đ−ờng cong Elliptic:
Các hệ mật nμy lμ biến t−ớng của các hệ mật khác (chẳng hạn
nh− hệ mật ElGamal), chúng lμm việc trên các đ−ờng cong Elliptic
chứ không phải lμ trên các tr−ờng hữu hạn. Hệ mật nμy đảm bảo
độ mật với số khóa nhỏ hơn các hệ mật khóa công khai khác.
Một chú ý quan trọng lμ một hệ mật khóa công khai không
bao giờ có thể đảm bảo đ−ợc độ mật tuyệt đối (an toμn vô điều
kiện). Sở dĩ nh− vậy vì đối ph−ơng khi nghiên cứu một bản mã, y
có thể mã lần l−ợt các bản tin rõ bằng luật mã hoá công khai ke
cho tới khi anh ta tìm đ−ợc bản rõ duy nhất x đảm bảo ( )xey k= .
Bản rõ nμy chính lμ kết quả giải mã của y. Bởi vậy, ta chỉ nghiên
cứu độ mật về mặt tính toán của các hệ mật nμy.
Một khái niệm có ích khi nghiên cứu hệ mật khóa công khai
lμ khái niệm về hμm cửa sập một chiều. Ta sẽ định nghĩa khái
niệm nμy một cách không hình thức.
Giáo trình Mật mã học
130
Hμm mã khóa công khai ke của Bob phải lμ một hμm dễ tính
toán. Song việc tìm hμm ng−ợc (hμm giải mã) rất khó khăn (đối
với bất kỳ ai không phải lμ Bob). Đặc tính dễ tính toán hμm ng−ợc
th−ờng đ−ợc gọi lμ đặc tính một chiều. Bởi vậy điều kiện cần thiết
lμ ke phải lμ hμm một chiều.
Các hμm một chiều đóng vai trò quan trọng trong mật mã
học, chúng rất quan trọng trong các hệ mật khóa công khai vμ
trong nhiều lĩnh vực khác. Đáng tiếc lμ mặc dù có rất nhiều hμm
đ−ợc coi lμ hμm một chiều nh−ng cho đến nay vẫn không tồn tại
một hμm nμo có thể chứng minh đ−ợc lμ hμm một chiều.
Sau đây lμ một ví dụ về một hμm đ−ợc coi lμ hμm một chiều.
Giả sử n lμ tích của hai số nguyên tố lớn p vμ q, giả sử b lμ một số
nguyên d−ơng. Khi đó ta xác định ánh xạ nn ZZ:f → lμ
( ) nmodxxf b= (với b vμ n đã đ−ợc chọn thích hợp thì đây chính lμ
hμm mã RSA, sau nμy ta sẽ nói nhiều hơn về nó).
Để xây dựng một hệ mật khóa công khai thì việc tìm đ−ợc
một hμm một chiều vẫn ch−a đủ. Ta không muốn ke lμ hμm một
chiều đối với Bob vì anh ta phải có khả năng giải mã các bản tin
nhận đ−ợc một cách hiệu quả. Điều cần thiết lμ Bob phải có một
cửa sập chứa thông tin bí mật cho phép dễ dμng tìm hμm của ke .
Nh− vậy Bob có thể giải mã một cách hữu hiệu vì anh ta có một
hiểu biết tuyệt mật nμo đó về K. Bởi vậy một hμm đ−ợc gọi lμ cửa
sập một chiều nếu nó lμ một hμm một chiều vμ nó trở nên dễ tính
ng−ợc nếu biết một cửa sập nhất định.
4.2. hệ mật rsa
4.2.1. Thuật toán 1: Tạo khóa
Tóm l−ợc: Mỗi đầu cần tạo một khóa công khai vμ một khóa
riêng t−ơng ứng theo các b−ớc sau:
Ch−ơng 4: Mật mã khóa công khai
131
(1) Tạo 2 số nguyên tố lớn ngẫu nhiên vμ khác nhau p vμ q, p
vμ q có độ lớn xấp xỉ nhau.
(2) Tính q.pn = vμ ( ) ( )( )1q1pn −−=Φ .
(3) Chọn một số nguyên ngẫu nhiên e, Φ<< e1 , sao cho
( ) 1,e =Φ .
(4) Sử dụng thuật toán Euclide mở rộng để tính một số
nguyên d duy nhất, Φ<< d1 thỏa mãn ( )Φ≡ mod1ed .
(5) Khóa công khai lμ cặp số ( )e,n . Khóa riêng bí mật lμ d.
4.2.2. Định nghĩa
Các số nguyên d vμ e trong thuật toán tạo khóa RSA đ−ợc gọi
lμ số mũ mã hoá vμ số mũ giải mã. Số n đ−ợc gọi lμ modulus.
4.2.3. Thuật toán 2: Mã hóa công khai RSA
Tóm l−ợc: B mã hóa một thông báo m để gửi cho A bản mã
cần giải.
4.2.3.1. Mã hóa
B phải thực hiện:
(1) Thu nhận khóa công khai ( )e,n của A.
(2) Biểu diễn bản tin d−ới dạng một số nguyên m trong
khoảng [ ]1n,0 −
(3) Tính nmodmc e= .
(4) Gửi bản mã c cho A.
4.2.3.3. Giải mã
Khôi phục bản rõ m từ c. A phải thực hiện phép tính sau
bằng cách dùng khóa riêng nmodcm d=
Giáo trình Mật mã học
132
Chứng minh hoạt động giải mã:
Vì ( )Φ≡ mod1ed nên luôn tồn tại một số nguyên k sao cho
Φ+= k1ed . Bây giờ nếu ( ) 1p,m = theo định lý Ferma ta
có: ( )pmod1m 1p ≡− . Lũy thừa cả hai vế của đồng d− thức trên với số
mũ ( )1qk − vμ rồi nhân cả hai vế với m ta có:
( )( ) ( )pmodmm 1p1qk1 ≡−−+
Mặt khác nếu ƯCLN(m, p) = p thì đồng d− thức cuối cùng ở
trên vẫn đúng vì mỗi vế đều đồng d− với 0 mod p. Bởi vậy, trong
mọi tr−ờng hợp ta đều có:
( )pmodmmed ≡
Bằng lập luận t−ơng tự ta lại có: ( )qmodmmed ≡
Cuối cùng vì p vμ q lμ các số nguyên tố khác nhau nên
( )nmodmmed ≡ vμ bởi vậy ( ) ( )nmodmmc ded ≡≡ .
4.2.4. Ví dụ
4.2.4.1. Tạo khóa
A chọn các số nguyên tố 2551q,2357p == vμ tính
6012707q.pn == vμ ( )( ) 60078001q1p =−−=Φ . A chọn e = 3674911
vμ dùng thuật toán Euclide mở rộng để tìm đ−ợc d = 422191 thỏa
mãn ( )Φ≡ mod1ed . Khóa công khai của A lμ cặp số (n = 6012707,
e = 3674911), khóa bí mật của A lμ d = 422191.
4.2.4.2. Mã hóa
Để mã hóa thông báo m = 5234673, B sử dụng thuật toán lấy
lũy thừa theo modulo để tính.
36505026012707mod5234673nmodmc 3674911e ===
rồi gửi c cho A.
Ch−ơng 4: Mật mã khóa công khai
133
4.2.4.3. Giải mã
Để giải mã bản mã c, A tính:
52346736012707mod3650502nmodc 422191d ==
4.2.4.4. Chú ý (Số mũ vạn năng)
Số ( )1q,1pBCNN −−=λ đôi khi đ−ợc gọi lμ số mũ vạn năng
của n, λ có thể đ−ợc dùng thay cho ( )( )1q1p −−=Φ khi tạo khóa
RSA. Cần chú ý rằng λ lμ −ớc thực sự của Φ . Sử dụng λ có thể
thu đ−ợc số mũ giải mã d nhỏ hơn (lμm cho giải mã nhanh hơn).
Tuy nhiên, nếu p vμ q đ−ợc chọn ngẫu nhiên thì ƯCLN(p - 1, q - 1)
sẽ khá nhỏ vμ bởi vậy Φ vμ λ sẽ lμ các số có kích th−ớc xấp xỉ.
4.3. hệ mật rabin
4.3.1. Thuật toán 1: Tạo khóa
Tóm l−ợc: Mỗi đầu tạo một khóa công khai vμ một khóa bí
mật t−ơng ứng theo các b−ớc sau:
(1) Tạo 2 số nguyên tố lớn, ngẫu nhiên vμ phân biệt p vμ q có
kích th−ớc xấp xỉ nhau.
(2) Tính n = p.q.
(3) Khóa công khai lμ n, khóa bí mật lμ các cặp số (p, q).
4.3.2. Thuật toán 2: Mã hóa công khai Rabin
4.3.2.1. Mã hóa
B phải thực hiện các b−ớc sau:
(1) Nhận khóa công khai của A: n.
(2) Biểu thị bản tin d−ới dạng một số nguyên m nằm trong
dải [ ]1n,0 − .
Giáo trình Mật mã học
134
(3) Tính c = m2 mod n.
(4) Gửi bản mã c cho A.
4.3.2.2. Giải mã:
Để khôi phục bản rõ m từ c, A phải thực hiện các b−ớc sau:
Tìm 4 căn bậc hai của nmodc lμ m1, m2, m3 hoặc m4.
(1) Thông báo cho ng−ời gửi lμ một trong 4 giá trị m1, m2, m3
hoặc m4. Bằng một cách nμo đó A sẽ quyết định m lμ giá trị nμo.
4.3.3. Chú ý
Tìm các căn bậc 2 của q.pn,nmodc = khi ( )4mod3qp ≡≡ .
Trong tr−ờng hợp nμy, việc tìm 4 căn bậc 2 của nmodc đ−ợc thực
hiện khá đơn giản nh− sau:
(1) Sử dụng thuật toán Euclide mở rộng để tìm các số nguyên
a vμ b thoả mãn 1bqap =+ . Chú ý rằng a vμ b có thể đ−ợc tính
trong giai đoạn tạo khóa.
(2) Tính ( ) pmodcr 4/1p+= .
(3) Tính ( ) qmodcs 4/1q+= .
(4) Tính ( ) nmodbqrapsx += .
(5) Tính ( ) nmodbqrapsy −= .
(6) Bốn giá trị căn bậc 2 của nmodc lμ x, nmodx− , y vμ
nmody− .
4.3.4. Ví dụ
4.3.4.1. Tạo khóa
A chọn các số nguyên tố p = 277 vμ q = 331. A tính n = p.q
= 91687. Khóa công khai của A lμ 91687. Khóa bí mật của A lμ cặp
số (p = 277, q = 331).
Ch−ơng 4: Mật mã khóa công khai
135
4.3.4.2. Mã hóa
Giả sử rằng 6 bit cuối cùng của bản tin gốc đ−ợc lặp lại tr−ớc
khi thực hiện mã hóa. Việc thêm vμo độ thừa nμy nhằm giúp cho
bên giải mã nhận biết đ−ợc bản mã đúng.
Để mã hoá bản tin 10 bit 1001111001m = , B sẽ lặp lại 6 bit
cuối cùng của m để có đ−ợc bản tin 16 bit sau: m =
1001111001111001, biểu diễn thập phân t−ơng ứng lμ m = 40596.
Sau đó B tính 6211191687mod40596nmodmc 22 === rồi gửi
c cho A.
4.3.4.3. Giải mã
Để giải mã bản mã c, A tính bốn giá trị căn bậc 2 của
nmodc :
51118m,40596m,22033m,69654m 4321 ====
Biểu diễn nhị phân t−ơng ứng của các số trên lμ:
1011101100011110m,1110011001111001m
100011010110000m,00101101000100000m
43
21
==
==
Vì chỉ có m3 mới có độ thừa cần thiết nên A sẽ giải mã c bằng
m3 vμ khôi phục lại bản tin gốc lμ .1001111001m =
4.3.4.4. Đánh giá hiệu quả
Thuật toán mã hóa Rabin lμ một thuật toán cực nhanh vì nó
chỉ cần thực hiện một phép bình ph−ơng modulo đơn giản. Trong
khi đó, chẳng hạn với thuật toán RSA có e = 3 phải cần tới một
phép nhân modulo vμ một phép bình ph−ơng modulo. Thuật toán
giải mã Rabin có chậm hơn thuật toán mã hoá, tuy nhiên về mặt
tốc độ nó cũng t−ơng đ−ơng với thuật toán giải mã RSA.
Giáo trình Mật mã học
136
4.4. hệ mật elgamal
4.4.1. Thuật toán tạo khóa
Tóm l−ợc: Mỗi đầu liên lạc tạo một khóa công khai vμ một
khóa bí mật t−ơng ứng:
(1) Tạo 1 số nguyên tố p lớn vμ một phần tử sinh α của
nhóm nhân *pZ của các số nguyên pmod .
(2) Chọn một số nguyên ngẫu nhiên a, 2pa1 −≤≤ vμ tính
pmodaα .
(3) Khóa công khai lμ bộ 3 số ( )a,,p αα , khóa bí mật lμ a.
4.4.2. Thuật toán mã hóa công khai ElGamal
Tóm l−ợc: B mã hóa một thông tin báo m để gửi cho A bản
mã cần gửi.
4.4.2.1. Mã hóa
B phải thực hiện các b−ớc sau:
(1) Nhận khóa công khai ( )a,,p αα của A.
(2) Biểu thị bản tin d−ới dạng một số nguyên m trong dải
{ }1p,,1,0 −K .
(3) Chọn số nguyên ngẫu nhiên k, 2pk1 −≤≤ .
(4) Tính pmodkα=γ vμ ( ) pmodm kaα=δ .
(5) Gửi bản mã ( )δα= ,c cho A.
4.4.2.2. Giải mã
Để khôi phục bản rõ m từ c, A phải thực hiện các b−ớc sau:
(1) Sử dụng khóa riêng a để tính pmoda1p −−γ
(Chú ý akaa1p −−−− γ=γ=γ )
Ch−ơng 4: Mật mã khóa công khai
137
(2) Khôi phục bản rõ bằng cách tính ( ) pmoda δγ− .
Chứng minh hoạt động giải mã:
Thuật toán trên cho phép A thu đ−ợc bản rõ vì:
pmodmm. kakaa ≡αα≡δγ −− .
4.4.3. Ví dụ
4.4.3.1. Tạo khóa
A chọn p = 2357 vμ một phần tử sinh 2=α của *2357Z . A chọn
khóa bí mật a = 1751 vμ tính 11852357mod2pmod 1751a ==α .
Khoá công khai của A lμ ( )1185,2,2357p a =α=α= .
4.4.3.2. Mã hóa
Để mã hóa bản tin m = 2035, B sẽ chọn một số nguyên ngẫu
nhiên k = 1520 vμ tính:
14302357mod21520 ==γ
vμ 6972357mod1185.2035 1520 ==δ
Sau đó B gửi ( )697,1430c = cho A.
4.4.3.3. Giải mã
Để giải mã A phải tính:
8722357mod1430605a1p ==γ −−
Sau đó khôi phục bản rõ m bằng cách tính:
.20352357mod697.872m ==
Giáo trình Mật mã học
138
4.5. hệ mật merkle - hellman
4.5.1. Định nghĩa dãy siêu tăng
Định nghĩa: Dãy các số nguyên d−ơng ( )n21 a,,a,a K đ−ợc gọi
lμ dãy siêu tăng nếu ∑−
=
>
1i
1j
ji aa với ni2,i ≤≤∀ .
4.5.2. Bμi toán xếp balô
Cho một đống các gói có các trọng l−ợng khác nhau, liệu có
thể xếp một số gói nμy vμo ba lô để ba lô có một trọng l−ợng cho
tr−ớc hay không. Về mặt hình thức ta có thể phát biểu bμi toán
trên nh− sau:
Cho tập các giá trị n21 M,,M,M K vμ một tổng S. Hãy tính
các giá trị bi để:
nn2211 MbMbMbS +++= K
với { }1,0bi ∈
bi = 1: Có nghĩa lμ gói Mi đ−ợc xếp vμo ba lô.
bi = 0: Có nghĩa lμ gói Mi không đ−ợc xếp vμo ba lô.
4.5.3. Giải bμi toán xếp ba lô trong tr−ờng hợp dãy siêu tăng
Trong tr−ờng hợp { }n21 M,,M,MM K= lμ một dãy siêu tăng
thì việc tìm ( )n21 b,,b,bb K= t−ơng đ−ơng nh− bμi toán tìm biểu
diễn nhị phân của một số S. Biểu diễn nμy sẽ tìm đ−ợc sau tối đa
lμ n b−ớc.
Thuật toán giải:
Vμo: dãy siêu tăng { }n21 M,,M,MM K= vμ một số nguyên S
lμ tổng của một tập con trong M.
Ch−ơng 4: Mật mã khóa công khai
139
Ra : ( )n21 b,,b,b K trong đó { }1,0bi ∈ sao cho: SMb
n
1i
ii =∑
=
(1) ni ←
(2) Chừng nμo 1i ≥ hãy thực hiện
a. Nếu iMS ≥ thì : 1xi ← vμ iMSS −← ng−ợc lại: 0xi ←
b. 1ii −←
(3) Return (b)
Nếu M không phải lμ dãy siêu tăng thì lời giải của bμi toán
lμ một trong 2n ph−ơng án có thể. Đây lμ một bμi toán khó giải nếu
n lớn.
4.5.4. Thuật toán tạo khóa
Tóm l−ợc: Mỗi đầu liên lạc tạo cho mình một khóa công khai
vμ một khóa bí mật t−ơng ứng.
Chọn một số nguyên xác định n đ−ợc xem lμ một tham số
chung của hệ thống.
Mỗi đầu liên lạc phải thực hiện các b−ớc sau:
(1) Chọn một dãy siêu tăng ( )n21 M,,M,M K vμ một modulo
M sao cho n21 M,,M,MM K> .
(2) Chọn một số nguyên ngẫu nhiên W, 1MW1 −≤≤ sao cho
( ) 1M,W = .
(3) Chọn một phép hoán vị ngẫu nhiên π của các số nguyên
{ }n,,2,1 K .
(4) Tính ( ) MmodWMa ii π= với n,,2,1i K= .
(5) Khóa công khai lμ tập các số ( )n21 a,,a,a K
Khóa bí mật lμ ( )( )n21 M,,M,MW,M, Kπ .
4.5.5. Thuật toán mã công khai Merkle-Hellman
Tóm l−ợc: B mã hóa bản tin m để gửi cho A bản mã cần giải
mã.
Giáo trình Mật mã học
140
4.5.5.1. Mã hóa
B phải thực hiện các b−ớc sau:
(1) Nhận khóa công khai của A: ( )n21 a,,a,a K
(2) Biểu thị bản tin m nh− một chuỗi nhị phân có độ dμi n
n21 m,,m,mm K= .
(3) Tính số nguyên nn2211 amamamc +++= K
(4) Gửi bản mã c cho A.
4.5.5.2. Giải mã
Để khôi phục bản rõ m từ c, A phải thực hiện các b−ớc sau:
(1) Tính MmodcWd 1−=
(2) Sử dụng thuật giải xếp ba lô trong tr−ờng hợp dãy siêu
tăng để tìm các số nguyên { }1,0r,r,,r,r in21 ∈K sao cho:
nn2211 MrMrMrd +++= K
(3) Các bit của bản rõ lμ ( ) n,,2,1i,rm ii K== π
Chứng minh: Thuật toán trên cho phép A thu đ−ợc bản rõ vì:
( )∑∑
=
π
=
≡≡≡
n
1i
ii
n
1i
ii
1-1- MmodMmamWcWd
Vì ( )∑
=
π=<≤
n
1i
ii MmodMmd,Md0 , bởi vậy nghiệm của bμi
toán xếp ba lô ở b−ớc (b) sẽ cho ta các bit của bản rõ sau khi sử
dụng phép hoán vị π .
4.5.6. Ví dụ
4.5.6.1. Tạo khóa
Cho n = 6. A chọn dãy siêu tăng sau: (12, 17, 33, 74, 157,
316), M = 737, W = 635 thỏa mãn (W, M) = 1.
Ch−ơng 4: Mật mã khóa công khai
141
Phép hoán vị π của {1, 2, 3, 4, 5, 6} đ−ợc xác định nh− sau:
( ) ( ) ( ) ( ) ( ) ( ) 46,55,24,13,62,31 =π=π=π=π=π=π .
Khóa công khai của A lμ tập (319, 196, 250, 477, 200, 559).
Khóa bí mật của A lμ ( )( )316,157,74,33,17,12W,M,π .
4.5.6.2. Mã hóa
Để mã hóa bản tin m = 101101, B tính:
c = 319 + 250 + 477 + 559 = 1605
vμ gửi c cho A.
4.5.6.3. Giải mã
Để giải mã A phải tính: ( )513224W 1 =−=−
136MmodcWd 1 == −
vμ giải bμi toán xếp ba lô trong tr−ờng hợp dãy siêu tăng sau:
654321 r316r157r74r33r17r12136 +++++=
vμ nhận đ−ợ
Các file đính kèm theo tài liệu này:
- giao_trinh_mat_ma_hoc_phan_1.pdf