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

Nghiên cứu giải thuật mã hóa công khai và cài đặt trên EPGA

176 15 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 176
Dung lượng 2,7 MB

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

Nội dung

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 3

ABSTRACT

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 4

ra 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 5

1.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 6

Phụ 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 7

Chươ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 8

Chươ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 9

Chươ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 10

Chươ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 11

Chươ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 12

Chươ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 13

Chươ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 14

Chươ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 15

Chươ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 16

Chươ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 17

Chươ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 18

Chươ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 19

Chươ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 20

Chươ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 21

Chương 2 Cơ sở Toán học

Hình 2.1 Giao diện chương trình

Trang 22

Chươ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 23

Chươ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 24

Chươ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 25

Chươ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 26

Chươ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 27

Chươ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 28

Chươ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 29

Chươ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 30

Chươ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 31

Chươ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 32

Chươ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 33

Chươ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 34

Chươ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 35

Chươ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 36

Chươ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 37

Chươ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 38

Chươ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 39

Chươ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 40

Chương 4 Phân tích Giải thuật của Hệ thống RSA

S= A i B iC 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ả

Ngày đăng: 16/04/2021, 04:27

🧩 Sản phẩm bạn có thể quan tâm