Chính vì thế các hệ thống mật mã ngày nay tuy có giải thuật công khai nhưng vô cùng phức tạp cùng với việc áp dụng nhiều phép toán và phép hoán vị.. Tổng quan về mã hoá dữ liệu Ý tưởng v
Trang 1Đại Học Quốc Gia Tp Hồ Chí Minh
TRƯỜNG ĐẠI HỌC BÁCH KHOA
-
TÁC GIẢ
Đinh Ngọc Bảo Toàn
Nghiên cứu giải thuật mã hóa công
khai và cài đặt trên FPGA
Chuyên ngành : Kỹ thuật vô tuyến và điện tử
Mã số ngành : 2.07.1 và 2.07.07
LUẬN VĂN THẠC SĨ
TP HỒ CHÍ MINH, tháng 05 năm 2003
Trang 2Đại Học Quốc Gia Tp.Hồ Chí Minh CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
- -
NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ và tên học viên : Đinh Ngọc Bảo Toàn Phái : Nam Ngày, tháng , năm sinh : 14 – 05 – 1975 Nơi sinh : TPHCM Chuyên Ngành : Kỹ Thuật Vô Tuyến Và Điện Tử TÊN ĐỀ TÀI : Nghiên cứu giải thuật mã hoá công khai và cài đặt trên FPGA II- NHIỆM VỤ VÀ NỘI DUNG : ………
………
………
III- NGÀY GIAO NHIỆM VỤ ( Ngày bảo vệ đề cương ) : ………
IV- NGÀY HOÀN THÀNH NHIỆM VỤ ( Ngày bảo vệ luận án tốt nghiệp) :………
V - HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN ( Ghi nay đủ học hàm và học vi) : 1 TS Phạm Tường Hải 2 Ths Hồ Trung Mỹ VI- HỌ VÀ TÊN CÁN BỘ CHẤM NHẬN XÉT 1 (Ghi đầy đủ học hàm và học vi) : ………
VII- HỌ VÀ TÊN CÁN BỘ CHẤM NHẬN XÉT 2 (Ghi đầy đủ học hàm và học vi) : ………
CÁN BỘ HỨƠNG DẪN CÁN BỘ NHẬN XÉT 1 CÁN BỘ NHẬN XÉT 2 Nội dung và đề cương luận văn thạc sĩ đã được Hội Đồng Chuyên Ngành thông qua Ngày………… tháng………… năm……… TRƯỞNG PHÒNG ĐÀO TẠO SĐH CHỦ NHIỆM NGÀNH
(Ghi chú : Trước khi chuyển tới các cán bộ chấm nhận xét, học viên phải trình Phòng Đào tạo SĐH các tập thuyết minh luận văn đóng kèm tờ nhiệm vụ này đã có đủ chữ ký của cán bộ hướng dẫn , chủ nhiệm chuyên ngành)
Trang 3ABSTRACT
From ancient times to the present, human beings usually have some private problems that are needed to be kept secrect For that reason, protecting data (also called protecting information) is derived to prevent unexpected entering into sensitive informations not only in military secrects, politics affairs but also in economy field as well as in private informations
Nowadays, the secrect data (or secrect information) on computers and information systems have to be protected from illegal invations and ought not to be changed or generalized by them There are various methods of protecting information Among them, cryptography is always the most popular valuable method The main purpose
of cryptography is to bring out a method that can change the information from one form to another to hide the true meaning of information Also, the information can
be recovered secrectly whenever it is needed
As time passed by, the cryptography have been becoming to a science subject indeed In the future, it will be a very exciting field full of understanding, especially when the code system is being broken and there will be a request for replacing the old code system by the other progessive ones
This thesis reseachs about the popular encryption algorithm, concretely RSA encryption The RSA encryption can be analized in the way of hardware approach and performed on Altera’s FPGA
Through out my process of doing the thesis, the whole-hearted help of PhD Hai and M.Sc My with their providing rich materials encouraged me very much So, completing the thesis is the most sincere thanks to my dear professors
Ho Chi Minh City, May 2003
Dinh Ngoc Bao Toan
Trang 4ra phương pháp làm biến đổi thông tin thành một dạng khác nhằm giấu đi ý nghĩa thật sự của thông tin và khi cần thiết có thể khôi phục lại một cách bí mật
Theo thời gian, mật mã học đã phát triển thành môt môn khoa học thật sự, trong tương lai, đây là lĩnh vực vô cùng hấp dẫn mang đầy tính trí tuệ, nhất là khi hệ thống mật mã dần bị phá vỡ đòi hỏi phải được thay thế bằng các hệ mật mã tiến bộ hơn
Luận văn này nghiên cứu giải thuật mã hóa công khai mà cụ thể là giải thuật RSA, phân tích giải thuật này theo hướng tiếp cận phần cứng và hiện thực nó trên FPGA của Altera
Trong quá trình làm luận văn này, tôi được sự hướng dẫn tận tình của Ts Hải và Ths Mỹ thông qua nguồn tài liệu phong phú Việc hoàn thành luận văn này như là lời cảm
ơn chân thành nhất dành cho quý Thầy
Thành phố Hồ Chí Minh, tháng 05 năm 2003
Đinh Ngọc Bảo Toàn
Trang 51.2 Các giải thuật mã hoá đối xứng 3
1.3 Các giải thuật mã hoá không đối xứng 4
2.1 Phép toán modulo và các định lý liên quan 6
2.3 Chương trình tính phép toán modulo và giải thuật Euclide 14
3.1 Hệ thống phân bố khoá công khai 16
3.2 Hệ thống mã hoá Knapsack Merkle-Hellman 17
3.3 Hệ thống mã hoá mã số học McElice 18
3.5 Chương trình tính các tham số và giải thuật của RSA 22
4 Phân tích giải thuật của hệ thống RSA 24
4.3 Các phép toán và tham số của giải thuật RSA 26
Trang 6Phụ lục
A Chương trình C++ thực hiện tính toán tham số và thuật giải RSA A-1
B Chương trình VHDL thực hiện giải thuật RSA B-1
Tài liệu tham khảo
Trang 7Chương 1 Tổng quan về mã hoá dữ liệu
Chương 1 Tổng Quan
Về Mã Hoá Dữ Liệu
Từ khi mạng máy tính phát triển một cách rộng rãi, bắt đầu là những mạng cục bộ sau đó là các mang diện rộng cho đến mạng toàn cầu, đã mang đến cho mọi người một môi trường truyền thông cực kỳ tiện ích Môi trường mạng cho phép kết nối nhiều máy tính với nhau theo một quy định nhất định Cùng với sự phát triển của phần cứng là sự ra đời hàng loạt phần mềm khai thác các dịch vụ về mạng Chúng cho phép ta trao đổi, truy xuất tìm kiếm từ xa các thông tin từ văn bản cho đến hình ảnh đồ hoạ dưới nhiều dạng khác nhau Thử hình dung có nhiều kết nối giữa nhiều thư viện, kho dữ liệu và ta cần gì cứ vào đó lấy ra Như vậy rõ ràng thực tế các kho này phải được kiểm soát và chỉ những người nhất định mới có thể vào lấy thông tin được Ngoài ra ta thấy việc trao đổi thông tin trên mạng được thực hiện trên các kênh truyền dùng chung Muốn thông tin mình truyền đi không bị người khác biết, ta làm cách nào đó làm biến dạng nó theo một quy luật và sau đó phục hồi nó lại theo chiều ngược lại của quy luật đó Việc làm biến dạng và phục hồi thông tin chính là các tác vụ cơ bản của quá trình mật mã hoá dữ liệu bao gồm mã hoá và giải mã
1.1 Các hệ thống mật mã
Một hệ thống mật mã bao gồm tất cả thông tin truyền, thông tin nhận và quy luật biến đổi bất kì thông tin truyền thành thông tin nhận trong một môi trường Môi trường bao gồm hệ thống trao đổi thông tin có người gửi và người nhận Trong đó người gửi mã hoá thông tin và người nhận sẽ giải mã thông tin nhận được
Trình tự giao tiếp giữa người gửi và người nhận
Cả hai đồng ý một thuật toán mã hóa
Cả hai chọn và trao đổi khoá
Cuối cùng là chuyển thông tin cần gửi
Từ các lớp hệ thống mã hoá đơn giản nhất, ta rút ra hai ý niệm quan trọng:
Thuật toán mã hoá: cho biết thông tin truyền được biến đổi như thế nào
Khoá: nói lên làm thế nào thuật toán tiến hành
Trang 8Chương 1 Tổng quan về mã hoá dữ liệu
Phân loại các hệ thống mã hoá
Hệ thống mã hoá đối xứng: là hệ thống mã hoá mà người gửi và người nhận chia sẻ cùng một khoá, loại này thường phổ biến với các hệ mã hoá cổ điển
Hệ thống mã hóa phiù đối xứng: là hệ thống mã hoá mà người gởi và người nhận sử dụng khoá khác nhau, trong đó khoá của người nhận được giữ bí mật còn khoá của người gửi ở dạng công khai nên còn được gọi là hệ mã hóa công khai
Ngoài ra còn có khái niệm hệ thống mã hoá đơn giản, trong đó mỗi kí tự được mã hoá bởi một kí tự, các hệ thống loại này không an toàn và thường gặp ở các hệ mã hoá cổ điển
Nguyên lý hoạt động
Nguyên lý hoạt động của một hệ thống mật mã xoay quanh ba yếu tố Đó là dữ liệu gốc chưa được mã hoá (plaintext), dữ liệu đã mã hoá (ciphertext) và khoá mã(key) Khoá này có thể bí mật hoặc công khai phụ thuộc vào đặc điểm của từng hệ thống mật mã Vấn đề sử dụng chìa khoá và một quy luật (một hàm) để làm biến dạng một khối dữ liệu được gọi là giải thuật của mật mã Như vậy sự an toàn của hệ thống mật mã dựa trên hai yếu tố chính : Giải thuật và khoá
Ngày xưa, khi ứng dụng của mật mã chỉ xoay vòng các ứng dụng đơn giản và có quy mô nhỏ, người ta giữ bí mật cả hai yếu tố Nhưng khi mật mã được dùng để bảo vệ cho các hệ thống lớn thì vấn đề bảo mật giải thuật phải xem xét lại Nếu việc bảo mật lại dựa trên tính bí mật của giải thuật thì khi giải thuật bị phá vỡ dẫn đến sự cần thiết phải thiết kế lại giải thuật để sử dụng Điều đó dẫn đến lãng phí thời gian và tiền của vì sự thay đổi đối với cả một hệ thống lớn thật chẳng dễ dàng Còn đối vói khoá thì thật đơn giản: chỉ cần thay đổi khoá đã bị lộ bằng một khoá mới là xong
Từ sự phân tích trên ta thấy hiệu quả và an toàn của một hệ thống mật mã được quyết định từ khâu thiết kế giải thuật Các quá trình mã hoá và giải mã được biểu diễn như sau:
Mã hoá EK : M → C hay EK(M) = C
Giải mã DK: C → M hay DK (C) = M
trong đó
M là dữ liệu trước khi mã hoá
C dữ liệu đã được mã hoá
E phép mã hoá
kK khoá với chiều dài hữu hạn thuộc không gian khoá K
Trang 9Chương 1 Tổng quan về mã hoá dữ liệu
Nếu xem các phép mã hoá và giải mã là các hàm thì hàm giải mã DK làhàm nghịch đảo của hàm mã hoá EK Ta có :
DK=EK-1
hay DK(C) = DK (EK (M)) = M
Thông thường, để tấn công một hệ thống mật mã, ta thường phải có trong tay đoạn dữ liệu gốc (M) và đoạn mã tương ứng của nó (C) Từ đó ta đi tìm khoá K của mật mã nhờ vào việc nghiên cứu quan hệ và tìm ra quy luật liên quan giữa hai đoạn dữ liệu
M và C Nếu quy luật này càng phức tạo bao nhiêu thì hệ thống càng an toàn bấy nhiêu Chính vì thế các hệ thống mật mã ngày nay tuy có giải thuật công khai nhưng vô cùng phức tạp cùng với việc áp dụng nhiều phép toán và phép hoán vị
Yêu cầu của một hệ thống mã hoá
Chỉ những người liên quan mới biết được thông tin truyền Những người không can dự
chỉ có thể:
• Biết được thông tin truyền đã được mã hoá (một phần lớn hoặc toàn bộ)
• Biết một phần nhỏ thông tin gửi (chưa được mã hoá) tương ứng với thông tin nhận đã được mã hoá
• Biết được thuật toán mã hoá
• Không biết khoá giải mã
1.2 Các giải thuật mã hoá đối xứng
Hầu hết các loại mật mã cổ điển đều thuộc loại này Đó là các hệ thống mật mã mà quá trình mã hoá và giải mã sử dụng cùng một giải thuật thích hợp hay giải thuật giải mã được suy ra từ giải thuật mã hoá một cách đơn giản và điều quan trọng là sử dụng cùng một khoá để mã hoá và giải mã
Người gửi
M Người nhận
Kênh an toàn
Khóa bí mật Ka
Kênh không an toàn
M
Hình 1.1 Mật mã đối xứng
Trang 10Chương 1 Tổng quan về mã hoá dữ liệu
Bất lợi lớn nhất của các hệ thống loại này là việc truyên khoá đi trên một kênh truyền an toàn và bảo mật trước khi muốn truyền dữ liệu đi (hình 1.1) Điều này đôi khi thật khó khăn khi bên gởi và bên nhận ở cách xa nhau Vì sự an toàn của hệ thống, các khoá bí mật này thường phải được thay đổi liên tục và tốt nhất là mỗi dữ liệu cần trao đổi có khoá riêng
1.3 Các giải thuật mã hoá không đối xứng
Chính từ điểm yếu trên của các giải thuật đối xứng mà người ta nghĩ đến một giải pháp vẹn toàn hơn Đó là việc phát minh ra hệ thống mật mã không đối xứng hay còn được gọi là hệ thống mật mã khoá công khai Ý tưởng cơ bản xuất phát từ chỗ làm sao không thể xác định được phép giải mã DK với một phép mã hoá đã biết EK Và như thế ta có thể truyền dữ liệu mã hoá công khai K (xác định phép mã hoá EK ) Tại nơi nhận, người ta sẽ dùng một khoá bí mật xác lập một phép giải mã bí mật DK nhờ vào sự kết hợp với khoá công khai Kết quả là chỉ có người nhận là người duy nhất có thể giải mã
Như vậy khác với hệ mật mã đối xứng , hệ mật mã không đối xứng sử dụng hai khoá khác nhau Theo phân tích ở trên thì khoá bí mật và bộ sinh khoá phải được đặt ở bên nhận và khoá công khai có thể được truyền đi cùng với dữ liệu mã hoá trên một kênh truyền hình không an toàn (hình 1.2)
Bộ sinh khóa
Khóa bí mật KB
Kênh không an toàn
Kênh không an toàn
Trang 11Chương 1 Tổng quan về mã hoá dữ liệu
Ý tưởng về giải thuật mật mã không đối xứng được Diffie và Hellman đề xướng vào năm 1976, và sau đó vào năm 1977 Rivest, Shamir và Adleman đã thực hiện hệ thống này bằng sự phát minh ra hệ thống mật mã nổi tiếng RSA mang tên của ba người
Khi nghiên cứu và phát minh ra hệ thống này , một số điều kiện tiên quyết cần phải được thoả mãn mới đáp ứng được những điều phân tích trên Đó là:
- Việc tính toán cặp khoá từ điều kiện ban đầu phải dễ dàng trong một khoảùng thời gian nào đó
- Người gởi sử dụng khoá công khai để mã hoá khối dữ liệu M một cách dễ dàng với cùng khoảng thời gian như trên :C = EK(M)
- Người nhận giải mã dữ liệu nhận được nhờ khoá bí mật trong cùng khoảng thời gian mã hoá :M = DK (C)
- Nếu một người thứ ba cố tình muốn tấn công hệ thống Với khoá công khai và dữ liệu M, việc tìm ra khoá bí mật là không thể thực hiện được
- Nếu người thứ ba biết được khoá công khai và dữ liệu đã mã hoá C thì khó tái tạo lại M
Tuy nhiên với sự phát triển của máy tính hiện nay thì việc tiến hành các phép thử cho việc tấn công hệ thống không phải là không thể
Trang 12Chương 2 Cơ sở Toán học
Chương 2
Cơ Sở
Toán Học
2.1 Phép toán Modulo và các định lý toán học liên quan
a Phép toán modulus
Định nghĩa : Gọi a,b là các số nguyên và m là số nguyên dương Ta định nghĩa a≡ b(mod m) nếu m chia hết cho (a- b) và m được gọi là modulus
Điều kiện cần và đủ : a≡ b(mod m) nếu và chỉ nếu (a mod m) = (b mod m), và
phép toán (a mod m) được gọi là phép suy giảm modulo m
Trong phép toán modulo, không gian thực Zm được định nghĩa bởi một tập hợp các số nguyên [0, 1, 2, 3, …, m-1] cùng với phép cộng và phép nhân
Phép cộng và phép nhân trong không gian Zm là phép cộng và phép nhân trong không gian thực R rồi lấy modulo m
Trang 13Chương 2 Cơ sở Toán học
Định nghĩa 1 : Giả sử a >1 và m >2 là các số nguyên Nếu gcd(a, m) = 1 thì ta bảo
rằng a và m là nguyên tố cùng nhau
a-1.a ≡ 1(mod m)
Điều kiện : phần tử a có phần tử nghịch đảo khi và chỉ khi ước chung lớn nhất của a
và m là 1, kí hiệu gcd(a, m) = 1
Chứng minh : Cho bất kỳ một số nguyên tố p nào và gcd(a, p) ≡ 1 Không có số
nguyên nào chia lấy dư cho p có dư trong mọi trường hợp Cho nên, số dư nhỏ nhất của p-1 nhân cho a, có nghĩa là ka(1≤ k ≤ p-1) là phép hoán vị của 1, 2, 3,…., p-1, được lấy ra trong một vài trường hợp Nhân tất cả các số dư với nhau được a.2a.3a…(p-1)a ≡ 1.2.3.4.(p-1) (mod p), hay ap-1 (p-1)! ≡ (p-1)! (mod p) Trong đó p và (p-1)! là các số nguyên tố cùng nhau, số dư cuối cùng là: ap-1 ≡ 1(mod p)
Trang 14Chương 2 Cơ sở Toán học
Ví dụ: Chứng tỏ rằng 316 ≡ 1 (mod 17)
Ta biết trước 33 ≡ 10 (mod 17), chúng ta phát triển từng bước bằng cách giảm phép chia lấy dư cho 17 xuống như sau:
Bình phương số đồng dư trên:
36 ≡100 ≡ -2 (mod 17) Bình phương lần nữa ta có:
312 ≡ 4 (mod 17) cuối cùng ta được :
Euler (1707-1783) là một nhà toán học nổi tiếng vào thế kỷ 18 Phát triển dựa trên định lý Fermat : “Nếu gcd (a, p) = 1, thì số dư nhỏ nhất của phép chia lấy dư p cho a, 2a, …., (p-1) là chuyển đổi của 1, 2, …., p-1” Đây chính là điểm mấu chốt để định lý Euler tổng quát hơn định lý Fermat Vào năm 1760, Euler đưa ra kết quả “Nếu gcd (a, n)=1, thì aφ (n) ≡ 1 (mod n) Đó là định lý Euler, và hàm φ gọi là Euler‘s totient function
hơn n và có quan hệ số nguyên tố với n Xem như φ(n) với n =1, 2, 3,…, 10, hàm φ
Euler có thể được triển khai như sau:
Trang 15Chương 2 Cơ sở Toán học
Định lý : Nếu n= p.q với p và q là số nguyên tố, thì:
φ(n) =φ(p) φ(q) = (p-1) (q-1)
Chứng minh: coi như tập hoàn chỉnh số dư của phép chia lấy dư n (0, 1, 2,…, p-1) Tất
cả các số dư đều có quan hệ nguyên tố với n, ngoại trừ các phần tử p-1 [q, 2q,…., 1)q], q-1[p, 2p, 3p, …., (q-1)p], và 0 Từ đó ta có:
(p-φ(n) = pq-{(p-1) + (q-1) + 1} = pq – p –q +1 =(p -1) (q -1)
Ví dụ: Tính φ(35)
Vì 35 =5.7, φ(35) = φ(5) φ(7) =4.6 =24
Kết quả có 24 số nguyên dương có quan hệ nguyên tố với 35
Định lý Euler : Khoảng cuối năm 1760, Euler đưa ra định lý tổng quát hơn định lý
Fermat cho trường hợp số nguyên tố p với số nguyên n tùy ý Định lý Euler rất hữu
dụng trong việc giảm số mũ trong phép chia lấy dư n
dương nhỏ hơn n và có quan hệ nguyên tố với n
Chứng minh: Giả sử r1, r2…rφ (n) là các số nguyên dương φ(n) nhỏ hơn n và là các số có quan hệ nguyên tố với n Xem như các số dư nhỏ nhất của φ(n) mod n là ar1, ar2, ar3,…,
arφ (n) Khi đó, các số này được sắp xếp theo thứ bậc r1, r2…, rφ (n), khác biệt với nhau và có quan hệ nguyên tố với n Để chứng tỏ không có bất cứ hai số nguyên φ(n) nào trùng nhau, ta có:
ari ≡ arj (mod n) , 1≤ i≤ j≤ φ(n)
Với gcd (a, n) = 1, ri ≡ rj (mod n) Nếu ri và rj là số dư nhỏ nhất trong phép mod n, điều đó nói lên ri = rj , như vậy mâu thuẫn với phương trình ari ≡ arj (mod n) Hơn nữa, nếu ri ≠ rj thì ari ≡ arj (mod n), và các số φ(n) độc lập với nhau Để chứng tỏ các số φ(n) ari , i = 1, 2,…, φ(n) có quan hệ nguyên tố, ta giả sử rằng p là ước số chung nguyên tố của a và n hay của ri và n Nhưng cả hai trường hợp đó đều không bao giờ xảy ra, bởi vì gcd (a, n) = gcd (ri, n) = 1 Cho nên, gcd (ari, n) phải là 1 với mọi I (1≤ i≤ φ(n))
(ar1)(ar2)(ar3)…(arΦ (n)) ≡ r1r2….rΦ (n) (mod n) hay aΦ (n)(r1r2….rΦ (n) ) ≡ r1r2….rΦ (n) (mod n)
Trang 16Chương 2 Cơ sở Toán học
Với gcd (ri, n) = 1, trong đó i = 1, 2, …,φ(n), nó cũng cho kết quả có quan hệ nguyên tố với n, tức là gcd (r1r2…rΦ (n) ) = 1
Ví dụ:
Cho n= 7 Các con số nhỏ hơn 7 và có quan hệ nguyên tố với 7 là 1, 2, 3, 4, 5, 6 có thể xem như r1, r2, r3, r4, r5, r6 Nếu a =-3, kết quả của hàm φ(7) là –3, -6, -9, -12, -15, -18, và khi đem chia lấy dư cho 7, -3 ≡ 4, -6 ≡ 1, -9 ≡ 5, -12 ≡ 2, -15 ≡ 6 và –18 ≡ 3 Khi đem tất cả các số đồng dư khi thực hiện phép chia lấy dư cho 7 đem nhân với nhau:
(-3).(-6).(-9).(-12).(-15).(-18) ≡ 4.1.5.2.6.3 (mod 7) Khi đó biểu thức có thể viết lại:
2.2 Các giải thuật cổ điển
a Giải thuật Shift Cipher :
Thuật giải
P= C= K= Z26, 0 ≤ K ≤ 25, ta có :
ek (x) = x + K mod 26
dk (y) = y – K mod 26 với x,y thuộc Z26
Thuật giải này dựa trên bảng mẫu tự Alphabetic được đánh số tương ứng từ 0 đến 25 dùng để mã hóa chuỗi English text Các kí tự được chuyển thành số tương ứng rồi mã hóa theo công thức ek(x), sau đó được chuyển trở lại thành kí tự Alphabetic cho ta chuỗi đã mã hóa Tương tự cho việc giải mã dùng công thức dk(y)
Đặc điểm :
Trang 17Chương 2 Cơ sở Toán học
Đây là giải thuật đơn giản nhất với không gian khóa khá nhỏ (26 khóa) Vì vậy tính bảo mật không cao Tuy nhiên, nó đã cung cấp cho ta khái niệm đầu tiên khi bắt đầu tìm hiểu ngành mật mã học
Bảng π
a b c d e f g h i j k l m
X N Y A H P O G Z Q W B T
n o p q r s t u v w x y z
P =C =Z26 , K bao gồm tất cả các phép hoán
vị của 26 phần tử 0, 1, …, 26 Gọi π là một tổ hợp 26 phần tử, ta có:
eπ (x) = π(x)
dπ (y) =π-1(y) trong đó π-1 là phép hoán vị ngược của π
Trang 18Chương 2 Cơ sở Toán học
Từ mã hóa đến giải mã :
⇔ ax ≡ y-b (mod 26)
⇔ a-1(ax) ≡ a-1(y-b) (mod 26)
⇔ (a-1.a).x ≡ a-1(y-b) (mod 26)
⇔ x ≡ a-1(y-b) (mod 26) (giải mã)
Trang 19Chương 2 Cơ sở Toán học
d Thuật giải Vigenere Cipher :
Giải thuật :
Goi m là một số nguyên dương cố định, P = C = K = (Z26)m Khóa có các thành phần (k1, k2,k3,…., km ), ta có:
ek(x1, x2,…, xm) = (x1 + k1, x2 + k2,…., xm+km )
dk(y1, y2,…, ym) = (y1 - k1, y2 - k2,…., ym - km )
Trong các giải thuật trước, một kí tự được mã hóa bởi một kí tự cố định tương ứng Điều đó làm cho giải thuật dễ bị phá vỡ bởi phương pháp phân tích xác suất xuất hiện các kí tự Alphabetic Các giải thuật như thế được gọi là Monoalphabetic Trong phần này, ta xem xét giải thuật Vigenere Cipher không còn là giải thuật Monoalphabetic mà là Polyalphabetic, trong đó kí tự mã hoá phụ thuộc vào vị trí của nó trong plaintext mà sẽ được mã hóa tương ứng(ví dụ: với cùng mẫu tự T ở vị trí này được mã hóa là S mà ở vị trí khác sẽ được mã hóa là H chẳng hạn) Kết quả là một kí tự sẽ được mã hóa bởi nhiều kí tự khác
Đặc điểm :
Ta thấy khóa là một chuỗi tổ hợp các kí tự có chiều dài m nên không gian khóa khá lớn (26m khóa) Cụ thể với m = 5, ta có 265=1,1.107 khóa Với m càng lớn thì không gian khóa càng lớn và tính bảo mật càng cao
e Thuật giải Hill Cipher :
Giải thuật :
Gọi m là một số nguyên dương cố định, P = C = (Z26)m , và không gian khóa là các ma trận vuông m×m trong Z26, ta có:
Ek(x) = x K
Dk(y) = y K-1
Trong đó K-1 là ma trận nghịch đảo của K
Trang 20Chương 2 Cơ sở Toán học
Giải thuật này là một bước phát triển trong ngành mật mã được phát minh bởi Lester S.Hill Trong đó, khóa không đơn thuần là một số hay một chuỗi kí tự trong không gian một chiều, nó được mở rộng thành hai chiều dưới dạng các ma trận Do đó, các phép toán được thực hiện trong không gian hai chiều, tức giữa các ma trận với nhau
Đặc điểm :
Rõ ràng ta thấy m càng lớn thì không gian khóa càng lớn, tính bảo mật càng cao Tuy nhiên, việc chọn khóa không phải tùy ý mà ma trận khóa K phải là ma trận có ma trận nghịch đảo K-1, tức phải kèm theo điều kiện det(K) ≠ 0 Đồng thời cũng như trong phép toán một chiều, để giải thuật có tính duy nhất thì gcd (detK, 26) = 1
f Thuật giải Permulation Cipher :
Gọi m là một số nguyên dương cố định, P = C
= (Z26)m và không gian khóa là số tổ hợp các hoán vị π của {1, 2,…., m}, ta có:
eπ (x1, x2,…., xm) = (xπ (1) ,… xπ (m))
dπ (y1, y2,…., ym) = (yπ-1 (1) ,… yπ -1(m))
2.3 Chương trình mô phỏng
Chương trình tính toán : ước chung lớn nhất, nghịch đảo modulo, kiểm tra một số có phải là số nguyên tố, tạo một số nguyên tố lớn, tính lũy thừa modulo, thực hiện các giải thuật cổ điển,
Trang 21Chương 2 Cơ sở Toán học
Hình 2.1 Giao diện chương trình
Trang 22Chương 3 Hệ thống mã hoá công khai
Chương 3 Hệ Thống
Mã Hoá Công Khai
3.1 Hệ thống phân bố khóa công khai
Hệ thống mã hoá này chỉ bảo mật nếu việc tính toán logarithm qua GF(q) không thể làm được Thuật toán phân bố khóa công khai được Diffie và Hellman đưa ra Thuật toán này gặp khó khăn trong việc tính toán logarithm qua GF(q) với các thành phần q thuộc (1, 2, … , q-1)
Cặp phương trình hoán đổi là :
Y ≡ αX (mod q)
X ≡ logα Y qua GF(q)
Với 1 ≤ X, Y ≤ q-1, q là số nguyên tố, α là mẫu của GF(q) Việc tính Y từ X rất dễ dàng, tuy nhiên tính X từ Y rất khó khăn Cho nên trong khóa Diffie-Hellman, việc bảo mật dựa trên sự thực hiện lấy logarithm một cách phức tạp
Mỗi người sử dụng có thể chọn cho mình một số Xi bất kỳ nào từ tập số (1, 2, …, q-1), người sử dụng giữ bí mật Xi , nhưng khi đặt
jXi (mod q) ≡αX
iXj (mod q) Người sử dụng j cũng có được khóa Kji như trên
Trang 23Chương 3 Hệ thống mã hoá công khai
3.2 Hệ thống mã hoá Knapsack Merkle-Hellman
Vấn đề Knapsack là một vấn đề cuốn hút trong lĩnh vực mã hóa Ý tưởng của Merkle và Hellman dựa trên nền tảng Knapsack Trapdoor là một hệ thống khóa công khai bất đối xứng
Giả sử khóa K = (k1, k2, k3,…, kn) với Ki là số nguyên (1 ≤ i ≤ n), và n bit văn bản gốc là X =(x1, x2, x3,…, xn) với xi ∈ GF(2) (1 ≤ i ≤ n) Hệ thống mã hóa Knapsack mã hóa văn bản gốc n bit thành mã m bit, với n <m, dựa theo công thức:
Nếu khóa K được chọn với từng thành phần của K lớn hơn so với tổng của các phần tử đứng trước nó, Knapsack sẽ trở nên dễ dàng:
Trang 24Chương 3 Hệ thống mã hoá công khai
yn-1 =yn; nếu yn > kn, thì đặt xn =1 và yn-1 = yn –kn, cứ như vậy tiếp tục cho các thành phần khác Kết quả tái lập được tiếp tục thực hiện cho đến khi X = (x1, x2, ….,xn ), khi đó việc tái lập hoàn tất
3.3 Hệ thống mã hóa mã số học McEliece
Năm 1978, McEliece đưa ra hệ thống khóa công khai dựa trên nền tảng mã sai và sửa sai Hệ thống mã hóa này dựa trên mã Goppa với ma trận tổng quát G và sau đó chuyển ma trận này thành ma trận G’, G’ là khóa công khai của hệ thống Thông điệp
m được giải mã bằng cách nhân nó với G’ và cộng mẫu sai e có chiều dài n và trọng số t với từ mã c Thông điệp ban đầu được tái tạo bằng cách sử dụng thuật toán giải mã dựa trên mã Goppa
Khóa công khai McEliece có thể được trình bày ngắn gọn như sau: giả sử ma trận G(k
× n) chứa t số sai và sửa sai là ma trận mã tuyến tính tổng quát McEliece trộn G bằng cách chọn ngẫu nhiên ma trận S(k × k) và một ma trận hoán vị P ngẫu nhiên Sau đó
ma trận G chuyển thành G’= SGP.G’(k × n) được gọi là ma trận công khai tổng quát
G được đưa ra như khóa mã hóa, nhưng các ma trận G, S và P được giữ bí mật Từ G’=SGP ta có thể thu được G =S-1G’P-1 Người gửi mã hóa văn bản gốc m k bit thành mã c n bit bằng cách:
c = mG’ + e
= mSGP +e Dựa theo công thức của c, mã nhận được trở thành:
c = cP-1 =(mS)G +e’ với e’ = eP-1
Thuật toán giải mã của mã gốc: loại bỏ vector sai e và tái lập vector mS Ta có thể thấy văn bản gốc dễ dàng có được theo công thức:
m =(mS)S’
tùy thuộc vào việc chọn k và t, sự tính toán phức tạp bằng máy tính có thể mở rộng và củng cố thuật toán chống lại sự tấn công của những tay thám mã
3.4 Hệ thống mã hóa công khai RSA
Trong thời gian đầu của thập kỷ 70, chỉ có hệ thống mã hóa khối cổ điển được biết đến Lúc đó mã hóa không được ứng dụng cho thương mại Tuy nhiên quan điểm đó đã thay đổi trong những năm cuối của thập kỷ Hệ thống mã hóa công khai được tìm
Trang 25Chương 3 Hệ thống mã hoá công khai
ra bởi Diffie, Merkle và Hellman, cũng như sau đó Rivest, Sharmir, và Adleman đưa
ra hệ thống mã hóa phù hợp với kênh công khai không bảo mật, tránh được những bất lợi của kiểu mã hóa cổ điển Từ đó, nhiều công cụ toán học hỗ trợ cho việc mã hóa được phát triển
Hệ thống mã khóa công khai sử dụng khóa công khai e cho việc mã hóa và khóa bí mật d cho việc giải mã Nếu việc mã hóa theo sau việc giải mã hay ngược lại có thể tái lập lại nguyên bản X như sau:
Dd(Ee(X)) = Ee(Dd(X)) = X
Trong thuật toán khóa công khai, không giống thuật toán DES, người giải mã phải chắc chắn rằng các bước mã hóa không được để lộ hay để lại vết Qui tắc đối xứng như DES quá phức tạp trong quá trình giải quyết bằng cách biểu diễn toán học quá trình thực hiện của nó một cách chi tiết; trong khi thuật toán hóa công khai bất đối xứng có thể biểu diễn dễ dàng bằng các phương trình toán học nhưng vẫn rất khó khăn trong việc giải quyết Tuy nhiên, người ta nói rằng một hệ thống mã hóa sớm muộn thì cũng bị bẻ khóa
Hệ thống mã hóa công khai RSA
Không bao lâu sau khi Diffie và Hellman giới thiệu ý tưởng về hệ thống mã hóa khóa công khai, Rivest, Sharmir và Adleman(RSA) đưa ra một hệ thống mã hóa đầy hứa hẹn ở dạng này
Hệ thống mã hóa được hình thành từ nhiều người sử dụng, mà mỗi người có riêng khóa mã hóa và giải mã Khóa mã hóa (không bảo mật) bao gồm số nguyên n và e và khóa giải mã (bảo mật) là số nguyên d Trong đó n là số nguyên và là kết quả của hai số nguyên tố được lựa chọn cẩn thận p và q, n =p × q Khóa d và e phải được lựa chọn dựa trên mối quan hệ với φ(n) với φ(n) = (q-1) (được gọi là Euler’s totient function)
Văn bản đã mã hóa có thể thu được khi tăng văn bản gốc X lên với số mũ e rồi lấy mod n, 0≤ X ≤ n-1; trong khi việc giải mã được thực hiện bằng cách tăng văn bản đã được mã hóa Y lên mũ d và lấy mod n như sau:
Mã hóa C = E(M) = (M)e mod n Giải mã M = D(C) = (C) mod n Với 0≤ X ≤ n-1 và gcd (X, n) = 1
Với công thức Euler aφ (n) ≡ 1 (mod n) với gcd (a, n) =1 Gọi a là văn bản gốc X Khi
Trang 26Chương 3 Hệ thống mã hoá công khai
đó công thức Euler trở thành:
Xφ (n) ≡ 1 (mod n) (*) Với gcd (X, n) = 1, tức văn bản gốc X có quan hệ nguyên tố với n
Ta lại có aλ ≡ bλ (mod n) với bấ kỳ số nguyên dương λ, nếu a ≡ b (mod n) thì (*) được viết lại như sau:
Xλφ (n) ≡ 1 (mod n) (**) Với aμ ≡ bμ (mod n) với bất kỳ số nguyên μ nếu a ≡ b (mod n), khiđó (**) trở thành:
Xλφ (n) X≡ X (mod n) Hay:
Xλφ (n)+1 ≡ X (mod n) (***)
Nếu ta chọn λφ(n) + 1 = ed, khóa công khai e và khóa bí mật d có thể lựa chọn sao cho thỏa mãn:
ed ≡ 1 (mod φ(n) )
(***) được biểu diễn như sau:
Xed ≡ X (mod n) Phương trình trên đúng với mọi X nếu gcd (X, n) ≡ 1
Ví dụ :
Tìm hàm Euler của số 21, là kết quả của phép nhân hai số nguyên tố 3 và 7 Vì φ(21)
= (3-1) (7-1) =12, như vậy 12 số nguyên có quan hệ nguyên tố với 21 là 1, 2, 4, 5, 8,
10, 11, 13, 16, 17, 19, 20
Nguyên tắc sinh hai khóa
Chọn hai số nguyên tố bí mật, p và q, với p ≠ q
Tính n = pq
Tính hàm Euler φ, φ(n) = (p-1)(q-1), đây là số bí mật
Chọn khóa, e và d, có quan hệ nguyên tố với φ(n), trong đó ed ≡ 1(mod (φ(n))
Tính toán e và d dựa vào thuật toán Euclid
Trang 27Chương 3 Hệ thống mã hoá công khai
Ví dụ :
Chọn hai số nguyên tố p =47 và q =59, khi đó n = pq =2773 và φ(n) = (p-1)(q-1) =
2668 Khóa bí mật d được chọn là số có quan hệ nguyên tố với φ(n) Ví dụ chọn d =
157, từ đó e được tính như sau:
ed ≡ 1(mod (n)) 157e ≡ 1(mod 2668), ta được e =17 Giả sử văn bản gốc là:
ITS ALL GREEK TO ME
Bằng cách thay thế mỗi chữ bằng hai số nằm trong khoảng (01, 26), và mã của khoảng trắng là 00, văn bản gốc được biến đổi như sau:
0920 1900 0112 1200 0718 0505 1100 2015 0013 0500
mỗi thông điệp được chuyển thành số nguyên nằm trong khoảng (0, n-1), cho nên trong ví dụ này, việc mã hóa có thể thực hiện với khối bốn số, biết rằng số lớn nhất luôn luôn nằm trong giới hạn bé hơn n-1 = 2772 Bốn số đầu tiên (0920) của văn bản gốc được mã hóa như sau:
C = (M)e mod n = (920)17 mod 2773 = 948 Tiếp tục với những số còn lại:
C = 0948 2342 1084 144 2663 2390 0778 0774 0219 1655 Văn bản gốc được phục hồi với khóa giải mã:
M = (C)157 mod 2773
Ví dụ:
Ta chọn khóa bí mật d là 157, khi đó khóa công khai là d với quan hệ gcd (e, d) = 1, gcd (d, φ(n) =1 và ed ≡ 1(mod φ(n)) {tức là ed mod φ(n) =1}, khi đó dựa vào phương trình:
gcd (d, φ(n)) =1 Bên cạnh đó, có thể biểu diễn : gcd (d, φ(n)) = ed - λφ (n)
Suy ra: ed - λφ (n) = 1
Trang 28Chương 3 Hệ thống mã hoá công khai
Với φ (n) = 2668 và d =157, ta có:
Ví dụ: Ta chọn p =41 và q = 59 Khi đó pq =2419 vàφ (n) = (p-1)(q-1) =2320 Chọn khóa bí mật d = 157
3.5 Chương trình tính các tham số và giải thuật của RSA
Chương trình cho phép thực hiện mô phỏng giải thuật mã hoá RSA qua từng bước :
a Tìm số nguyên tố ngẫu nhiên p
Trang 29Chương 3 Hệ thống mã hoá công khai
b Kiểm tra p có phải số nguyên tố
c Tạo ra số nguyên tố q, tính n=p*q, tính phi(n)=(p-1)*(q-1)
d Chọn e sao cho 1<e<phi(n), gcd(e,phi(n))=1
e Tính d sao cho ed=1 mod phi(n)
f Mã hoá thông điệp M thành C
g Giải mã C thành thông điệp ban đầu M
Chương trình hiện thực giải thuật RSA
Hình 3.1 Giao diện chương trình
Trang 30Chương 4 Phân tích Giải thuật của Hệ thống RSA
Chương 4 Phân Tích
Giải Thuật Của Hệ Thống RSA
4.1 Giải thuật RSA
Giải thuật RSA, được phát minh bởi Rivest, Shamir, và Adleman, là một trong những
hệ thống mật mã khóa công khai đơn giản nhất Các tham số là n, p và q, e và d Modulo n là tích số của các số n nguyên tố lớn riêng biệt Lũy thừa công khai e là một số thuộc miền xác định 1 < e < Þ(n) sao cho
dùng giải thuật Euclidean mở rộng Thông thường ta chọn một lũy thừa công khai
nhỏ, như e = 216 + 1 Phép toán mã hóa được biểu diễn bởi phép tính
C= M e (mod n)
Trong đó M là văn bản cần mã hóa sao cho 0≤ M < n Số C là văn bản đã mã hoá từ văn bản M có thể được tính bằng cách
M = C d (mod n) Giả sử cho p = 11 và q = 13 Ta tính n = pq = 11.13 = 143 và
Þ(n) = (p-1) (q-1) = 10.12 =120
Lũy thừa công khai e được chọn sao cho 1 < e < Þ(n) và
Trang 31Chương 4 Phân tích Giải thuật của Hệ thống RSA
gcd(e, Þ(n)) = gcd (e, 120) = 1
Giả sử e = 17 có thể thỏa điều kiện này Lũy thừa riêng d thu được do nghịch đảo e modulo Þ(n) như sau
d = 17-1 (mod 120) = 113
có thể được tính bằng cách dùng giải thuật Euclidean mở rộng Người sử dụng công
bố lũy thừa công khai và modulo: (e, n) = (13, 143), và giữ các tham số riêng sau: d =
113, p = 11, q = 13 Cho M = 50 là văn bản cần mã hóa Nó được mã hoá bằng cách tính C = M e (mod n) như sau
C = 5017 (mod 143) = 85
Văn bản đã mã hoá C = 85 được giải mã bằng phép tính M = C d (mod n) như sau
M = 85113 (mod 143) = 50
Giải thuật RSA có thể được dùng để gửi các thông tin được mã hóa và tạo ra các chìa khóa kỹ thuật số cho các văn bản điện tử Giải thuật này cung cấp một tiến trình dùng các ký hiệu cho một văn bản kỹ thuật số, và kiểm tra chìa khóa có thật sự đáng tin hay không Các ký hiệu của một văn bản kỹ thuật số thì khác với các ký hiệu của một văn bản bằng giấy, mà ở đó các văn bản bằng giấy này có cùng một chìa khóa Một chìa khóa kỹ thuật số không thể là một bất biến; nó là một hàm của văn bản kỹ thuật số mà nó được tạo ra Sau khi chìa khóa (là một phần của dữ liệu kỹ thuật số) của một văn bản kỹ thuật số thu được, nó được gắn văn bản đối với những ai muốn kiểm tra tính xác định của văn bản và chìa khóa
4.2 Tính toán lũy thừa Modulo
Vì các modulo, các lũy thừa riêng và công khai đã được xác định, người gửi và người nhận thực hiện một phép toán đơn lẻ về ký hiệu, kiểm tra, mã hóa và giải mã Phép
toán đòi hỏi sự tính toán M e (mod n), ví dụ như lũy thừa hóa modulo Phép toán lũy
thừa hóa modulo là một phép toán thông thường về xáo trộn được dùng trong vô số hệ thống mật mã Ví dụ như, giản đồ trao đổi khóa Diffie-Hellman đòi hỏi lũy thừa hóa modulo Hơn nữa, giản đồ khóa ElGamal và Tiêu chuẩn Khóa Kỹ thuật số (DSS) của Viện Tiêu chuẩn và Kỹ thuật Quốc gia cũng đòi hỏi phép tính lũy thừa hóa modulo Tuy nhiên, ta lưu ý rằng tiến trình mã hóa trong một hệ thống mật mã dựa trên vấn đề
Loga riêng biệt thì hơi khác nhau: cơ số (M) và modulo (n) được biết trước Điều này
Trang 32Chương 4 Phân tích Giải thuật của Hệ thống RSA
cho phép một số ước tính vì lũy thừa của cơ số có thể được tính toán và lưu lại Trong
tiến trình lũy thừa hóa giải thuật RSA , ta biết trước lũy thừa (e) và modulo (n) nhưng không biết cơ số (M); như vậy vẫn chưa đủ thích hợp
Trong những phần sau chúng ta xem lại các kỹ thuật thực hiện phép tính lũy thừahóa modulo trong phần cứng Ta cũng sẽ xem xét các kỹ thuật mã hóa, nhân modulo, cộng modulo và các phép tính cộng Ta dự định bao hàm các khía cạnh toán học và các thuật toán của phép tính lũy thừa hoá modulo, cung cấp các kiến thức cần thiết cho người thiết kế phần cứng có quan tâm về việc thực hiện giải thuật RSA bằng một kỹ thuật riêng biệt Ta lấy những tài liệu của chúng ta từ sách giải thuật vi tính, tập hợp các điều, các mục hội nghị và nhật báo trên cấu trúc phần cứng Đối với việc thực hiện giải thuật RSA trong phần mềm, chúng tôi xin độc giả tham khảo báo cáo
Thực hiện RSA tốc độ cao xuất bản bởi Phòng thí nghiệm RSA
4.3 Tham số và phép toán trong RSA
Giải thuật RSA đòi hỏi sự tính toán lũy thừa hóa modulo mà được tách ra thành một chuỗi các phép nhân modulo bằng việc áp dụng giải thử nghiệm lũy thừa hóa Trước khi đi vào chi tiết các phép toán này, ta thực hiện các định nghĩa sau
• Modulo công khai n là một số nguyên xác định k-bit, thuộc khoảng từ 512 đến
2048 bit
• Số chính phương bí mật p và q khoảng k/2 bit
• Lũy thừa công khai e là một số nguyên xác định h-bit Kích cỡ của e nhỏ, thường không quá 32 bit Giá trị hợp lý nhỏ nhất của e là 3
• Lũy thừa bí mật d là một số lớn; nó có lớn như Þ(n) – 1 Ta giả sử d là một số nguyên xác định k-bit
Sau những định nghĩa trên, ta sẽ xem xét các giải thuật cho phép tính lũy thừa modulo, phép lũy thừa, phép nhân modulo, phép nhân, phép cộng modulo, phép cộng và phép trừ các số nguyên lớn
4.4 Phép toán lũy thừa hóa Modulo
Phép toán lũy thừa modulo là một phép toán lũy thừa khá đơn giản trong đó phép nhân và phép bình phương là các phép toán modulo Heuristics của phép lũy thừa
phát triển cho việc tính toán M e là khả thi cho việc tính M e (mod n) Trong báo cáo
hướng dẫn [1], ta trình bày lại các kỹ thuật của phép toán lũy thừa Trong phạm vi hiện thực phần cứng, ta sẽ đề cập đến một vài chi tiết, và lưu ý độc giả về bản báo cáo hướng dẫn [1] để có thêm thông tin về heuristics của phép lũy thừa
Trang 33Chương 4 Phân tích Giải thuật của Hệ thống RSA
Phương pháp nhị phân của việc tính M e (mod n) được cho bởi các số nguyên M, e, và n có hai sự biến thể dựa trên hướng của các bit của e được quét: Trái-sang-Phải (LR) và
Phải-sang-Trái (RL) Phương pháp nhị phân LR thì phổ biến hơn:
Phương pháp nhị phân LR
Các bit của e được quét từ cái quan trọng nhất đến cái kém quan trọng nhất, và một
bình phương modulo được thực hiện cho mỗi bit Một phép toán nhân modulo được thực hiện chỉ với khi bit là 1 Một ví dụ của phương pháp nhị phân LR được minh họa
bên dưới với h = 6 và e = 55 = (110111) Vì e 5 = 1, giải thuật LR khởi động với C : =
M, và đưa đến
Trang 34Chương 4 Phân tích Giải thuật của Hệ thống RSA
Ta so sánh giải thuật LR và giải thuật RL về mặt thời gian và không gian như sau:
• Cả hai phương pháp đều đòi hỏi bình phương lũy thừa h – 1 và một số trung bình các phép nhân ½ (h-1)
• Phương pháp nhị phân LR đòi hỏi hai thanh ghi : M và C
• Phương pháp nhị phân RL đòi hỏi ba thanh ghi: M, C và P Tuy nhiên, ta lưu ý rằng P có thể được dùng ở vị trí của M, nếu giá trị của M không cần thiết sau
đó
• Các phép toán nhân (Step 2a) và bình phương (Step 2b) trong phương pháp nhị phân RL thì độc lập với nhau, và như vậy các bước có thể được thực hiện song hành Cho biết rằng ta có hai số nhân (một số nhân và một số bình phương) khả thi, thời gian hoạt động của phương pháp nhị phân RL được giới hạn bởi
tổng thời gian đòi hỏi để thực hiện phép bình phương h – 1 trên các số nguyên
k-bit
Giải thuật lũy thừa bậc cao thường dựa trên việc quét word-level của giải thuật bậc cao dùng để thực hiện lũy thừa modulo, mà việc này khá nhanh hơn so với phương
pháp nhị phân Giải thuật word-level, ví dụ như phương pháp m-ary, đòi hỏi khoảng
cách để tính toán lại các lũy thừa của M nhằm rút gọn thời gian hoạt động Các giải thuật này có thể không phù hợp với hoạt động phần cứng vì không gian on-chip là giới hạn sẵn tùy theo kích cỡ lớn của toán hạng liên quan (ví dụ như 1024 bit) Như vậy, ta sẽ không xem xét những kỹ thuật này ở đây
Phần còn lại của chương này ôn lại các giải thuật dùng để tính các phép toán modulo
cơ bản, như phép cộng, phép trừ và phép nhân Ta giả sử là heuristics của phép lũy
thừa cơ bản là hoặc phương pháp nhị phân, hoặc bất kỳ giải thuật m-ary nào với
không gian thanh ghi cần thiết sẵn có Giả thiết này cho phép chúng ta tập trung trên việc phát triển thời gian và miền các giải thuật hiệu quả cho các phép toán modulo cơ bản, là điều kiện hiện hành do kích cỡ của toán hạng
Tài liệu có đầy đủ các kỹ thuật toán học còn lại được áp dụng cho tiến trình các ký hiệu, xem ví dụ tập hợp các báo cáo [2] Tuy nhiên, trong các ứnh dụng như vậy, kích cỡ các toán hạng là rất nhỏ, thông thường khoảng từ 5- 10 bit, cho phép bảng tra tìm
Trang 35Chương 4 Phân tích Giải thuật của Hệ thống RSA
các phép tính gần đúng Bên cạnh modulo được xác định và được biết trước, mà xác định là không thuộc trường hợp ứng dụng của chúng ta Như vậy, toàn bộ tập hợp mới các phép tính gần đúng cần đến để thiết kế thời gian và không gian hiệu quả của cấu trúc phần cứng để thực hiện các phép toán modulo dùng trong các ứng dụng bằng mật mã
Các ô cộng toàn phần và ô cộng bán phần
Khối kiến trúc các phép cộng là các ô cộng toàn phần (FA) và cộng bán phần (HA) Như vậy, ta chắc chắn sẽ giới thiệu về chúng ở phần này Một phép cộng toàn phần là một mạch tổ hợp với 3 nguồn vào và 2 nguồn ra Các nguồn vào Ai, Bi, Ci và các nguồn ra Si và Ci+1 là các biến Boole Giả sử Ai và Bi là các bit thứ i của các số
nguyên A và B tương ứng, và Ci là các bit nhớ cho bởi vị trí thứ i Ô FA tính tổng bit
Si và kết quả Ci+1 được cho bởi ô kế tiếp Bảng chân trị của ô FA như sau:
Trang 36Chương 4 Phân tích Giải thuật của Hệ thống RSA
Các hàm Boole của các giá trị nguồn ra là
C i+1 = A i B i + A i C i + B i C i ,
S i = A i B i ⊕ C i
Tương tự, một phép cộng bán phần là một mạch tổ hợp với 2 nguồn vào và 2 nguồn
ra Các nguồn vào A i , B i và các nguồn ra S i và C i+1 là các biến số Boole Giả sử rằng
A i và BBi là các bit thứ i của các số nguyên A và B tương ứng Ô HA tính bit tổng Si và bit kết quả Ci+1 Như vậy, một bộ cộng bán phần dễ dàng thu được bằng cách cài đặt bit nguồn vào thứ ba Ci tới 0 Bảng chân trị của ô HA như sau:
Ô cộng bán phần
Bộ cộng truyền cờ nhớ
Truyền phép cộng phổ biến là một dãy tổ hợp tuyến tính của ô cộng toàn phần (FA)
Hình học tôpô của giải thuật CPA được minh họa dưới đây với k = 8
Trang 37Chương 4 Phân tích Giải thuật của Hệ thống RSA
Tổng các trì hoãn của việc truyền phép cộng phổ biến là k lần các trì hoãn các ô cộng toàn phần đơn lẻ Điều này là do ô thứ i cần được nhận giá trị chính xác của bit nội
truyền Ci nhằm tính toán những nguồn ra chính xác Lần theo ô thứ 0, ta kết luận rằng
một tổng các trì hoãn cộng toàn phần k cần có để tính tổng vectơ S và kết quả sau
cùng Ck Hơn nữa, miền tổng của của giải thuật CPA k-bit thì bằng với k lần một miền
ô cộng toàn phần đơn lẻ Giải thuật CPA tăng cường rất dễ dàng bằng cách cộng các
ô cộng bắt đầu từ ô quan trọng nhất
Phép trừ có thể được thực hiện trên một bộ cộng truyền cờ nhớ bằng cách dùng phép
toán bù 2 Giả sử ta có sẵn một giải thuật CPA k-bit, ta mã hóa các số dương trong
khoảng [0, 2k-1] thành các vectơ nhị phân k-bit với bit quan trọng nhất là 0 Một số âm
sau đó được biểu diễn với bit quan trọng nhất của nó là 1 Điều này được thực hiện
như sau: Cho x ∈ [0, 2k-1], sau đó –x được biểu diễn bằng phép tính 2k – x Ví dụ cho k
= 3, các số dương là 0,1,2,3 được mã hóa thành 000, 001, 010, 011 tương ứng Số âm 1 được tính là 23 – 1 = 8 – 1 = 7 = 111 Tương tự , -2, -3 và -4 được mã hóa thành 110,
101 và 100 tương ứng Hệ thống mã hóa này có hai lợi thế mà chúng thích hợp trong việc thực hiện các phép toán modulo:
• Việc dò tìm dấu là dễ dàng:bit quan trọng nhất cho biết dấu
• Phép trừ thực hiện dễ dàng: để tính x-y, trước tiên ta thay –y bằng cách dùng mã hóa phần phụ của 2, và sau đó cộng x vào –y
Giải thuật CPA có rất nhiều tiện ích nhưng có một bất lợi hiển nhiên: thời gian tính toán quá dài cho các ứng dụng của chúng ta, trong đó kích cỡ toán hạng nằm trong dãy thứ tự hàng trăm, cao nhất là 2048 bit Như vậy, ta cần phải khảo sát các kỹ thuật khác với hy vọng xây dựng các mạch với điều kiện thời gian ít và không làm gia tăng rõ rệt các miền
Bộ cộng cảm nhận toàn bộ cờ nhớ
Bộ cộng cảm nhận toàn bộ cờ nhớ là một mạch không đồng bộ với miền yêu cầu tỉ lệ
đối với k Điều này dựa trên việc quan sát mà thời gian trung bình đòi hỏi đối với tiến
trình truyền cờ nhớ hoàn thành thì ít hơn nhiều so với trường hợp xấu nhất là các trì
hoãn phép cộng toàn phần k Ví dụ như phép cộng của 15213 bằng 19989 tạo ra độ
Trang 38Chương 4 Phân tích Giải thuật của Hệ thống RSA
truyền tải dài nhất là 5, được cho như sau:
Một phép giải tích thống kê cho thấy dãy truyền dài nhất thông thường là khoảng 4.6 đối với một phép cộng 40-bit [3] Nhìn chung, việc truyền dài nhất thông thường được
tạo bởi phép cộng của hai số nguyên k-bit bị giới hạn phía trên bởi log2 k lần theo
thông thường
Để hoàn thành nhiệm vụ này, chúng tôi xin giới thiệu một biến N mới thêm vào việc truyền biến C Giá trị của Cvà N cho vị trí thứ i được tính bằng cách dùng các giá trị của A và B cho vị trí thứ i, và các giá trị C và N trước đó, như sau:
Ban đầu, các vectơ C và N được cài đặt ở 0 Các ô tạo ra giá trị C và N bắt đầu làm việc ngay khi các giá trị A và B được ứng dụng song hành vào các ô này Nguồn ra
Trang 39Chương 4 Phân tích Giải thuật của Hệ thống RSA
của một ô (C i , N i ) xác định khi nguồn vào của nó (C i-1 , N i-1 ) được xác định Khi tất cả
các tiến trình truyền cờ nhớ hoàn thành, ta có cả hai nguồn (C i , N i ) = (0,1) hoặc (C i-1 ,
N i-1 ) = (1,0) với tất cả giá trị i = 1, 2, , k Như vậy, kết thúc của một tiến trình truyền hoàn thành được nhận thấy vì mọi X i = C i + N i = 1 với mọi i = 1, 2, , k có thể được
thực hiện bời việc dùng một cổng AND nguồn vào k-bit
Bộ cộng thẳng tiến
Việc truyền phép cộng thẳng tiến dựa trên việc tính truyền các bit C i trước phép tổng
Logic truyền thẳng tiến làm việc sử dụng các mối quan hệ giữa việc truyền các bit C i
và nguồn vào các bit A i và B i Ta xác định hai biến G i và P i được gọi là các hàm phát sinh và truyền sinh như sau:
Thực hiện theo mẫu này, ta có thể thu được Ci như hàm của C0 và G0, G1, , Gi và P0,
P1, , Pi Hàm truyền tới C4 được cho như sau:
Logic truyền thẳng dùng các hàm này để tính trước tất cả các C i, và sau đó cung cấp
các giá trị này thành một dãy cổng EXOR để tính vecrơ tổng S Yếu tố thứ i của
vectơ tổng được tính bằng cách:
Trang 40Chương 4 Phân tích Giải thuật của Hệ thống RSA
S= A i ⊕ B i⊕C i
Phép cộng truyền thẳng với k = 3 được minh họa như sau
Giải thuật CLA không dễ tăng cường Để xử lý các toán hạng lớn, ta có hai cách tiếp cận cơ bản sau :
• Bộ cộng thẳng tiến dạng khối: Trước tiên ta xây dựng những ô logic thẳng tiến nhỏ (4 bit hoặc 8 bit) với sự phân tách các hàm phát sinh và hàm truyền sinh, sau đó sắp xếp các hàm này để tạo ra các phép cộng thẳng tiến lớn hơn
• Bộ cộng thẳng tiến toàn bộ cờ nhớ: Ta xây dựng một logic thẳng tiến toàn bộ cờ nhớ phù hợp kích cỡ toán hạng đã cho Để hoàn thành nhiệm vụ này, hàm truyền thẳng được trình bày bằng cách cho phép sử dụng các mạch thêm song song
Tổng trì hoãn của phép cộng truyền thẳng O(log k) có thể không quan trọng bằng
phép cộng truyền cờ nhớ Có một bất lợi cho bộ cộng này là : Miền gia tăng Bộ cộng
truyền thẳng dạng khối yêu cầu miền O(k log k), trong khi bộ cộng thẳng tiến toàn bộ cờ nhớ yêu cầu miền O (k) bằng cách dùng các mạch thêm song song hiệu quả [4,5]
Hình như một phép cộng truyền thẳng lớn hơn 256 bit thì không hiệu quả lắm, xét các trường hợp để có sự lựa chọn tốt hơn , ví dụ như phép cộng truyền có nhớ Ngay cả khi dùng phép tính gần đúng truyền thẳng dạng khối, một phép cộng truyền thẳng cỡ
1024 bit có vẻ như không khả thi hay có hiệu quả