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

Bài tập lớn môn an toàn bảo mật thông tin xây dựng chương trình mã hóa và giải mã rsa

50 10 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

Tiêu đề Xây dựng chương trình mã hóa và giải mã RSA
Tác giả Phạm Thảo Vân, Bùi Hoàng Việt, Khúc Ngọc Việt, Nguyễn Mạnh Vinh
Người hướng dẫn Ths. Trần Phương Nhung
Trường học Trường Đại học Công nghiệp Hà Nội
Chuyên ngành Công nghệ thông tin
Thể loại Bài tập lớn
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 50
Dung lượng 846,92 KB

Cấu trúc

  • Chương 1.Tổng quan về đề tài nghiên cứu (4)
    • 1.1 Mô tả tổng quát về đề tài nghiên cứu (4)
    • 1.2 C ác kiến thức cần có để xây dựng chương trình (8)
  • Chương 2:Kết quả nghiên cứu (9)
    • 2.1. Giới thiệu (9)
    • 2.2. Nội dung thuật toán (9)
      • 2.2.1 Thuật toán Euclid (0)
      • 2.2.2. Định lí Fermat (13)
      • 2.2.3. Định lí Euler (15)
      • 2.2.4. Kiểm tra số nguyên tố (19)
      • 2.2.5 Thuật toán Miller-Rabin (21)
      • 2.2.6. Thuật toán RSA (27)
    • 2.3. Thiết kế, cài đặt chương trình đề mô thuật toán (38)
      • 2.3.1. Giao diện chương trình demo (0)
    • 2.4. Cài đặt và triển khai (39)
      • 2.4.1 Mô tả thuật toán (39)
      • 2.4.2. Mã chương trình (39)
    • 2.5 Phân công công việc (44)
  • Chương 3 K iến thức l ĩ nh hội và bài học kinh nghiệm (47)
    • 3.1 Nội dung đã thục hiện (0)
    • 3.2 Hướng phát triển (47)
      • 3.2.1 Ứng dụng RSA trong bảo mật dữ liệu (47)
      • 3.2.2. Ứng dụng RSA trong công nghệ thông tin (49)
  • KẾT LUẬN (50)

Nội dung

Trang 1 TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘIKHOA CÔNG NGHỆ THÔNG TINBÀI TẬP LỚN MÔN: AN TỒN BẢO MẬT THƠNG TINĐề tài:Xây dựng chương trình mã hóa và giải mã RSACBHD: Ths.Trần Phương NhungLớp

quan về đề tài nghiên cứu

Mô tả tổng quát về đề tài nghiên cứu

Với mong muốn xây dựng một chương trình mã hóa và giải mã cho thông tin muốn trao đổi được đảm bảo tính an toàn và bí mật nhóm 13 đã lựa chọn đề tài mã hóa và giải mã RSA.

RSA ra đời với mục đích bảo vệ dữ liệu, do vậy chúng được ứng dụng rất nhiều trong hoạt động hiện đại Những ứng dụng của RSA trong bảo mật dữ liệu như:

 Chứng thực dữ liệu: chắc hẳn các bạn đã từng gặp tình trạng yêu cầu xác minh bằng cách đưa ra các con số gửi về email hay số điện thoại trước khi đăng nhập Đây chính là phương pháp bảo mật thông tin, dữ liệu ứng dụng thuật toán RSA để tránh những tình trạng mạo danh, hack tài khoản gây ảnh hưởng cho người dùng và xã hội Việc chứng thực giúp bảo vệ được tài khoản của bản thân người sử dụng giúp an tâm hơn khi sử dụng các dịch vụ trực tuyến.

 Truyền tải dữ liệu an toàn: hiện nay tình trạng nghe lén, theo dõi hoạt động cũng như lấy cắp dữ liệu cá nhân trên mạng xã hội bị lên án và chỉ trích rất nhiều, bao gồm cả ông lớn

Facebook Không chỉ những trang mạng xã hội, các trang web cũng không tránh khỏi việc lưu lại các hoạt động, hành vi truy cập để phục vụ các mục đích Marketing Do đó với thuật toán

RSA giúp dữ liệu khỏi các cuộc tấn công của kẻ xấu.

 Chữ ký số/ chữ ký điện tử: trên các thẻ ATM luôn có phần chữ ký điện tử đã được mã hóa từ chữ ký của khách hàng khi đăng ký tài

Downloaded by MON HOANG (monmon3@gmail.com) khoản tại ngân hàng Có thể nói, trong lĩnh vực ngân hàng, vấn đề bảo mật thông tin của khách hàng cần được đặt lên hàng đầu, chúng quyết định chất lượng của dịch vụ RSA được ứng dụng để bảo mật dữ liệu khi người dùng thực hiện những giao dịch ngân hàng, đem lại trải nghiệm tốt và giúp khách hàng an tâm hơn

 Trong ngôn ngữ lập trình Java, các nhà lập trình viên thường sử dụng những đoạn code chứa RSA để tăng tính bảo mật cho trang web và ứng dụng cũng như đảm bảo an toàn cho người sử dụng.Các đoạn code RSA này có thể hoạt động dưới bất kỳ sự thay đổi nào của môi trường Ngoài ra, các lập trình viên cũng sử dụng các ngôn ngữ lập trình khác bên cạnh Java có thể tìm hiểu và ứng dụng những tính năng của RSA trong hoạt động làm việc và bảo mật thông tin.Ngày nay việc sử dụng các ứng dụng, trang web trên internet ngày càng gia tăng khiến cho vấn đề bảo mật dữ liệu càng được chú trọng Những dữ liệu này có thể là những thông tin bí mật cá nhân, thông tin về tài chính, gây không ít nguy hại cho người sử dụng Cũng chính vì lý do này mà thuật toán RSA được biết đến và sử dụng nhiều hơn trong tất cả các lĩnh vực đặc biệt là trong ngành ngân hàng

RSA là một hệ mã hóa bất đối xứng được phát triển bởi Ron Rivest, Adi Shamir và Leonard

Adleman (tên của nó cũng chính là tên viết tắt của

3 tác giả này) và được sử dụng rộng rãi trong công tác mã hoá và công nghệ chữ ký điện tử Trong hệ mã hóa này, public key có thể chia sẻ công khai cho tất cả mọi người.

Hoạt động của RSA dựa trên 4 bước chính: sinh khóa, chia sẻ key, mã hóa và giải mã.

Hệ mã hóa bất đối xứng (asymmetric cryptography) hay còn gọi là hệ mã hóa public key là một hệ mã hóa sử dụng một cặp key để mã hóa và giải mã: public key (khóa công khai) dùng để mã hóa và private key (khóa bí mật) để giải mã.

Downloaded by MON HOANG (monmon3@gmail.com)

Trong hệ mã hóa này, bất cứ ai cũng có thể sử dụng public key đã mã hóa bản tin và gửi cho người nhận Nhưng một điều hiển nhiên là người sở hữu private key sẽ giữ nó cho riêng mình, và do đó, chỉ anh ta mới có giải mã được mà thôi.

Thông thường thì cặp khóa được sinh này sẽ cố gắng đảm bảo rằng từ public key rất khó (gần như là không thể) truy ra được private key Vì vậy, bất cứ kẻ tấn công nào nếu có được public key (điều này khá dễ dàng) cũng không thể có được private key để giải mã.

Tuy nhiên, thực tế phũ phàng hơn rất nhiều Hoàn toàn không có thuật toán nào đạt được lý tưởng như trên Các thuật toán sinh khóa hiện nay đều chỉ có thể phòng chống các kỹ thuật crack thông thường sử dụng máy tính cá nhân Với sự phát triển của các siêu máy tính cũng như các loại máy tính lượng tử, hệ mã hóa bất đối xứng cũng đang phải đối mặt với rất nhiều thách thức.

Tuy nhiên, thực tế phũ phàng hơn rất nhiều

Hoàn toàn không có thuật toán nào đạt được lý tưởng như trên Các thuật toán sinh khóa hiện nay đều chỉ có thể phòng chống các kỹ thuật crack thông thường sử dụng máy tính cá nhân Với sự phát triển của các siêu máy tính cũng như các loại máy tính lượng tử, hệ mã hóa bất đối xứng cũng đang phải đối mặt với rất nhiều thách thức và trong đó có hệ mã hóa RSA

C ác kiến thức cần có để xây dựng chương trình

chương trình Để thực hiện được đề tài này nhóm chúng em đã phải dựa trên nhiều kiến thức về thuật toán như thuật toán Euclid,định lí Fermat,hàm số Euler,thuật toán Miller-Rabin và sử dụng một số ngôn ngữ khá phổ biến hiện nay như c#,java script,java,php.Ngoài ra chúng em còn phải nghiên cứu về phương pháp mã hóa RSA một cách thành thạo(cả tiếng việt và tiếng anh).Bên cạch đó chúng em cũng nỗ lực xây dựng chương trình có tính sát với thực tiễn nhất nhằm phục vụ cho cuộc sống

Downloaded by MON HOANG (monmon3@gmail.com)

quả nghiên cứu

Giới thiệu

Đề tài: Xây dựng chương trình mã hóa và giải mã RSA Công việc cần thực hiện:

1.Tìm hiểu về thuật toán Euclid,định lí

Fermat,hàm số Euler,thuật toán Miller-

2.Tìm hiểu phương pháp mã hóa

RSA 3.Xây dựng cấu trúc dữ liệu và giải thuật 4.Demo chương trình

Hình thức sản phẩm:chương trình mã hóa RSA

Nội dung thuật toán

Thuật toán Euclid là một thuật toán để xác định ước chung lớn nhất (GCD – Greatest Common Divisor) của 2 phần tử thuộc vùng Euclid (ví dụ: các số nguyên) Thuật toán Euclid là một trong những thuật toán cổ nhất được biết đến, từ khi xuất hiện trong cuốn Euclid’s Elements khoảng năm 300 trước công nguyên Euclid khởi đầu đã trình bày rõ ràng vấn đề về phương diện hình học, như vấn đề tìm ra một thước đo chung có độ dài hai đường thẳng, và thuật toán của ông đã xử lý bằng cách lặp lại phép trừ đoạn dài hơn cho đoạn ngắn hơn.Tuy nhiên , thuật toán đã hầu như không được phát hiện ra bởi Euclid và nó đã có thể được biết đến sớm hơn 200 năm Nó cũng đã được biết đến bởi Eudoxus of Cnidus (khoảng 375 trước công nguyên) và Aristotle (khoảng 330 trước công nguyên).

Thuật toán Euclid sử dụng để giải một phương trình vô định nguyên (còn được gọi là phương trình Đi-ô-phăng ) có dạng: a ×

Downloaded by MON HOANG (monmon3@gmail.com) x + b × y = c,trong đó a, b, c là các hệ số nguyên, x, y là các ẩn nhận giá trị nguyên Điều kiện cần và đủ để phương trình này có nghiệm (nguyên) là gcd(a,b) là ước của c Khẳng định này dựa trên một mệnh đề sau:

Trong số học đã biết rằng nếu d = gcd(a,b) thì tồn tại các số nguyên x, y sao cho a × x + b × y d

Giải thuật Euclid mở rộng kết hợp quá trình tìm gcd(a,b) trong thuật toán Euclid với việc tìm một cặp số x, y thoản mãn phương trình Đi-ô-phăng. Giả sử cho hai số tự nhiên a, b, ngoài ra a >b>0. Đặt r0 = a, r1 = b, chia r0 cho r1 được số dư r2 và thương số nguyên q1 Nếu r2 = 0 thì dừng lại, nếu r2 khác không, chia r1 cho r2 được số dư r3 Vì dãy các ri là giảm thực sự nến sau hữu hạn bước ta được số dư rm+2 = 0. r o = q 1 × r 1 + r 2,0 < r 2

+ 1 trong đó số dư cuối cùng khác 0 là r m + 1 = d Bài toán đặt ra là tìm x, y sao cho a × x + b × y = r m + 1( = d)

Khi i = m − 1 ta có được x m + 1 và y m + 1 Các công thức

(3) là công thức truy hồi để tính x,y. Áp dụng giải thuật Euclid mở rộng tìm số nghịch đảo trong vành Zm Số nghịch đảo trong vành Zm

Trong lý thuyết số, vành Zm được định nghĩa là vành thương của với quan hệ đồng dư theo môđun m (là quan hệ tương đương) mà các phần tử của nó là các lớp đồng dư theo mođun m

Downloaded by MON HOANG (monmon3@gmail.com)

(m là số nguyên dương lớn hơn 1) Ta cũng có thể xét Zm chỉ với các đại diện của nó Khi đó

Zm ={0, 1, , m – 1} thông thường được rút gọn theo mođun m: a + b = (a + b ) mod m (2.4) a ×b = (a × b ) mod m (2.5)

Phần tử a của Zm được gọi là khả nghịch trong Zm hay khả nghịch theo mođun m nếu tồn tại phần tử a' trong Zm sao cho a × a' = 1 trong Zm hay a × a’

≡ 1(mod m) Khi đó a' được gọi là nghịch đảo modulo m của a Trong lý thuyết số đã chứng minh rằng, số a là khả nghịch theo mođun m khi và chỉ khi GCD của a và m bằng 1.

Khi đó tồn tại các số nguyên x, y sao cho m × x + a × y = 1 Đẳng thức này lại chỉ ra x là nghịch đảo của a theo mođun m Do đó có thể tìm được phần tử nghịch đảo của a theo mođun m nhờ thuật toán Euclid mở rộng khi chia m cho a.

2.2.2 Định lí Fermat Định lý Fermat được phát biểu như sau: Nếu p là số nguyên tố và a là số nguyên dương không thể chia hết cho p, thì: ap-1 ≡1(mod p)

Ta có ap-1 = 53-1R = 25≡1(mod p) = ≡1(mod 3)

Chứng minh: Ta xét các số nhỏ hơn p: {1, 2, , p- 1} và nhân mỗi phần tử với a, (modulo p) để có được tập X = {a mod p, 2a mod p, , (p-1)a mod p } Không phần tử nào của X bằng 0 bởi vì a không chia hết cho p Hơn nữa không có hai số nguyên nào của X bằng nhau Để xét điều này ta giả sử: ja

Downloaded by MON HOANG (monmon3@gmail.com)

Một dạng thay thế của định lý Fermat: Nếu p là số nguyên tố, a là một số nguyên dương thì: a p ≡ a (mod p)

Lưu ý rằng hình thức đầu của định lý Fermat: ap-1

≡ 1(mod p) yêu cầu rằng a tương đối nguyên tố với p, nhưng dạng này không đúng p=5; a = 3; ap = 35 = 243 ≡ 3(mod 5) = a(mod p) p=5; a; ap

Trước khi trình bày định lý Euler, ta cần cần giới thiệu một điều quan trọng gọi là hàm số của Euler, được viết ∅(�) và được định nghĩa là số lượng các số nguyên dương nhở hơn n và tương đối nguyên tố với n Theo quy ước ∅(1)=1 Ví dụ: Xác định ∅(37) và

Bởi vì 37 là số nguyên tố, suy ra các số nguyên từ

1 đến 36 đều tương đối nguyên tố với 37 Như vậy

Với ∅(35), ta có một danh sách những số nguyên dương nhỏ hơn 35 và tương đối nguyên tố với 35 là:

33,34} có 24 số trong danh sách Như vậy ∅(35)$. n ∅() n ∅() n ∅( )

Downloaded by MON HOANG (monmon3@gmail.com)

Trong bảng 2.2 là danh sách 30 giá trị đầu tiên của ∅(�) Giá trị

∅(1) là không có nghĩa nhưng định nghĩa có một giá trị 1 Cần phải rõ ràng rằng, đối với một số nguyên tố p: ∅(�) = p – 1 Bây giờ giả sử ta có hai số nguyên tố p và q khác nhau Sau đó chúng ta có thể thấy rằng:

Hãy xét rằng tập hợp các số nguyên dương ít hơn n là tập {1, 2,

, (pq–1)} Tập các số nguyên không tương đối nguyên tố với n là tập {p, 2p, , (q–1)p} và tập {q,

Mười hai số nguyên trong đó là: {1, 2, 4, 5, 8, 10, 11, 13, 16, 17, 19, 20}

Downloaded by MON HOANG (monmon3@gmail.com) Định lý Euler được phát biểu như sau: Với mỗi số a và n tương đối nguyên tố với nhau thì:

Chứng minh: Phương trình (2.9) là đúng nếu n là số nguyên tố, bởi vì trong trường hợp ∅( ) = (n–1) và định lý của Fermat Tuy nhiên nó cũng đúng với bất kì số nguyên n Vì ∅( ) là số lượng các số nguyên nhỏ hơn n và tương đối nguyên tố với n Xét tập các số nguyên như vậy: R={ 1, 2, , ∅( )} Tức là, mỗi phần tử của R là một số nguyên nhỏ hơn n và gcd( ,n) = 1.

Bây giờ nhân mỗi phần tử với a, mod n:

Tập S là một phép hoán vị của R,bởi các chứng minh sau:

Bởi vì a là số tương đối nguyên tố n và xi tương đối nguyên tố với n, a cũng phải tương đối nguyên tố với n Như vậy, tất cả các phần tử của S là những số nguyên nhỏ hơn n và tương đối nguyên tố với n.

Không có nhân đôi trong S Với công thức nếu (a×b)≡(a×c) (mod n) và a tương đối nguyên tố với n thì b ≡ c(mod n).

Vì thế ta sẽ có:

2.2.4.Kiểm tra số nguyên tố Đối với nhiều thuật toán mật mã, nó là cần thiết để chọn một hoặc nhiều số nguyên tố lớn một cách ngẫu nhiên Vì vậy, chúng ta phải đối mặt với một vấn đề về xác định một con số lớn có là số nguyên tố hay không Trong phần này, ta trình bày một thuật toán rất được quan tâm và phổ biến, có thể thấy rằng thuật toán

Downloaded by MON HOANG (monmon3@gmail.com) này mang lại một số không nhất thiết là một số nguyên tố Tuy nhiên, thuật toán có thể mang lại một số gần như chắc chắn là một số nguyên tố.

Thuật toán Miller-Rabin thường được sử dụng để kiểm tra một số lớn là số nguyên tố Trước khi giải thích thuật toán, ta cần một số kiến thức căn bản Bất kì một số dương lẻ nào n ≥ 3 có thể được biểu diễn như sau: n – 1 = 2 k q với k > 0, q là số lẻ. Để thấy điều này, lưu ý rằng (n – 1 ) là 1 số nguyên Sau đó chia (n–1) cho 2 đến khi kết quả là số lẻ q, với tổng số lần chia là k.

Nếu n được biểu diễn dưới dạng nhị phân số, thì kết quả đạt được bằng cách dịch chuyển số sang bên phải cho đến khi số bên phải là số 1, với tổng số k lần dịch chuyển.

+ Hai tính chất của số nguyên tố

Thiết kế, cài đặt chương trình đề mô thuật toán

mô thuật toán 2.3.1.Giao diện chương trình demo

Tại giao diện tạo khóa có nút tạo khóa công khai và khóa bí mật

Tại giao diện mã hóa có ô để nhập bản rõ và nút mã hóa và ô hiển thị bản mã

Tại giao diện giải mã có nút giải mã và ô hiển thị bản rõ sau khi được giải mã

Downloaded by MON HOANG (monmon3@gmail.com)

Cài đặt và triển khai

2.4.2.Mã chương trình import java.math.BigInteger ; import java.util.Random ; import java.io.* ; public class RSA

* Bit length of each prime number.

* Two distinct large prime numbers p and q.

* Public exponent E and Private exponent D

* @param primeSize Bit length of each prime number.

// Generate two distinct large prime numbers p and q. generatePrimeNumbers() ;

// Generate Public and Private Keys. generatePublicPrivateKeys() ;

* Generate two distinct large prime numbers p and q.

{ p = BigInteger.probablePrime(primeSize /2, random); do

{ q = BigInteger.probablePrime(primeSize /2, random); } while( q.compareTo( p ) == 0 ) ;

* Generate Public and Private Keys.

// r = ( p - 1 ) * ( q - 1 ) r = p.subtract( BigInteger.valueOf( 1 ) ) ; r = r.multiply( q.subtract( BigInteger.valueOf( 1 ) ) ) ;

Downloaded by MON HOANG (monmon3@gmail.com)

// Choose E, coprime to and less than r do

E = new BigInteger( 2 * primeSize, new Random() ) ; } while( ( E.compareTo( r ) != -1 ) ||

// Compute D, the inverse of E mod r

* Encrypts the plaintext (Using Public Key).

* @param message String containing the plaintext message to

* @return The ciphertext as a BigInteger array.

*/ public BigInteger[] encrypt( String message )

{ int i ; byte[] temp = new byte[1] ; byte[] digits = message.getBytes() ; BigInteger[] bigdigits = new BigInteger[digits.length] ; for( i = 0 ; i < bigdigits.length ; i++ ) { temp[0] = digits[i] ; bigdigits[i] = new BigInteger( temp ) ; }

BigInteger[] encrypted = new BigInteger[bigdigits.length] ; for( i = 0 ; i < bigdigits.length ; i++ ) encrypted[i] = bigdigits[i].modPow( E, N ) ; return( encrypted ) ; } public BigInteger[] encrypt( String message,BigInteger userD,BigInteger userN)

{ int i ; byte[] temp = new byte[1] ; byte[] digits = message.getBytes() ; BigInteger[] bigdigits = new BigInteger[digits.length] ; for( i = 0 ; i < bigdigits.length ; i++ ) { temp[0] = digits[i] ; bigdigits[i] = new BigInteger( temp ) ; }

BigInteger[] encrypted = new BigInteger[bigdigits.length] ;for( i = 0 ; i < bigdigits.length ; i++ ) encrypted[i] = bigdigits[i].modPow( userD, userN ) ; return( encrypted ) ; }

* Decrypts the ciphertext (Using Private Key).

* @param encrypted BigInteger array containing

* the ciphertext to be decrypted.

*/ public String decrypt( BigInteger[] encrypted,BigInteger D,BigInteger N )

BigInteger[] decrypted = new BigInteger[encrypted.length] ; for( i = 0 ; i < decrypted.length ; i++ ) decrypted[i] = encrypted[i].modPow( D, N ) ; char[] charArray = new char[decrypted.length] ; for( i = 0 ; i < charArray.length ; i++ ) charArray[i] = (char) ( decrypted[i].intValue() ) ; return( new String( charArray ) ) ; }

Downloaded by MON HOANG (monmon3@gmail.com)

* RSA Main program for Unit Testing.

*/ public static void main( String[] args ) throws IOException {

System.out.println( "Syntax: java RSA PrimeSize" ) ; System.out.println( "e.g java RSA 8" ) ;

System.out.println( "e.g java RSA 512" ) ;

// Get bit length of each prime number int primeSize = Integer.parseInt( args[0] ) ;*/ int primeSize =8;

// Generate Public and Private Keys RSA rsa = new RSA( primeSize ) ;

System.out.println( "Key Size: [" + primeSize + "]" ); System.out.println( "" ) ;

System.out.println( "Generated prime numbers p and q" ); System.out.println( "p: [" + rsa.getp().toString( 16 ).toUpperCase() + "]" );

System.out.println( "q: [" + rsa.getq().toString( 16 ).toUpperCase() + "]" );

System.out.println( "The public key is the pair (N, E) which will be published." ) ;

System.out.println( "N: [" + rsa.getN().toString( 16 ).toUpperCase() + "]" ) ;

System.out.println( "E: [" + rsa.getE().toString( 16 ).toUpperCase() + "]" ) ;

System.out.println( "The private key is the pair (N, D) which will be kept private." ) ;

System.out.println( "N: [" + rsa.getN().toString( 16 ).toUpperCase() + "]" ) ;

System.out.println( "D: [" + rsa.getD().toString( 16 ).toUpperCase() + "]" ) ;

// Get message (plaintext) from user System.out.println( "Please enter message (plaintext):" ) ; String plaintext = ( new BufferedReader( new InputStreamReader( System.in ) ) ).readLine() ;

// Encrypt Message BigInteger[] ciphertext = rsa.encrypt( plaintext ) ;

System.out.print( "Ciphertext: [" ) ; for( int i = 0 ; i < ciphertext.length ; i++ ) {

System.out.print( ciphertext[i].toString( 16 ).toUpperCase() ) ; if( i != ciphertext.length - 1 )

System.out.println( "]" ) ; System.out.println( "" ) ; RSA rsa1 = new RSA(8);

String recoveredPlaintext = rsa1.decrypt( ciphertext ,rsa.getD(),rsa.getN()) ;

System.out.println( "Recovered plaintext: [" + recoveredPlaintext + "]" ) ;

Phân công công việc

Tên sinh viên Tên công việc

Phạm Thảo Vân - Tìm hiểu về định lý Fermat

-tìm hiểu về thuật toán euclid

Bùi Hoàng Việt - Tìm hiểu về hàm số Euler

-Tìm hiểu về thuật toán Miller- Rabin Khúc Ngọc Việt -Tìm hiểu về mã hóa và giải mã RSA

Nguyễn Mạnh Vinh - Tìm hiểu về định lý phần dư trung hoa.

Downloaded by MON HOANG (monmon3@gmail.com)

Downloaded by MON HOANG (monmon3@gmail.com)

K iến thức l ĩ nh hội và bài học kinh nghiệm

Hướng phát triển

3.2.1 Ứng dụng RSA trong bảo mật dữ liệu

RSA ra đời với mục đích bảo vệ dữ liệu, do vậy chúng được ứng dụng rất nhiều trong hoạt động hiện đại Những ứng dụng của RSA trong bảo mật dữ liệu như:

 Chứng thực dữ liệu: chắc hẳn các bạn đã từng gặp tình trạng yêu cầu xác minh bằng cách đưa ra các con số gửi về email hay số điện thoại trước khi đăng nhập Đây chính là phương pháp bảo mật thông tin, dữ liệu ứng dụng thuật toán RSA để tránh những tình trạng mạo danh, hack tài khoản gây ảnh hưởng cho người dùng và xã hội Việc chứng thực giúp bảo vệ được tài khoản của bản thân người sử dụng giúp an tâm hơn khi sử dụng các dịch vụ trực tuyến.

 Truyền tải dữ liệu an toàn: hiện nay tình trạng nghe lén, theo dõi hoạt động cũng như lấy cắp dữ liệu cá nhân trên mạng xã hội bị

Downloaded by MON HOANG (monmon3@gmail.com) lên án và chỉ trích rất nhiều, bao gồm cả ông lớn

Facebook Không chỉ những trang mạng xã hội, các trang web cũng không tránh khỏi việc lưu lại các hoạt động, hành vi truy cập để phục vụ các mục đích Marketing Do đó với thuật toán RSA giúp dữ liệu khỏi các cuộc tấn công của kẻ xấu.

 Chữ ký số/ chữ ký điện tử: trên các thẻ ATM luôn có phần chữ ký điện tử đã được mã hóa từ chữ ký của khách hàng khi đăng ký tài khoản tại ngân hàng

Có thể nói, trong lĩnh vực ngân hàng, vấn đề bảo mật thông tin của khách hàng cần được đặt lên hàng đầu, chúng quyết định chất lượng của dịch vụ RSA được ứng dụng để bảo mật dữ liệu khi người dùng thực hiện những giao dịch ngân hàng, đem lại trải nghiệm tốt và giúp khách hàng an tâm hơn.

3.2.2 Ứng dụng RSA trong công nghệ thông tin

Trong ngôn ngữ lập trình Java, các nhà lập trình viên thường sử dụng những đoạn code chứa RSA để tăng tính bảo mật cho trang web và ứng dụng cũng như đảm bảo an toàn cho người sử dụng.Các đoạn code RSA này có thể hoạt động dưới bất kỳ sự thay đổi nào của môi trường Ngoài ra, các lập trình viên cũng sử dụng các ngôn ngữ lập trình khác bên cạnh Java có thể tìm hiểu và ứng dụng những tính năng của RSA trong hoạt động làm việc và bảo mật thông tin.Ngày nay việc sử dụng các ứng dụng, trang web trên internet ngày càng gia tăng khiến cho vấn đề bảo mật dữ liệu càng được chú trọng Những dữ liệu này có thể là những thông tin bí mật cá nhân, thông tin về tài chính, gây không ít nguy hại cho người sử dụng Cũng chính vì lý do này mà thuật toán RSA được biết đến và sử dụng nhiều hơn trong tất cả các lĩnh vực đặc biệt là trong ngành ngân hàng.

Ngày đăng: 21/03/2024, 17:22

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w