1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Phân tích cơ chế bảo mật RSA đa số nguyên tố ( RSA CRT ) và cài đặt thuật toán RSA CRT trên FPGA

11 704 1

Đ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 11
Dung lượng 214,9 KB

Nội dung

ĐỀ CƯƠNG LUẬN VĂNGiáo viên hướng dẫn: PGS.TS Lê Tiến Thường Học viên: Phạm Xuân Khánh, MSHV: 01405310 Tên đề tài: Phân tích cơ chế bảo mật RSA đa số nguyên tố RSA CRT và cài đặt thuật

Trang 1

ĐỀ CƯƠNG LUẬN VĂN

Giáo viên hướng dẫn: PGS.TS Lê Tiến Thường

Học viên: Phạm Xuân Khánh, MSHV: 01405310

Tên đề tài:

Phân tích cơ chế bảo mật RSA đa số nguyên tố ( RSA CRT )

và cài đặt thuật toán RSA CRT trên FPGA

MULTI-PRIME RSA CRYPTOSYSTEM AND ITS FPGA IMPLEMENTATION

MỤC LỤC

1 Giới thiệu

Thuật toán RSA được đề nghị bởi 3 nhà toán học Rivest , Shamir và Adleman, là

một trong những cơ chế bảo mật được sử dụng rộng rãi nhất, đặc biệt trong hạ

tầng khoá công cộng PKI (Public Key Infrastructure) Quá trình mã hoá/giải mã

của cơ chế bảo mật RSA dựa trên phép toán modulo mũ số nguyên rất lớn Để

có thể đẩy nhanh tốc độ giải mã của cơ chế RSA, cơ chế RSA đa số nguyên tố

(RSA CRT Chinese Remainder Theorem) thường được áp dụng để thay thế cơ

chế RSA thông thường với các tính toán song song modulo mũ số nhỏ hơn Và đặc trưng nhất cho cơ chế RSA CRT là trường hợp 2 số nguyên tố

Hoạt động CRT đối với cơ chế RSA 2 số nguyên tố đơn giản hơn rất nhiều so với trường hợp nhiều số nguyên tố Vì thế việc nghiên cứu cơ chế RSA 2 số nguyên

tố rất quan trọng và được sử dụng rất nhiều trong thực tế

Trước đây đã có một số đề tài thực hiện mã hoá/giải mã RSA thông thường trên

kit FPGA [4] Trong đề tài này tiếp tục mở rộng module giải mã RSA theo phương

pháp CRT (2 số nguyên tố và có thể phát triển lên nhiều số nguyên tố nếu thời gian cho phép) và thực hiện module phát sinh cặp khoá public/private key ngay trên kit VirtexII Pro Thông qua kết quả mô phỏng chúng ta có thể rút ra một số

Trang 2

kết luận về ưu điểm của phương phát giải mã RSA CRT so với phương pháp RSA thông thường

2. Cơ sở toán học về cơ chế RSA và RSA CRT [6]

Cơ chế bảo mật RSA bao gồm có 3 khối cơ bản như sau :

Phát sinh cặp khoá public/private key

 Phát sinh hai số nguyên tố lớn p và q, với độ dài xấp xỉ bằng nhau

và tích n = p*q có chiều dài tính theo bit phải là một số cố định cho trước, chẳng hạn là 1024 bit

 Tính toán n = p*q và phi = (p - 1)*(q - 1)

 Chọn một số nguyên e, 1<e<phi, sao cho USCLN(e,phi)= 1

 Tìm thông số d,1<d<phi, sao cho (e*d)mod phi = 1

 Ta có public key là (n,e) và private key (n,d) Các giá trị n, p, q là những thông số bí mật

Mã hoá / giải mã

Mã hoá

 Giả sử bên gửi A sử dụng public key của bên nhận B

 Bên gửi A muốn gửi một bản tin được đặc trưng bởi số nguyên m

 Tính toán chuỗi mã hoá c=m emodn

 Gửi bản tin mã hoá c cho bên nhận B

Giải mã

 Bên nhận B sử dụng private key (n,d) để tính toán

n c

m= dmod

 Bên nhận B sẽ thu được bản tin gốc m

Ký điện tử / Kiểm tra chữ ký điện tử

Trang 3

Ký điện tử

 Bên gửi A tạo ra một bản tin digest được đặc trưng bởi số nguyên m, 0<m< n – 1

 Sử dụng private key (n,d) để ký được kết quả s=m emodn

 Sử chữ ký s qua cho bên nhận B

Kiểm tra chữ ký điện tử

 Bên nhận B sử dụng public key (n,e) để tính toán số nguyên

n s

v= emod

 Bên B thu được bản tin digest từ số nguyên v

 Tính toán độc lập bản tin digest mà bên gửi đã ký

 Nếu hai bản tin digest này giống nhau thì chữ ký hợp lệ

Để giải quyết bài toán y=x emod n ta phân tích e thành chuỗi số nhị phân như

sau

0 1 2

e

e = kk

Và ta có các bước tính toán sau :

y = x for bit j = k – 2 downto 0 begin

y = y * y mod n

y = y * x mod n end

return y

Thời gian tính toán biểu thức này tỷ lệ thuận với số bit 1 trong số e Trong quá trình mã hoá, để giảm khối lượng tính toán chúng ta thường chọn e = 3 (0b11),

17 (0x11) hoặc 65537 (0x10001) Như ta thấy , số bit 1 trong số nguyên e chỉ là 2 nên số lượng tính toán trong quá trình mã hoá rất ít Tuy nhiên, với thông số d, số bit 1 trong thông số này rất lớn làm cản trở cho việc tính toán biểu thức trên nếu theo phương pháp bình thường Để giảm khối lượng tính toán, có một phương

Trang 4

pháp thay thế hoàn hảo là sử dụng đặc trưng mới cho private key theo phương

pháp CRT (Chinese Remainder Theorem)

RSA CRT public key [2]

RSA CRT public key bao gồm 2 thông số, đó là modulus n và public exponent e Thông số modulus n là tích của u số nguyên tố r i , i = 1 , … ,

u với u≥2 , và thông số public exponent e là môt số nguyên có giá trị

nằm giữa 3 và n – 1 thoả mãn USCLN(e,λ( )n ) = 1 với

( )n =BSCNN (r1 − 1 , , r u − 1 )

λ , với hai số nguyên tố đầu tiên r1 và r2 lần lượt là p và q

RSA CRT private key [2]

Private key không còn là (n,d) mà bao gồm một quintuple (p,q,dP,

dQ,qInv) và một (hoặc là không có) chuỗi các triple (r i,d i,t i) , I = 3 , … , u

Thông số modulus n trong private key là tích của u số nguyên tố r i , i =

1 , … , u với u≥ 2 Thông số d là một số nguyên dương nhỏ hơn n thỏa

mãn (e*d) mod λ (n) = 1 Các thành phần dP và dQ là những số nguyên dương nhỏ hơn p và q thoả mãn:

1 ) 1 mod(

)

*

1 ) 1 mod(

)

*

và thông số qInv là số nguyên dương nhỏ hơn p thoả mãn:

1 mod )

* (q qInv p =

Nếu u > 2, thì chúng ta sẽ biểu diễn thêm các thành phần triple (r i,d i,t i) ,

i = 3, … , u Thông số r i là thành phần nhân trong tích tạo ra modulus n

Mỗi exponent d i( i = 3, … , u ) thoả mãn:

1 ) 1 mod(

)

* (e d i r i − =

Mỗi thông số t i ( I = 3 , … , u ) là một số nguyên dương nhỏ hơn r i thoả mãn :

1 mod )

* (R i t i r i =

Trang 5

với R i =r1r2 r i−1

Mã hoá

Tính toán tương tự như quá trình mã hoá trong cơ chế bảo mật RSA thông thường

Giải mã

 Tính m c dP p

mod

mod

2 =

 Nếu u > 2, tính m i =c d i modr r, I = 3 , … , u

 Tính h= (m1−m2)qInvmod p

 Tính m=m2 +qh

 Nếu u > 2, đặt R =r1 và for I = 3 to u do

 Tính R =Rr i− 1

 Tính h= (m im)t imod r i

 Tính m=m2 + Rh

3 Nội dung luận văn

Thông qua một số nghiên cứu về thuật toán RSA , đặc biệt là của phòng nghiên cứu RSA với website www.rsasecurity.com, nội dung luận văn tập trung nghiên cứu một số phương pháp mã hoá/giải mã RSA (nhấn mạnh quá trình quá trình giải mã) Các module của cơ chế bảo mật RSA sẽ được cài đặt trên FPGA Đối với phương pháp giải mã RSA CRT, trước mắt đề tài chỉ thực hiện cài đặt cơ chế

2 số nguyên tố, nếu thời gian cho phép có thể phát triển đề tài lên thành cài đặt

cơ chế giải mã nhiều số nguyên tố Ngoài ra, đề tài phải thực hiện việc hoàn thành một software trên PC (có thể viết bằng Visual C#/Java ) đóng vài trò giao tiếp dữ liệu với kit FPGA

Cài đặt cơ chế bảo mật trên FPGA

Trong đề tài này, chúng ta sẽ cài đặt thuật toán RSA 1024/2048 bit vào FPGA Trong đó thực hiện hai module phát sinh cặp khóa public/private và module mã hóa/giải mã trên cặp khóa phát sinh đó Đối với module giải mã, chúng ta sẽ cài đặt hai phương pháp RSA và RSA CRT để có thể thấy rõ được ưu điểm của phương pháp RSA CRT

Cơ sở toán học cho việc phát sinh cặp khoá public/private key là các hàm USCLN, hàm kiểm tra số nguyên tố và hàm phát sinh số ngẫu nhiên

Trang 6

 Hàm kiểm tra số nguyên tố là một phần rất quan trọng trong quá

trình phát sinh cặp khoá RSA, chúng ta sử dụng định luật Fermat phát

biểu rằng “n là số nguyên tố nếu a n− 1 mod n= 1” Giải thuật Miller-Rabin

kiểm tra số nguyên tố như sau :

TestPrime(n)

Tìm 2 số nguyên k và q với k > 0 , q lẻ để n− 1 = 2k q

Chọn một số nguyên ngẫu nhiên a , 1 < a < n-1

if a n− 1 mod n= 1or n-1 then return “không phải số nguyên tố” end if

for j=1 to k-1

if a q2j modn=n− 1then return “không phải số nguyên tố”

end if end for return “đây là số nguyên tố”

Chúng ta sẽ xây dựng hàm USCLN dựa trên giải thuật Euclidean

mở rộng hoặc Euclidean đơn giản mở rộng như sau :

EE_USCLN(m.b)

( A1 , A2 , A3 ) <= ( 1, 0, m ) ; ( B1 , B2 , B3 ) <= ( 0 , 1 , b ) ; Loop : if B3=0 then return A3 = EE_USCLN(m.b)

end if

if B3=1 then return B3 = EE_USCLN(m.b);B2 = b mod− 1 m

end if





<=

3

3

B

A Q

(T1 ,T2 ,T3)<=(A1 −Q*B1 ,A2 −Q*B2 ,A3 −Q*B3) (A1 ,A2 ,A3)<= (B1 ,B2 ,B3)

(B1 ,B2 ,B3)<= (T1 ,T2 ,T3)

goto loop

SEE_USCLN(m.b)

start : ( A2 , A3 ) <= ( 0, m ) ; ( B2 , B3 ) <= (1 , b ) ; Loop : if B3=0 then

b<=fetch_new_b goto start end if

if B3=1 then return(B2,B3) end if





<=

3

3

B

A Q

3 mod 3

T <=

2

* 2

T <= +

(A2 ,A3)<=(B2 ,B3)

Trang 7

(B2 ,B3)<=(T2 ,T3)

goto loop

Hàm toán học hạt nhân cho việc mã hoá/giải mã trong cơ chế bảo mật RSA là

M X

Z = E mod

Chúng ta có thể phân tích 1 2 , { }0,1

0

=∑−

n i

i

i e e E

và Z được tính toán như sau :

1

;

1 0

Z for i = 0 to n – 1 do

M P

P i i2 mod

+

if (e i =1)then Z i+1 =Z i P imod M

else Z i+1 =Z i

end for

Để có thể giải quyết bài toán trên, về cơ bản ta phải giải quyết bài toán tiếp theo

M AB

Ta có thể sử dụng phương pháp Montgomery, phân tích các phần tử A , B ,

M như sau:

{ }0,1 ,

2 1 0

=∑−

n i

i

i a a

A ; 1 2 , { }0,1

0

=∑−

n i

i

i b b

B ; 1 2 , { }0,1

0

=∑−

n i

i

i m m M

Và có hàm nhân Montgomery như sau:

MontProd(A,B,M)

0

S

for i=0 to n-1 do

(S 1 b A)mod2

q i = i− + i

2

1 q M b A S

i

+ +

= −

end for return S n− 1

Với hàm nhân Montgomery, ta có một phương pháp khác để tính toán

M X

Z = Emod

Trang 8

M

Nr = 2 2nmod

) , , 1 ( Pr

Z =

) , , ( Pr

P =

for i=0 to n-1 do

) , , ( Pr

P i+ = i i

if (e i =1)then Z i+1 =Mont Prod(Z i,P i,M)

else Z i+1 =Z i

end for

) , , 1 (

Prod Z M Mont

Z n = n

return Z n

Kiến trúc sơ lược của cơ chế RSA trên kit FPGA [4]

Module phát sinh số ngẫu nhiên: sử dụng LFSR (Linear Feedback Shift Register) để phát sinh số giả ngẫu nhiên 512/1024 bit

Module Random FIFO: đây là một dãy các register có kích thước

cố định để lưu trữ số ngẫu nhiên theo cơ chế FIFO Nếu FIFO đầy, module phát số ngẫu nhiên sẽ dừng hoạt động để tiết kiệm năng lượng

Module kiểm tra số nguyên tố: có nhiệm vụ nhận số ngẫu nhiên

từ Random FIFO và kiểm tra đó có phải là số nguyên tố hay không Nếu không phải thì tiếp tục nhận số ngẫu nhiên khác và kiểm tra lại cho đến khi đúng thì thôi Sau đó đặt số nguyên tố vào input của Prime FIFO

Module Prime FIFO: đây là một dãy các register có kích thước cố

định để lưu trữ số nguyên tố theo cơ chế FIFO Nếu FIFO đầy, module kiểm tra số nguyên tố sẽ dừng hoạt động để tiết kiệm năng lượng Số nguyên tố được lưu trữ có thể được sử dụng ngay lập tức cho module phát sinh cặp khoá public/private key

Trang 9

Module n= pq, ϕ( )pq sẽ nhận hai số nguyên tố p và q và tính toán được n và ϕ

Module GCD ( e , ϕ ): nhận số ngẫu nhiên từ module Random

FIFO và tính toán e và d theo giải thuật Euclide mở rộng

Kiểm tra

Trong quá trình cài đặt kiểm tra một PC, được cài đặt sẵn một software RSA, được kết nối trực tiếp đến kit FPGA Sau khi thu được KU từ kit FPGA, RSA software sẽ mã hoá bản tin m sử dụng KU và gửi E KU( )m đế kit FPGA Kit FPGA sẽ giải mã E KU( )m sử dụng KR và gửi E KR(E KU( )m )

về PC PC sẽ so sánh E KR(E KU( )m ) với m để có thể xác định cơ chế RSA

trên kit FPGA có phát sinh đúng cặp khoá hay không

4 Nhiệm vụ luận văn

• Trình bày cơ sở toán học cho việc phát sinh cặp khoá public/private key,

mã hoá/giải mã với phương pháp RSA thông thường và RSA CRT (nhấn mạnh

cơ chế RSA 2 số nguyên tố)

• Tổng quan về FPGA và lập trình VHDL trên FPGA

• Viết mã VHDL giả lặp giải thuật RSA (CRT) trên kit VirtexII Pro

• Viết chương trình giao tiếp với kit FPGA (Visual C#/Java) để phát và nhận kết quả mô phỏng

• Đánh giá kết quả, nhận xét, nêu bật lên ưu điểm của phương pháp giải mã RSA CRT và hướng phát triển đề tài

5. Sơ lược về thời gian thực hiện

Tuần 1 – 6: Phân tích cơ sở toán học của cơ chế bảo mật RSA, xây dựng

một số thuật toán xử lý toán học (Fermat, Montgomery, Euclide …) để có thể

cài đặt RSA lên kit FPGA Đánh giá sơ bộ về các giải thuật RSA trên cơ sở lý thuyết toán học

Tuần 7 – 12: Nghiên cứu về cấu trúc kit VirtexII Pro và ngôn ngữ VHDL

Trang 10

Tuần 13 – 24: Xây dựng mô hình xử lý cơ chế bảo mật RSA trên kit

VirtexII Pro và viết software để trao đổi dữ liệu với kit FPGA Đây là phần hạt nhân của đề tài với thời gian chi tiết như sau:

Tuần 13 – 15: thiết kế module cộng và phát sinh số ngẫu nhiên

Tuần 16 – 18: thiết kế module FIFO và modulo mũ

Tuần 19 – 21: thiết kế một software tính toán RSA trên PC có thể

bằng ngôn ngữ Visual C#/Java

Tuần 22 – 24: simulate và debug từng module

Tuần 25 – 27: Mô phỏng, ghi nhận kết quả rút ra các đánh giá, nhận xét và

kết luận

Tuần 28 – 30: Viết hoàn chỉnh báo cáo, làm slide

6. Những trở ngại và hướng phát triển đề tài

Luận văn đặt ra nhiều vấn đề khó khăn phải vượt qua Việc thấu hiểu các giải thuật RSA đòi hỏi sự nghiên cứu thấu đáo thuật toán vì tính chất lý thuyết toán học của đề tài nên không tránh những khỏi những khó khăn với hàng loạt những công thức tính toán thuần túy mang tính lý thuyết tư duy phức tạp và trừu tượng Với quỹ thời gian tương đối hẹp

và nhiều công việc phải đạt được, đây thực sự là một khó khăn không nhỏ

Việc thực hiện giả lập trên kit FPGA đòi hỏi rất nhiều công sức và thời gian do phải xây dựng mã VHDL cho mô hình giả lập xử lý Thêm nữa, để có thể sử dụng thành thạo và tối ưu kit FPGA, cần phải dành một lượng thời gian cho việc nghiên cứu ngôn ngữ VHDL và tài liệu hướng dẫn của kit FPGA Ước tính thời gian cần thiết cho việc giả lập trên FPGA tối thiểu là 12 tuần Nếu việc thực hiện cài đặt trên kit FPGA thực hiện nhanh

và quỹ thời gian cho phép, có thể phát triển đề tài lên cơ chế giải mã RSA CRT nhiều hơn hai số nguyên tố để có thể thấy rõ hơn ưu điểm của phương pháp RSA CRT

7 Tài liệu tham khảo

[1] “RSA Speedup with Chinese Remainder Theorem Immune

against Hardware Fault Cryptanalysis”, IEEE Transactions on computers ,

vol.52 , pp.461-472 , Apr 2003

[2] “PKCS # 1 v2.1 : RSA Encryption Standard” , RSA Laboratories ,

June 2002

ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-1.pdf

[3] “A method for obtaining digital signatures and public key

cryptoystems” , Communications of the ACM , vol.21 , pp.120-126 , Feb 1978

[4] “Implementing a 1024-bit RSA on FPGA” , Reconfigurable

Network Group , Applied Research Lab , Department of Computer Science and Engineering , Washington University in St.Louis

http://www.arl.wustl.edu/~jl1/education/cs502/course_project.htm

[5] “RSA and public key cryptography in FPGA” , Altera Corporation

Trang 11

[6] “A Method for Obtaining Digital Signatures and Public-Key

Cryptosystems”, R.L Rivest, A Shamir, and L Adleman, MIT Laboratory for

Computer Science and Department of Mathematics

[7] “FPGA-based Implementation of a serial RSA processor”, A

Mazzeo, L Romano, G P Saggese - Universita’ degli Studi di Napoli “Federico II”, N Mazzocca - Seconda Universita’ degli Studi di Napoli

[8] “High Speed RSA Implement”, Cetin Kaya Koc, RSA

Laboratories, RSA Data Security, Inc.

High-Speed RSA Implementation

Systems”, Mathieu Ciet, Michael Neve, Eric Peeters & Jean-Jacques Quisquater

Ngày đăng: 03/05/2015, 17:45

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w