1. Trang chủ
  2. » Luận Văn - Báo Cáo

Số học số lớn cho mật mã luận án thạc sĩ

72 354 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 72
Dung lượng 796,15 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Các hệ mã công khai như RSA thực hiện tính toán với các số nguyên lớn hàng trăm chữ số.. Độ phức tạp trong việc giải mã các hệ mã này tỉ lệ hàm mũ với độ lớn của các số nguyên tham gia v

Trang 1

ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

NGUYỄN TAM CƯỜNG

SỐ HỌC SỐ LỚN CHO MẬT MÃ

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Thái Nguyên - 2013

Trang 2

ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

NGUYỄN TAM CƯỜNG

SỐ HỌC SỐ LỚN CHO MẬT MÃ

Chuyên ngành: Khoa học máy tính

Mã số: 60.48.01

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Người hướng dẫn khoa học: PGS TSKH NGUYỄN XUÂN HUY

Thái Nguyên - 2013

Trang 3

LỜI CAM ĐOAN

Học viên xin cam đoan, toàn bộ nội dung liên quan tới đề tài được trình bày trong luận văn là bản thân học viên tự tìm hiểu và nghiên cứu, dưới sự hướng dẫn khoa học của Thầy giáo PGS TSKH Nguyễn Xuân Huy

Các tài liệu, số liệu tham khảo được trích dẫn đầy đủ nguồn gốc Học viên xin chịu trách nhiệm trước pháp luật lời cam đoan của mình

Thái Nguyên, ngày 10 tháng 10 năm 2013

Nguyễn Tam Cường

Trang 4

Học viên xin bày tỏ lòng biết ơn tới gia đình, bạn bè, đồng nghiệp và những người thân đã động viên khích lệ tinh thần và giúp đỡ để học viên hoàn thành luận văn này

Trang 5

MỤC LỤC

LỜI CAM ĐOAN i

LỜI CẢM ƠN ii

MỤC LỤC iii

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT v

MỞ ĐẦU 1

1 Lý do chọn đề tài 1

2 Đối tượng và phạm vi nghiên cứu 2

3 Hướng nghiên cứu 2

4 Những nội dung nghiên cứu chính 3

5 Phương pháp nghiên cứu 3

6 Ý nghĩa khoa học và thực tiễn cửa đề tài 3

Chương 1: CÁC KHÁI NIỆM CƠ BẢN 5

1.1 Một số khái niệm toán học [1], [2], [3], [6], [7], [12] [13] 5

1.1.1 Ước chung lớn nhất [1], [2], [7], [13] 5

1.1.2 Số nguyên tố và nguyên tố cùng nhau 7

1.1.3 Đồng dư thức [1][2][7] 9

1.1.4 Không gian Zn và Zn * [1], [2], [7] 10

1.1.5 Phần tử nghịch đảo [1], [2], [7] 10

1.1.6 Hàm Euler [1], [2], [7] 11

1.1.7 Các phép toán trong không gian modulo [7] 11

1.1.8 Độ phức tạp tính toán [1], [2] 12

1.1.9 Hàm một phía và hàm cửa sập một phía [1], [3], [6] 16

1.2 Vấn đề mã hóa [3], [6], [7], [8] 17

1.2.1 Một số khái niệm cơ bản về mã hoá 17

1.2.2 Hệ mật mã 19

1.2.3 Những tính năng của hệ mật mã 19

Trang 6

1.3 Giới thiệu về hệ mã khoá công khai 20

1.3.1 Hệ mật mã công khai RSA (Rivest-Shamir-Adleman) 22

1.3.2 Cơ chế hoạt động của RSA [1], [3], [6], [7], [8] 23

1.3.3 Khả năng bị tấn công của hệ mật mã công khai RSA [1], [2], [6], [7] 26

Chương 2: THƯ VIỆN TÍNH TOÁN SỐ LỚN 29

2.1 Biểu diễn số lớn [2], [4] 29

2.2 Các phép toán trên số lớn 33

2.2.1 So sánh hai số [2], [4] 33

2.2.2 Cộng hai số lớn không âm [2], [4], [5] 36

2.2.3 Trừ hai số lớn không âm [2], [4], [5], [9] 40

2.2.4 Phép nhân hai số lớn không âm [2], [4], [5], [9] 43

2.2.5 Phép chia hai số lớn không âm [2], [4], [5], [9] 45

2.2.6 Lũy thừa [2], [4], [5], [11] 47

2.2.7 Ước chung lớn nhất [1], [2], [6], [7] 49

2.2.8 Phép cộng theo modulo p [1], [2], [6], [7] 49

2.2.9 Phép nhân theo modulo p [1], [2], [6], [7] 50

2.2.10 Phép cộng có dấu [1], [2], [4], [6] 51

2.2.11 Phép trừ có dấu [1], [2], [4], [6] 52

2.3.12 Phép nhân có dấu [1], [2], [4], [6] 52

2.3.13 Phép chia có dấu [1], [2], [4], [6] 52

Chương 3: ỨNG DỤNG THƯ VIỆN SỐ LỚN CHO HỆ MẬT MÃ RSA 53

3.1 Phân tích các phép xử lý toán học trong hệ mật mã RSA 53

3.2 Xây dựng hệ mật mã RSA thử nghiệm [1], [2], [4], [6], [7], [8] 53

3.3 Đánh giá kết quả thực nghiệm và kết luận 63

3.3.1 Đánh giá và kết quả thực nghiệm 63

3.3.2 Kết luận 64

TÀI LIỆU THAM KHẢO 65

Trang 7

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT

CRT Chinese Remainder Theorem

DES Data Encryption Standard

RSA Rivest Shamir Adleman

GCD Great Comon Divisor

FFT Fast Fourier Transform

Hàm Euler

gcd(a,b) Ƣớc chung lớn nhất của hai số a và b

Phép tính nhân

Trang 8

MỞ ĐẦU

1 Lý do chọn đề tài

Mật mã học là một trong những vấn đề quan trọng trong lĩnh vực bảo mật và

an toàn thông tin Trên thế giới, mật mã học đã được ra đời từ thời La Mã cổ đại và ngày càng được nghiên cứu, phát triển đạt được những thành tựu to lớn Trong mật

mã học, vấn đề bảo mật luôn đi đôi với vấn đề xác thực thông tin, đặc biệt trong hệ thống mã hóa khóa công khai vấn đề xác thực là vô cùng quan trọng

Các hệ mã công khai như RSA thực hiện tính toán với các số nguyên lớn hàng trăm chữ số Độ phức tạp trong việc giải mã các hệ mã này tỉ lệ hàm mũ với độ lớn của các số nguyên tham gia vào việc tạo khóa mã hóa và khóa công khai Do đó để hệ mã an toàn, cần tăng kích thước của các số nguyên

Độ an toàn của hệ thống RSA dựa trên 2 vấn đề của toán học: bài toán phân tích ra thừa số nguyên tố các số nguyên lớn và bài toán RSA Nếu 2 bài toán trên là khó (không tìm được thuật toán hiệu quả để giải chúng) thì không thể thực hiện được việc phá mã toàn bộ đối với RSA

Mặt khác, khi kích thước của các số nguyên cần xử lý lớn thì thời gian xử

lý của chương trình mã hóa cũng tăng lên

Thông tin cần mã hóa ngày càng đa dạng và có khối lượng lớn, đòi hỏi hệ

mã giảm thiểu thời gian xử lý

Các công cụ và giải thuật nhằm bẻ khóa các hệ mật mã được cải tiến đòi hỏi hệ mã cần được nâng cấp tính bảo mật

Tuy nhiên, việc nghiên cứu và triển khai các nâng cấp trong việc tối ưu hóa về mặt thuật toán trong các phép xử lý số học của các hệ mã còn hạn chế trong phạm vi các chương trình độc quyền

Để hỗ trợ giải quyết các vấn đề trên, đề tài này tập trung vào việc xây dựng một số thuật toán tối ưu hóa nhằm tăng hiệu quả các phép tính toán thực hiện với số nguyên lớn

Trang 9

Các kết quả của đề tài sẽ được ứng dụng trong việc hỗ trợ cho các phép

xử lý số học của các hệ mã Từ đó làm tăng tốc độ xử lý và tính bảo mật của các

hệ mã

Từ tính cấp thiết của vấn đề tối ưu hóa các hệ mã công khai, đồng thời được sự hướng dẫn và gợi ý của Thầy giáo PGS.TSKH Nguyễn Xuân Huy, học viên đã chọn đề tài cho luận văn tốt nghiệp Cao học ngành khoa học máy tính là:

“SỐ HỌC SỐ LỚN CHO MẬT MÔ

2 Đối tượng và phạm vi nghiên cứu

a Đối tượng của đề tài

- Độ phức tạp tính toán

- Cơ sở lý thuyết của số học: các phép toán trên số nguyên kích thước lớn: Cộng, trừ, nhân, chia, số dư, số nguyên tố, ước chung lớn nhất,

- Tổ chức dữ liệu cho các số nguyên kích thước lớn

- Các thuật toán của số học số nguyên: sơ đồ hoạt động, độ phức tạp

b Phạm vi nghiên cứu

Đề tài thực hiện việc tối ưu hóa các phép toán với số nguyên lớn theo tiếp cận hướng đối tượng

Ứng dụng thử nghiệm trong một hệ mã nhằm so sánh hiệu năng xử lý của

hệ mã trước và sau khi tối ưu

Đề tài giới hạn trong phạm vi nghiên cứu để đưa ra giải pháp, việc triển khai ứng dụng thực tiễn cần có thêm các điều kiện về thời gian và quy mô

Trang 10

- Phát hiện các giải thuật tính toán cần tối ưu hóa

- Đưa ra giải pháp tối ưu hóa các giải thuật này

- Ứng dụng trong một hệ mã RSA

- Đối sánh với kết quả thực thi của hệ mã khi chưa thực hiện tối ưu hóa

4 Những nội dung nghiên cứu chính

- Đề tài luận văn thuộc lĩnh vực lý thuyết thuật toán xử lí các số nguyên lớn dài hàng trăm chữ số và ứng dụng trong mật mã, cụ thể là khảo sát cách tổ chức dữ liệu và các thuật toán số học số lớn

- Học viên tìm hiểu tổng quan về lớp các số Big Numbers, các thuật toán mật mã RSA, khảo sát tính nguyên tố theo Miller-Rabin

- Lập trình và kiểm thử, đối sánh với các sơ đồ hiện có

5 Phương pháp nghiên cứu

- Thu thập và phân tích các tài liệu và thông tin liên quan đến đề tài

- Nghiên cứu dựa trên việc tìm hiểu các giải thuật xử lý với số nguyên lớn của các hệ mã Cụ thể là hệ mã hóa RSA, từ kết quả nghiên cứu có được sẽ định hướng lựa chọn thuật toán nào cần tối ưu hóa

- Thực hiện việc tối ưu hóa các giải thuật bằng cách tối ưu các phép xử lý với số học lớn Thao tác này sử dụng kết hợp các phương pháp tính toán với số học với phương pháp chia để trị nhằm tăng hiệu năng của từng bước xử lý

- Kết hợp các nghiên cứu trước đây của các tác giả trong và ngoài nước cùng với sự chỉ bảo, góp ý của giáo viên hướng dẫn để hoàn thành nội dung nghiên cứu

- Thực nghiệm cài đặt ứng dụng để minh họa các vấn đề trình bày trong

đề tài

6 Ý nghĩa khoa học và thực tiễn cửa đề tài

* Ý nghĩa khoa học:

- Trình bày các kiến thức toán học cơ bản, lý thuyết độ phức tạp của

thuật toán, các thuật toán thường dùng trong các hệ mật mã khoá công khai

Trang 11

- Trình bày các phương pháp mật mã gồm: phương pháp mã hoá khóa bí mật và phương pháp mã hoá khóa công khai Với phương pháp mã hóa khóa công khai thì tập trung vào các thuật toán mã hóa RSA Với phương pháp mã hóa khóa bí mật chỉ giới thiệu sơ lược để so sánh với phương pháp mã hóa khóa

Trang 12

Chương 1 CÁC KHÁI NIỆM CƠ BẢN 1.1 Một số khái niệm toán học [1], [2], [3], [6], [7], [12] [13]

bằng giá trị tuyệt đối của số khác không

Ước chung lớn nhất của hai số a và b được ký hiệu là ƯCLN(a, b) hoặc gcd(a, b)

Thí dụ: gcd(12, 18) = 6; gcd(−4, 14) = 2; gcd(5, 0) = 5

Các tính chất của ước chung lớn nhất:

Mọi ước chung của a và b là ước của gcd(a, b)

gcd(a, b) với a và b khác 0, có thể định nghĩa tương đương như số nguyên dương d nhỏ nhất có dạng d = a p + b q trong đó p và q là các số nguyên

dương

gcd(a, 0) = , với mọi a ≠ 0, vì mọi số khác không bất kỳ là ước của 0,

và ước lớn nhất của a là

Nếu a là ước của tích b c, và gcd(a, b) = d, thì a/d là ước của c

Nếu m là số nguyên dương, thì gcd(m·a, m·b) = m·gcd(a, b)

Nếu m là số nguyên bất kỳ , thì gcd(a + m·b, b) = gcd(a, b)

Nếu m ước chung (khác 0) của a và b, thì gcd(a/m, b/m) = gcd(a, b)/m gcd là hàm giao hoán: gcd(a, b) = gcd(b, a)

Trang 13

gcd là hàm kết hợp: gcd(a, gcd(b, c)) = gcd(gcd(a, b), c)

gcd của ba số a, b, c tính được nhờ công thức gcd(a, b, c) = gcd(gcd(a, b) , c)

Cách tính ước chung lớn nhất:

Muốn tìm ước chung lớn nhất của hai số ta thực hiện các bước như sau:

 Bước 1: Phân tích mỗi thừa số ra thừa số nguyên tố

 Bước 2: Chọn ra các thừa số nguyên tố chung

 Bước 3: Lập tích các thừa số chọn, mỗi thừa số lấy với số mũ nhỏ nhất của nó tích đó là ƯCLN phải tìm

Thí dụ: tìm gcd (18, 84)

Bước 1: 18 = 2 32

; 84 = 223 7 Bước 2: thừa số chung: 2; 3

Bước 3: tính tính 2 3 = 6  gcd(18, 84) = 6

Việc tìm ƯCLN bằng cách phân tích ra thừa số nguyên tố trong thực tế chỉ áp dụng cho các số nhỏ; việc phân tích các số lớn ra thừa số nguyên tố mất rất nhiều thời gian

Một phương phát hiệu quả là giải thuật Euclid Giải thuật này đã được biết đến từ khoảng năm 300 trước Công Nguyên Nhà toán học Hy Lạp cổ

Euclid đã viết giải thuật này trong cuốn sách toán nổi tiếng Elements

đó, gcd(91, 287) = gcd(91, 14) Bài toán trở thành tìm gcd(91, 14) Lặp lại quy trình trên cho đến khi phép chia không còn số dư như sau:

91 = 14 6 + 7 (14 và 7 sẽ được dùng cho vòng lặp kế)

Trang 14

Ta thấy rằng, để kiểm tra tính nguyên tố của một số nguyên bằng phương pháp Monte Carlo (thuật toán Miller-Rabin, Soloway-Strassen) đều có tốc độ

thực hiện khá nhanh (khoảng O(n 2 ), với n là số bit của số cần kiểm tra) Tuy

nhiên, những thuật toán này không đưa ra một kết luận chính xác về tính nguyên

tố của con số, mà luôn có một xác suất sai sót Như vậy để có một sai số cực nhỏ chấp nhận được, ta phải thực hiện thuật toán kiểm tra nhiều lần Vậy thì, với khoảng bao nhiêu số nguyên dương ngẫu nhiên (có chiều dài xác định) thì có thể

tìm ra được một số nguyên tố Theo lý thuyết thì số các số nguyên tố nhỏ hơn N là: N/

Giả sử ta chọn p là số nguyên có chiều dài 512-bits, thì xác suất để số p

nguyên tố là 1/354 Mặt khác, do chúng ta chỉ quan tâm đến những số lẻ, nên

xác suất để p nguyên tố là 2/354 = 1/177 Vậy thì, trung bình khoảng 177 số lẻ

ngẫu nhiên sẽ có 1 số nguyên tố

Người ta đã cũng chứng minh được, thuật toán Miller-Rabin dùng kiểm tra tính nguyên tố của một số nguyên dương lẻ với sai số nhiều nhất là 1/4 Nếu

thực hiện thuật toán này t lần thì sai số nhiều nhất sẽ là 1/4t, để đảm bảo chắc

Trang 15

chắn tính nguyên tố cho số kiểm tra nên chọn số t > 20 Thuật toán này đƣợc sử

dụng trong quá trình tạo khóa ở hệ mật mã RSA

Thuật toán Miller-Rabin: Kiểm tra tính nguyên tố của một số dạng 2k

Thuật toán: Kiểm tra tính nguyên tố của một số dạng 2k

m+1 với t lần thực hiện (t > 20)

Trang 16

if (b = 1) continue; /* quay lại bước

Trong toán học, các số nguyên a và b được gọi là nguyên tố cùng nhau

nếu chúng có ước số chung lớn nhất là 1 Ký hiệu gcd (a, b) = 1

Thí dụ: 6 và 35 là hai nguyên tố cùng nhau

1.1.3 Đồng dư thức [1][2][7]

- Cho a và b là các số nguyên n là số nguyên dương Khi đó a được gọi là đồng dư với b theo modulo n, ký hiệu là a b (mod n), nếu a, b chia cho n có cùng số dư n được gọi là modulo của đồng dư

Tính đối xứng: Nếu a b mod n thì b a mod n

Tính giao hoán: Nếu a b mod n và b c mod n thì a c mod n

Trang 17

Nếu a a1 mod n, b b1 mod n thì a + b (a1 + b1) mod n và a b (a1 b1) mod n

số nguyên a là đồng dư theo modulo n với duy nhất một số nguyên trong khoảng

từ 0 đến n 1 và được gọi là thặng dư nhỏ nhất của a theo modulo n Cũng vì vậy, a và r cùng thuộc một lớp tương đương Do đó r có thể đơn giản được

sử dụng để thể hiện lớp tương đương

1.1.4 Không gian Z n và Z n * [1], [2], [7]

Không gian Zn (các số nguyên theo modulo n)

Không gian các số nguyên theo modulo n: Zn là tập hợp các số nguyên không âm nhỏ hơn n Tức là Zn ={0, 1, 2, … n 1} Tất cả các phép toán trong

Zn đều được thực hiện theo modulo n

Định nghĩa: Cho a Zn Nghịch đảo của a theo modulo n là số

nguyên x Zn sao cho a x 1(mod n) Nếu x tồn tại thì đó là giá trị duy nhất, và

a được gọi là khả nghịch

Trang 18

Nghịch đảo của a ký hiệu là a 1

Tính chất:

Cho a, b Zn Phép chia a cho b theo modulo n là tích của a và b theo modulo n, và chỉ được xác định khi b có nghịch đảo theo modulo n

Cho a Zn, a là khả nghịch khi và chỉ khi gcd (a, n) = 1

Giả sử d = gcd (a, n) Phương trình đồng dư a x = b mod n có nghiệm x nếu và chỉ nếu d chia hết cho b, trong trường hợp các nghiệm d nằm trong khoảng 0 đến n – 1 thì các nghiệm đồng dư theo modulo n/d

Thí dụ: 4 1 = 7 (mod 9) vì 4 7 1 (mod 9)

1.1.6 Hàm Euler [1], [2], [7]

Định nghĩa: Cho n 1 (n) được định nghĩa là các số nguyên trong khoảng

từ [1; n] nguyên tố cùng nhau với n Hàm được gọi là hàm phi Euler

1 1

n

p

1 1

1.1.7 Các phép toán trong không gian modulo [7]

Cho n là số nguyên dương Như trước, các phần tử trong Zn là tập các số

nguyên {0, 1, 2,…, n 1} Nhận xét rằng: nếu a, b Zn thì:

n b a if n b a

n b a if b a

=

n mod b)

+

(a

Vì vậy, phép cộng modulo (và phép trừ modulo) có thể được thực hiện mà không cần thực hiện các phép chia dài

Trang 19

Phép nhân modulo của a và b được thực hiện bằng phép nhân thông thường a với b như các số nguyên bình thường, sau đó lấy phần dư của kết quả sau khi chia cho n

Phép tính nghịch đảo trong Zn có thể được thực hiện nhờ thuật toán Euclid

mở rộng

Bài toán phát biểu như sau: Cho a Zn, hãy tìm a 1 mod n nếu có

Bước đầu, dùng thuật toán Euclid mở rộng sau để tìm các số nguyên x và

y sao cho:

a x + n y = d với d = gcd(a,n)

Nếu d > 1 thì a 1

mod n không tồn tại Ngược lại, return (x)

* Thuật toán Euclid mở rộng(N={1,2,3, ,} là tập các số nguyên dương)

1.1.8 Độ phức tạp tính toán [1], [2]

Lý thuyết thuật toán và các hàm tính được ra đời từ những năm 30 của thế

kỷ 20 đã đặt nền móng cho việc nghiên cứu các vấn đề “tính được”, “giải

Trang 20

được” trong toán học Tuy nhiên từ cái “tính được” đến việc tính toán thực tế là

một khoảng cách rất lớn Có rất nhiều vấn đề được chứng minh là có thể “tính được” nhưng không tính được trong thực tế cho dù có sự hỗ trợ của máy tính Vào những năm 1960, lý thuyết độ phức tạp tính toán được hình thành và phát triển một cách nhanh chóng, cung cấp nhiều hiểu biết sâu sắc về bản chất phức tạp của các thuật toán và các bài toán, từ những bài toán thuần túy lý thuyết đến những bài toán thường gặp trong thực tế

Thuật toán: Một hệ thống chặt chẽ và rõ ràng các chỉ thị nhằm xác định một dãy thao tác trên dữ liệu vào sao cho: Bất kể dữ liệu vào (input) như thế nào, sau một số hữu hạn bước thực hiện các thao tác đã chỉ ra, ta thu được một kết quả (output) mong muốn

Đặc trưng của thuật toán: Tính đơn nghĩa, tính dừng, tính đúng đắn, tính phổ dụng, tính khả thi

Các thức mô tả thuật toán: Ngôn ngữ tự nhiên, sơ đồ khối, mã giả

Thuật toán đơn định (deterministic): Với hai bộ dữ liệu vào giống nhau, thuật toán đơn định sẽ thi hành các mã lệnh giống nhau và cho kết quả giống nhau

Thuật toán ngẫu nhiên (randomized): Với hai bộ dữ liệu vào giống nhau, thuật toán ngẫu nhiên có thể thực hiện theo những mã lệnh khác nhau và cho kết quả khác nhau

Thuật toán và giải thuật không có sự phân biệt trong thuật ngữ tiếng Anh (Algorithm) Nhưng chúng ta có thể hiểu như sau:

 Thuật toán: Cách thức giải quyết bài toán (thuần túy trên mô hình toán học)

 Giải thuật: Thuật toán và cách thức cài đặt trên một cấu trúc dữ liệu

cụ thể

Thí dụ: Thuật toán tìm kiếm nhị phân có thể cài đặt dễ dàng trên mảng

Trang 21

nhưng không cài đặt được trong danh sách nối đơn

Đánh giá thuật toán (giải thuật) = đánh giá mô hình cài đặt thuật toán đó trên một cấu trúc dữ liệu cụ thể

Đánh giá giải thuật: Là việc tìm cách đánh giá, ước lượng nguồn tài nguyên cần phải có khi thực hiện chương trình cài đặt giải thuật đó

Tài nguyên: thời gian, bộ nhớ, số lượng bộ vi xử lý, tốc độ đường truyền mạng…

Đánh giá chương trình Đánh giá giải thuật

Thực hiện sau khi cài đặt chương trình

trên một máy cụ thể

Thực hiện trước khi viết chương trình

Thử chạy với một vài bộ dữ liệu cụ thể,

đo thời gian thực hiện, lượng bộ nhớ

chiếm dụng trong trường hợp cụ thể

Nhằm xác định tính khả thi của giải thuật, chọn thuật toán tốt nhất để cài đặt

Có nhiều chỉ tiêu để đánh giá giải thuật nhưng phổ biến nhất là đánh giá

thời gian thực hiện giải thuật

Phân tích thời gian thực hiện giải thuật:

 Dữ liệu càng lớn thời gian sử lý càng chậm

 Dữ liệu kích thước n thời gian thực hiện T(n) là một hàm xác

- Bài toán người bán hàng cần thăm N địa điểm

Trong các dữ liệu vào cùng một cỡ (N), thời gian chạy của thuật toán cũng

thay đổi:

Trang 22

Thí dụ: Tìm xem một đối tượng có trong danh sách N phần tử hay không ?

- Đối tượng nằm ở đầu danh sách

- Đối tượng nằm ở giữa danh sách

- Đối tượng nằm ở cuối danh sách

Biểu diễn thời gian chạy bởi kí hiệu O

Định nghĩa: Giả sử f(n) và g(n) là các hàm thực không âm của đối số nguyên không âm n Ta nói „f(n) là Big O g(n)‟ và viết là: f(n) = O(g(n)) nếu tồn tại các hằng số dương c*

và n0 sao cho f(n) ≤ c*g(n) với mọi n ≥ n0

Bảng kí hiệu thời gian chạy:

Kí hiệu O lớn Tên gọi

Trang 23

Thời gian chạy của các lệnh

 Lệnh lặp: for, while, do – while

Thí dụ: với X(n) số vòng lặp Điều kiện lặp

Thời gian thực hiện vòng lặp thứ i

1.1.9 Hàm một phía và hàm cửa sập một phía [1], [3], [6]

Hàm một phía:

Một hàm một phía là hàm mà dễ dàng tính toán ra quan hệ một chiều nhưng rất khó để tính ngược lại Ví như: Biết giả thiết x thì có thể dễ dàng tính ra f(x), nhưng nếu biết f(x) thì rất khó tính ra được x Trong trường hợp này “khó” có nghĩa

là để tính ra được kết quả thì phải mất rất nhiều thời gian để tính toán

Thí dụ: Phân tích ra thừa số Tính p q = n là dễ nhưng nếu biết n tìm p và

Trang 24

nhưng tính ngược x = f 1

(y) thì khó tuy nhiên nếu có “cửa sập” thì vấn đề tính

ngược trở nên dễ dàng Cửa sập ở đây là một điều kiện nào đó giúp chúng ta dễ dàng tính ngược

Thí dụ:

y = f (x) = xb mod n tính xuôi thì dễ nhưng tính ngược x = ya mod n thì khó

vì phải biết a với a b 1 (mod ( (n)) trong đó (n) = (p 1)(q 1) Nhưng nếu biết cửa sập p, q thì việc tính n = p q và tính a trở nên dễ dàng

Hộp thư là một thí dụ khác về hàm một phía có cửa sập Bất kỳ ai cũng có thể bỏ thư vào thùng Bỏ thư vào thùng là một hành động công cộng Mở thùng thư không phải là hành động công cộng Nó là khó khăn, bạn sẽ cần đến mỏ hàn

để phá hoặc những công cụ khác Tuy nhiên, nếu bạn có “cửa sập” (trong trường hợp này là chìa khóa của hòm thư) thì công việc mở hòm thư thật dễ dàng

1.2 Vấn đề mã hóa [3], [6], [7], [8]

1.2.1 Một số khái niệm cơ bản về mã hoá

Lịch sử của mật mã học đã có từ rất sớm, ban đầu con người cố gắng tìm một cách để bảo vệ thông tin, tránh việc thông tin bị giải mã khi người khác có được chúng Các cách áp dụng đó thường mang tính mẹo mực đơn giản và có thể dễ dàng bị giải mã nếu thông tin về cách thức che giấu bị lộ hoặc bị suy đoán Mật mã học ban đầu được áp dụng nhiều trong lĩnh vực quân đội Các phương pháp mã hóa cổ điển đã được áp dụng như Caesar, Playfair,

Các hệ mật mã cổ điển được sử dụng nhiều nhưng dần dần chúng bộc lộ một hạn chế lớn Do các cách mã hóa đều dựa trên phương pháp mã khóa bí mật, khi gửi bản mã đi thì cần phải gửi kèm theo cả cách giải mã Bên cạnh đó, nếu cách mã hóa là quen thuộc hoặc đơn giản thì người có được thông tin đã bị

mã hóa có thể tiến hành các cách để dò ra luật mã hóa để có được văn bản gốc

Ngày nay cũng với sự trợ giúp của máy tính điện tử, các phương pháp mã hóa với khóa bí mật được sử dụng chung cho quá trình mã hóa và giải mã (hay còn gọi là mã hóa cổ điển) có thể dễ dàng bị giải mã

Trang 25

Sự cần thiết phải có các phương pháp mã hóa an toàn hơn đã được đáp ứng bằng việc áp dụng các kết quả nghiên cứu của toán học Sự thay đổi về phương pháp mã hóa cũng như độ an toàn của các hệ mã mới đã đưa lịch sử của mật mã học sang trang mới Các hệ mật mã với khóa mã đối xứng đã góp phần

to lớn trong việc củng cố vai trò của mật mã học trong các ứng dụng của con người Đưa mật mã đến với cả các ứng dụng trong cuộc sống đời thường của con người, mật mã không còn chỉ được nhắc đến nhiều trong lĩnh vực quân sự Ứng của mật mã học đã trở thành một công cụ cần thiết cho mọi người, cần thiết cho các hoạt động thường ngày

Các phương pháp mã hóa khác nhau có những ưu, nhược điểm khác nhau Khi sử dụng các phương pháp mã hóa, người dùng sẽ cân nhắc để lựa chọn phương pháp mã hóa thích hợp nhất đối với mình Có thể lựa chọn môi trường cần phải an toàn tuyệt đối bất kể thời gian và chi phí hoặc lựa chọn môi trường lại cần giải pháp dung hòa giữa bảo mật và chi phí

Các mô hình mã hóa có chung một số thuật ngữ như sau:

Bản rõ: Là nội dung của thông điệp cần gửi đi và cần được bảo vệ an toàn

Nó có thể là xâu các bít, các file văn bản, các file có cấu trúc

Mã hoá: Là quá trình xử lý thông điệp cần bảo mật trước khi gửi đi

Bản mã: Là kết quả thu được khi mã hóa bản rõ theo qui trình mã hóa của phương pháp đang được chọn

Giải mã: Là quá trình xử lý ngược, tiến hành giải mã bản mã để thu lại bản rõ Ví dụ: Mã hóa văn bản có nội dung là “ABC” với luật mã là tịnh tiến vòng 1 đơn vị đối với mã ASCII của mỗi kí tự

Vậy ta có:

Bản rõ: “ABC”

Mã hóa: Thực hiện mã hóa theo luật mã

Biến đổi các kí tự thành các số theo mã ASCII của kí tự đó

Trang 26

A 65, B 66, C 67 Thu được các mã mới sau khi tịnh tiến là: 66 67 68 Biến đổi các mã mới thành kí tự

Chúng ta đã biết một thông báo thường được xem là bản rõ Người gửi sẽ

có nhiệm vụ mã hóa bản rõ đó, kết quả thu được gọi là bản mã Và bản mã này

sẽ được gửi đi trên đường truyền tới người nhận Người nhận giải mã bản mã để tìm hiểu nội dung của bản rõ

Với mỗi k K, có một hàm lập mã ek E, ek: P  C , và một hàm giải

Trang 27

1.3 Giới thiệu về hệ mã khoá công khai

Vào năm 1976, các nhà khoa học Whitfield Diffie, Martin Hellman và Ralph Merkle tại Đại học Stanford giới thiệu ý tưởng về hệ thống mật mã khóa công khai, có thể khắc phục các nhược điểm của phương pháp mật mã khoá đối xứng Các phương pháp Diffie-Hellman của Martin Hellman và Whitfield Diffie được công bố Năm 1977 nhóm tác giả Ronald Rivest, Adi Shamir và Leonard Adleman đã công bố phương pháp RSA, phương pháp mã hóa khóa công khai RSA hiện được sử dụng rất nhiều trong các ứng dụng mã hóa và bảo mật thông tin RSA nhanh chóng trở thành chuẩn mã hóa khóa công khai trên toàn thế giới

do tính an toàn và khả năng ứng dụng của nó

Độ an toàn của hệ thống mật mã mới này, không phải được đo bằng độ phức tạp của các thuật toán mã hóa, mà nó dựa vào một khám phá mới vô cùng quan trọng trong ngành khoa học máy tính, đó là lý thuyết độ phức tạp tính toán: Chủ yếu đề cập đến sự phân tích các thuật toán và đặc biệt là số các bước tính toán cần thiết để phát hiện khóa bí mật Từ đó xác định độ an toàn của bất

kỳ hệ mật mã khóa công khai nào

Một hệ thống mật mã khóa công khai sử dụng hai loại khóa trong cùng một cặp khóa: Khoá công khai (public key) được công bố rộng rãi và sử dụng trong mã hóa thông tin, khóa riêng (private key) sử dụng để giải mã thông tin đã được mã hóa bằng khóa công khai Các phương pháp mã hóa này khai thác

Trang 28

những ánh xạ f mà việc thực hiện ánh xạ ngược f1

rất khó so với việc thực hiện

ánh xạ f Chỉ khi biết được khóa riêng thì mới có thể thực hiện được ánh xạ f1

Các quan điểm của hệ mã công khai:

+ Hệ mật mã khoá công khai dựa trên quan điểm hàm một chiều (one-way function) và khoá công khai, để biến đổi một bản rõ thành bản mã với thời gian tính toán hợp lý Nhưng nếu muốn tính ngược lại (inverse function) thì phải mất nhiều thời gian và khó thực hiện được Vì vậy, các thám mã rất khó có thể tính toán để thu được bản rõ từ bản mã chặn được

+ Một quan điểm khác dùng trong hệ mật mã khoá công khai, là thông tin

“cửa sập” mà hàm một chiều phải có Thông tin bí mật (khoá riêng) chỉ được đưa vào bởi người sở hữu cặp khóa Khi có được thông tin “cửa sập” thì công việc giải mã sẽ trở nên dễ dàng

Các hệ mật mã khóa công khai được xây dựng dựa trên những bài toán khó

như: bài toán logarithm rời rạc trong trường hữu hạn Zp (hệ ElGamal) và bài toán phân tích một số nguyên lớn ra các thừa số nguyên tố (hệ RSA)

Hoạt động của hệ mã khoá công khai:

+ Đối với hệ thống mã hóa khóa công khai: Mỗi người sử dụng phải tạo riêng cho mình một cặp khóa Trong đó, một khóa công khai (public key) cùng với thuật toán mã hóa E, được công bố rộng rãi tại thư mục dùng chung cho mọi người sử dụng Còn lại là khóa riêng (private key) cùng với thuật toán giải mã D được giữ bí mật bởi người sử dụng

Như vậy, người A muốn gửi thông điệp R đến cho người B

Giả sử: Khóa công khai của B là: KB, Khóa riêng của B là: MB Khóa công khai của A là: KA, Khóa riêng của A là: MA Thuật toán mã hóa: E, thuật toán giải mã: D

Người A tìm khóa công khai KB của người B trong thư mục dùng chung

và tính C = E(KB, R), sau đó gửi bản mã C cho người B Khi nhận bản mã C

người B sẽ giải mã dựa vào khóa riêng MB của mình để tính R = D(MB, C)

Trang 29

Các yêu cầu của hệ mã khoá công khai:

+ Dễ tính toán đối với các thành viên khi muốn tạo một cặp khóa (khóa công khai và khóa riêng)

+ Người gửi dễ tính toán khi biết khóa công khai và thông điệp R cần mã hoá thành một bản mã tương ứng C = E(KB,R)

+ Người nhận dễ tính toán khi sử dụng khóa riêng để giải mã bản mã C, khôi phục lại thông điệp ban đầu: R = D(MB, C)

+ Đối với người thám mã, khi biết được khóa công khai KB, muốn xác định khóa bí mật MB hoặc biết được khóa công khai KB và bản mã C để khôi phục lại thông điệp R ban đầu: Điều này không thể tính toán nổi

1.3.1 Hệ mật mã công khai RSA (Rivest-Shamir-Adleman)

Hệ mật RSA được xây dựng năm 1978 bởi ba tác giả R.L.Rivest,

A.Shamir và L.Adleman Hệ mật RSA được thiết kế làm việc trên trường số ZN, dựa trên cơ sở độ khó giải của bài toán phân tích số nguyên N lớn thành các

thừa số nguyên tố p và q khác nhau

Bài toán 1.3.1.1: (Bài toán phân tích số nguyên):

Cho một số nguyên dương N, tìm các thừa số nguyên tố pi của N để N =

p1e1 p2e2… pkek, với pi là những số nguyên tố phân biệt và ei 1 là các số

nguyên (với i = 1 ;… ;k)

Thí dụ: với N = 6936, ta có N = 23.3.172 Bài toán này khó giải khi

N là một số nguyên lớn, có nhiều thuật toán để giải bài toán này Nhưng hiện

nay vẫn chưa có thuật toán nào hiệu quả để phân tích số nguyên N có khoảng

trên 200 chữ số thập phân

Bài toán 1.3.1.2: (Bài toán RSA):

Cho số nguyên dương N, N = p q với p và q là các số nguyên tố phân biệt,

số nguyên e sao cho thỏa mãn gcd(e, (p - 1) (q - 1)) = 1, và số nguyên c Tìm một số nguyên m sao cho me

= c (mod N)

Trang 30

Bài toán RSA cũng có độ khó tương tự như bài toán phân tích số nguyên,

nhưng nó dễ dàng được giải nếu như biết được hai số nguyên tố p và q

1.3.2 Cơ chế hoạt động của RSA [1], [3], [6], [7], [8]

a, Định nghĩa các tập làm việc của RSA

Tạo hai số nguyên tố phân biệt p và q lớn, sao cho bài toán phân tích thật

sự là khó giải (kích cỡ mỗi số khoảng 512 bits ^ 1024 bits)

Tính N = p q và (N) = (p 1) (q 1)

Chọn một số nguyên ngẫu nhiên e sao cho 1<e< (N) và gcd(e, (N))= 1

Sử dụng thuật toán Euclid mở rộng, để tính số nguyên d duy nhất, sao cho 0 < d < (N) và e d = 1 mod (N) (d là nghịch đảo của e modulo N)

Hai số (e, N) là khóa công khai, còn (d, N) được giữ bí mật làm khóa r riêng Các số nguyên tố p, q sẽ bị xóa khi kết thúc quá trình tạo khóa

- Mã hoá:

Giả sử để gửi thông điệp M cho người B Người A thực hiện như sau:

Lấy khoá công khai của người nhận B: (e, N)

Biển đổi thông điệp M thành những số nguyên Mi tương ứng sao cho

Mi < N, (i=1;…;k) Theo phép biến đổi sau:

+1 Biến đổi các ký tự trong thông điệp M thành các số nguyên tương ứng, thí dụ theo qui tắc: Dấu các 00, A 01, B 02,…, Z 26

+2 Chia thông điệp vừa biến đổi thành k nhóm có chiều dài bằng nhau, mỗi nhóm biểu diễn một số nguyên Mi {0, 1, …, N 1} (với 1 k)

Thực hiện mã hoá lần lượt cho từng số Mi Ci bằng cách:

Trang 31

Ci = Ek e(Mi) = Mie (mod N)

Tập các số nguyên {C1, C2,,…,Ck} là bản mã để gửi đến người nhận B

- Giải mã:

Người nhận B thực hiện các bước sau:

Thực hiện giải mã lần lượt từng số nguyên Ci ^ Mi bằng cách:

Mi = D(Ci) = Cid (mod N) với 0 < Mi < N, (d là khoá bí mật của B)

Thực hiện phép biến đổi ngược lại từ các số Mi thành các chuỗi ký tự

tương ứng để khôi phục lại nội dung thông điệp M ban đầu

Bảng 1.3.2: Tóm tắt các bước tạo khoá, mã hoá, giải mã của Hệ RSA Tạo khoá: Tạo 2 số nguyên tố lớn p và q

Tính N = p q và Tính (N) = (p 1) (q 1)

Chọn 1< e < (N): gcd( (N),e) = 1

Tính d = e 1 mod (N) (dùng thuật toán Euclid mở rộng)

Khóa công khai: (e, N) Khóa riêng: (d,N)

Khôi phục lại khối bản rõ (số nguyên) M ban đầu

c, Tính đúng của quá trình giải mã

Từ: e d =1mod φ(N) φ(N) | (e d 1)

(p q) | (e d 1) (p) (q) | (e d 1) (do p, q là các số nguyên tố)

Trang 32

Từ (1) k Z: e d – 1 = k (p) = k (p 1) (p là số nguyên tố) (3) Xét trường hợp tổng quát với mọi số M Zn, khi nâng lỹ thừa e d ta có:

Me d = M(e d 1) +1 (mod p)

Từ (3) và (4) Me d

Vì p là số nguyên tố, vậy bất kỳ số M ZN có hai trường hợp:

M nguyên tố cùng nhau với p (nghĩa là gcd(M, p) = 1) hoặc M là bội số

của p (nghĩa là gcd(M, p) = p)

Trường hợp 1: gcd (M, p) = 1

Vậy Mp 1

1 (mod p) (định lý Fermat) Từ: (5) Me d

= (1)k M (mod p)

Trường hợp 2: Nếu gcd(M, p) = p M 0 (mod p) Đồng thời lũy thừa

số M lên một số nguyên bất kỳ, thì cũng chia hết cho p Nghĩa là Me d

= 0 (mod p

) Vậy trường hợp 2 cũng thỏa mãn phương trình (6)

Với cách tính tương tự với q, từ (2) Me d

Từ (6) & (7) Me d

= M (mod p q) = M (mod N)

- Thí dụ minh hoạ hệ mật mã RSA:

+ 1 Tạo khoá: Chọn p và q là số nguyên tố nhỏ với mục đích minh hoạ

Chọn hai số nguyên tố p = 59, q = 83;

Tính N = p q = 59 83 = 4897;

Tính φ(N) = (p 1) (q 1) = (59 1) (8 3 1) = 4756;

Chọn e = 47, thoả mãn gcd(e, φ(N)) = gcd(47,4756) = 1

Tìm phần tử nghịch đảo d = 2631 (dùng thuật toán Euclid mở rộng)

Công bố khoá công khai là (e = 47, N = 4897), còn d = 2631 được giữ làm

khoá riêng

Trang 33

+ 2 Mã hoá: Giả sử có nội dung cần mã hoá là M = “HAI PHONG”

Biến đổi các ký tự của thông điệp thành các sô tương ứng như sau:

Mã hoá đầu tiên M1 = (08)47 (mod 4897) =3649

Tiếp tục tính các C2 ; … ; C4 theo các tính (8) ta có kết quả Ci

1.3.3 Khả năng bị tấn công của hệ mật mã công khai RSA [1], [2], [6], [7]

Bất cứ ai cũng có thể tạo ra một hệ thống thông tin mã hóa cho riêng mình Nhưng để có một hệ thống an toàn và hiệu quả đòi hỏi người thiết kế phải có

Trang 34

kiến thức toán học sâu sắc, có kinh nghiệm về bảo mật và am hiểu các phương pháp tấn công

Brute-force attack:

Phương pháp tấn công bằng cách thử tất cả những chìa khóa có thể có Đây là phương pháp tấn công thô sơ nhất và cũng khó khăn nhất Theo lý thuyết, tất cả các thuật toán mã hóa hiện đại đều có thể bị đánh bại bởi brute-force nhưng trong thực tiễn việc này chỉ có thể thực hiện được trong thời gian hàng triệu, thậm chí hàng tỉ năm Vì thế có thể coi một thuật toán mã hóa là an toàn nếu như không còn cách nào khác để tấn công nó dễ hơn là brute-force

Frequency analysis:

Thống kê tần suất, chỉ có thể áp dụng được đối với các thuật toán cổ điển dùng phương pháp thay thế, ví dụ phương pháp Caesar Để thực hiện phương pháp này ta cần một lượng văn bản đã mã hóa đủ lớn để phép thống kê được chính xác Ngoài ra còn phải biết ngôn ngữ sử dụng trong văn bản ban đầu, nếu văn bản ban đầu là tiếng Anh thì nhiều khả năng kí tự xuất hiện nhiều nhất trong văn bản đã mã hóa là do chữ e mã hóa thành

Differential cryptanalysis:

Phương pháp này do Eli Biham và Adi Shamir tìm ra vào khoảng cuối những năm 1980, nó thường được sử dụng để tấn công các thuật toán khối (block cipher) Phương pháp này dựa trên việc phân tích những biến đổi của hai văn bản gốc có liên quan khi được mã hóa bởi cùng một chìa

Tấn công dựa trên thời gian:

Năm 1995, Paul Kocher mô tả một dạng tấn công mới lên RSA: Khi kẻ tấn công nắm đủ thông tin về phần cứng thực hiện mã hóa và xác định được thời gian giải mã đối với một số bản mã lựa chọn thì có thể nhanh chóng tìm

ra khóa d Dạng tấn công này có thể áp dụng đối với hệ thống chữ ký điện tử

sử dụng RSA

Trang 35

Tấn công lựa chọn thích nghi bản mã:

Năm 1981, Daniel Bleichenbacher mô tả dạng tấn công lựa chọn thích nghi bản mã (adaptive chosen ciphertext attack) đầu tiên có thể thực hiện trên thực tế đối với một văn bản mã hóa bằng RSA Văn bản này được mã hóa dựa trên tiêu chuẩn Public-Key Cryptography Standards #1 (PKCS #1), một tiêu chuẩn chuyển đổi bản rõ có khả năng kiểm tra tính hợp lệ của văn bản sau khi giải mã Do những khiếm khuyết của PKCS #1, Bleichenbacher có thể thực hiện một tấn công lên bản RSA dùng cho giao thức Secure Sockets Layer (tìm được khóa phiên) Do phát hiện này, các mô hình chuyển đổi an toàn hơn như chuyển đổi mã hóa bất đối xứng tối ưu (Optimal Asymmetric Encryption Padding) được khuyến cáo sử dụng Đồng thời phòng nghiên cứu của RSA cũng đưa ra phiên bản mới của PKCS #1 có khả năng chống lại dạng tấn công nói trên

Phương pháp sử dụng (n):

Giả sử người tấn công biết được giá trị (n) Khi đó việc xác định giá trị

p, q được đưa về việc giải hai phương trình sau:

n = p q thay q = n/p, ta được phương trình bậc hai:

(n) = (p 1)(q 1) và p2 – (n – (n) + 1) p + n = 0

p, q chính là nghiệm của phương trình bậc hai này Tuy nhiên vấn đề phát

hiện được giá trị (n) còn khó hơn việc xác định hai thừa số nguyên tố của n

Ngoài ra còn một số phương pháp tấn công khác được sử dụng để tấn công

hệ mã RSA Tuy nhiên, từ cơ sở toán học của RSA, hầu hết các phương pháp tấn công đều chưa thực sự hiệu quả Các cố gắng bẻ khóa RSA thành công được công bố đều phải dựa trên sức mạnh kết hợp của nhiều máy tính thực và thực hiện trong khoảng thời gian dài

Tuy nhiên, để đảm bảo tính an toàn cao cho hệ mã RSA nói riêng và các

hệ mã công khai nói chung Việc áp dụng các cải tiến nhằm tăng tính an toàn là cấp thiết

Trang 36

Chương 2 THƯ VIỆN TÍNH TOÁN SỐ LỚN

Tổ chức xây dựng một thư viện xử lý các số kích thước lớn theo tiếp cận hướng đối tượng

2.1 Biểu diễn số lớn [2], [4]

Có nhiều các để biểu diễn và lưu số lớn Trong luận văn này số lớn được xây dựng thành một đối tượng BigNum có hai thuộc tính là danh sách

data kiểu dữ liệu sbyte( 128 to 127, 8 bit integer) và thuộc tính len có

kiểu dữ liệu int

Trong đó List<sbyte> data dùng để biểu diễn và lưu trữ thành một danh sách các chữ số và len dùng để lưu số phần tử của danh sách Các số lớn

a0a1…an được biểu diễn thành danh sách như sau:

an an 1 … a0

Các chữ số được lần lượt lưu trữ vào danh sách theo thứ tự ngược để tiện cho việc thao tác tính toán sau này:

Chữ số a0 được lưu vào phần tử data[n]

Chữ số a1 được lưu vào phần tử data[n 1]

Chữ số an được lưu vào phần tử data[0]

Dấu của số lớn được đặt ở phần tử cuối cùng của danh sách, nếu dấu âm giá trị sẽ được biểu diễn bằng số 1 còn không thì vẫn dữ nguyên

Thí dụ 1: Biểu diễn số x = 123456099

Số x gồm có 9 chữ số vậy số x được biểu diễn là một danh sách có 9 phần

tử kiểu sbyte Được mô tả như hình dưới đây:

9 9 0 6 5 4 3 2 1

Thí dụ 2: Biểu diễn số y = 23500

Số y gồm có 5 chữ số và có dấu vậy số y được biểu diễn là một danh sách

có 6 phần tử kiểu sbyte Được mô tả như hình dưới đây:

Ngày đăng: 18/11/2014, 22:39

HÌNH ẢNH LIÊN QUAN

Bảng kí hiệu thời gian chạy: - Số học số lớn cho mật mã luận án thạc sĩ
Bảng k í hiệu thời gian chạy: (Trang 22)
Bảng 1.3.2: Tóm tắt các bước tạo khoá, mã hoá, giải mã của Hệ RSA  Tạo khoá: Tạo 2 số nguyên tố lớn p và q - Số học số lớn cho mật mã luận án thạc sĩ
Bảng 1.3.2 Tóm tắt các bước tạo khoá, mã hoá, giải mã của Hệ RSA Tạo khoá: Tạo 2 số nguyên tố lớn p và q (Trang 31)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN