Khóa luận Xử lý song song quá trình sinh khóa của hệ thống cấp phát chứng thực số

ĐẠI HỌC QUỐC GIA HÀ NỘI  
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ  
Nguyễn Thanh Hào  
XỬ LÝ SONG SONG QUÁ TRÌNH SINH KHÓA  
CỦA HỆ THỐNG CẤP PHÁT CHỨNG THỰC SỐ  
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY  
Ngành: Công nghthông tin  
HÀ NỘI - 2010  
1
ĐẠI HỌC QUỐC GIA HÀ NỘI  
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ  
Nguyễn Thanh Hào  
XỬ LÝ SONG SONG QUÁ TRÌNH SINH KHÓA  
CỦA HỆ THỐNG CẤP PHÁT CHỨNG THỰC SỐ  
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY  
Ngành: Công nghệ thông tin  
Cán bộ hướng dẫn: PGS.TSKH Phạm Huy Điển  
HÀ NỘI - 2010  
2
TÓM TẮT NỘI DUNG  
Khóa luận có trình bày về một số vấn đề của an toàn thông tin hiện đại. Các vấn  
đề đó đều dẫn đến một nhu cầu bức thiết là phải xây dựng một hệ thống chứng thực số,  
tạo điều kiện cho các ứng dụng chữ ký số phát triển. Phần tiếp theo là các lý thuyết về  
chứng thực và chữ ký số, hệ thống chứng thực số CA ứng dụng hệ mã RSA mà cốt lõi  
là quá trình sinh khóa. Thực chất của quá trình sinh khóa là sinh ra một cặp số nguyên  
tp,q thỏa mãn được các tính chất là số nguyên txác suất mạnh. Với yêu cầu về số  
nguyên tố như thế, phần tiếp theo khóa luận có đề cập đến các lý thuyết về số nguyên  
tố, việc kiểm tra số nguyên tố, và các tính chất để một số nguyên tố được gọi là mạnh.  
Với một khối lượng tính toán trên số nguyên lớn như vậy, xử lý tuần tự là không đáp  
ứng được nhu cầu về thời gian, cho nên một phương pháp xử lý song song trên CPU  
(central processing unit) đã được nhắc đến. Đó chính là bộ công cụ Visual Studio 2010  
của Microsoft. Phần cuối của khóa luận là các kết quả đạt được và định hướng cho  
tương lai.  
3
MỤC LỤC  
LỜI MỞ ĐẦU .............................................................................................................5  
NỘI DUNG .................................................................................................................3  
Chương 1. Những vấn đề của an toàn thông tin hiện đại ..........................................3  
1.1. An toàn thông tin hiện đại .............................................................................3  
1.2. Chứng thực và chữ ký s...............................................................................3  
1.2.1. Hệ mã khóa công khai và việc tạo chữ ký số ..........................................3  
1.2.2. Chứng thực số ........................................................................................8  
1.3. Vai trò của CA và vấn đề then chốt trong thiết lập CA ................................10  
1.3.1. Vai trò của CA .....................................................................................10  
1.3.2. Sử dụng chứng thực số .........................................................................10  
1.3.3. Các chức năng cơ bản của CA.............................................................11  
1.3.4. Vấn đề then chốt trong thiết lập CA......................................................13  
Chương 2. Một số công cụ toán học liên quan........................................................15  
2.1. Số nguyên tố và hệ mã khóa công khai RSA ...............................................15  
2.1.1. Hệ mã khóa công khai RSA..................................................................15  
2.1.2. Lý thuyết toán học về số nguyên tố và các vấn đề liên quan .................17  
2.2. Việc tính toán số nguyên tố và khái niệm số giả nguyên tố. Kiểm tra số giả  
nguyên tố mạnh..................................................................................................20  
2.2.1. Thuật toán kiểm tra số nguyên tố thông thường và khái niệm số giả  
nguyên t.......................................................................................................20  
2.2.2. Kiểm tra số giả nguyên tố mạnh ...........................................................20  
2.2.3. Tính nguyên tố mạnh của một s..........................................................25  
2.3. Chìa khóa an toàn........................................................................................26  
Chương 3. Tính toán song song..............................................................................28  
3.1. Xử lý song song, cơ hội và thách thức [8]....................................................28  
3.1.1. Cơ hội ..................................................................................................29  
3.1.2. Những thách thức: Các vấn đề khó khăn gặp phải khi xử lý song song.30  
3.1.3. Giải pháp: Các công nghệ song song trong Visual Studio 2010 Microsoft  
.......................................................................................................................32  
3.2. Lập trình song song với Visual Studio 2010 [8]...........................................33  
3.2.1. Thư viện...............................................................................................33  
3.2.2. Các mô hình lập trình song song và ví d.............................................34  
3.2.3. Kết luận................................................................................................38  
Chương 4. Kết quả triển khai và tính thử nghiệm...................................................39  
4.1. Giới thiệu về chương trình ứng dụng...........................................................39  
4.1.1. Mục đích và hoạt động của chương trình..............................................39  
4.1.2. Một số hình ảnh về chương trình ..........................................................40  
4.2. Một số thống kê khi chạy chương trình trên chip intel core2duo 2.2 GHZ...43  
PHỤ LỤC..................................................................................................................44  
A. Thuật toán Miller-Rabin....................................................................................44  
B. Thuật toán Lucas...............................................................................................44  
C. Thuật toán kiểm tra nguyên tố mạnh..................................................................45  
KẾT LUẬN...............................................................................................................47  
TÀI LIỆU THAM KHẢO..........................................................................................48  
4
LỜI MỞ ĐẦU  
Hiện nay, ở các nước phát triển cũng như đang phát triển, mạng máy tính đóng  
vài trò quan trọng trong mọi lĩnh vực hoạt động của xã hội, và một khi nó trở thành  
phương tiện điều hành các hệ thống thì nhu cầu bảo mật thông tin được đặt lên hàng  
đầu. Nhu cầu này không chỉ có ở các bộ máy của nhà nước, mà đã trở thành bức thiết  
trong nhiều hoạt động kinh tế xã hội: tài chính, ngân hàng, thương mại … Nhng ứng  
dụng trong dân sự của an toàn thông tin ngày càng được phát triển, mở rộng đặc biệt là  
chữ ký số. Khi các văn bản tài liệu đã được số hóa, được chuyển đi rất nhanh trong hệ  
thống mạng thì ký tay thông thường là một trở ngại cho các hoạt động trao đổi thông  
tin. Bên cạnh đó, một hệ thống chứng thực thông tin, chứng thực số là cần thiết được  
phát triển khi mà nhu cầu trao đổi thông tin, xác thực thông tin của các cơ quan, xí  
nghiệp, ngân hàng,… ngày càng tăng đi kèm với sự phát triển mạnh của cơ sở hạ tầng  
mạng. Hệ thống chứng thực số CA (certificate authority) là một giải pháp cho vấn đề  
này.  
Với CA, mỗi người tham gia vào hệ thống được cấp phát một cặp chìa khóa bí  
mật, công khai. Khi muốn gửi thông tin người sử dụng lấy chìa khóa bí mật mã hóa  
văn bản và gửi đi, người nhận sẽ lấy chìa khóa công khai của người gửi để giải mã.  
Đồng thời với sự chứng thực của hệ thống CA, đoạn thông tin đó sẽ được đảm bảo là  
thuộc về người gửi. Ngoài ra, với những giấy tờ, hợp đồng kinh tế, … cần có chữ ký  
của các bên liên quan, người ký có thể sử dụng chìa khóa bí mật để mã hóa văn bản.  
(Hành động này giống như ký tay trên giấy tờ hành chính thông thường). Như vậy,  
việc xây dựng hệ thống CA là quan trọng, cần thiết trong đời sống xã hội mà công  
nghệ thông tin đóng vài trò chủ chốt trong giao dịch, buôn bán.  
Một ví dụ cụ thể, trung tâm tin học thuộc viện nghiên cứu khoa học và công nghệ  
Việt nam đang có dự án xây dựng hệ thống CA để phát triển các ứng dụng của chữ ký  
số và chứng thực điện tử. Kết quả của khóa luận này sẽ được dùng trong quá trình rất  
quan trọng của hệ thống CA sắp tới được phát triển – cấp phát khóa.  
Vấn đề then chốt của hệ thống CA là quá trình cấp phát và chứng thực một khóa  
có thuộc về một cá thể nào đó hay không. Quá trình cấp phát khóa về thực chất là sinh  
ra một cặp số nguyên tố thỏa mãn các yếu cầu để được là nguyên tố mạnh. Những tính  
toán trên số nguyên lớn đòi hỏi thời gian rất lâu để sinh ra một cặp số như vậy, chưa  
kể đến thời gian kiểm tra thỏa mãn tính nguyên tố mạnh. Hơn thế nữa, một hệ thống  
CA khi được triển khai nếu gặp tình trạng có nhiều người sử dụng truy cập tại một thời  
5
điểm và yêu cầu cấp phát khóa, sẽ xảy ra hiện tượng nghẽn mạng, tắc cổ chai nếu phần  
sinh khóa không đáng ứng được về thời gian. Hệ thống như thế được xem là không đạt  
yêu cầu. Một giải pháp được đưa ra là xử lý song song trong quá trình sinh khóa của  
hệ thống CA.  
Thời gian trước, công nghệ xử lý song song được thực hiện trên các cụm nhiều  
máy chủ do thời ấy một CPU (central processing unit) không có nhiều nhân. Ngày  
nay, với sự phát triển vượt bậc của công nghệ phần cứng, các hãng phần cứng nổi  
tiếng thế giới đã nghiên cứu và liên tục cho ra đời nhiều bộ xử lý tích hợp nhiều lõi  
bên trong (2, 4, 8 thậm chí 16 lõi). Đây là một thời điểm thuận lợi để ứng dụng công  
nghệ xử lý song song trên một CPU có nhiều nhân. Một phương án khác có lợi hơn về  
mặt kinh tế là tính toán trên card đồ họa (graphic card). Card đồ họa tuy có thế mạnh  
về xử lý vector (xử lý nhiều bộ số một lúc) nhưng công nghệ song song còn chưa phát  
triển (chưa có thư viện cần thiết để sinh được một cặp số nguyên tố lớn và kiểm tra  
tính nguyên tố mạnh của chúng). Vì vậy, xử lý song song trên CPU nhiều nhân là một  
phương án hợp lý, cân đối về mặt kinh tế và công nghệ hỗ trợ cũng như là tốc độ. Tập  
đoàn Microsoft mới cho ra đời bộ công cụ Visual Studio 2010 hỗ trợ xử lý song song  
trên CPU nhiều nhân, đồng thời có thư viện xử lý snguyên lớn. C Sharp (C#) – một  
ngôn ngữ lập trình trong bộ công cụ này sẽ được sử dụng để phát triển giai đoạn quan  
trọng ban đầu của một hệ thống CA – sinh khóa.  
2
Chương 1. Những vấn đề của an toàn thông tin hiện đại  
NỘI DUNG  
Chương 1. Những vấn đề của an toàn thông tin hiện đại  
1.1. An toàn thông tin hiện đại  
Hiện nay, ở tất cả các nước phát triển cũng như đang phát triển, mạng máy tính  
đang đóng vài trò thiết yếu trong mọi lĩnh vực hoạt động của toàn xã hội, và một khi  
nó trở thành phương tiện điều hành các hệ thống thì nhu cầu bảo mật thông tin được  
đặt lên hàng đầu. Nhu cầu này không chỉ có ở các bộ máy An ninh, Quốc phòng, Quản  
lý Nhà nước, mà đã trở thành bức thiết trong nhiều hoạt động kinh tế xã hội: tài chính,  
ngân hàng, thương mại …  
An toàn thông tin ngày nay không đơn thuần là việc giữ bí mật những thông tin  
quan trọng (được áp dụng trong quân đội, bộ quốc phòng, an ninh quốc gia …) mà còn  
là chứng thực thông tin (thông tin đó thuộc về một cá nhân, tập thể cụ thể nào đó).  
Những ứng dụng của an toàn thông tin dân sự, đặc biệt là chữ ký số ngày càng phát  
triển, mở rộng và có phần áp đảo so với quân sự. Bởi lẽ những thành phần tham gia  
hoạt động mã hóa thông tin trong quân đội hay bộ quốc phòng chỉ là một nhóm người  
còn tham gia vào hoạt động này ở dân sự là tất cả những ai có nhu cầu chứng thực  
thông tin, cung cấp, tiếp nhận thông tin trên hệ thống mạng máy tính. Một hệ thống  
chứng thực thông tin, chứng thực số là cần thiết được phát triển khi mà nhu cầu trao  
đổi thông tin, xác thực thông tin ngày càng tăng đi kèm với sự phát triển mạnh của cơ  
sở hạ tầng mạng.  
1.2. Chứng thực và chữ ký số  
1.2.1. Hệ mã khóa công khai và việc tạo chữ ký số  
Nguyên lý hoạt động của hệ mã khóa công khai [4]  
Hệ mã khóa công khai (hay còn gọi là các hệ mã phi đối xứng) được phát minh ra  
trong những thập kỷ cuối của thế kỷ vừa qua. Nó sử dụng 2 chìa khóa riêng biệt cho  
việc lập mã giải mã văn bản. Chìa dùng cho việc lập mã có thể được công bố cho  
mọi người biết (chìa công khai), còn chìa dùng cho việc giải mã thì được giữ bí mật  
tuyệt đối. Việc biết được chìa khóa công khai không cho phép tính ra chìa khóa giải  
. Mỗi cá thể  
tham gia vào hệ thống được cấp phát riêng một cặp chìa khóa  
k
(Ek, Dk ), trong đó Ek chìa khóa lập mã, còn Dk chìa khóa giải mã. Khi mã hóa  
một văn bản P (bằng chìa Ek ) ta sẽ được một văn bản mã ký hiệu là C = Ek (P) .  
Văn bản này chỉ có thể được giải mã bằng chìa khóa Dk (cùng cặp với Ek ), nghĩa là  
Dk (C ) = Dk (Ek (P)) = P .  
3
Chương 1. Những vấn đề của an toàn thông tin hiện đại  
Khi một cá thể nào đó muốn giử thông điệp M cho đối tác thì anh ta dùng  
i
k
chìa khóa lập mã Ek của đối tác ã được biết công khai) để mã hóa văn bản và gửi  
k
đi dưới dạng thông điệp mã C = Ek (M ). Khi đối tác nhận được thông điệp này thì  
k
dùng chìa khóa giải mã của mình (là Dk ) để giải mã ra theo nguyên lý đã nêu  
Dk (C ) = Dk (Ek (M )) = M .  
Các cá thể khác trong hệ thống, nếu nhận được văn bản mã , thì cũng không thể nào  
C
giải mã ra M , vì họ không có chìa khóa giải mã Dk của cá thể K .  
Ký điện tử trong hệ mã khóa công khai [3][5][13]  
Với hệ mã khóa công khai, một quy trình ký văn bản điện tử được thiết lập dựa  
trên ý tưởng của hai nhà khoa học Diffie và Hellman [5][13]:  
Người gửi (chủ nhân văn bản) ký văn bản bằng cách mã hóa nó với khóa bí mật  
của mình rồi gửi cho người nhận.  
Người nhận văn bản (đã ký) tiến hành kiểm tra chữ ký bằng cách sử dụng chìa  
khóa công khai của người gửi để giải mã văn bản. Nếu giải mã thành công thì  
văn bản ký là đúng của người gửi.  
Giao thức này mang đầy đủ các thuộc tính của thủ tục ký thông thường. Thật vậy:  
Chữ ký là sản phẩm của người đã chủ động tạo ra nó, tức là người đã dùng  
chiếc chìa khóa bí mật của mình để mã hóa văn bản.  
Chữ ký cho biết chủ nhân của nó chính là người sở hữu chiếc chìa khóa bí mật  
đã được dùng để mã văn bản (kiểm tra bằng cách cho giải mã bằng chìa khóa  
công khai của người đó). Không ai làm giả được “chữ ký” vì rằng chỉ có duy  
nhất một người có chìa khóa bí mật đã dùng để “ký” (mã hóa).  
Chữ ký cho văn bản này không thể “tái sử dụng” cho văn bản khác. Thật vậy,  
việc biết chữ ký (văn bản mã) không cho phép tìm ra được chìa khóa bí mật của  
người gửi (để có thể ký một văn bản khác).  
Văn bản đã ký không thể thay đổi (xuyên tạc) được nội dụng. Thật vậy, nếu đã  
mở ra để thay đổi thì không thể “ký lại” được nữa, vì không có chiếc chìa khóa  
bí mật của “người đã ký” (như đã nói ở trên).  
Người ký văn bản không thể thoái thác việc mình “đã ký”, vì ngoài ông ta ra  
không còn ai có cái chìa khóa đã được dùng để “ký” văn bản.  
4
Chương 1. Những vấn đề của an toàn thông tin hiện đại  
Rõ ràng, về mặt logic thì quy trình ký như trên là rất hợp lý. Mọi thành viên tham gia  
sử dụng một hệ mã khóa công khai đều có được khả năng ký văn bản điện tử (bằng  
chìa khóa bí mật của riêng mình) và kiểm tra chữ ký của những người khác (bằng chìa  
khóa công khai mà họ đã công bố).  
Việc dùng chìa khóa bí mật để mã hóa văn bản được gọi là ký điện tử, và kết quả  
tạo ra là một dữ liệu dạng số, sẽ được gọi là chữ ký số [6]..  
Trong thc tiễn triển khai, mi người đều biết tc độ mã hoá của các hmã  
khoá công khai là vô cùng chm. Cho nên, việc ký mt văn bn dài (như thông tư,  
nghị định, văn kiện,...) theo quy trình nêu trên là không khthi trên thực tin.  
Để khắc phục khó khăn này, người ta sử dụng một hàm “chiết xuất” đặc trưng  
văn bản. Hàm này nhận giá trị đầu vào là văn bản (độ dài tùy ý) và cho đầu ra là một  
dãy số có độ dài xác định, gọi là mã băm (message digest). Hàm chiết xuất có thuộc  
tính quan trọng là rất “nhạy” đối với các thay đổi của văn bản, theo đó chỉ cần một  
thay đổi cực nhỏ trong văn bản (như thay dấu chấm, dấu phẩy,…) cũng sẽ kéo theo sự  
thay đổi rõ rệt trong giá trị mã băm của nó. Chính vì vậy mã băm có tính đặc trưng rất  
cao, và thường được gọi là đặc trưng văn bản. Để nhận biết sự toàn vẹn của một văn  
bản người ta chỉ cần xem đặc trưng của nó có bị thay đổi hay không. Hai thuộc tính  
quan trọng khác của hàm chiết xuất là tính một chiều tốc độ nhanh. Tính một chiều  
thể hiện ở chỗ không thể tạo ra được một văn bản có mã băm (đặc trưng) là một xâu số  
cho trước, và do đó không thể mạo ra một “văn bản giả” có cùng đặc trưng với một  
văn bản cho trước. Tốc độ nhanh có nghĩa là thời gian tính đặc trưng cho văn bản là  
không đáng kể [3][13].  
Rõ ràng, việc đặc trưng văn bản không bị thay đổi cũng đồng nghĩa với việc bản  
thân văn bản không bị thay đổi. Từ đây ta có một quy trình ký các văn bản dựa vào đặc  
trưng của nó. Theo quy trình này, khi một cá thể A muốn ký một văn bản P thì cần  
phải thực hiện các bước sau đây [3][13]:  
Tính đặc trưng văn bản của P (bằng hàm chiết xuất có sẵn trên hệ thống).  
Dùng chìa khóa bí mật của mình để mã hóa dãy số đặc trưng văn bản thu được  
ở bước trên. Đặc trưng văn bản sau khi được mã (bằng chìa bí mật của A) thì  
được gọi là chữ ký số (của ông A đối với văn bản P ).  
Tức là tuân theo sơ đồ sau:  
5
Chương 1. Những vấn đề của an toàn thông tin hiện đại  
Hình 1.1: Quy trình ký điện tử [13]  
Ddàng thấy rằng chữ ký số được tạo ra trong quy trình trên có đầy đủ các thuộc  
tính đã nêu trong mục đầu. Thời gian tạo chữ ký được giảm đi rất nhiều và gần như  
không phụ thuộc vào độ dài của văn bản. Thật vậy, do thời gian tính đặc trưng văn bản  
là không đáng kể, thời gian tạo chữ ký chỉ còn là việc mã hóa đặc trưng của văn bản  
(có độ dài như nhau với mọi văn bản, và nhỏ hơn độ dài văn bản nhiều lần).  
Một người nào đó, nhận được văn bản P cùng với chữ ký số đi kèm, muốn tiến  
hành kiểm tra thì cần tiến hành các bước sau [3][13]:  
Tính đặc trưng của văn bản P (bằng hàm chiết xuất có sẵn trên hệ thống).  
Giải mã chữ ký số (bằng chìa khóa công khai của ông A) để có một đặc trưng  
nữa của P , rồi so sánh nó với đặc trưng thu được ở bước trên. Nếu chúng khớp  
nhau thì chứng tỏ văn bản nhận được chính là văn bản đã được ông A ký và nội  
dung của nó không bị thay đổi so với khi ký.  
Tức là tuân theo sơ đồ sau:  
6
Chương 1. Những vấn đề của an toàn thông tin hiện đại  
Hình 1.2: Quy trình kiểm tra chữ số ký s[13]  
Như vậy, chữ ký số không phải là một nét vẽ ngoằn ngoèo khó bắt chước (như  
chữ ký tay thông thường trên giấy) mà là một dãy số được tạo nên từ đặc trưng của  
văn bản bằng phép mã hóa với chìa khóa bí mật của người ký.  
So với thủ tục ký thông thường (trên văn bản giấy), thủ tục ký điện tử có những  
ưu thế vượt trội. Hơn thế:  
Chữ ký số là chính xác tuyệt đối (không còn mối e ngại về việc chữ ký không  
giống nhau trong mỗi lần ký, như khi phải ký bằng tay).  
Trong khi việc kiểm định chữ ký viết tay, con dấu giả,… là không đơn giản (vì  
thường đòi hỏi phương tiện kỹ thuật đặc biệt) thì chữ ký số có thể được kiểm  
định một cách dễ dàng và chính xác (bằng thiết bị luôn có sẵn trong chương  
trình). Mọi sự giả mạo, gian lận vì thế đều bị phát hiện tức khắc.  
Như vậy, bằng việc triển khai giải pháp ký điện tử ta có thể nói lời kết thúc cho  
các loại văn bằng chứng chỉ giả, mở đường cho các dịch vụ giao dịch trực tuyến với độ  
tin cậy cao. Tuy nhiên, điều này chỉ có thể đạt được nếu như mỗi người sở hữu đúng  
cặp chìa khóa công khai và bí mật của chính mình. Nếu như có một ông B nào đó có  
thể đánh lừa được mọi người rằng cặp chìa khóa công khai (mà ông đang có) là của  
ông A, thì sẽ xảy ra hiện tượng “mạo danh” vô cùng nguy hiểm. Một mặt, ông B sẽ  
đọc được tất cả các tin mật mà người khác muốn gửi cho ông A nếu tin được mã bằng  
chìa khóa công khai của ông B, và mặt khác ông B có thể ký các văn bản “vô tội vạ”  
và đánh lừa mọi người rằng ông A đã ký những văn bản đó. Tóm lại, để cho chữ ký số  
có thể phát huy được thế mạnh của mình thì trước hết cần phải có giải pháp xác định  
7
Chương 1. Những vấn đề của an toàn thông tin hiện đại  
một cách chính xác “ai là ai” trên toàn hệ thống. Một giải pháp như vậy có thể có được  
bằng việc dùng một “bên thứ ba đáng tin cậy”, một bộ máy trung thực đảm nhiệm việc  
cấp phát cho mỗi thực thể (người, máy tính, phương tiện,…) một định danh duy nhất  
và gắn cho mỗi định danh một cặp chìa khóa (bí mật – công khai) duy nhất, để rồi vào  
mọi lúc, mọi nơi bất kỳ ai cũng có thể thông qua nó để kiểm định xem một chìa khóa  
công khai nafon đó thuộc về thực thể có định danh nào. Bộ máy trung thực đó còn  
được gọi là Cơ quan thẩm quyền cấp chứng thực, gọi tắt là CA (Certificate Authority).  
1.2.2. Chứng thực số  
Khái niệm chứng thực số [3][7][13]  
Trong mật mã học, chứng thực số (còn gọi là chứng thực điện tử) là một chứng  
thực sử dụng chữ ký số để gắn một chìa khóa công khai với một thực thể (một cá nhân,  
hay một máy chủ, hoặc một công ty…). Nói cách khác, chứng thực số là phương tiện  
giúp người ta khẳng định được một chìa khóa công khai nào đó thuộc về thực thể nào  
[7].  
Một chứng thực số chuẩn mực thường bao gồm chìa khóa công khai và một số  
thông tin về thực thể sở hữu chìa khóa đó (tên, địa chỉ,…). Như vậy, thông tin trên  
chứng thực số không chỉ cho biết một chìa khóa công khai nào đó thuộc về ai, ta còn  
có thể biết được các thông tin liên quan khác, mà đôi khi cũng rất quan trọng trong  
một hệ thống cụ thể, như là danh phận, chức vụ,… của người sở hữu [3].  
Trong một mô hình với htầng khóa công khai (PKI) chuẩn mực, chữ ký trong  
chứng thực thuộc về nhà cung cấp chứng thực số (Cerfiticate Authority, viết tắt là  
CA). Chữ ký trong chứng thực là sự đảm bảo của người ký về mối liên hệ giữa chìa  
khóa công khai và thực thể được chứng nhận.  
Nội dung của chứng thực số theo chuẩn X.509 [3][13]  
Tiêu chuẩn về chứng thực số trên cơ sở hạ tầng khóa công khai phổ biến nhất  
hiện nay là X.509 được ban hành bởi ITU-T (International Telegraph Union –  
Telecom, tổ chức viễn thông quốc tế (về lĩnh vực viễn thông), thuộc liên hợp quốc).  
Bao gồm:  
Version: Chỉ định phiên bản của chứng nhận X.509.  
Serial Number: Số loạt phát hành được gán bởi CA. Mỗi CA nên gán một mã  
số loạt duy nhất cho mỗi giấy chứng nhận mà nó phát hành.  
Signature Algorithm: Thuật toán chữ ký và chrõ thuật toán mã hóa được CA  
sử dụng để ký giấy chứng nhân. Trong chứng nhận X.509 thường là sự kết hợp  
8
Chương 1. Những vấn đề của an toàn thông tin hiện đại  
giữa thuật toán băm (chẳng hạn như MD5) và thuật toán khóa công khai (chẳng  
hạn như RSA).  
Issuer Name: Tên tổ chức CA phát hành chứng thực. Hai CA khác nhau không  
được sử dụng cùng một tên phát hành.  
Validity Period: gồm hai giá trị chỉ định khoảng thời gian mà giấy chứng nhận  
có hiệu lực: not-before và not-after. Not-before: thời gian chứng nhận bắt đầu  
có hiệu lực; Not-after: thời gian chứng nhận hết hiệu lực.  
Các giá trị thời gian này được đo theo chuẩn thời gian Quốc tế, chính xác đến  
từng giây.  
Subject Name: Tên chủ thể được cấp chứng thực.  
Public Key: Chìa khóa công khai của chủ thể được cấp chứng thực.  
Issuer Unique ID & Subject Unique ID: Được đưa vào sử dụng từ X.509 phiên  
bản 2, dùng để xác định hai tổ chức CA hoặc hai chủ thể khi chúng có cùng  
DN. RFC 2459 đề nghị không nên sử dụng hai trường này.  
Extensions: Chứa các thông tin bổ sung cần thiết mà người thao tác CA muốn  
đặt vào chứng nhận. (Mới được đưa ra trong X.509 phiên bản 3).  
Signature: chữ ký số được tổ chức CA áp dụng.  
Tchức CA tạo chữ ký bằng khóa bí mật với kiểu thuật toán mã được quy định  
trong trường thuật toán chữ ký.  
Chữ ký bao gồm tất cả các phần khác trong giấy chứng nhận. (Qua đó thể hiện CA  
chứng nhận cho tất cả các thông tin khác trong giấy chứng thực, chứ không chỉ cho tên  
chủ thể và khóa công khai).  
9
Chương 1. Những vấn đề của an toàn thông tin hiện đại  
Hình 1.3: Những nội dung thông tin cơ bản theo chuẩn X.509 [13]  
1.3. Vai trò của CA và vấn đề then chốt trong thiết lập CA  
1.3.1. Vai trò của CA  
Chứng thực số là tiền đề cho nhiều ứng dụng của mật mã khóa công khai. Đối  
với các hệ mã đối xứng (bí mật), việc trao đổi chìa khóa (bí mật) giữa những người sử  
dụng trên quy mô rộng là vô cùng khó khăn, hầu như không thể thực hiện được. Với  
các hệ mã hóa khóa công khai, người ta có thể thoát ra khỏi khó khăn này. Trên  
nguyên tắc, nếu cá nhân A muốn người khác giử thông tin mật cho mình thì chỉ cần  
công bố chìa khóa công khai của chính mình. Bất kỳ ai có được chìa khóa này đều có  
thể gửi thông tin mật cho A. Tuy nhiên, khi ấy lại nảy sinh một vấn đề khác. Thật vậy,  
nếu chìa khóa công khai của A không được chứng thực, một người nào đó (D) cũng có  
khả năng đưa ra một chìa khóa công khai khác và giả mạo rằng đó là chìa khóa của A.  
Bằng cách làm như vậy kẻ “mạo danh” này có thể đọc được một số thông tin mà người  
khác gửi cho A. Nếu như chìa khóa công khai của A có trong một chứng thực số (được  
chứng thực bởi một bên thứ 3, chẳng hạn như là T, với công nghệ chữ số) thì bất kỳ ai  
tin tưởng vào T cũng có thể kiểm tra chìa khóa công khai của A. Nói cách khác, kẻ  
mạo danh D ắt sẽ bị lật tẩy. Trong mô hình hạ tầng khóa công khai thì T chính là nhà  
cung cấp chứng số (CA – Certificate Authority).  
1.3.2. Sử dụng chứng thực số  
10  
Chương 1. Những vấn đề của an toàn thông tin hiện đại  
Khi áp dụng chứng thực số ở quy mô lớn, có rất nhiều CA cùng hoạt động. Vì  
vậy một cá thể A có thể không quen thuộc (không đủ tin tưởng) với CA của một cá thể  
B khác. Do đó chứng thực của B có thể phải bao gồm chữ ký của CA ở mức cao hơn.  
Quá trình này dẫn đén việc hình thành một mạng lưới quan hệ phức tạp và phân tầng  
giữa các CA. Trong tiêu chuẩn X.509 về hệ thống hạ tầng khóa công khai, mạng lưới  
CA tạo thành cây từ trên xuống với gốc là một CA trung tâm mà không cần được  
chứng thực bởi một bên thứ 3 nào khác.  
Cũng giống như giấy CMND, một chứng thực điện tử cũng có thời hạn lưu hành  
nhất định, và có thể bị thu hồi trước thời han. Một chứng thực số có thể bị thu hồi nếu  
như chìa khóa bí mật (cùng cặp với chìa khóa công khai của nó) đã bị lộ, hoặc mối liên  
hệ giữa khóa công khai và chủ thể sở hữu đã thay đổi. Điều này có thể xảy ra ở mức  
độ không thường xuyên, nhưng người sử dụng phải luôn kiểm tra tính pháp lý của  
chứng thực số mỗi khi sử dụng. Việc kiểm tra có thể thực hiện bằng cách so sánh  
chứng thực với danh sách các chứng thực bị thu hồi (Certificate Revocation List –  
CRL). Việc đảm bảo danh sách này luôn chính xác và được cập nhật kịp thời là chức  
năng cơ bản của hạ tầng khóa công khai tập trung [13].  
1.3.3. Các chức năng cơ bản của CA  
Hình 1.4: Các chức năng của hệ thống CA [13]  
Cấp phát chứng thực [13]  
11  
Chương 1. Những vấn đề của an toàn thông tin hiện đại  
Cấp phát chứng thực là nhiệm vụ đầu tiên của một CA. Công việc này được thực  
hiện trên cơ sở một yêu cầu được đưa ra từ phía người dùng. Trong các hệ thống  
không lớn lắm, các yêu cầu này được trực tiếp gửi cho CA để trực tiếp xử lý, còn với  
các hệ thống lớn thường có thêm một khâu trung gian (đăng ký – registration) nhận  
yêu cầu từ phía người dùng chuyển cho CA và nhận chứng thực từ CA trả về cho  
người dùng. Để tạo ra một chứng thực số, CA phải sinh được một cặp chìa khóa phi  
đối xứng có độ an toàn cao để gán cho chủ thể (người yêu cầu) và tuân thủ một số quy  
định nghiêm ngặt trong việc cấp phát (ví dụ tránh để xảy ra nhầm lẫn cấp một chứng  
thực cho hai chủ thể khác nhau, hoặc tránh dùng hai định danh quá giống nhau có thể  
dẫn đến khả năng mạo danh). Thông tin ghi trong chứng thực là những thông tin cơ  
bản nhất về chủ thể và cơ quan cấp chứng thực (như trong giấy CMND), ngoài ra có  
một thông tin mang tính đặc thù cho chứng thực số (vốn không có trong CMND thông  
thường) đó là chìa khóa công khai. Đây chính là chìa khóa mà người khác dùng để  
kiểm tra chữ ký số của chủ nhân mang chứng thực. Để không thể xảy ra khả năng mạo  
nhận chìa khóa (như đã thấy với hiện tượng mạo danh), người phát hành chứng thực  
(tức là CA) sẽ dùng chìa khóa bí mật của mình ký lên cụm thông tin có trong chứng  
thực (trong đó có tên chủ thể cùng chìa khóa công khai). Chữ ký được đặt ngay dưới  
cụm thông tin đã được ký để người khác dể dàng kiểm tra (xem sơ đồ kèm theo).  
Hình 1.5: Sơ đồ minh họa chức năng cấp phát chứng thực của CA [13]  
12  
Chương 1. Những vấn đề của an toàn thông tin hiện đại  
Kiểm tra chứng thực [13]  
Để kiểm tra mt chng thc ca người dùng, người ta cần phải được  
thông tin chính xác vchìa khoá công khai ca CA. Tt nhất là lấy ttrong Chng  
thc sca chính CA. Người ta dùng chìa khoá này để giải mã phần chký scó  
trong chng thc ca người dùng ri lấy kết qutìm được đem so vi mã băm ca  
phn thông tin công khai trong chng thc số (tức là phần còn lại từ chng thc số sau  
khi đã bỏ đi phần chữ ký số). Sơ đồ minh họa:  
Hình 1.6: Sơ đồ minh họa chức năng kiểm tra chứng thực của CA [13]  
Các chứng năng còn lại của CA mang tính kỹ thuật thuần túy, ta không đề cập  
đến ở đây.  
1.3.4. Vấn đề then chốt trong thiết lập CA  
Bước đầu tiên và cũng là quan trọng nhất của một hệ thống chứng thực số CA là  
cấp phát khóa. Các hệ thống CA có thể sử dụng nhiều thuật toán tạo chữ ký số khác  
13  
Chương 1. Những vấn đề của an toàn thông tin hiện đại  
nhau của hệ mã phi đối xứng. Trong các hệ mã phi đối xứng thì hệ mã RSA được sử  
dụng rộng rãi và phổ biến nhất. Hệ mã RSA có độ bảo mật cao, luôn là thách thức cho  
giới thám mã. Nước ta đã đưa ra chuẩn chữ ký số, trong đó RSA được sử dụng như  
một hệ mã chuẩn trong một thời gian dài sắp tới. Việc sinh khóa trong hệ mã RSA về  
thực chất là tạo ra một cặp số lớn p,q là các snguyên tố mạnh. Để sinh được một  
cặp số nguyên tố như vậy, chúng ta phải tìm hiểu các lý thuyết toán học có liên quan  
đến số nguyên tố, số giả nguyên tố như: các định lý của số nguyên tố, kiểm tra số  
nguyên tố và số giả nguyên t, và cách kiểm tra số ginguyên tố mạnh sẽ được đề cập  
ở chương tiếp theo.  
14  
Chương 2. Một số công cụ toán học liên quan  
Chương 2. Một số công cụ toán học liên quan  
2.1. Số nguyên tố và hệ mã khóa công khai RSA  
2.1.1. Hệ mã khóa công khai RSA  
Trước khi đi vào các lý thuyết toán học có liên quan đến việc sinh, kiểm tra số  
nguyên tố để làm khóa cho CA, ta tìm hiểu kỹ hơn về hệ mã RSA được ứng dụng  
trong hệ thống chứng thực số.  
Hệ mã đối xứng và hệ mã phi đối xứng [1]  
Khái niệm đối xứng được dùng để chỉ các hệ mã mà trong đó, khi biết khóa  
lập mã, ta có thể tìm ra khóa giải mã, đồng thời, việc giải mã cùng đòi hỏi thời gian  
như việc lập mã. Cho đến những năm cuối của thập niêm 70 của thế kỉ 20, người ta  
mới chỉ biết đến một loại mã như vậy. Đối với các hệ mã này, cần phải giữ bí mật  
khóa lập mã, vì để lộ nó cũng tức là để lộ cách giải mã. Do đó, chỉ những người hoàn  
toàn chia sẻ mọi thông tin mật với nhau mới có thể trao đổi với nhau bằng mật mã.  
Điều này giải thích nguyên nhân của việc cho đến rất gần đây mật mã thường chỉ được  
dùng trong quân sự, ngoại giao, tức là khi những đối tượng cần trao đổi thông tin mật  
với nhau là khá it, hơn nữa, lại cùng chung quyền lợi nên sẵn sàng bảo vệ bí mật cho  
nhau trong quá trình trao đổi thông tin.  
Sự phát triển của xã hội dẫn đến việc ngày nay mật mã không những chỉ được  
dùng trong bí mật quân sự và ngoại giao, mà còn dùng, và có thể chủ yếu là dùng  
trong bí mật kinh tế, tài chính, thương mại. Vì thế xuất hiện những đòi hỏi mới đối với  
các hệ mật mã hiện đại, khác về nguyên tắc so với mật mã thường dùng trước đây.  
Không giống như các hoạt động quân sự hoặc ngoại giao, trong hoạt động kinh doanh,  
số lượng đơn vị phải cùng trao đổi thông tin thường là rất lớn. Thậm chí, những người  
có quyền lợi cạnh tranh nhau cũng có nhu cầu trao đổi những thông tin mặt với nhau.  
Bởi thế, những mật mã đối xứng khó có thể thích hợp. Hiển nhiên, muốn gửi một  
thông báo mật cho một đối tượng nào đó, ta cần phải biết khóa lập mã của họ, vì thế,  
những người cùng dùng một chìa trong hệ mã đối xứng đều biết hết bí mật của nhau.  
Các hệ thống mật mã hiện đại, mật mã khóa công khai, hay còn gọi là mã phi đối  
xứng, khắc phục được những nhược điểm đó: mỗi người tham gia trong hệ thống chỉ  
cần giữ bí mật chìa khóa giải mã của mình (còn gọi là chìa khóa bí mt), trong khi  
khóa lập mã được thông báo công khai (và thường được gọi là chìa khóa công khai).  
Việc biết khóa lập mã không cho phép tìm ra khóa giải mã trong một thời gian chấp  
nhận được, ngay cả khi sử dụng những máy tính hiện đại nhất. Những hệ mã phi đối  
xứng tìm thấy đầu tiên là những mật mã dùng các hàm số học.  
15  
Chương 2. Một số công cụ toán học liên quan  
Hệ mã RSA [1]  
Trong các hệ mã phi đối xứng thì hệ mã RSA (phát minh năm 1978 bởi Rivest,  
Shamir và Adleman) được sử dụng rộng rãi và phổ biến nhất. Hệ mã RSA có độ bảo  
mật cao, luôn là thách thức cho giới thám mã. Nước ta đã đưa ra chuẩn chữ ký số,  
trong đó RSA được sử dụng như một hệ mã chuẩn trong một thời gian dài sắp tới.  
Hệ RSA được xây dựng trên cơ sở mã mũ, trong đó khóa lập mã (công khai) là  
cặp (n,e) , gồm số mũ e và modulo n . Khóa giải mã (bí mật) là cặp (n,d) . Với là  
d
số nghịch đảo của e modulo (n) . Sn là tích của hai số nguyên tố rất lớn p,q nào  
đó, n p.q , còn e được chọn là số nguyên tố cùng nhau với (n) , trong đó (n) là giá  
trị hàm Euler của n . Để mã hóa một thông báo, trước tiên ta chuyển nó sang dạng số  
và nhóm thành các khối với độ dài lớn nhất có thể (tùy thuộc khả năng tính toán và tốc  
độ yêu cầu) với một số chẵn chữ số. Để mã hóa một khối P trong văn bản, ta tính  
E(P) :C Pe (modn)  
.
Khi ấy, do một hệ quả của Định lý Euler (sẽ được trình bày ở phần sau), quá trình giải  
mã không đòi hỏi phải “khai căn bậc e modulo n ” của khối văn bản mã, nếu như biết  
được số nghịch đảo  
của e modulo (n) , tức là thỏa mãn ed 1(mod(n)) . Nghịch  
d
đảo này tồn tại theo điều kiện (e,(n)) 1 và, do hệ quả đã nêu, ta có  
d
D(C) :Cd   
Pe  
Pde P(mod n)  
,
khi (P,n) 1. Chú ý rằng, xác suất để P n không nguyên tố cùng nhau là hết sức  
nhỏ, vì điều này chỉ có thể xảy ra khi P là bội của p hoặc q . Thông thường P chỉ là  
những “khối văn bản” có độ dài không lớn, nói chung là nhỏ hơn hẳn p q , cho nên  
điều kiện (P,n) 1 là luôn xảy ra, và công thức trên cho thấy việc giải mã một khối  
trong văn bản mật cũng chính là việc nâng lên lũy thừa bậc rồi rút gọn theo modulo  
d
n . Cặp (n,d) được gọi là khóa giải mã.  
Việc biết chìa khóa lập mã (n,e) không dẫn đến việc tìm được chìa khóa giải mã  
(n,d) . Để có thể tìm được  
thì ta phải tìm được (n) . Việc tìm (n) không dễ hơn  
d
với việc phân tích n ra tích của hai số nguyên tố rất lớn là p q . Thật vậy, ta có:  
p q n (n) 1;  
2
2
p q   
p q  
4pq   
p q  
4n .  
16  
Chương 2. Một số công cụ toán học liên quan  
Từ các công thức đó để tìm được p q thì với khả năng của con người, thậm chí là  
máy tính có tốc độ xử lý cao là không thể.  
Độ an toàn của RSA [1]  
Nếu ta chọn các số p q khoảng 100 chữ số thập phân, thì n sẽ có khoảng  
200 chữ số thập phân. Để phân tích một số nguyên cỡ lớn như thế, với các thuật toán  
nhanh nhất hiện này và với những máy tính hiện đại nhất, ta mất hàng tỷ năm!  
Sau khi tìm ra hệ mã, Rivesst, Shamir và Adleman có viết một bài báo công bố  
phát minh dưới dạng một thông báo khoa học của MIT và, trên cột Martin Gardner’s  
của tờ báo Scienfitic American, họ có đưa ra lời thách thức bạn đọc bẻ khóa một mẩu  
tin nhỏ đã được mã hóa với:  
n=1143816257578888676692357799761466120102182967212423625625618429357  
06935245733897830597123563958705058989075147599290026879543541  
e = 9007.  
Mẩu tin  
“first solver wins one hundred dollars”  
xuất hiện trong dạng mã hóa (với A = 01, B=02, C=03 …) chỉ được giải mã vào ngày  
26/4/1994, bằng một cố gắng tổng lực mang tính quốc tế (qua Internet) với việc sử  
dụng 1600 workstations, mainframes, và supercomputers tấn công trong 8 tháng liên  
tục để phân tích số nêu trên ra thừa số nguyên tố.  
Thực tế này cho thấy rằng thuật toán RSA là rất an toàn, vì không mấy khi có  
điều kiện để huy động một lực lượng tính toán hùng hậu như thế vào một công việc  
giải mã một mẩu tin.  
Có một vài điều cần chú ý khi chọn các số p q để tránh rơi vào trường hợp  
tích pq bị phân tích nhanh nhờ những thuật toán đặc biệt: p q cần chọn sao cho  
p 1 q 1 không chỉ có toàn các ước nguyên tố nhỏ (có phân tích “vụn”). Ngoài ra,  
ước chung lớn nhất (p 1,q 1) phải là số nhỏ, p q phải có số chữ số trong khai  
triển thập phân khác nhau không nhiều.  
2.1.2. Lý thuyết toán học về số nguyên tvà các vấn đề liên quan  
Snguyên t[2]  
Số nguyên tlà số nguyên lớn hơn 1, không chia hết cho số nguyên dương nào  
ngoài 1 và chính nó. Số nguyên lớn hơn 1 không phải là số nguyên tố được gọi là hợp  
s.  
17  
Chương 2. Một số công cụ toán học liên quan  
Các Định lý về số nguyên t[2]  
Mọi hợp số n đều có ước nguyên tố nhỏ hơn n .  
Mọi số nguyên tố lớn hơn 1 đều phân tích được một cách duy nhất thành tích các  
số nguyên tố, trong đó các thừa số được viết với thứ tự không giảm.  
Định lý số nguyên tố được Gauss phát biểu năm 1773:  
Với mỗi số thực dương x cho trước, ta ký hiệu (x) là số các số nguyên tố  
x
1  
không vượt quá x. Khi đó, ta có: lim(x)/  
.
log x  
x  
Ước chung lớn nhất [2]  
Ước chung lớn nhất của 2 số tự nhiên a,b là số lớn nhất trong tập các ước chung  
của 2 số đó, được ký hiệu là gcd(a,b) hay đơn giản là (a,b).  
Khi 2 số tự nhiên có ước chung lớn nhất là 1 thì chúng được gọi là nguyên tố cùng  
nhau.  
Phi hàm Euler [1]  
Với  
, số lượng các số tự nhiên bé hơn n và nguyên tố cùng nhau với n  
n   
được ký hiệu là (n) . Ví dụ: (5) 4 , (6) 2, (7) 6.  
Rõ ràng, khi p là số nguyên tố thì mọi số tự nhiên bé hơn nó đều là nguyên tố  
cùng nhau với nó và do đó ta có (p) p 1. Tổng quát hơn, khi p là số nguyên tố và  
r là một số tự nhiên bất kỳ thì (pr ) pr1 ( p 1) pr (11/ p).  
Có thể chứng minh được rằng khi m,n là các số nguyên tố cùng nhau thì ta có  
(m.n) (m).(n)  
và do đó để tính của một số tự nhiên nào đó người ta phân tích nó ra các thừa số  
nguyên tố rồi áp dụng các công thức trên. Ví dụ:  
(720) (24.32.5) (24 ).(32 ).(5) 23 (2 1)3(3 1)(5 1) 192.  
Phép tính đồng dư [1]  
Giả sử m là một số nguyên dương. Ta nói hai số nguyên a là đồng dư với  
b
nhau theo modulo m nếu hiệu  
chia hết cho m . Ký hiệu a b(modm) .  
a b  
Phép tính đồng dư theo modulo m dẫn đến việc tách tập số nguyên ra thành m  
lớp, mỗi lớp chứa các số nguyên đồng dư với nhau theo . Tập các lớp này được  
mod m  
ký hiệu là  
(Z là tập các số nguyên) và chứa đúng m phần tử. Mỗi lớp trong tập  
/ m  
18  
Chương 2. Một số công cụ toán học liên quan  
có đúng 1 số nằm trong đoạn [0,m 1] , cho nên mỗi số nguyên trong đoạn này  
/ m  
được xem “đại diện” của một lớp.  
Một số tính chất của phép tính đồng dư:  
a a(mod m);  
Nếu a b(modm) thì b a(modm) ;  
Nếu a b(modm) b c(mod m) thì a c(modm);  
Nếu a b(modm) , c d(mod m) thì a c b d(mod m) , a.c b.d(modm);  
Như vậy, ta có thể tự do thực hiện các phép tính số học thông thường trên tập  
.
/ m  
Nếu x là một phần tử trong  
gcd(x,m) 1 thì tồn tại các số u,v sao cho  
/ m  
, tức là u.x 1(modm) , nên người ta nói x có nghịch đảo (trong  
) là  
/ m  
ux vm 1  
u , và thường ký hiệu phần tử nghịch đảo này là x1 , hay  
.
1/ x  
Định lý Fermat (bé)[2]: Nếu p là một số nguyên tố còn a là một số nguyên thì  
a p a(mod p). Nếu a không chia hết cho p (tức là a(mod p) 0 ) thì  
a p1 1(mod p).  
Ví dụ. Dễ dàng thấy rằng  
47 4(mod7) ; 471 1(mod7); 1471 0(mod7) .  
Thặng dư bình phương [1]  
Cho số nguyên tp . Số nguyên a p được gọi là thặng dư bình phương  
(mod p) nếu như tồn tại số nguyên x thỏa mãn phương trình x2 a(mod p) .  
Ký hiệu Legendre [1]  
Với số nguyên tp 2 và số nguyên bất kỳ a người ta ký hiệu  
p1  
2
a
   
L(a, p) :  
a mod p  
   
p
   
Và chỉ ra rằng L(a, p) sẽ bằng 0 khi a chia hết cho p , bằng 1 khi a là một thặng dư  
bình phương (mod p) và bằng -1 trong trường hợp còn lại.  
Có thể mở rộng khái niệm ký hiệu trên ra cho trường hợp p không phải là  
nguyên tố, nhưng chỉ xét những số a trong tập thặng dư rút gọn của p (tức là những  
thặng dư nguyên tố cùng nhau với p ).  
Ký hiệu Jacobi [1]  
Với số nguyên n p1.p2 ...pk , trong đó pi , i 1,...,k , là các số nguyên tố, còn a  
nằm trong tập thặng dư rút gọn của n , ta ký hiệu  
19  
Chương 2. Một số công cụ toán học liên quan  
J(a,n) L(a, p1 )x...xL(a, pk ).  
Như vậy trong trường hợp riêng khi n là số nguyên tố thì ký hiệu Jacobi trùng với ký  
hiệu Legendre.  
2.2. Việc tính toán số nguyên tố và khái niệm số giả nguyên tố. Kiểm tra số  
giả nguyên tmạnh.  
2.2.1. Thuật toán kiểm tra số nguyên tố thông thường và khái niệm số giả nguyên  
tố  
Thuật toán: Sàng Eratosthenes [2]  
Để kiểm tra n có phải là số nguyên tố hay không, ta thực hiện phép chia cho tất  
cả các số nguyên tố không vượt quá n .  
Độ phức tạp: Theo định lý số nguyên tố của Gauss, số các số nguyên tố không vượt  
n
2 n  
quá n là vào khoảng  
. Để chia n cho m , ta cần O(log2 nlog2 m) phép  
log n  
log n  
tính bít. Như vậy, nếu n vào cỡ khoảng 100 chữ số thập phân, số các phép tính bit  
phải dùng sẽ vào c1050 . Với những máy tính thực hiện một triệu phép tính một giây,  
thời gian cần thiết sẽ vào khoảng 3,1.1036 năm! Điều này dẫn đến một phương án khác  
thay thế: số giả nguyên t.  
Số giả nguyên t[2]  
Theo định lý Fermat, nếu n là số nguyên tố và  
là số nguyên tùy ý, thì  
b
bn b(modn) . Do đó nếu tồn tại số sao cho bn b(modn) thì n phải là hợp số. Như  
b
vậy, nếu một số nguyên thỏa mãn các giả thiết của định lý Fermat bé thì “có nhiều khả  
năng” nó là một số nguyên tố! Ta có định nghĩa sau:  
Giả sử  
là một số nguyên dương. Nếu n là hợp số nguyên dương và  
b
bn b(modn) , thì n được gọi là số giả nguyên tố cơ sở .  
b
Nói chung các số giả nguyên tít hơn nhiều so với các số nguyên tố. Chẳng hạn,  
có tất cả 455052512 số nguyên tố bé hơn 1010 , nhưng chỉ có 14884 số giả nguyên tố cơ  
sở 2 trong khoảng đó. Sự kiện này giải thích cách nói ở trên: Các số thỏa mãn định lý  
Fermat bé có nhiều khả năng là số nguyên tố.  
2.2.2. Kiểm tra số giả nguyên tmạnh  
Kiểm tra Miller [2]  
20  
Chương 2. Một số công cụ toán học liên quan  
Giả sử n là số nguyên dương lẻ, n 1 2s t , trong đó s là số nguyên không âm,  
t
là số nguyên dương lẻ. Ta nói n trải qua được kiểm tra Miller cơ sở , nếu  
b
j
bt 1(mod n) , hoặc b2 t  1(mod n) , với j nào đó, 0 j s 1.  
Số nguyên n được gọi là giả nguyên tố mạnh cơ sở nếu nó là hợp số và trải  
b
qua được kiểm tra Miller cơ sở .  
b
Cách làm trên có thể kiểm tra nguyên tố những số không lớn lắm. Đối với những  
số lớn, ta có thể dùng thuật toán xác suất dựa trên định lý :  
n 1  
Nếu n là một hợp số dương lẻ thì tồn tại không quá  
cho n trải qua được kiểm tra Miller đối với các cơ sở đó.  
,
, sao  
b 1 b n 1  
4
Từ định lý trên suy ra rằng, nếu số  
được chọn ngẫu nhiên trong khoảng  
b
1
thì n trải qua kiểm tra Miller cơ sở với xác suất bé hơn . Như vậy,  
1 b n 1  
b
4
nếu ta chọn số ngẫu nhiên thì xác suất để n tri qua kiểm tra Miller đối với cơ sở  
k
k
1
4k  
đó sẽ bé hơn  
. Khi đủ lớn, với dụ  
, xác suất đó quá nhỏ, nên với n trải qua  
k 20  
k
20 cơ sở ngẫu nhiên thì có thể tin “gần chắc chắn” rằng n là số nguyên tố. Từ đó ta có  
thuật toán xác suất sau:  
Thuật toán Miller-Rabin [9], [11]  
RGB là bộ sinh bít ngẫu nhiên  
Input:  
1. w  
The odd integer to be tested for primality. This will be  
either p or q , or one of the auxiliary primes p1 , p2 ,q1 or  
q2 .  
2.  
The number of iterations of the test to be performed; the  
iterations  
value shall be consistent with Table 3 or 4.  
Output:  
1.  
The status returned from the validation procedure, where  
status  
status is either PROBABLY PRIME or COMPOSITE.  
Process:  
1. Let a be the largest integer such that 2a divides  
.
w 1  
2. m (w 1)/ 2a .  
3. wlen len(w).  
4. For to  
do  
i 1  
iterations  
4.1 Obtain a string of  
bits from an RBG.  
wlen  
b
Comment: Ensure that  
.
1 b w 1  
4.2 If ((b 1)or(b w 1)), then go to step 4.1.  
21  
Chương 2. Một số công cụ toán học liên quan  
4.3 z bm mod w.  
4.4 If ((z 1)or(z w 1)) , then go to step 4.7.  
4.5 For j 1 to  
do  
a 1  
4.5.1 z z2 mod w .  
4.5.2 If (z w 1) , then go to step 4.7.  
4.5.3 If (z 1), then go to step 4.6.  
4.6 Return COMPOSITE.  
4.7 Continue.  
Comment: Increment for the do-  
i
loop in step 4.  
5. Return PROBABLY PRIME.  
Mã code cụ thể của thuật toán này xem ở phần phụ lục.  
Thuật toán Miller-Rabin nâng cao [9]: cung cấp thêm thông tin chi tiết khi gặp một  
lỗi, có thể hữu dụng khi sinh và xác thực số nguyên tố trong mã hóa khóa công khai  
RSA.  
RGB là bộ sinh bít ngẫu nhiên  
Input:  
1. w  
The odd integer to be tested for primality. This will be  
either p or q , or one of the auxiliary primes p1 , p2 ,q1 or  
q2 .  
2.  
The number of iterations of the test to be performed; the  
iterations  
value shall be consistent with Table 3 or 4.  
Output:  
1.  
The status returned from the validation procedure, where  
status is either PROBABLY PRIME, PROVABLY  
COMPOSITE WITH FACTOR (returned with the  
factor), and PROVABLY COMPOSITE AND NOT A  
POWER OF A PRIME.  
status  
Process:  
1. Let a be the largest integer such that 2a divides  
.
w 1  
2. m (w 1)/ 2a .  
3. wlen len(w).  
4. For to  
do  
i 1  
iterations  
4.1 Obtain a string of  
bits from an RBG.  
wlen  
b
Comment: Ensure that  
.
1 b w 1  
4.2 If ((b 1)or(b w 1)), then go to step 4.1.  
4.3 g GCD(b, w) .  
4.4 If (g 1) , then return PROVABLY COMPOSITE WITH  
FACTOR and the value of g .  
4.3 z bm mod w.  
4.4 If ((z 1)or(z w 1)) , then go to step 4.15.  
22  
Chương 2. Một số công cụ toán học liên quan  
4.7 For j 1 to  
4.7.1 x z.  
do  
a 1  
Comment:  
and  
x w  
x 1  
4.7.2 z x2 mod w  
4.7.3 If (z w 1) , then go to step 4.15.  
4.7.4 If (z 1), then go to step 4.12.  
4.8 x z.  
Comment: x b(w1) / 2 mod w and  
x w  
4.9 z x2 mod w.  
4.10 If (z 1), then go to step 4.12.  
4.11 x z.  
Comment: x b(w1) mod w and  
.
x 1  
4.12 g GCD(x 1,w).  
4.13 If (g 1) , then return PROVABLY COMPOSITE WITH FACTOR  
and the value of g  
4.14 Return PROVABLY COMPOSITE AND NOT A POWER OF  
A PRIME.  
4.15 Continue.  
Comment: Increment for the do-  
i
loop in step 4.  
5. Return PROBABLY PRIME.  
Hai thuật toán trên có số vòng lặp (iterations) được xác định dựa theo bảng sau:  
Bảng 2.1: Số vòng lặp tối thiểu trong thuật toán Miller-Rabin khi sinh số nguyên  
tố sử dụng trong hệ mã RSA [9]  
Các số nguyên tố  
p1 , p2 ,q1 ,q2 > 100 bits  
p q : 512 bits  
Số vòng lặp  
Cho p1 , p2 ,q1 ,q2 : 28  
Cho p q : 5  
Xác suất li 280  
p1 , p2 ,q1 ,q2 > 140 bits  
p q : 1024 bits  
Cho p1 , p2 ,q1 ,q2 : 38  
Cho p q : 5  
Xác suất lỗi 2112  
p1 , p2 ,q1 ,q2 > 170 bits  
p q : 1536 bits  
Cho p1 , p2 ,q1 ,q2 : 41  
Cho p q : 4  
Xác suất lỗi 2128  
23  
Chương 2. Một số công cụ toán học liên quan  
Bảng 2.2: Số vòng lặp tối thiểu trong thuật toán Miller-Rabin khi sinh số nguyên  
tố sử dụng trong hệ mã RSA với xác suất lỗi là 2100 [9]  
Các số nguyên tố  
p1 , p2 ,q1 ,q2 > 100 bits  
p q : 512 bits  
Số vòng lặp  
Cho p1 , p2 ,q1 ,q2 : 38  
Cho p q : 7  
p1 , p2 ,q1 ,q2 > 140 bits  
p q : 1024 bits  
Cho p1 , p2 ,q1 ,q2 : 32  
Cho p q : 4  
p1 , p2 ,q1 ,q2 > 170 bits  
p q : 1536 bits  
Cho p1 , p2 ,q1 ,q2 : 27  
Cho p q : 3  
Ngoài ra còn có thuật toán Lucas để kiểm tra xác suất tính nguyên t(trong FIPS 186-  
3) có liên quan đến ký hiệu Jacobi được trình bày ở trên.  
Thuật toán Lucas [9], [11]  
Input:  
The candidate odd integer to be tested for primality.  
C
Output:  
Where status is either PROBABLY PRIME or COMPOSITE.  
status  
Process:  
1. Find the first D in the sequence {5,7,9,11,13,15,17,...} for which the  
D
C
D
C
Jacobi symbol  
 1. If  
0 for any D in the sequence,  
return (COMPOSITE).  
2.  
K C 1  
3. Let Kr Kr1...K0 be the binary expansion of K , with Kr 1.  
4. Set Ur 1and Vr 1.  
5. For  
to do  
i r 1  
0
5.1 Utemp Ui1Vi1 modC .  
2
2
Vi1 DUi1  
5.2 Vtemp  
modC .  
2
5.3If (Ki 1) then  
Utemp Vtemp  
5.3.1 Ui   
modC .  
2
24  
Chương 2. Một số công cụ toán học liên quan  
Vtemp DUtemp  
5.3.2 Vi   
modC .  
2
Else  
5.3.3 Ui Utemp  
.
5.3.4 Vi Vtemp  
.
6. If (U0 0) then return (PROBABLY PRIME). Otherwise, return  
(COMPOSITE).  
Bước 5.2, 5.3.1 và 5.3.2 có biểu thức dưới dạng  
, trong đó A là số nguyên,  
A/ 2modC  
và  
là số nguyên lẻ. Nếu  
không nguyên (do A lẻ), thì  
có thể được  
A/ 2modC  
C
A/ 2  
tính bằng (A C)/ 2modC . Một cách khác, A/ 2modC A(C 1) / 2modC , với mọi giá  
trị A nguyên.  
Mã code cụ thể của thuật toán Lucas xem phần phụ lục.  
Nhận xét  
Một số giả nguyên tố sau khi qua được 2 kiểm tra là thuật toán Miller-Rabin và  
Lucas thì có thể tin tưởng là mạnh [11], đồng nghĩa với việc xác suất để nó không phải  
số nguyên tố là rất thấp.  
2.2.3. Tính nguyên tố mạnh của một số  
Một số nguyên tp được gọi là mạnh khi nó thỏa mãn các tính chất như sau [10],  
[12]:  
p lớn.  
p 1 có thừa số nguyên tố lớn. Nghĩa là, p a1q1 1 với a1 nào đó q1 là  
số nguyên tố lớn.  
q1 1 có thừa số nguyên tố lớn. Nghĩa là, q1 a2 q2 1 với a2 nào đó và q2 là  
số nguyên tố lớn.  
p 1 có thừa số nguyên tố lớn. Nghĩa là, p a3q3 1 với a3 nào đó và q3 là  
số nguyên tố lớn.  
Đôi khi một số nguyên tố chỉ cần thỏa mãn một số trong các trường hợp trên cũng  
được gọi là mạnh.  
Trong trường hợp của bài toán, các điều kiện để một cặp số nguyên tp,q là  
mạnh được đề cập đến ở bảng sau:  
25  
Chương 2. Một số công cụ toán học liên quan  
Bảng 2.3. Điều kiện của các số nguyên tthành phần [10]  
nlen  
Độ dài tối thiểu của p1, p2 ,q1,q2  
Độ dài tối đa của len(p1 ) len(p2 ) ,  
len(q1 ) len(q2 )  
1024  
2048  
3072  
> 100 bits  
> 140 bits  
> 170 bits  
< 496 bits  
< 1007 bits  
< 1518 bits  
Trong đó  
lần lượt là các thừa số nguyên tố của p 1, p 1,q 1,q 1;  
nlen  
p1, p2 ,q1,q2  
là độ dài của modulo n tính theo bit; len(p) là độ dài của số p tính theo bit.  
Mã code của phần kiểm tra số nguyên tố mạnh xem ở phục lục.  
2.3. Chìa khóa an toàn  
Để một chìa khóa của hệ mã RSA được gọi là an toàn theo tiêu chuẩn của FIPS  
186-3 (Federal Information Processing Standard được ban hành bởi U.S. National  
Institute of Standards and Technology (NIST)) nó phải thỏa mãn các điều kiện sau [9]:  
i. Số mũ e công khai phải thỏa mãn:  
- Phải được chọn trước để tạo ra p,q và .  
d
16  
256  
- Là 1 số nguyên dương lẻ thỏa mãn:  
.
2 < e < 2  
- Có thể là số định sẵn hoặc được chọn ngẫu nhiên.  
ii. Hai sp q phải thỏa mãn:  
- (p 1) (q 1) sẽ nguyên tố cùng nhau với e .  
- ( 2)(2(nlen / 2)1 ) p (2nlen / 2 1).  
- ( 2)(2(nlen / 2)1 ) q (2nlen / 2 1) .  
- p - q > 2(nlen / 2)- 100  
,
là độ dài theo bit của n .  
nlen  
iii. Sau khi sinh ra p q , số mũ bí mật được chọn phải thỏa mãn:  
d
nlen / 2  
- Là 1 số nguyên dương và  
.
d > 2  
- d e1 mod(gcd((p q),(q 1))), với gcd(a,b) là ước chung lớn nhất của a và .  
b
26  

Tải về để xem bản đầy đủ

pdf 52 trang yennguyen 11/07/2025 320
Bạn đang xem 30 trang mẫu của tài liệu "Khóa luận Xử lý song song quá trình sinh khóa của hệ thống cấp phát chứng thực số", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfkhoa_luan_xu_ly_song_song_qua_trinh_sinh_khoa_cua_he_thong_c.pdf