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

Một số tấn công vào hệ 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.44 MB, 82 trang )

LỜI NÓI ĐẦU

Ngày nay, trong sự bùng nổ về công nghệ thông tin đi cùng với việc phát
triển của các phuơng tiện thông tin liên lạc đã tạo ra nhiều tiến bộ mới trong lĩnh
vực này. Do đó nhu cầu cập nhật, trao đổi thông tin là không thể thiếu được ở
mỗi người. Song song với quá trình trao đổi thông tin đó của con người thì cũng
chính là lúc họ nghĩ đến làm thế nào để bảo mật được những thông tin để chỉ
những người trong cuộc mới có thể xem và hiểu được. Để đáp ứng được như
cầu đó thì hàng loạt các hệ mật mã đã ra đời. Ngày nay thì chúng không ngừng
phát triển và ngày càng hiện đại hơn.
Với đồ án tốt nghiệp “một số tấn công vào hệ mật mã RSA” được thực
hiện nhằm mục đích tìm hiểu tổng quan về hệ mật mã nói chung và đặc biệt là
hệ mật mã RSA. Tại Việt Nam thì việc tìm hiểu này còn mới bắt đầu ở những
bước đi chập chững trong giai đoạn đầu của sự phát triển. Chính vì thế là sinh
viên công nghệ thông tin em muốn tìm hiểu và nắm bắt thêm các thông tin về hệ
mật mã nói chung, đặc biệt là hệ mật RSA để có thể áp dụng trong thực tiễn góp
phần nâng cao sự hiểu biết. Trong thời gian làm đồ án mặc dù đã có nhiều cố
gắng nhưng đây còn là một đề tài, một lĩnh vực mới, nên sự hiểu biết còn nhiều
hạn chế. Vì thế, đồ án của em không tránh khỏi sai lầm và thiếu sót. Em rất
mong đuợc sự chỉ bảo, góp ý của các thầy cô, các bạn để đồ án này của em được
hoàn thiện hơn.

1


Cuối cùng em xin chân thành cảm ơn tới các thầy cô giáo trong Khoa đã
tạo điều kiện giúp đỡ em, đặc biệt là thầy Thân Quang Khoát đã chỉ bảo tận tình
để em hoàn thành tốt đồ án tốt nghiệp này.

2



MỤC LỤC
LỜI NÓI ĐẦU.................................................................................................1
LỜI CAM ĐOAN ........................................... Error! Bookmark not defined.
MỤC LỤC.......................................................................................................3
DANH MỤC HÌNH ẢNH ...............................................................................6
PHẦN MỘT ................................................... Error! Bookmark not defined.
HỆ MẬT MÃ CÔNG KHAI RSA ...................... Error! Bookmark not defined.
CHƯƠNG 1.....................................................................................................7
TỔNG QUAN VỀ BẢO MẬT THÔNG TIN...................................................7
1.1 Sơ lược về lịch sử mật mã học................................................................7
1.2 Những kiến thức cơ bản.......................................................................10
1.3 Các phương pháp mã hóa .....................................................................12
1.3.1 Mã hoá cổ điển...............................................................................13
1.2.2 Mã hoá hiện đại.............................................................................13
1.3.3 Hệ thống mã hoá lai (Hybrid Cryptosystems).................................16
1.3.4 Hàm băm (Hash function) ..............................................................17
1.4 Thám mã và tính an toàn của hệ mật mã ..............................................19
1.4.1 Thám mã........................................................................................19
1.4.2 Tính an toàn của một hệ mật mã....................................................20
1.5 Một số bài toán về an toàn và bảo mật thông tin ..................................21
CHƯƠNG 2...................................................................................................23
HỆ MẬT MÃ CÔNG KHAI RSA .................................................................23
2.1 Sơ lược về hệ mật mã khoá công khai..................................................23
2.1.1 Sơ lược về hệ mật mã công khai.....................................................23
2.1.2 Một số bài toán cơ bản ..................................................................24
2.2 Mô tả hệ mật mã RSA .........................................................................28
2.2.1 Sơ đồ của hệ mật mã RSA.............................................................28

3



2.3 Quá trình thực hiện hệ mật mã RSA ....................................................31
2.4 Tính bảo mật của RSA.........................................................................31
2.4.1 Dùng modun n chung.....................................................................32
2.4.2 Khi số mũ lập mã e nhỏ..................................................................33
2.4.3 Lợi dụng tính chất nhân của hàm lập mã ........................................34
2.4.4 Tấn công bằng cách lặp phép mã....................................................34
2.4.5 Về khả năng che giấu của bản mật mã...........................................35
CHƯƠNG 3...................................................................................................37
MỘT SỐ KIẾN THỨC CÓ LIÊN QUAN......................................................37
3.1 Lý thuyết lưới (Lattice Theory) ...........................................................37
3.1.1 Giới thiệu.......................................................................................37
3.1.2 Một số khái niệm và tính chất của lý thuyết lưới ............................38
3.1.3 Bài toán SVP và CVP ....................................................................39
3.2 Số học các số nguyên............................................................................40
3.2.1 Tính chia hết của các số nguyên .....................................................40
3.2.2 Thuật toán Euclide .........................................................................41
3.3 Độ phức tạp tính toán ...........................................................................43
3.3.1 Khái niệm về độ phức tạp tính toán................................................43
3.3.2 Hàm một phía và cửa sập một phía.................................................45
3.4 Số nguyên tố........................................................................................46
3.4.1 Một số tính chất của số nguyên tố ..................................................46
3.4.2 Một số tiêu chuẩn của số nguyên tố................................................47
3.5 Xác suất và thuật toán xác suất .............................................................47
3.5.1 Khái niệm xác suất.........................................................................48
3.5.2 Thuật toán xác xuất........................................................................49
PHẦN HAI ....................................................................................................51
MỘT SỐ TẤN CÔNG VÀO HỆ MẬT RSA .....................................................51
CHƯƠNG 1...................................................................................................52

PHÂN TÍCH SỐ NGUYÊN TỐ LỚN............................................................52

4


1.1 Đặt vấn đề ............................................................................................52
1.2 Phân tích một số thành thừa số nguyên tố .............................................53
1.3 Một số phương pháp đơn giản kiểm tra số nguyên tố............................57
1.3.1 Các phương pháp thô sơ.................................................................57
1.3.2 Kiểm tra theo xác suất....................................................................58
CHƯƠNG 2...................................................................................................59
TẤN CÔNG KHI KHOÁ BÍ MẬT NHỎ.......................................................59
2.1 Phân loại các tấn công ..........................................................................59
2.3 Thâm nhập khi số mũ cá nhân thấp.......................................................59
2.4 Thâm nhập khi số mũ công cộng thấp...................................................62
2.4.1 Định lý Coppersmith......................................................................62
3.4.2 Thâm nhập của Hastard..................................................................67
CHƯƠNG 3...................................................................................................70
MỘT SỐ TẤN CÔNG KHÁC .......................................................................70
3.1 Franklin-Reiter thâm nhập thông điệp liên quan ...................................70
3.2 Việc thâm nhập bộ đệm ngắn của Coppersmith ....................................71
3.3 Thâm nhập từng phần một cách lộ liễu .................................................73
3.4 Tấn công vào quá trình triển khai .........................................................74
3.4.1 Tấn công tạm thời ..........................................................................75
3.4.2 Lỗi ngẫu nhiên ...............................................................................77
3.4.3 Sự tấn công của Bleichenbacher trên PKCS 1 ................................78
KẾT LUẬN ...................................................................................................80
TÀI LIỆU THAM KHẢO..............................................................................81

5



DANH MỤC HÌNH ẢNH

Hình 1.1: Sơ đồ mã hoá và giải mã.
Hình 1.2: Sơ đồ mã hoá đối xứng.
Hình 1.3: Sơ đồ mã hoá bất đối xứng.
Hình 1.4: Sơ đồ hệ thống mã hóa lai.

6


CHƯƠNG 1

TỔNG QUAN VỀ BẢO MẬT THÔNG TIN
1.1 Sơ lược về lịch sử mật mã học
Từ khi, con người có nhu cầu trao đổi thông tin, thư tín,… cho nhau thì
cũng là lúc họ nghĩ đến việc bảo mật và giữ những bí mật riêng tư chỉ những
người trong cuộc mới biết trong quá trình trao đổi thông tin. Trong quá trình
trao đổi, thông tin được sử dụng phổ biến là dưới dạng các văn bản. Để giữ bí
mật cho các thông tin đó người ta đã sớm nghĩ ra cách che giấu nội dung của các
thông tin đó để người ngoài cuộc không thể hiểu được nhưng đồng thời họ cũng
có cách khôi phục lại nguyên dạng ban đầu để những người trong cuộc vẫn có
thể hiểu được. Tất nhiên để thực hiện được một phép mật mã, ta cần một thuật
toán biến đổi bản rõ, cùng với khoá mật mã, thành bản rõ mật mã, và một thuận
toán ngược lại, biến đổi mật mã cùng với khoá mật mã thành bản rõ. Ngày nay,
dạng biến dổi của văn bản được gọi là mật mã của văn bản, cách lập mật mã cho
một văn bản được gọi là phép lập mật mã, còn cách khôi phục lại nguyên dạng
ban đầu của thông tin văn bản được gọi là phép giải mã. Phép lập mật mã và
phép giải mã được thực hiện dựa vào một khoá riêng nào đó mà chỉ những

người trong cuộc mới biết được gọi là khoá bí mật. Các thuật toán này thường
không nhất thiết phải giữ bí mật mà cái cần giữ bí mật ở đây là khoá mật mã.
Trong thực tiễn, đã có hoạt động bảo mật thì cũng có hoạt động ngược lại là
khám phá các bí mật từ các bản mật mã, ta thường gọi hoạt động này là mã
thám: hoạt động này cũng quan trọng không kém gì hoạt động bảo mật. Do đó

7


mã thám thường tập trung vào việc tìm khoá mật mã hay cũng chính là công
việc phá khoá.
Trong mấy thập niên gần đây, khi thế giới bắt đầu bước vào kỷ nguyên
của máy tính điện tử thì lĩnh vực mật mã cũng đã có những chuyển biến lớn từ
giai đoạn mật mã truyền thống chuyển sang giai đoạn mật mã máy tính. Ngày
nay, máy tính điện tử được sử dụng ngày càng phổ biến hơn trong lĩnh vực lập
và giải mật mã. Chính những công việc đó đã kích thích không chỉ các giáo sư,
nhà nghiên cứu, mà còn cho cả những người yêu thích bộ môn này muốn nghiên
cứu, tìm hiểu chúng. Vì các công việc chủ yếu của mật mã được thực hiện dựa
trên máy tính điện tử nên các khái niệm bí mật cũng dần dần được máy tính hoá.
Chính vì vậy, khái niệm tính bí mật là khái niệm cốt lõi nhất đối với bất kỳ một
mật mã nào. Trên thế giới, đã có nhiều cách tiếp cận để tìm hiểu được định
nghĩa của khái niệm này một cách chính xác, khoa học, toán học cho nó thì chưa
có. Một cách tiếp cận khá phổ biến là gắn khái niệm bí mật này với khái niệm
ngẫu nhiên. Nếu một văn bản có các thông tin truyền đi rõ có nội dung xác định
thì điều chúng ta mong muốn là bản mật mã của nó phải có một bản gồm các ký
tự được sắp xếp hỗn độn, như vậy ngẫu nhiên người ngoài nhìn hay đọc chúng
thì cũng không hiểu được nội dung của bản gốc. Nhưng, có một điều đặt ra là
chưa thể xác định được khái niệm bí mật thì khái niệm ngẫu nhiên cũng khó có
thể xác định được một cách chính xác.
Ngày nay, với trình độ Công Nghệ Thông Tin ngày càng phát triển trong

hầu hết các lĩnh vực trong đời sống xã hội, nhất là trong lĩnh vực An Toàn và
Bảo Mật Thông Tin đảm bảo tính bí mật cho các thông tin được truyền đi ngày
càng trở nên cần thiết hơn lúc nào hết. Hiển nhiên, tiêu chuẩn của một văn bản
mật mã là đảm bảo tính bí mật cho các thông tin trong văn bản khi truyền đi. Vì

8


các công việc của mật mã chủ yếu là dựa vào máy tính điện tử nên song song
với các khái niệm bí mật, ngẫu nhiên thì khái niệm dãy bít ngẫu nhiên cũng
được nghiên cứu, tìm hiểu. Nhưng, ta cũng chưa có một quy định tiêu chuẩn
toán học nào để xác định một dãy bít có là ngẫu nhiên hay không mà chỉ có thể
tìm hiểu được một số thuộc tính gần với tính ngẫu nhiên dùng làm căn cứ để xác
định một dãy bít có là giả ngẫu nhiên hay không theo nghĩa có các thuộc tính đó
hay không mà thôi.
Vào những năm 1960 với sự ra đời của Lý thuyết về độ phức tạp tính
toán thì các khái niệm trên đã tìm được một nội dung chung có thể nghiên cứu
một cách toán học là tính phức tạp. Giống như một ví dụ cụ thể sau: nếu một
người từ bản mật mã (là bí mật với người đó) đó để tìm ra bản rõ thì người đó
phải thực hiện một hay nhiều quá trình tính toán mà độ phức tạp của nó vượt
quá khả năng tính toán của người đó (kể cả máy tính). Cũng giống như vậy, một
đoạn bít có thể được xem là ngẫu nhiên nếu dựa vào một đoạn bít đã biết để tìm
đoạn bít tiếp theo của dãy thì người đó phải tìm hay thực hiện một quá trình tính
toán mà độ phức tạp của nó tương đối lớn.
Nhưng ngày nay, việc chuyển từ mã hoá các thông tin ứng dụng dựa trên
máy tính điện tử thì giai đoạn mật mã máy tính đã được ứng dụng và phát triển.
Chuyển sang giai đoạn mật mã máy tính thì đã làm cho các hệ thống mật mã có
cấu trúc tinh tế hơn, đòi hỏi lập mật mã hay giải mã sẽ phức tạp hơn nhiều, do
đó khả năng giữ bí mật của mật mã được nâng cao hơn trước rất nhiều.
Tuy nhiên, vào những năm 1970 một bước chuyển có tính chất cách

mạng mà mật mã máy tính mang lại đó là việc phát hiện ra các hệ mật mã có
khoá công khai. Cơ sở lý thuyết của sự phát minh đó là sự tồn tại của hàm một

9


phía tức là những hàm số học y  f (x) mà việc tính y theo x thì tương đối dễ,
nhưng việc tính ngược từ y tìm x tức là quá trình tính: x  f 1 ( y ) thì cực kỳ phức
tạp. Các hệ mật mã công khai khi ra đời đã làm thay đổi về bản chất cho việc
bảo mật trên các hệ thống công cộng, và do tính chất đặc biết đó chúng đã là cơ
sở cho việc phát triển nhiều giao thức an toàn thông tin khác khi sử dụng mạng
truyền thông công cộng, như các loại chữ kỹ điện tử, các giao thức về xác nhận
nguồn tin và định danh người gửi,…và gần đây là việc phát triển nhiều giao
thức đặc thù khác trong các giao dịch ngân hàng, thương mại điện tử,…
1.2 Những kiến thức cơ bản
Mật mã học là sự nghiên cứu các phương pháp toán học liên quan đến
một số khía cạnh của thông tin như sự an toàn, sự toàn vẹn dữ liệu, sự xác nhận
tồn tại và sự xác nhận tính nguyên bản của thông tin.
Một cách định nghĩa khác về hệ mật mã học như sau: Trước tiên mật mã
học (cryptography) là một nghệ thuật nhằm che giấu thông tin, bằng cách
chuyển đổi (encrypt) thông tin thành dạng thông tin không đọc được (cipher
text). Chỉ có những người giữ chìa khoá (key) mới có thể giải mã (decrypt)
thông tin thành dạng thông tin có thể hiểu được (plain text). Thông tin đôi khi bị
giải mã mà không cần khoá bí mật. Ngành học nghiên cứu về việc bẻ khoá
(attack/crack/hack) này được gọi là cryptanalysis. Dưới đây là sơ đồ mã hoá và giải mã:

$^f

Hình 1.1: Sơ đồ mã hoá và giải mã


10


Mật mã được sử dụng để bảo vệ tính bí mật của thông tin khi thông tin
được truyền đi trên các kênh truyền thông công cộng như các kênh bưu chính,
điện thoại,… Giả sử có một người A muốn gửi thông điệp x (chẳng hạn như là
một bức thư) đến B, để bảo mật cho bản thông điệp x này A lập cho x một bản
mật mã y, và thay cho việc A gửi cho B bản x thì gửi cho B bản y. Khi B nhận
được y thì B giải mã y để lại được thông điệp x như A định gửi. Để làm được
việc như vậy, A và B phải thoả thuận trước với nhau các thuật toán lập mã và
giải mã, và đặc biệt là khoá mật mã chung k để thực hiện được các thuật toán đó.
Định nghĩa 1.1 Một sơ đồ hệ thống mật mã là một bộ năm:
S = (P, C, K, E, D)

(1)

Thoả mãn các điều kiện sau:
+P: là một tập hợp hữu hạn các ký tự bản rõ.
+C: là một tập họp các ký tự bản mã.
+K: là một tập hợp hữu hạn các khoá.
+E: là một tập ánh xạ từ KxP vào C, được gọi là phép lập mật mã.
+D: là một tập ánh xạ từ KxC vào P, được gọi là phép giải mã.
Với mỗi k  K, ta định nghĩa ek: P  C, dk: C  P là hai hàm xác định bởi:
ek(x) = E(K,x);
dk(y) = D(K,y);
ek và d k được gọi là hàm lập mã và hàm giải mã ứng với khoá mật mã k.
Các hàm đó thoả mãn hệ thức:
dk(ek(x)) = x.

11



Về sau, để thuận tiện ta sẽ gọi danh sách (1) thoả mãn các tính chất trên
gọi là sơ đồ hệ thống mật mã, còn khi đã chọn cố định một khoá k nào đó, thì
danh sách (P, C, ek, dk) là một hệ mật mã thuộc sơ đồ đó.
Theo định nghĩa này, phép lập mật mã (giải mã) được định nghĩa cho
từng ký tự của bản rõ (bản mã). Trong thực tế, bản rõ của một thông báo thường
là một dãy các ký tự bản mã, tức là phần tử của tập C*, việc mở rộng các hàm ek
và dk lên miền tương ứng P* và C* để được các thuật toán lập mật mã và giải mã.
1.3 Các phương pháp mã hóa
Có rất nhiều các thuật toán hay phương pháp mã hoá khác nhau. Từ
những thuật toán được công khai để mọi người cùng sử dụng và áp dụng như là
một chuẩn chung trong việc mã hoá dữ liệu; đến những thuật toán mã hoá không
được công bố. Có thể phân loại các thuật toán mã hoá như sau:
Phân loại theo các phương pháp:
-

Mã hoá cổ điển (Classical cryptography).

-

Mã hoá đối xứng (Symetric cryptography).

-

Mã hoá bất đối xứng (Asymetric cryptography).

-

Hàm băm (Hash function).


Phân loại theo số lượng khoá:
-

Mã hoá khoá bí mật (Private-key Cryptography).

-

Mã hoá khoá công khai (Public-key Cryptography).

12


1.3.1 Mã hoá cổ điển
Mã hoá cổ điển đã có từ rất lâu đời và có hai dạng mã hoá mà ngày nay
vẫn thường được sử dụng. Đặc biệt nhất là trong các trò chơi tìm mật thư:
- Substitution: thay thế - đây là phương pháp mã hóa trong đó từng ký tự
(hoặc từng nhóm ký tự ) của văn bản ban đầu được thay thế bằng một
(hay một nhóm) các ký tự khác. Tuy nhiên, ngày nay phương pháp mã
hoá này không còn được sử dụng nhiều, nhưng ý tưởng của phương
pháp này vẫn được tiếp tục trong các thuật toán hiện đại.
- Transposition: hoán vị - phương pháp mã hoá trong đó các ký tự trong
văn bản ban đầu chỉ thay đổi vị trí cho nhau còn bản thân các ký tự
không hề bị biến đổi.
1.2.2 Mã hoá hiện đại
a) Symmetric cryptography: mã hóa đối xứng - tức là cả hai quá trình mã
hoá và giải mã đều dùng một chìa khoá. Để đảm bảo tính an toàn, chìa khoá này
phải được giữ bí mật. Vì thế các thuật toán này còn có một tên gọi khác là secret
key cryptography (hay private key cryptography), tức là thuật toán mã hoá dùng
chìa khoá riêng (hay bí mật).


(A)

(B)

Hình 1.2: Sơ đồ mã hoá đối xứng

13


Như hình trên thì giả sử nếu bên A chỉ gửi thông điệp đã mã hoá cho bên
B mà không hề báo trước về thuật toán sử dụng, B sẽ không hiểu A muốn nói gì.
Vì thế bắt buộc A phải thông báo cho B về chìa khoá và thuật toán sử dụng tại
một thời điểm nào đó trước đấy. A có thể làm điều này trực tiếp hay gián tiếp thì
cũng có thể dẫn tới khả năng bị người thứ ba làm cách nào đó có được thuật
toán và chìa khoá để giải mã mà A đã gửi cho B.
Mã hoá đối xứng có thể chia làm hai nhóm phụ:
+ Block ciphers: thuật toán khối – trong đó từng khối dữ liệu trong văn
bản ban đầu được thay thế bằng một khối dữ liệu khác có cùng độ dài (thường
được tính bằng bít). Một số thuật toán khối thông dụng là: DES, 3DES,…
+ Stream ciphers: thuật toán dòng – trong đó dữ liệu đầu vào được mã
hoá từng bít một, tức là với kích thước mỗi khối là 1 bít. Các thuật toán dòng có
tốc độ nhanh hơn các thuật toán khối. Chúng được dùng khi khối lượng dữ liệu
cần mã hoá chưa biết trước như trong kết nối không dây.
b) Asymmetric cryptography: mã hoá bất đối xứng - sử dụng một cặp
chìa khoá có liên quan tới nhau về mặt toán học, một chìa khoá công khai dùng
để mã hoá (public key) và một chìa khoá bí mật dùng để giải mã (private key).
Một thông điệp, sau khi được mã hoá bởi chìa khoá công khai sẽ chỉ có thể được
giải mã với chìa khoá bí mật tương ứng. Do các thuật toán này sử dụng thuật
toán công khai nên nó còn có một tên gọi khác nữa là: public-key cryptography

(thuật toán mã hóa dùng chìa khóa công khai). Một số thuật toán thông dụng là:
RSA, Elgamal,…
Cũng với ví dụ trên, nếu A muốn gửi một thông điệp bí mật tới B, A sẽ
tìm chìa khoá công khai của B. Sau khi kiểm tra chắc chắn chìa khoá đó chính là

14


của B chứ không phải của ai khác thông qua chứng chỉ điện tử (Chữ ký điện tử
đi kèm với các thông tin chủ sở hữu và một số thông tin cần thiết khác sẽ trở
thành chứng chỉ điện tử). A dùng nó để mã hoá thông điệp của mình và gửi tới
B. Khi B nhận được thông điệp đã mã hoá, B sẽ dùng chìa khoá bí mật của
chính mình để giải mã nó. Nếu giải mã thành công thì bức thông điệp đó đúng là
dành cho B. A và B ở đây có thể là hai người không quen biết. Một hệ thống
như vậy cho phép hai người thực hiện được giao dịch trong khi không chia sẻ
trước một thông tin bí mật nào cả.

Hình 1.3: Sơ đồ mã hoá bất đối xứng
Một trong những hạn chế của các thuật toán mã hoá bất đối xứng là tốc
độ chậm, do đó trong thực tế người ta thường sử dụng một hệ thống lai tạp giữa
thuật toán bất đối xứng và thuật toán đối xứng. Tức là, người ta dùng thuật toán
bất đối xứng để chia sẻ khoá bí mật rồi sau đó mới dùng thuật toán đối xúng với
chìa khoá bí mật trên để truyền thông tin.
Mặc dù các bản tin dưới dạng mật mã có thể được truyền trên các
phương tiện thông tin công cộng (mạng viễn thông) nhưng các khoá thì phải
được gửi đi một cách an toàn hơn. Vấn đề bảo mật các khoá cũng có rất nhiều
phức tạp khi nó được phân phối cho nhiều người cùng sử dụng. Mã hoá bất đối
xứng có các đặc điểm sau:

15



-

Với mỗi khoá để mã hoá có đúng một khoá giải mã tương ứng, hai
khoá này là khác nhau.

-

Có nhiều cặp khoá như vậy và có thể tính toán được.

-

Hầu như không thể tìm được khoá giải mã mặc dù đã biết khoá mã hoá.

-

Khoá mã hoá được công bố công khai cho nhiều người sử dụng, chỉ
có người nhận được biết khoá mật mã

1.3.3 Hệ thống mã hoá lai (Hybrid Cryptosystems)
Trên thực tế hệ thống mã hoá khoá công khai chưa thể thay thế hệ thống
mã hoá khoá bí mật được, nó ít được sử dụng để mã hoá dữ liệu mà thường
dùng để mã hoá khoá. Hệ thống mã hoá khoá lai ra đời là sự kết hợp giữa tốc độ
và tính an toàn của hai hệ thống mã hoá ở trên. Dưới đây là mô hình của hệ
thống mã hoá lai:

Hình 1.4: Sơ đồ hệ thống mã hóa lai
Nhìn vào mô hình chúng ta có thể hình dung được hoạt động của hệ
thống mã hoá này như sau:

-

Bên gửi tạo ra một khoá bí mật dùng để mã hoá dữ liệu. Khoá này còn được
gọi là Session Key.

16


-

Sau đó, Session Key này lại được mã hoá bằng khoá công khai của bên
nhận dữ liệu.

-

Tiếp theo dữ liệu mã hoá cùng với Session Key đã mã hoá được gửi đi tới
bên nhận.

-

Lúc này bên nhận dùng khoá riêng để giải mã Session Key và có được
Session Key ban đầu.

-

Dùng Session Key sau khi giải mã để giải mã dữ liệu.
Như vậy, hệ thống mã hoá khoá lai đã tận dụng tốt được các điểm mạnh

của hai hệ thống mã hoá ở trên đó là: tốc độ và tính an toàn. Điều này sẽ làm
hạn chế bớt khả năng giải mã của tin tặc.

1.3.4 Hàm băm (Hash function)
Hàm băm là cách thức mã hoá một chiều biến đổi văn bản nhận dạng
(clear text) trở thành hình thái mã hoá mà không bao giờ có thể giải mã. Kết quả
của tiến trình hashing còn được gọi là hash (xử lý băm), giá trị hash (hash
value), hay thông điệp đã được mã hoá và tất nhiên không thể tái tạo lại dạng
ban đầu. Trong xử lý hàm băm dữ liệu đầu vào có thể khác nhau về độ dài, thế
nhưng độ dài của xử lý Hash tại đầu ra lại là cố định.
Hàm hash có hai tính chất quan trọng là:
+) Tính một chiều: không thể suy ra dữ liệu ban đầu từ kết quả.
+) Tính duy nhất: tức là hai thông điệp khác nhau có cùng một kết quả
hash, là cực kì nhỏ.

17


Một số ứng dụng của hàm Hash là:
+) Chống và phát hiện xâm nhập: chương trình chống xâm nhập so sánh
giá trị hash của một file với giá trị trước đó để kiểm tra xem file đó có bị
ai đó thay đổi hay không.
+) Bảo vệ tính toàn vẹn của thông điệp được gửi qua mạng bằng cách
kiểm tra giá trị hash của thông điệp trước và sau khi gửi nhằm phát hiện
những thay đổi cho dù là nhỏ nhất.
+) Tạo chìa khóa từ mật khẩu.
+) Tạo chữ kí điện tử.
Hashing được sử dụng trong một số mô hình chứng thực password. Một
giá trị hash có thể gắn với một thông điệp điện tử nhằm hỗ trợ tính tích hợp của
dữ liệu hoặc hỗ trợ xác định trách nhiệm không thể chối từ (non-repudiation).
Hashing được sử dụng để mã hoá passwords trong xác thực CHAP
(CHAP là phương thức xác thực truy nhập quay số từ xa Remote Access
Service, RAS client truy nhập vào RAS Server). RAS client sẽ gửi một hash

password tới RAS Server. RAS Server chứa hash pasword client đã tạo trước
đó. Nếu hash trùng khớp thì password được chấp nhận và client sẽ được Server
xác thực. Việc gửi một hash thay vì gửi chính password có nghĩ là password đó
không cần phải truyền qua mạng trong suốt quy trình Server xác thực client.
Một vài thuật toán mã hoá được dùng trong mã hoá hashing:
- MD5 (Message Digest) – thuật toán MD5 tạo thành một dạng thông
điệp được mã hoá với 128 bít. Được tạo bởi Ronald Rivest và hiện là công nghệ
mã hoá mang tính phổ biến và rộng rãi.

18


- SHA (Secure Hash Algorithm) – SHA dựa trên mô hình MD5 nhưng
mạnh hơn gấp 2 lần. SHA – 1 tạo giá trị hash với 160 bít. Trong khi đó SHA –
256, SHA – 384, SHA – 512 tạo giá trị hash tương ứng là 256 bít, 384 bít, 512 bít.
1.4 Thám mã và tính an toàn của hệ mật mã
1.4.1 Thám mã
Mật mã được sử dụng trước hết là đảm bảo tính bí mật cho các thông tin
được trao đổi, và do đó bài toán quan trọng của thám mã cũng là bài toán phá bỏ
tính bí mật đó. Từ bản mật mã này ta có thể thu được dễ dàng các thông tin bí
mật trên các kênh thông tin đại chúng công cộng. Người thám mã phải phát hiện
được nội dung bị che giấu trong bản mật mã đó, mà tốt nhất là tìm ra được bản
rõ gốc của bản mật mã đó. Bản thân sơ đồ hệ thống mật mã, kể cả phép lập mã
và giải mã không nhất thiết phải giữ bí mật, do đó bài toán quy về tìm kiếm chìa
khoá mật mã K, hay chìa khoá giải mã K’’, nếu hệ mật mã có khoá phi đối
xứng. Để giải bài toán này giả thiết người thám mã biết thông tin về sơ đồ hệ
mật mã được dùng, kể cả các phép lập mã và giải mã tổng quát E và D. Ngoài
ra, người thám mã có thể biết thêm một số thông tin khác, tuỳ theo những thông
tin được biết thêm mà ta có thể phân loại bài toán thám mã thành các bài toán cụ
thể sau:

-Bài toán thám mã chỉ biết bản mã: đây là bài toán phổ biến nhất, khi
người thám mã chỉ biết một bản mật mã y.
-Bài toán thám mã khi biết cả bản rõ: người thám mã biết một bản mật
mã y cùng với bản rõ tương ứng x.

19


-Bài toán thám mã khi có bản rõ được chọn: người thám mã có thể chọn
một bản rõ x, và biết bản mật mã y. Điều này có thể xảy ra khi người thám mã
tạm thời chiếm được máy lập mã.
-Bài toán thám mã khi có bản mã được chọn: người thám mã có thể chọn
một bản mật mã y và biết bản rõ tương ứng x. Điều này có thể xẩy ra khi người
thám mã chiếm được tạm thời máy giải mã.
1.4.2 Tính an toàn của một hệ mật mã
Tính an toàn của một hệ thống mật mã phụ thuộc vào độ khó khăn của
bài toán thám mã khi sử dụng hệ mật mã đó. Người ta đã đề xuất một số cách
hiểu cho khái niệm an toàn của hệ thống mật mã, để trên cơ sở đó ta nghiên cứu
tính an toàn của nhiều hệ mật mã khác nhau.
-An toàn vô điều kiện: Giả thiết người thám mã có được thông tin về bản
mã. Nhưng theo quan niệm lý thuyết thông tin, nếu những hiểu biết về bản mã
không thu hẹp được độ bất định về bản rõ đối với người thám mã, thì hệ mật mã
là an toàn vô điều kiện, hay theo thuật ngữ của C.Shannon, hệ là bí mật hoàn
toàn. Như vậy, hệ là an toàn vô điều kiện, nếu độ bất định về bản rõ sau khi
thám mã có được thông tin về bản mã bằng độ bất định về bản rõ trước đó. Tính
an toàn vô điều kiện đã được chứng minh bằng một số hệ mật mã khoá đối
xứng.
-An toàn được chứng minh: một hệ thống mật mã được xem là có độ an
toàn được chứng minh nếu ta có thể chứng minh được là bài toán thám mã đối
với hệ thống đó là khó tương đương với một bài toán khó đã biết như bài toán

phân tích một số nguyên tố thành tích của các thừa số nguyên tố.

20


-An toàn về mặt tính toán: hệ mật được xem là an toàn về mặt tính toán,
nếu mọi phương pháp thám mã đã biết đều đòi hỏi một nguồn năng lực tính toán
vượt quá mọi khả năng cho phép kể cả các phương tiện tính toán. Nói theo ngôn
ngữ của lý thuyết về độ phức tạp tính toán, là bao hàm cả khái niệm an toàn theo
nghĩa được chứng minh nói trên.
1.5 Một số bài toán về an toàn và bảo mật thông tin
Chúng ta đang sống trong một thời đại bùng nổ thông tin. Do vậy, nhu cầu
trao đổi, cập nhật thông tin qua các phương tiện thông tin đại chúng ngày càng
phát triển. Và cùng với sự phát triển đó thì ngày càng đòi hỏi tính bảo mật và an
toàn của thông tin ngày càng to lớn. Có nhiều bài toán khác nhau về yêu cầu an
toàn thông tin tuỳ theo những tình huống khác nhau, nhưng có một số bài toán
chung nhất mà ta hay thường gặp là:
-

Bảo mật: giữ thông tin bí mật đổi với tất cả mọi người trừ những
người có thẩm quyền và những người biết thông tin đó.

-

Toàn vẹn thông tin: đảm bảo thông tin không bị thay đổi, xuyên tạc
do cá nhân hay tổ chức nào đó không được phép.

-

Nhận thực một thực thể: xác nhận danh tính của một thực thể như thẻ

tín dụng, một người,…

-

Nhận thực một thông báo: xác định nguồn gốc của một thông báo
được gửi đến

-

Chữ ký: một cách để gắn kết một thông tin với một thực thể, dùng
trong bài toán nhận thực một thông báo cũng như trong nhiều bài
toán nhận thực khác.

21


-

Uỷ quyền: chuyển một thực thể khác quyền được đại diện hoặc được
làm một việc gì đó.

-

Cấp chứng chỉ: cấp một sự xác nhận thông tin bởi một thực thể được
tín nhiệm

-

Báo nhận: xác nhận một thông báo đã nhận hay một dịch vụ đã được
thực hiện.


-

Ẩn danh: che giấu danh tính của một thực thể tham gia trong một tiến
trình nào đó (thường dùng trong việc giao dịch tiền điện tử)

22


CHƯƠNG 2
HỆ MẬT MÃ CÔNG KHAI RSA
2.1 Sơ lược về hệ mật mã khoá công khai
2.1.1 Sơ lược về hệ mật mã công khai
Sự ra đời của khái niệm hệ mật mã khoá công khai là một tiến bộ có tính
chất bước ngoặt trong lịch sử mật mã nói chung, gắn liền với sự phát triển của
khoa học tính toán hiện đại. Người ta xem thời khởi đầu của bước ngoặt này đó
là sự xuất hiện ý tưởng của W.Diffie và M.E.Hellman được trình bày vào tháng
6 năm 1976 tại Hội nghị quốc gia hàng năm của AFIPS (Hoa Kỳ) trong bài
Multiuser crytographic techniques. Trong bài đó, cùng ý tưởng chung, hai tác
giả cũng đã đưa ra những ví dụ cụ thể để thực hiện ý tưởng đó, và mặc dù các
thí dụ trên chưa có ý nghĩa thuyết phục ngay đối với tác giả thì ý tưởng về các
hệ mật mã khoá công khai cũng đã rõ ràng và có sức hấp dẫn đối với mọi người.
Và ngay sau đó, công việc tìm kiếm những thể hiện cụ thể có khả năng ứng
dụng trong thực tế đã bắt đầu thu hút sự quan tâm của các chuyên gia. Một năm
sau, năm 1977 R.L.Rivest, A.Shamir và L.M.Adleman đã đề xuất một hệ cụ thể
về mật mã khóa công khai mà độ an toàn của hệ mật dựa vào bài toán khó:
“phân tích số nguyên tố thành tích các thừa số nguyên tố”. Sau này hệ mật này
đã trở thành một hệ mật nổi tiếng và mang tên là RSA (lấy từ ba chữ cái viết tắt
tên của ba người này) và nó được sử dụng rộng rãi trong thực tiễn bảo mật và an
toàn thông tin. Cũng vào thời gian đó, M.O.Rabin cũng đề xuất một hệ mật khoá

công khai dựa trên bài toán số học khó nói trên. Liên tiếp, sau đó nhiều hệ mật
mã khoá công khai được đề xuất.

23


2.1.2 Một số bài toán cơ bản
Ta sẽ nhắc lại một số bài toán số học được sử dụng trong quá trình xây
dựng các hệ mật mã khoá công khai.
Bài toán phân tích số nguyên tố thành thừa số nguyên tố:
Cho một số nguyên dương n, tìm tất cả các ước số nguyên tố của nó, hay
a
a
a
là tìm dạng phân tích chính tắc của n  p1 1 . p 2 2 ... p k k , trong đó pi là các số

nguyên tố cùng cặp khác nhau, các ai  1 và là các số tự nhiên dương.
Bài toán này có liên quan chặt chẽ tới các bài toán thử tính nguyên tố hay
thử tính hợp số của một số nguyên, nhưng với những gì mà ta đã biết đến nay,
nó dường như khó hơn nhiều so với hai bài toán thử tính nguyên tố và hợp số.
Trong lý thuyết mật mã, bài toán này thường được sử dụng với các dữ
liệu n là số nguyên Blum, tức là các số nguyên dương có dạng tích của hai số
nguyên tố lớn nào đó.
Bài toán RSA (Rivest-Shamir-Adleman):
Cho số nguyên dương n là tích của hai số nguyên tố lẻ khác nhau, một số
nguyên dương e sao cho usc(e,  ( n))  1 (ở đây usc là viết tắt của ước số chung
lớn nhất của hai số nào đó), và một số nguyên c. Ta phải tìm một số nguyên m
e
sao cho m  c(mod n) .


Điều kiện usc(e, (n))  1 để bảo đảm cho việc với mỗi số nguyên

c {0,1,..., n  1} có đúng một số m {0,1,..., n  1} sao cho m e  c(mod n) .
Dễ dàng thấy được rằng, nếu biết hai thừa số nguyên tố của n tức là đã
biết n  p.q thì sẽ biết  ( n)  ( p  1)(q  1) , và từ đó, do usc(e, (n))  1 sẽ tìm

24


được d  e 1 mod  (n) , và do đó sẽ tìm được m  c d mod n . Như vậy, bài toán
RSA có thể quy dẫn trong thời gian đa thức về bài toán phân tích số nguyên tố.
Bài toán thặng dư bậc hai:
Ký hiệu Legendre là một khái niệm trong lý thuyết số. Nó được đặt tên
của nhà toán học Pháp Adrien-Marie Legendre và gắn với khái niệm thặng dư
bậc hai.
Ký hiệu Legendre được định nghĩa như sau: Nếu n là số nguyên tố lẻ và
a
n

a là một số tự nhiên, thì ký hiệu Legendre   là:
 0 nếu n chia hết cho a .
 1 nếu a là thặng dư bậc hai mod n - nghĩa là tồn tại số
nguyên k sao cho k 2  a(mod n) .
 -1 nếu a không là bình phương của mod n
Ký hiệu Jacobi là tổng quát hoá của ký hiệu Legendre. Nó được đặt tên
a
n

nhà toán học Carl Gustav Jakob Jacobi. Ký hiệu Jacobi   sử dụng dạng phân
tích tiêu chuẩn và nó được định nghĩa như sau: Giả sử với n  0 là số tự nhiên

a
a
a
lẻ và p1 1 . p2 2 ... p k k là dạng phân tích tiểu chuẩn của n. Với số nguyên a bất kỳ,
a1

a2

ak

a  a   a   a 
ký hiệu Jacobi        ...  trong đó tất cả các ký hiệu bên phải
 n   p1   p 2   p k 

là ký hiệu Legendre.
Khi nói về dạng phân tích tiểu chuẩn của số tự nhiên thì ta có: Với mọi
số tự nhiên lớn hơn 1 có thể viết một cách duy nhất (không kể sự sai khác về thứ
tự các thừa số) thành tích các thừa số nguyên tố dưới dạng sau:

25


×