Việc sử dụng chữ ký số ngày càng có ứng dụng nhiều trong thực tế, không chỉ ứng dụng trong nghành công nghệ thông tin, nghành mật mã mà còn được áp dụng trong một số lĩnh vực khác như tr
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Trang 2Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Người hướng dẫn khoa học: TS Nguyễn Khắc Lịch
Phản biện 1: ……… Phản biện 2: ………
Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn thạc sĩ tại Học viện Công nghệ Bưu chính Viễn thông
Vào lúc: giờ ngày tháng năm
Có thể tìm hiểu luận văn tại:
- Thư viện của Học viện Công nghệ Bưu chính Viễn thông
HÀ NỘI - 2013
Trang 3MỞ ĐẦU
1 Lý do chọn đề tài
Trong mật mã 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 Để giải quyết được vấn đề xác thực người ta đưa ra một cách vừa đơn giản vừa hiệu quả là sử dụng chữ ký
số Việc sử dụng chữ ký số ngày càng có ứng dụng nhiều trong thực tế, không chỉ ứng dụng trong nghành công nghệ thông tin, nghành mật mã mà còn được áp dụng trong một số lĩnh vực khác như trong lĩnh vực ngân hàng để xác thực người gửi, người nhận, lĩnh vực viễn thông để sử dụng các thẻ thông minh
RSA thường được sử dụng trong các ứng dụng mà vấn đề bảo mật được ưu tiên hàng đầu Bên cạnh đó RSA cũng được các nhóm phân tích nhằm tìm ra các mức không an toàn của nó Các phân tích này chủ yếu là minh họa cho các mối nguy hiểm của việc sử dụng RSA không đúng cách Thật vậy an toàn khi sử dụng RSA là một nhiệm vụ không hề tầm thường Một cách tấn công cổ điển đến RSA là chỉ ra rằng hệ mật không an toàn nếu d < n1/4(d là số mũ giải mã) Trong nhữ năm gần đây các nhà nghiên cứu đã chỉ ra rằng hệ RSA sẽ không an toàn nếu số mũ giải mã có kích thước ngắn và trong tấn công Boneh-Durffe đã chỉ
ra rằng hệ mật thực sự không an toàn nếu số mũ giải mã d < n 0,292 Vậy để RSA an toàn thì
ta phải có số mũ giải mã d càng lớn càng tốt mặc dù quá tình giải mã sẽ chậm hơn
Làm thế nào để có được d lớn? ta biết trong RSA để mã hóa người ta sẽ chọn ngẫu nhiên p, q là hai số nguyên tố lớn phân biệt; xác định modulus n = p.q ; tính φ(n)= (p-1)(q-1) rồi thông qua các tham số đó tính e ( thường là chọn e nhỏ để quá trình mã hóa đơn giản); sau đó tính d theo công thức de = 1 + k.φ(n)và thường e nhỏ thì d có được cũng nhỏ Muốn tìm được d lớn người ta làm ngược lại đó là chọn e, tìm p,q thỏa mãn điều kiện đủ nào đó sao cho với cách này ta sẽ có được d có kích thước gần bằng modulus n
Luận văn sẽ nghiên cứu về hệ mật RSA với số mũ giải mã lớn và ứng dụng cho chữ
ký số để chữ ký số an toàn và bảo mật hơn
2 Mục đích nghiên cứu
Phân tích tính an toàn của hệ mật RSA Đưa ra một giải pháp nhằm tăng tính an toàn cho chữ ký số RSA đó là : chọn số mũ giải mã lớn và ứng dụng vào chữ ký số
Trang 43 Đối tượng và phạm vi nhiên cứu
- Hệ mật RSA là đối tượng nghiên cứu chính của đề tài nhằm phát hiện các phương pháp tấn công , bẻ gẫy RSA ; qua đó ứng dụng thử nghiệm trên chữ ký số RSA với thuật toán chọn số mũ giải mã lớn
- Phạm vi nghiên cứu: đề tài nghiên cứu cách ngăn ngừa một kiểu tấn công trong trường hợp sử dụng số mũ giải mã d nhỏ Sau đó xây dựng và cài đặt thật toán thử nghiệm trên chữ ký số giúp tăng tính an toàn cho chứ ký số RSA
4 Giả thiết khoa học
Cài đặt thuật toán thành công sẽ cho ta được số mũ giải mã lớn; điều này có thể chống lại các cách tấn công của M.Wiener[8] và Boneh Durfee[3] và làm tăng tính an toàn cho hệ mật RSA và chữ ký số RSA
5 Phạm vi đề tài
- Nghiên cứu cơ chế hoạt động của hệ mật RSA
- Các cách tấn công bẻ gẫy RSA
- Xây dựng, cài đặt thuật toán có số mũ giải mã lớn nhằm nâng cao an toàn cho chữ
ký số RSA
6 Phương pháp nghiên cứu
- Phân tích thuật toán mã hóa RSA Tìm hiểu các cách tấn công RSA Từ đó lựa chọn giải pháp nhằm tăng tính an toàn cho chữ ký số RSA
- Kết hợp với toán học và lý thuyết tính toán chỉ ra giải pháp lựa chọn là đúng đắn
- Thu thập các tài liệu, các bài báo trên tạp chí khoa học trong nước, nước ngoài, và các tài liệu trên mạng internet có liên quan đến nội dung nghiên cứu
- Tham khảo, vận dụng và kế thừa các thuật toán, mã đã có
Trang 5Các nội dung chính trình bày:
Chương 1: TỔNG QUAN VỀ LÝ THUYẾT MẬT MÃ
Ở chương này luận văn sẽ đi tìm hiểu về khái niệm mật mã, cơ sở toán học của mật
mã
Chương 2: HỆ MẬT KHÓA CÔNG KHAI RSA
Ở chương này luận văn sẽ tìm hiểu và nghiên cứu hệ mật RSA, các khả năng tấn công
và bẻ gẫy RSA, thuật toán RSA với số mũ giải mã lớn
Chương 3: THỬ NGHIỆM CHỮ KÝ SỐ RSA VỚI SỐ MŨ GIẢI MÃ LỚN
Trong chương này sẽ giới thiệu về chữ ký số và áp dụng lý thuyết đã tìm hiểu ở các chương trước để xây dựng chữ ký số RSA với số mũ giải mã lớn
KẾT LUẬN VÀ KIẾN NGHỊ
Tổng kết các kết quả đã đạt được và các mong muốn, kiến nghị để phát triển hệ thống
Trang 6CHƯƠNG 1: TỔNG QUAN VỀ LÝ THUYẾT MẬT MÃ
1.1 Các khái niệm cơ bản
Trong lý thuyết mật mã có một số thuật ngữ cơ bản sau:
Bản rõ (PlainText): là nội dung của thông điệp cần gửi đi yêu cầu được đảm bảo an
toàn
Bản mã (CipherText): là thông điệp gửi đi được mã hóa
Mã hóa (Encryption): quá trình chuyển đổi thông tin từ bản rõ sang bản mã Trong
quá trình này thông tin trong bản rõ sẽ được ẩn đi và do đó bất kỹ một người nào đọc thông
điệp này cũng không hiểu được trừ trường hợp người đó có thể giải mã (PlainText →
CipherText)
Giải mã (Decryption): là quá tình giải mã để lấy lại thông tin ban đầu, ngược với quá
trình mã hóa (CipherText → PlainText)
Trong luận văn này có sử dụng thêm các kí hiệu sau:
A, B: Hai người muốn trao đổi thông tin
Mm: Kẻ thù muốn lấy cắp thông tin
Hệ mật hiện đại cần phải đáp ứng được những yêu cầu sau:
- Tính bảo mật (Confidentiality): đảm bảo dữ liệu được truyền đi một cách an toàn và
không bị lộ nếu như ai đó cố tình muốn có được thông điệp gốc ban đầu Chỉ những người được phép mới có khả năng đọc được nội dung thông tin ban đầu
- Tính xác thực (Authentication): giúp cho người nhận thông điệp các định được chắc
chắn thông điệp mà họ nhận là thông điệp gốc ban đầu Kẻ giả mạo không thể giả dạng một người khác hay nói cách khác không thể mạo danh để gửi thông điệp Người nhận có khả năng kiểm tra nguồn gốc thông điệp mà họ nhận được
Trang 7- Tính toàn vẹn (Integrity): người nhận thông điệp có thể kiểm tra thông điệp không
bị thay đổi trong quá trình truyền đi Kẻ giả mạo không thể có khả năng thay thế dữ liệu ban đầu bằng dữ liệu giả mạo
- Tính không thể chối bỏ (Non – repudation): người gửi, người nhận không thể chối bỏ
sau khi đã gửi hoặc nhận thông điệp
1.2 Phân loại các hệ mật mã
Công nghệ thông tin phát triển, việc sử dụng máy tính gia tăng cùng với tốc độ phát triển mạnh mẽ của Internet càng làm tăng nguy cơ bị đánh cắp các thông tin độc quyền Với mối đe dọa đó có nhiều biện pháp để đối phó song mã hóa là một phương pháp chính để có thể bảo vệ các giá trị của thông tin điện tử Có thể nói mã hóa là công cụ tự động, quan trọng nhất cho an ninh mạng và truyền thông Có hai hình thức mã hóa được sử dụng phổ
biến là mã hóa đối xứng (symmetric – key cryptography) và mã hóa bất đối xứng (asymmetric key cryptography)
Định nghĩa mã hóa bất đối xứng: là hệ mật mã bao gồm một tập hợp các phép biến
đổi mã hóa {Ee} và một tập hợp các phép biến đổi giải mã {Dd} được gọi là mật mã khóa công khai hoặc mật mã bất đối xứng nếu với mỗi cặp khóa (e, d) trong đó khóa mã hóa e được gọi là khóa công khai (có giá trị mà ai cũng biết), khóa giải mã d được gọi là khóa riêng hay khóa bí mật Hệ mật mã này phải đảm bảo an toàn để không có khả năng tính được d từ e
Nguyên tắc hoạt động: Người nhận B sinh ra cặp khóa gồm: khóa công khai Kp và khóa bí mật Kr Sau đó B sẽ gửi Kp cho A và khóa này được công khai ai cũng có thể biết A
sẽ dùng Kp để mã hóa thông điệp và gửi thông điệp đã mã hóa cho B Lúc này, B sẽ cùng Kr
để giải mã thông điệp mà A gửi
Trang 81.3 Một số khái niệm toán học
Trong phần này luận văn trình bày lại các lý thuyết và kết quả cơ bản nhất của lí thuyết số có liên quan đến mật mã
1.3.2 Số nguyên tố và nguyên tố cùng nhau
Số nguyên tố là số nguyên lớn hơn 1, không chia hết cho số nguyên dương nào ngoài
1.3.4 Thuật toán Euclid và Euclid mở rộng
Thuật toán Euclid như sau:
Output: gcd (a, b)
-
1 While b≠0 do
r ←a mod b, a ←b, b ←r
Trang 92 return (a)
Thuật toán Euclid mở rộng
Output: gcd(a,b) và 2 số nguyên x, y thỏa mãn ax + by = d
Thuật toán Euclid mở rộng có độ phức tạp là O((lg n)2) phép toán bit
1.3.5 Các phép toán cơ bản trong không gian Modulo
Toán tử modulo còn được gọi là toán tử mod; a mod n là phần dư của a chia n được
kí hiệu r = a mod n, nói cách khác a = q*n + r trong đó q là một số nguyên, r thuộc tập các
số nguyên {0, 1, 2, ……, n-1}
Định nghĩa đồng dư:
Cho a và b là các số nguyên, 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 = k*n với k là số nguyên bất kỳ (hay a-b chia hết cho n)
1.3.6 Thặng dư bậc hai
Định nghĩa 1: Cho a ∈ Zn*, a được gọi là thặng dư bậc hai modulo n nếu tồn tại một
số x ∈ Zn* thỏa mãn x2 ≡ a (mod n) Nếu không tồn tại một số x như vậy thì a được gọi là không thặng dư bậc hai modulo n Tập tất cả các giá trị thặng dư bậc hai modulo n được kí hiệu Qn và tập tất cả các giá trị không thặng dư bậc hai modulo n được kí hiệu Q n.
1.3.7 Các thuật toán trong Zn
Thuật toán tính nghịch đảo nhân trong Z n [9]:
Trang 10-
1 Sử dụng thuật toán Euclid mở rộng để tìm x, y thỏa mãn d = ax + ny trong đó d = gcd (a,n)
2 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 bình phương và nhân để tích lũy thừa trong Z n [9]
1.4.1 Khái niệm cơ bản
Định nghĩa 1: Kích thước đầu vào là số lượng bit cần thiết dùng để biểu diễn dữ liệu đầu
vào
Định nghĩa 2: Thời gian thực hiện thuật toán trên dữ liệu đầu vào là số lượng các phép toán
cơ bản hoặc “các bước” được thực hiện
1.4.2 Kí hiệu tiệm cận
Một số định nghĩa:
(i) f(n)= O (g(n)) nếu tồn tại một hằng số c dương và một số nguyên dương n0 thỏa mãn 0 ≤ f(n)≤ c.g(n)với mọi n ≥ n0.
Trang 11(ii) Một thuật toán được gọi là có độ phức tạp đa thức, hoặc có thời gian đa thức, nếu
số các phép tính cần thiết khi thực hiện thuật toán không vượt quá O(logkn), trong đó n là độ lớn cảu đầu vào, và k là số nguyên dương nào đó
Nói cách khác, nếu đầu vào là số d-bit thì thời gian thực hiện thuật toán là O(dk), tức
là tương đương với một đa thức bậc k
(iii) Các thuật toán với thời gian O(nα) với α > 0 , được gọi là thuật toán với độ phức tạp mũ hoặc thời gian mũ Cũng có thuật toán có độ phức tạp là trung gian giữa đa thức và
mũ ta thường gọi là thuật toán dưới mũ
Trang 12CHƯƠNG 2: HỆ MẬT MÃ KHÓA CÔNG KHAI RSA
2.1 Hệ mật RSA
Độ an toàn của RSA dựa trên hai bài toán lớn:
1 Bài toán phân tích ra thừa số nguyên tố của các nguyên tố lớn ( The integer Factorization Problem (IFP)):
“ Cho trước một nguyên tố n ∈ N, tìm số các nguyên tố Pj, j = 1, 2, …, r ∈ N, với P1
< P2 <…< Pr thỏa mãn n =
1
j
r e j j
p
=
∏ , trong đó ej ≥ 1”
Bảng sau đây chỉ ra khoảng thời gian cần thiết để phân tích một số nguyên n ra thừa
số nguyên tố bằng thuật toán tốt nhất hiện nay; ta xem máy tính được sử dụng tốc độ khoảng 1 triệu phép tính/giây được mô tả trong [9] như sau:
Số chữ số thập phân Số phép tính bit Thời gian
Bảng 2.1: Bảng thời gian để phân tích số n ra thừa số nguyên tố
2 Bài toán RSA: cho số nguyên dương n, n = p*q với p, q là các số nguyên tố
phân biệt, cho trước một số nguyên c và e sao cho số nguyên e thỏa mãn gcd(e, (p - 1)*(q - 1)) = 1 tìm một số nguyên m sao cho me ≡ c ( mod n)
2.1.1 Tạo khóa cho hệ mật RSA
Mỗi người sử dụng đều có thể tạo ra một khóa RSA 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 p và q ngẫu nhiên, có kích thước như nhau
2 Tính n = p*q và φ = (p-1)*(q-1)
3 Chọn ngẫu nhiên một nguyên tố e, 1< e < φ, thỏa mãn gcd(e,φ) = 1
Trang 134 Sử dụng thuật toán Euclid mở rộng để tính số nguyên d duy nhất, 1 < d < φ thỏa
mãn ed ≡ 1(mod φ)
5 Khi đó căp khóa công khai là(n,e) và khóa bí mật là d
Số nguyên e và d được tạo ra trong thuật toán trên được gọi là số mũ mã hóa và số
mũ giải mã còn n được gọi là modulus của RSA
2.1.2 Quá trình mã hóa RSA
Bây giờ, giả sử A là người muốn gửi một thông điệp m cho B và B là người phải giải
mã Sử dụng RSA, người sử dụng A cần làm theo các bước sau:
1 Xác thực khóa công khai(n,e)
2 Biểu diễn thông điệp như là một số nguyên m trong đoạn[0, n-1]
3 Tính c = me mod n(sử dụng thuật toán bình phương và nhân liên tiếp để tính lũy thừa modulus n)
4 Gửi bản mã hóa c đến B
2.1.3 Quá trình giải mã RSA
Để có được bản rõ m từ c, B làm như sau:
Sử dụng khóa bí mật d để khôi phục m = cd mod n
Ví dụ : Ở đây ta sử dụng thông điệp A gửi cho B là một số; chúng ta giả thiết rằng giữa A và B
có một cách để chuyển dỗi giữa văn bản và số Các bước sẽ thực hiện như sau:
1 B sẽ chọn hai số nguyên tố chúng ta giả sử p = 23 và q = 41 Thực tế B cần phải chọn hai số lớn hơn rất nhiều
2 B sẽ tính ra tích của p*q Ta có p*q = 23*41 = 943 vậy n = 943; giá trị này sẽ được chuyển đến A
3 B sẽ chọn một số nguyên e là nguyên tố cùng nhau với (p-1)*(q-1) Trường hợp này ta có (p-1)*(q-1) = 22.40 = 880, e chọn là 7, e chính là thành phần khóa công khai
4 A đã có (n,e) =(943,7) do b gửi đến A sẽ sử dụng cặp khóa này để mã hóa thông điệp m và gửi cho B Ta giả sử thông điệp m = 35
5 A tính giá trị của c: c = me (mod n) = 375 (mod 943) = 545 Giá trị 545 là bản mã
và được A gửi cho B
6 B muốn giải mã thông điệp 545 thì B phải tìm số d thỏa mãn e*d = 1(mod (p 1)*(q -1)) Trường hợp này, 7d = 1 (mod 880); d = 503
Trang 14-7 Sau khi có d, B cần tính cd(mod n) = 545503(mod 943) Sử dụng thuật toán bình phương và nhân liên tiếp để tính lũy thừa modulus n (1.3.7) vào tính 545503 (mod 943)
Ta có : k = 50310 = 11111101112 K được viết lại là 11101111112
Bảng 2.2: Minh họa ví dụ giải mã RSA
i 0 1 2 3 4 5 6 7 8 9
A 545 545 923 400 633 857 795 215 18 324
B 545 416 432 568 806 721 719 35
Vậy B sẽ giải mã thông điệp là m = 35
2.2 Các khả năng tấn công lên hệ mật RSA
Hệ mật RSA là hệ mật phổ biến nhất hiện nay, nó được triển khai và ứng dụng trong nhiều hệ thống thương mại nhằm cung cấp tính bảo mật cũng như xác thực của dữ liệu Từ khi được công bố, RSA đã được phân tích tính an toàn bởi nhiều nhà khoa học Và đã có một số cuộc tấn công lên hệ mật RSA xong chúng chủ yếu là minh họa cho việc sử dụng RSA không đúng cách Vấn đề thám mã đối với RSA hiện nay đang được các nhà khoa học tập trung vào các kẽ hở của RSA và được chia làm 4 loại: tấn công cơ bản, tấn công số mũ công khai hoặc số mũ bí mật nhỏ và tấn công cài đặt
2.2.1 Tấn công cơ bản
2.2.1.1 Modul chung
Để tránh việc phân tích modul n= p*q khác nhau cho các người dùng khác nhau, chúng ta lấy n chung cho tất cả Cùng một n được sử dung cho tất cả người sử dụng Trung tâm xác thực có thể cung cấp cho người sử dụng i với một cặp ei, di và người sử dụng i có một khóa công khai là (n,ei) và khóa riêng là (n,di)
2.2.1.2 Mù (Blinding)
Marvin chọn ngẫu nhiên một số r ∈ Z*n và đặt m’ = re m mod n Sau đó anh ta nhờ Bob ký lên m’ Bob có thể cung cấp chứ ký của mình là s’ lên m’ Nhưng từ cách tính s’= (m’)d mod n, Marvin có thể đơn giản tính s = s’/r mod n để có được chữ ký của Bob là s trên m