TÓM TẮT NỘI DUNG Trong đề tài này tôi trình bày việc cài đặt phần cứng thuật toán RSA cho hệ thống bảo mật khoá công khai.. Để tăng tốc hệ thống bảo mật RSA, giải thuật RSA đa số nguyên
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA
-
PHẠM XUÂN KHÁNH
“PHÂN TÍCH CƠ CHẾ BẢO MẬT RSA
ĐA SỐ NGUYÊN TỐ (RSA CRT)
VÀ CÀI ĐẶT RSA CRT TRÊN FPGA”
Chuyên ngành : Kỹ thuật điện tử
Mã số ngành: 2.07.01
TÓM TẮT LUẬN VĂN THẠC SĨ
Tp Hồ Chí Minh, tháng 7 năm 2007
Trang 2ABSTRACT
In this project we present an hardware implementation of the RSA algorithm for
public-key cryptography The RSA algorithm consists in the computation of
modular exponentials on large integers, that can be reduced to repeated modular
multiplications 1024-bit RSA circuit is implemented in VHDL It is a full-featured
RSA circuit including key generating and data encryption/decryption In order to
speed up RSA cryptosystem, multi-prime RSA based on Chinese Remainder
Theorem (CRT) is used in this project to replace an RSA operation by several
paralell operations with smaller bases and exponents These components are too big
to fit into a single Xilinx Virtex II Pro on the Field Programmable Port Extended
(FPX) platform, so that we are unable to test them in real hardware However, each
sub-component was simulated in ModelSIM and proved functionally correct
Although neither RSA key generation nor data encryption/decryption component
can be tested on FPX, we still implemented all testing related hardware, including
Control Packet Processor (CPP) and Output Packet Processor (OPP)
Trang 3TÓM TẮT NỘI DUNG
Trong đề tài này tôi trình bày việc cài đặt phần cứng thuật toán RSA cho hệ thống bảo mật khoá công khai Thuật toán RSA bao gồm việc tính toán phép mũ modulo trên số nguyên giá trị lớn, và có thể được tối ưu dựa vào phép nhân modulo Hệ thống RSA 1024 bit sẽ được cài đặt bằng ngôn ngữ VHDL Đây là một mạch đầy
đủ tính năng bao gồm việc phát sinh khoá và mã hoá/giải mã Để tăng tốc hệ thống bảo mật RSA, giải thuật RSA đa số nguyên tố dựa trên CRT (Chinese Remainder Theorem) được sử dụng trong đề tài này để thay thế hoạt động RSA thông thường bằng cách tiến hành các tiến trình song song với cơ số và số mũ nhỏ hơn Những thành phần này quá lớn để có thể đẩy xuống kit Xilinx Virtex II Pro thông qua FPX (Field Programmable Port Extended), vì thế chúng ta không thể kiểm tra chúng trên phần cứng Tuy nhiên, mỗi thành phần có thể mô phỏng trên phần mềm ModelSIM
và chứng minh được các khối chức năng hoạt động đúng Mặc dù cả khối phát sinh khoá RSA và mã hoá/giải mã không thể kiểm tra qua FPX, song chúng ta vẫn có thể cài đặt các khối phần cứng liên quan thông qua CPP (Control Packet Processor) và OPP (Output Packet Processor)
Trang 4MỤC LỤC
ABSTRACT - ii
TÓM TẮT NỘI DUNG - iii
MỤC LỤC - iv
DANH SÁCH CÁC HÌNH - vi
CHƯƠNG 1: GIỚI THIỆU - 1
1.1 Đặt vấn đề - 1
1.2 Tổng quan tình hình nghiên cứu - 1
1.3 Mục tiêu, đối tượng và phạm vi nghiên cứu - 4
1.3.1 Mục tiêu của đề tài - 4
1.3.2 Đối tượng và phạm vi nghiên cứu - 4
1.4 Nội dung nghiên cứu - 4
1.5 Bố cục tóm tắt luận văn - 5
1.6 Ý nghĩa đề tài - 6
1.6.1 Ý nghĩa khoa học - 6
1.6.2 Ý nghĩa kinh tế xã hội - 6
CHƯƠNG 2: CƠ BẢN VỀ CƠ CHẾ BẢO MẬT - 7
2.1 Các dạng mã hoá - 7
2.2 Thuật toán và khoá - 7
2.3 Mã hoá dữ liệu - 8
2.4 Thuật toán RSA và thủ thuật tăng tốc bằng phương pháp CRT -10
2.4.1 Mô tả giải thuật RSA -11
2.4.2 Thủ thuật tăng tốc cơ chế RSA bằng phương pháp CRT -13
CHƯƠNG 3: THỰC HIỆN THUẬT TOÁN RSA TRÊN PHẦN CỨNG FPGA -17
3.1 Sơ đồ khối phần cứng cho thuật toán RSA -17
3.1.1 Mô hình tổng quát -18
3.1.2 Khối KEYGENERATE -18
3.1.3 Khối ENCRYPTION -20
3.1.4 Khối DECRYPTION -21
3.2 Kết quả tổng hợp phần cứng -22
3.2.1 Khối KEYGENERATE -23
3.2.2 Khối ENCRYPTION -23
3.2.3 Khối DECRYPTION -24
3.2.4 Đánh giá kết quả thực thi phần cứng -24
3.3 Kết quả mô phỏng bằng ModelSIM -25
3.3.1 Khối phát sinh khoá RSA -25
3.3.2 Khối phát sinh khoá RSA CRT -25
Trang 53.3.3 Khối mã hoá RSA -26
3.3.4 Khối giải mã RSA thông thường -26
3.3.5 Khối giải mã RSA CRT -27
3.4 Chương trình RSA CRT và kết quả mô phỏng trên kit Xilinx Virtex II Pro -27
CHƯƠNG 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN -32
4.1 Kết quả của đề tài -32
4.2 Đánh giá kết quả và hướng phát triển của đề tài -32
TÀI LIỆU THAM KHẢO -I
Trang 6DANH SÁCH CÁC HÌNH
Hình 2 1 Quá trình mã hoá đối xứng 8
Hình 2 2 Quá trình mã hoá bất đối xứng 9
Hình 2 3 Quá trình ký chữ ký số 10
Hình 2 4 Thuật toán RSA 13
Hình 3 1 Mô hình thực hiện phần cứng 17
Hình 3 2 Sơ đồ khối của hệ thống 17
Hình 3 3 Khối KEYGENERATE 19
Hình 3 4 Khối ENCRYPTION 21
Hình 3 5 Mô hình kiến trúc của khối DECRYPTION 22
Hình 3 6 Kết quả mô phỏng khối phát sinh khoá RSA 25
Hình 3 7 Kết quả mô phỏng khối phát sinh khoá RSA CRT 25
Hình 3 8 Kết quả mô phỏng khối mã hoá RSA 26
Hình 3 9 Kết quả mô phỏng khối giả mã RSA thông thường 26
Hình 3 10 Kết quả mô phỏng khối giả mã RSA CRT 27
Hình 3 11 Giao diện chính của chương trình mô phỏng 28
Hình 3 12 Quá trình phát sinh cặp khoá public/ private 29
Hình 3 13 Quá trình mã hoá RSA 30
Hình 3 14 Quá trình giải mã RSA CRT 31
Trang 7CÁC TỪ VIẾT TẮT
ASIC Application Specific Integrated Circuit
ASSP Application Specific Standard Package
CCITT Comité Consultatif International
LDAP Lightweight Directory Access Protocol
Trang 8LUT Look Up Table
RISC Reduced Instruction Set Computer
SATA Serial Advanced Technology Attachment
VHDL VHSIC Hardware Description Language
VHSIC Very High Speed Integrated Circuits
Trang 9CHƯƠNG 1: GIỚI THIỆU
1.1 Đặt vấn đề
Với sự phát triển liên tục và mạnh mẽ của mạng internet và mạng mở wireless, nên
có một nhu cầu cấp thiết là bảo vệ dữ liệu truyền tải trên mạng RSA là một kỹ thuật
mã hoá đã được sử dụng rộng rãi trong các ứng dụng bảo vệ dữ liệu
RSA dựa trên độ khó của các phép toán số lớn để cung cấp các dịch vụ bảo mật Thuật toán RSA hoàn toàn có thể được tính toán trên software, song đối với một số ứng dụng thời gian thực, chẳng hạn như ứng dụng VPN, thì các tính toán RSA trên software không đáp ứng đầy đủ các yêu cầu đó Việc này có thể hoàn toàn được khắc phục bằng cách tăng tốc thuật toán trên công nghệ ASIC hoặc ASSPs, song các giải pháp này thường rất tốn kém và không mềm dẻo về mặt giải pháp Kết hợp giữa vấn đề về giá cả và tốc độ, thì việc cài đặt RSA trên FPGA là hợp lý nhất Với
ly do trên, đã có rất nhiều công trình nghiên cứu đề nghị nhiều giải pháp khác nhau,
và cũng chưa có giải pháp nào hoàn chỉnh cho việc cài đặt thuật toán RSA trên FPGA
Để có thể cài đặt phần cứng cho RSA, một số giảp pháp có một số tính toán phức tạp được tính toán chẳng hạn như kỹ thuật nhân Montgomery Kỹ thuật Montgomery cho phép cài đặt thuật tiện cho hệ thống mã hoá RSA trên FPGA Các tính toán Montgomery dựa trên việc tái sử dụng các phép cộng
Trong đề tài này có cách tiếp cận hoàn toàn khác Đó là sử dụng phương pháp nhị phân cho các phép modulo, và sử dụng XilinxCoreLib, bộ cộng 32 bit sử dụng bảng tra LUT 4 ngõ vào để làm hạt nhân cho phép cộng, nhằm tận dụng tài nguyên và giải quyết vấn đề tốc độ cho phép cộng, yếu tố quan trọng ảnh hưởng đến tốc độ toàn hệ thống Trong hệ thống mã hoá RSA, vấn đề tốc độ của khối giải mã đóng
một vai trò tối quan trọng vì hệ số public exponent e thường được lựa chọn là môt
số nguyên tố rất nhỏ nên tốc độ mã hoá sẽ rất nhanh, gây ảnh hưởng đến tốc độ giải
mã Trong đề tài này sẽ áp dụng giải pháp CRT cho việc giải mã, với giải thuật CRT hai số nguyên tố sẽ đẩy nhanh tốc độ giải mã lên bốn lần Kết quả so sánh giữa phuơng pháp RSA thông thường và RSA CRT sẽ được thấy rõ trong các mô phỏng ModelSIM, ngoài ra đề tài sẽ tổng hợp giải thuật RSA CRT lên board XUP Virtex
II Pro Development System
1.2 Tổng quan tình hình nghiên cứu
Về khía cạnh mã hoá, RSA là giải thuật cho hệ thống mã hoá khoá công khai Đây
là thuật toán đầu tiên phù hợp cho việc ký và mã hoá, và là một trong bước cải tiến
Trang 10quan trọng trong hệ thống mã hoá khoá công khai RSA đã được sử dụng rộng rãi trong các giao thức thương mại điện tử và đã được chứng minh về độ tin cậy trong thực tế
Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT) Tên của thuật toán lấy từ 3 chữ cái đầu của tên 3 tác giả
Trước đó, vào năm 1973, Clifford Cocks, một nhà toán học người Anh làm việc tại GCHQ, đã mô tả một thuật toán tương tự Với khả năng tính toán tại thời điểm đó thì thuật toán này không khả thi và chưa bao giờ được thực nghiệm Tuy nhiên, phát minh này chỉ được công bố vào năm 1997 vì được xếp vào loại tuyệt mật
Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm 1983 (số đăng ký 4,405,829) Bằng sáng chế này hết hạn vào ngày 21 tháng 9 năm 2000 Tuy nhiên, do thuật toán đã được công bố trước khi có đăng ký bảo hộ nên sự bảo hộ hầu như không có giá trị bên ngoài Hoa Kỳ Ngoài ra, nếu như công trình của Clifford Cocks đã được công bố trước đó thì bằng sáng chế RSA đã không thể được đăng ký
Độ 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 Phá mã một phần phải được ngăn chặn bằng các phương pháp chuyển đổi bản rõ an toàn
Bài toán RSA là bài toán tính căn bậc e môđun n (với n là hợp số): tìm số m sao cho
me = c mod n, trong đó (e, n) chính là khóa công khai và c là bản mã Hiện nay
phương pháp triển vọng nhất giải bài toán này là phân tích n ra thừa số nguyên tố Khi thực hiện được điều này, kẻ tấn công sẽ tìm ra số mũ bí mật d từ khóa công
khai và có thể giải mã theo đúng quy trình của thuật toán Nếu kẻ tấn công tìm được
2 số nguyên tố p và q sao cho: n = pq thì có thể dễ dàng tìm được giá trị (p-1)(q-1)
và qua đó xác định d từ e Chưa có một phương pháp nào được tìm ra trên máy tính
để giải bài toán này trong thời gian đa thức (polynomial-time) Tuy nhiên người ta cũng chưa chứng minh được điều ngược lại (sự không tồn tại của thuật toán)
Tại thời điểm năm 2005, số lớn nhất có thể được phân tích ra thừa số nguyên tố có
độ dài 663 bít với phương pháp phân tán trong khi khóa của RSA có độ dài từ 1024 tới 2048 bít Một số chuyên gia cho rằng khóa 1024 bít có thể sớm bị phá vỡ (cũng
có nhiều người phản đối việc này) Với khóa 4096 bít thì hầu như không có khả năng bị phá vỡ trong tương lai gần Do đó, người ta thường cho rằng RSA đảm bảo
an toàn với điều kiện n được chọn đủ lớn Nếu n có độ dài 256 bít hoặc ngắn hơn,
Trang 11nó có thể bị phân tích trong vài giờ với máy tính cá nhân dùng các phần mềm có
sẵn Nếu n có độ dài 512 bít, nó có thể bị phân tích bởi vài trăm máy tính tại thời
điểm năm 1999 Một thiết bị lý thuyết có tên là TWIRL do Shamir và Tromer mô tả năm 2003 đã đặt ra câu hỏi về độ an toàn của khóa 1024 bít Vì vậy hiện nay người
ta khuyến cáo sử dụng khóa có độ dài tối thiểu 2048 bít
Năm 1993, Peter Shor công bố thuật toán Shor chỉ ra rằng: máy tính lượng tử (trên
lý thuyết) có thể giải bài toán phân tích ra thừa số trong thời gian đa thức Tuy nhiên, máy tính lượng tử vẫn chưa thể phát triển được tới mức độ này trong nhiều năm nữa
Việc tìm ra 2 số nguyên tố đủ lớn p và q thường được thực hiện bằng cách thử xác
suất các số ngẫu nhiên có độ lớn phù hợp (dùng phép kiểm tra nguyên tố cho phép loại bỏ hầu hết các hợp số)
p và q còn cần được chọn không quá gần nhau để phòng trường hợp phân tích n
bằng phương pháp phân tích Fermat Ngoài ra, nếu p-1 hoặc q-1 có thừa số nguyên
tố nhỏ thì n cũng có thể dễ dàng bị phân tích và vì thế p và q cũng cần được thử để
tránh khả năng này
Bên cạnh đó, cần tránh sử dụng các phương pháp tìm số ngẫu nhiên mà kẻ tấn công
có thể lợi dụng để biết thêm thông tin về việc lựa chọn (cần dùng các bộ tạo số ngẫu nhiên tốt) Yêu cầu ở đây là các số được lựa chọn cần đồng thời ngẫu nhiên và không dự đoán được Đây là các yêu cầu khác nhau: một số có thể được lựa chọn ngẫu nhiên (không có kiểu mẫu trong kết quả) nhưng nếu có thể dự đoán được dù chỉ một phần thì an ninh của thuật toán cũng không được đảm bảo Một ví dụ là bảng các số ngẫu nhiên do tập đoàn Rand xuất bản vào những năm 1950 có thể rất thực sự ngẫu nhiên nhưng kẻ tấn công cũng có bảng này Nếu kẻ tấn công đoán được một nửa chữ số của p hay q thì chúng có thể dễ dàng tìm ra nửa còn lại (theo nghiên cứu của Donald Coppersmith vào năm 1997)
Một điểm nữa cần nhấn mạnh là khóa bí mật d phải đủ lớn Năm 1990, Wiener chỉ
ra rằng nếu giá trị của p nằm trong khoảng q và 2q (khá phổ biến) và d < n1/4/3 thì
có thể tìm ra được d từ n và e
Mặc dù e đã từng có giá trị là 3 nhưng hiện nay các số mũ nhỏ không còn được sử
dụng do có thể tạo nên những lỗ hổng (đã đề cập ở phần chuyển đổi văn bản rõ) Giá trị thường dùng hiện nay là 65537 vì được xem là đủ lớn và cũng không quá lớn ảnh hưởng tới việc thực hiện hàm mũ
Trong phần tiếp theo của luận văn, tôi sẽ giới thiệu về phương pháp cài đặt thuật toán RSA CRT lên FPGA Trong lý thuyết về giải mã RSA CRT, có nhiều trường
Trang 12hợp xuất hiện số âm gây khó khăn cho việc tính toán Sử dụng lại một số component của dự án CS502 vào năm 2006 của Jing Lu và Qian Wan (đại học Washington ở St.Louis), với các cải tiến về giải thuật Euclide mở rộng và giải thuật giải mã RSA CRT sao cho thuận tiện cho việc cài đặt toàn bộ giải thuật RSA CRT lên kit FPGA Cuối cùng là phần đánh giá độ tin cậy của giải thuật, so sánh tốc độ giải mã giữa hai thuật toán RSA và RSA CRT bằng phần mềm mô phỏng ModelSIM của hãng Mentor Graphics
1.3 Mục tiêu, đối tượng và phạm vi nghiên cứu
1.3.1 Mục tiêu của đề tài
Mục tiêu của đề tài là nghiên cứu vai trò của thuật toán RSA trong hạ tầng khoá công khai PKI, phân tích vai trò của việc giải mã RSA CRT trong việc đẩy nhanh tốc độ giải mã Từ đó thực hiên mô phỏng trên phần mềm ModelSIM để kiểm chứng lý thuyết và thực hiện toàn bộ thuật thuật toán RSA CRT trên phần cứng FPGA
1.3.2 Đối tượng và phạm vi nghiên cứu
Đề tài chỉ giới hạn trong phạm vi nghiên cứu và mô phỏng giải thuật RSA CRT, kết hợp với việc tìm hiểu về hạ tầng khoá công khai PKI, đây là một lĩnh vực vẫn còn khá mới mẽ ở Việt Nam mà trong đó giải thuật RSA đóng một vai trò tối quan trọng
Trong phần thiết kế phần cứng FPGA, đề tài có thể tổng hợp hoàn toàn giải thuật RSA (mã hoá/giải mã và phát sinh khoá), song nếu kết hợp cả ba component thì quá lớn để có thể cài đặt trên một kit Xilinx Virtex II Pro trên platform FPX, nên chúng
ta không thể kiểm tra chúng trên phần cứng thực tế Tuy nhiên, chúng ta có thể sử dụng phần mềm ModelSIM để kiểm tra các chức năng của các component và chỉ cài đặt một số subcomponent quan trọng lên kit Virtex II Pro và phần còn lại sẽ được tính toán trên phần mềm RSA CRT FPGA Controller được viết bằng ngôn ngữ Visual C#
1.4 Nội dung nghiên cứu
• Tìm hiểu cơ bản về hệ thống bảo mật
• Tìm hiểu về hạ tầng khoá công khai PKI
• Nghiên cứu sâu về giải thuật mã hoá RSA và giải mã RSA CRT
Trang 13• Cải tiến một số giải thuật Euclide mở rộng, phép cộng modulo Omura, khử phép trừ trong phần giải mã RSA CRT
• Nghiên cứu về quá trình thiết kế phần cứng: ngôn ngữ VHDL, phần mềm Xilinx ISE, board lập trình XUP Development System (FPGA Virtex-II Pro)
• Hiện thực hóa toàn bộ giải thuật RSA CRT trên chip FPGA Virtex - II Pro
• Nghiên cứu dùng Visual C# để giao tiếp và xử lý kết quả của việc tổng hợp giải thuật RSA CRT trên phần cứng FPGA
1.5 Bố cục tóm tắt luận văn
Nội dung của tóm tắt luận văn được chia thành 4 chương như sau:
Chương 1: Giới thiệu
Chương này trình bày lí do thực hiện đề tài, mục tiêu, đối tượng và phạm vi nghiên cứu; giới thiệu tổng quan tình hình nghiên cứu liên quan đến đề tài, nội dung nghiên cứu cũng như ý nghĩa khoa học và ý nghĩa thực tiễn của đề tài
Chương 2: Cơ bản về cơ chế bảo mật
Chương 2 trình bày các lý thuyết cơ sở liên quan đến việc thực hiện đề tài bao gồm các lý thuyết về hệ thống mã hóa khóa công khai, lý thuyết cơ bản về thuật toán mã hoá RSA và lý thuyết về việc tăng tốc giải mã của giải thuật RSA CRT, trong đó trình bày hai phương pháp SRC và MRC của quá trình giải mã RSA CRT
Chương 3: Thực hiện phần cứng
Nội dung chương 3 bao gồm các phần liên quan đến việc thực hiện một mô hình phần cứng cụ thể cho toàn bộ hệ thống mã hóa RSA trên nền FPGA Trình bày mô hình tổng quát của hệ thống, chi tiết thiết kế của các khối trong hệ thống, và kết quả tổng hợp các thiết kế thành hệ thống hoàn chỉnh Sau đó trình bày các kết quả mô phỏng đã được thực hiện trên phần mềm ModelSIM của hãng Mentor Graphics và trên kit FPGA Virtex II Pro thông qua chương trình RSA CRT FPGA Controller
được viết bằng Visual C#.NET
Chương 4: Kết luận
Chương 4 trình bày tóm tắt các kết quả đạt được của luận văn cũng như đánh giá những kết quả đạt được và đề xuất hướng phát triển tiếp theo cho hệ thống mã hoá RSA
Trang 141.6 Ý nghĩa đề tài
1.6.1 Ý nghĩa khoa học
Đề tài đã nghiên cứu các lý thuyết về hệ thống mã hoá khoá công khai, hạ tầng khoá công khai PKI, chữ ký điện tử và phân tích về tốc độ giải mã của giải thuật RSA CRT
Ý nghĩa tiếp theo của luận văn là hướng đến việc hiện thực hóa bộ mã hoá RSA trên phần cứng sử dụng công nghệ SoC (System On Chip) mà cụ thể là trên công nghệ FPGA, góp phần làm phát triển việc nghiên cứu phát triển công nghệ thiết kế chip tại trường Đại học
1.6.2 Ý nghĩa kinh tế xã hội
Hiện nay, thương mại điện tử, chính phủ điện tử chưa thể thực hiện một cách triệt
để tại Việt Nam Chỉ có một lý do duy nhất đó là chưa thể triên khai được hạ tầng khoá công khai PKI tại Việt Nam, trong đó thuật toán RSA đóng một vai trò không thể thay thế Những nghiên cứu của đề tài là một đóng góp vào việc cụ thể hoá phần nào vào việc triển khai hạ tầng khoá công khai PKI tại Việt Nam
Hệ thống mã hoá được hiện thực trên công nghệ thiết kế chip tiên tiến Với thiết kế này, kết quả của đề tài có thể dễ dàng được thương mại hóa Hiện tại đang có một
số dự án của các cộng ty nước ngoài đầu tư vào thiết kế chip ở Việt Nam, nổi bật trong đó là của Intel vào khu Công nghệ cao Thành phố Hồ Chí Minh Do đó đề tài
sẽ góp phần vào việc tiếp cận công nghệ thiết kế chip tại Việt Nam
Trang 15CHƯƠNG 2: CƠ BẢN VỀ CƠ CHẾ BẢO MẬT
Chương này sẽ trình bày một số cơ bản về cơ chế bảo mật và cung cấp một số kiến thức cơ bản về các dạng mã hoá và chữ ký điện tử trong các ứng dụng PKI
2.1 Các dạng mã hoá
Cơ chế bảo mật hỗ trợ mã hoá đối xứng và bất đối xứng cho chức năng mã hoá
• Mã hoá đối xứng: cặp khoá giống nhau được dùng cho quá trình mã
hoá/giải mã Khoá này phải được trao đổi để bên gửi và bên nhận có thể truy cập được dữ liệu plaintext
• Mã hoá bất đối xứng: cặp khoá có quan hệ toán học với nhau, bao gồm
khoá public và private, được sử dụng cho quá trình mã hoá/giải mã
o Nếu khoá public được sử dụng cho quá trình mã hoá thì khoá private được sử dụng cho quá trình giải mã
o Nếu khoá private được sử dụng cho quá trình mã hoá thì khoá public được sử dụng cho quá trình giải mã
2.2 Thuật toán và khoá
Khi dữ liệu được mã hoá với cơ chế bảo mật, hai yếu tố cần xác định là thuật toán
và khóa
• Thuật toán: thuật toán định nghĩa cách thức dữ liệu được chuyển đổi tử
dạng plaintext sang ciphertext Cả hai bên gửi và nhận cần phải biết thuật
toán được sử dụng để chuyển đổi dữ liệu
• Khoá: khoá được xem là input của thuật toán để thuật toán biến đổi plaintext thành ciphertext và ngược lại
Tất cả các ứng dụng đều phải xác định các input được phân bố giữa bên gửi và nhận
Để có thể kích hoạt quá trình mã hoá, các ứng dụng PKI phải làm các việc sau:
• Xác định thuật toán được hỗ trợ bởi ứng dụng: trong một số trường hợp,
ứng dụng cần phải cho phép sự thoả thuận về thuật toán để bên gửi và nhận đạt được hình thức mã hoá phù hợp nhất
Trang 16• Phát sinh khoá để sử dụng cho thuật toán: Trong trường hợp tốt nhất,
khoá nên sử dụng là khóa one-time, có nghĩa là nó chỉ được sử dụng duy nhất một lần cho quá trình mã hoá/giải mã Khi khoá được sử dụng nhiều lần,
nó trở nên dễ bị tấn công
• Xác định phương pháp phân phối khóa: khoá cần được chuyển một cách
bảo mật từ bên gửi đến bên nhận, do đó phương phsp phân phối khoá đóng vai trò rất quan trọng
2.3 Mã hoá dữ liệu
Quá trình mã hóa chống lại sự can thiệp của những yếu tố bên ngoài Phần này mô
tả cách hoạt động của quá trình mã hoá đối xứng và bất đối xứng
• Mã hoá đối xứng:
Như đã đề cập ở trên, mã hoá đối xứng sử dụng cùng cặp khoá cho cả hai quá trình mã hoá/giải mã Các thuật toán kết hợp với quá trình mã hoá đối xứng có thể mã hoá lượng thông tin lớn trong thời gian ngắn nhờ vào việc chỉ sử dụng một khoá đơn và thuật toán mã hoá đối xứng đơn giản hơn nhiều so với thuật toán mã hoá bất đối xứng
Hình 2 1 Quá trình mã hoá đối xứng
Khi dữ liệu được mã hoá với thuật toán mã hoá đối xứng, bên gửi sẽ phát ngẫu nhiên một khoá đối xứng ngẫu nhiên Chiều dài của khóa, tính theo đơn
vị bit, được xác định bởi thuật toán và ứng dụng sử dụng thuật toán đối xứng Mỗi khi khoá đối xứng được phát sinh, khoá được sử dụng để mã hoá dữ liệu plaintext thành ciphertext Sau đó ciphertext được chuyển đến bên nhận Bên nhận sẽ nhận chuỗi dữ liệu ciphertext và sử dụng khoá đối xứng để giải mã ngược lại chuỗi dữ liệu plaintext
Một số giải thuật mã hoá đối xứng được các ứng dụng PKI sử dụng là DES, DESX, RC2, RC4, Triple DES và AES
• Mã hoá bất đối xứng:
Trang 17Mã hoá bất đối xứng tăng độ bảo mật bởi việc sử dụng hai khoá riêng biệt nhưng có quan hệ toán học với nhau được gọi là khoá public và private Quá trình mã hoá sẽ bảo mật hơn vì khoá private chỉ thuộc quyền sở hữu của mỗi
cá nhân khi phát sinh cặp khóa Khoá public có thể phân tán đến bất kỳ cá nhân nào muốn gửi bản tin mã hoá đến người sở hữu khoá private
Mã hoá bất đối xứng sử dụng hai khoá và độ phức tạp của quá trình mã hoá
sẽ làm cho tốc độ mã hoá chậm hơn Một số nghiên cứu cho thấy quá trình
mã hoá đối xứng chạy nhanh hơn khoảng 100 lần so với quá trình mã hoá bất đối xứng khi sử dụng phần mềm và khoảng 10000 lần khi sử dụng phần cứng
Khi dữ liệu được mã hoá với thuật toán bất đối xứng, cặp khóa được sử dụng thuộc quyền sở hữu của bên nhận Việc sử dụng cặp khó này đảm bảo bên nhận mới có khả năng giải mã bản tin ciphertext với khoá private
Hình 2 2 Quá trình mã hoá bất đối xứng
o Bên gửi phải có khoá public của bên nhận Có thể truy cập được khoá public thông qua Active Directory
o Chuỗi plaintext tham gia vào quá trình mã hoá với khoá public của bên nhận Thuật toán mã hoá sẽ tạo ra chuỗi ciphertext
Trang 18o Chuỗi ciphertext sẽ được chuyển đến nơi nhận Không cần có sự trao đổi khoá vì bên nhận đẫ có khoá private để giải mã dữ liệu
o Bên nhận sẽ giải mã bản tin ciphertext bằng khoá private của mình Thuật toán mã hoá bất đối xứng cũng được sử dụng để bảo vệ tính toàn vẹn
dữ liệu và chứng thực
Hình 2 3 Quá trình ký chữ ký số
o Dữ liệu plaintext được chuyển đến hàm mã hoá bất đối xứng sử dụng khoá private của bên gửi Kết quả của việc ký là chuỗi ciphertext
o Chuỗi ciphertext được chuyển đến bên nhận
o Bên nhận thu được chữ ký bên gửi Khoá public có thể được gửi kèm theo ciphertext hoặc lấy từ Active Directory
o Bên nhận sẽ giải mã ciphertext với khoá public của bên gửi, việc giải
mã này sẽ chứng minh được bên gửi là ai
Một số thuật toán mã hoá bất đối xứng được sử dụng trong các ứng dụng PKI
là Diffie – Hellman, RSA, DSA
2.4 Thuật toán RSA và thủ thuật tăng tốc bằng phương pháp CRT
Với sự tiên phong của Diffie và Hellman trong việc tìm kiếm một hướng hoàn toàn mới về giải thuật mã hoá, rất nhiều nhà giải thuật tiến hành xây dựng các giải thuật
Trang 19cụ thể để có thể đáp ứng các yêu cầu của hệ thống mã hoá khoá công khai Một trong những thành tựu đầu tiên được phát triển vào năm 1977 bởi Ron Rivest, Adi Shamir và Len Adleman tại trường MIT và được công bố vào năm 1978 Thuật toán Rivest-Shamir-Adleman (RSA) đã được chứng minh và chấp nhận trong các ứng dụng sử dụng hạ tầng khoá công khai PKI (Public Key Infrastructure)
Thuật toán RSA là thuật toán mã hoá khối trong đó chuỗi plaintext và ciphertext là
các số nguyên nằm giữa 1 và n với n là một số nguyên nào đó, với kích thước thông thường của n là 1024 bit hay là một số thập phân có 309 chữ số Vì thế, n sẽ nhỏ hơn 1024 Chúng ta sẽ kiểm tra chi tiết thuật toán RSA trong phần này bắt đầu
bằng việc mô tả thuật toán, thực hiện các tính toán và phân tích cách cài đặt thuật toán
2.4.1 Mô tả giải thuật RSA
Thuật toán này được phát triển bởi Rivest, Shamir và Adleman sử dụng biểu thức có
số mũ Plaintext được mã hoá thành các khối, mỗi khối có giá trị nhị phân nhỏ hơn
thước mỗi khối là i bit, thì 2 i-1 <n≤2 i Quá trình mã hoá và giải mã sẽ theo dạng sau,
với khối plaintext là M và khối ciphertext là C
C=M e mod n M=C d mod n = (M e ) d mod n = M ed mod n
Cả hai bên gửi và nhận đều biết giá trị n Ngoài ra bên gửi biết giá trị e, và chỉ bên nhận biết giá trị d Vì thế, đây là giải thuật mã hoá khoá công khai với khoá public
là PU = {e, n} và khoá private PR = {d, n} Để giải thuật này thoả mãn các điều
kiện của hệ thống mã hoá khoá công khai, thì có các yêu cầu sau:
• Có thể tìm được các giá trị e, d, n sao cho M ed mod n = M với mọi giá trị M
< n
• Dễ dàng phân tích được mối liên quan giữa M e mod n và C d mod n
• Không thể xác định được giá trị d từ các giá trị e và n
Bây giờ chúng ta phân tích điều kiện thứ nhất Chúng ta cần tìm được liên hệ của biểu thức sau
Trang 20Biểu thức trên có thể thoả mãn nếu e và d là các hệ số nhân modulo ngược của
ф(n),với ф(n) là hệ số Euler Với p, q là hai số nguyên tố, thì ф(n)=(p-1)(q-1) Mỗi
liên hệ giữa e và d có thể được diễn đạt như sau
ed mod ф(n) = 1
Biểu thức này có thể hoàn toàn tương đương với các biểu thức sau
ed ≡ 1 mod ф(n)
d ≡ e -1 mod ф(n)
Chú ý theo định luật về modulo thì hoàn toàn đúng khi phát biểu d (và vì thế cả e)
có quan hệ nguyên tố với hệ số ф(n) Điều này hoàn toàn tương đương với
gcd(ф(n), d) = 1
Bây giờ chúng ta phân tích sâu hơn về thuật toán RSA Các thành phần như sau:
• Hai số nguyên tố p và q (bảo mật và được lựa chọn)
• n = pq (công khai và được tính toán)
• e với đk gcd(ф(n), e) = 1; 1<e<ф(n) (công khai và được lựa chọn)
• d ≡ e -1 mod ф(n) (bảo mật và được tính toán)
Khoá private bao gồm {d, n} và khoá public bao gồm {e, n} Giả sử client muốn công bố khoá public của mình và client B muốn gửi một tin nhắn M đến client A Thì client B sẽ tính toán C = M e mod n và truyền đi chuỗi dữ liệu C Khi nhận chuỗi
dữ liệu ciphertext C, client A giải mã bản tin C bằng cách tính toán M = C d mod n
Hình 1.4 sẽ tóm tắt thuật toán RSA
Trang 21Hình 2 4 Thuật toán RSA 2.4.2 Thủ thuật tăng tốc cơ chế RSA bằng phương pháp CRT
Trong quá trình giải mã hoặc ký, với dữ liệu là C thì phải tính toán như sau:
M = C d mod n
Quá trinh này có thể được đẩy nhanh hơn bằng giải thuật CRT bởi client biết hệ số
n = p.q Phương pháp được đề nghị bởi Quisquater và Couvreur, và dựa trên giải thuật CRT và một số lý thuyết về số học chẳng hạn như số nhị phân Với pi, i = 1,2, ,k nguyên tố tương quan với nhau:
gcd(p i , p j ) = 1 với i ≠ j
Với ui Є [0,p i-1 ]i = 1,2, ,k lý thuyết CRT phát biểu rằng chỉ tồn tại một số nguyên
duy nhất u trong giới hạn [0,P-1] với P = p 1 p 2 p k để cho: