Thực thi nhanh thuật toán RSA

18 588 0
Thực thi nhanh thuật toán RSA

Đ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

A FAST IMPLEMENTATION OF THE RSA ALGORITHM USING THE GNU MP LIBRARY Rajorshi Biswas, Shibdas Bandyopadhyay, Anirban Banerjee Indian Institute of Information Technology, Calcutta //thực thi nhanh thuật toán RSA sử dụng thư viện GNU MP ABSTRACT Organizations in both public and private sectors have become increasingly dependent on electronic data processing. Protecting these important data is of utmost concern to the organizations and cryptography is one of the primary ways to do the job. Public Key Cryptography is used to protect digital data going through an insecure channel from one place to another. RSA algorithm is extensively used in the popular implementations of Public Key Infrastructures. In this paper, we have done an efficient implementation of RSA algorithm using gmp library from GNU. We have also analyzed the changes in the performance of the algorithm by changing the number of characters we are encoding together (we termed this procedure as bitwise incremental RSA). // tính trừng tượng Các tổ chức trong các lĩnh vực công khai hay bí mật đều phụ thuộc vào quá trình xử lý dữ liệu số. Việc bảo vệ dữ liệu quan trọng là mục tiêu tối cao của các tổ chức và mã hóa là một trong những cách làm chủ yếu cho công việc này. Mã hóa công khai được sử dụng để bảo vệ dữ liệu số thông qua kênh không an toàn từ nơi này đến nơi khác. Thuật toán RSA được sử dụng rộng rãi trong các ứng dụng của cơ sở hạ tầng khóa công khai. Trong tài liệu này, đã làm một ứng dụng của thuật toán RSA sử dụng thư viện GMP từ GNU. Cũng đã phân tích sự thay đổi trong hiệu suất của thuật toán bằng cách chuyển đổi số của các ký tự mà ta mã hóa KEYWORDS Cryptography,RSA,PKI,GMP 1. INTRODUCTION Data communication is an important aspect of our living. So, protection of data from misuse is essential. A cryptosystem defines a pair of data transformations called encryption and decryption. Encryption is applied to the plain text i.e. the data to be communicated to produce cipher text i.e. encrypted data using encryption key. Decryption uses the decryption key to convert cipher text to plain text i.e. the original data. Now, if the encryption key and the decryption key is the same or one can be derived from the other then it is said to be symmetric cryptography. This type of cryptosystem can be easily broken if the key used to encrypt or decrypt can be found. To improve the protection mechanism Public Key Cryptosystem was introduced in 1976 by Whitfield Diffe and Martin Hellman of Stanford University. It uses a pair of related keys one for encryption and other for decryption. One key, which is called the private key, is kept secret and other one known as public key is disclosed. //Giới thiệu Trao đổi dữ liệu là một khía cạch quan trọng trong cuộc sống của chúng ta. Vì vậy, bảo vệ dữ liệu khỏi những hacker là vô cùng cần thiết. Hệ thống mã hóa làm hai việc biết đổi dữ liệu đó là mã hóa và giải mã. Đối với mã hóa đối xứng khóa giải và khóa mã là giống nhau. Kiểu mã hóa này có thể dễ dàng bị phá vỡ nếu khóa sử dụng mã và giải được tìm ra. Để nâng cao cơ chế bảo vệ, mã hóa công khai được giới thiệu năm 1976 bởi Whitfield Diffe và Martin Hellman của đại học Stanford. Nó được sử dụng với hai khóa, một để mã hóa và khóa còn lại để giải mã. Một khóa gọi là khóa bí mật được giữ bí mật và một gọi là khóa công khai được công bố. The message is encrypted with public key and can only be decrypted by using the private key. So, the encrypted message cannot be decrypted by anyone who knows the public key and thus secure communication is possible. RSA (named after its authors - Rivest, Shamir and Adleman) is the most popular public key algorithm. // Bản tin được mã hóa với khóa công khai và chỉ có thể giải mã bằng khóa bí mật. Vì vậy bản tin mã hóa không thể giải mã bởi bất kỳ ai biết khóa công khai và thông tin được bảo vệ. RSAthuật toán khóa công khai rất phổ biến. In relies on the factorization problem of mathematics that indicates that given a very large number it is quite impossible in today's aspect to find two prime numbers whose product is the given number. As we increase the number the possibility for factoring the number decreases. So, we need very large numbers for a good Public Key Cryptosystem. GNU has an excellent library called GMP that can handle numbers of arbitrary precision. We have used this library to implement RSA algorithm. As we have shown in this paper, number of bits encrypted together using a public key has significant impact on the decryption time and the strength of the cryptosystem. Độ khó của thuật toán là vấn đề phân tích ra thừa số, chỉ ra rằng cho một số rất lớn và không thể phân tích ra được hai số nguyên tố. Ta tăng số đã cho lên để khả năng phân tích ra hai thừa số giảm đi. Vì vậy, ta cần các số rất lớn cho hệ thống mã hóa công khai tốt. GNU có một thư viện tuyệt vời gọi là GMP mà có thể xử lý các số chính xác tùy ý. Trong tài liệu này có sử dụng thư viện GMP để thực hiện thuật toán RSA. Số bít mã hóa sử dụng khóa công khai có tác động đáng kể đến thời gian mã hóa và độ mạnh của hệ thống mã hóa. 2. REVIEW OF EXISTING LITERATURE Authentication protocols and their implications are discussed in [1]. Computing inverse of a shared secret modulus, which involves mathematical formulation of RSA, is discussed in [2]. Application of hash function in the field of cryptography is discussed in [3]. The strength of RSA algorithm is discussed in [4]. A survey of fast exponentiation method is done in [5]. Cryptosystem for sensor networks is studied in [6]. Security proofs for various digital signature scheme is studied in [7]. Multiparty authentication services and key agreement protocols are discussed in [8]. Various fast RSA implementations are described in [9]. An efficient implementation of RSA is discussed in [10]. The basic RSA algorithms and other cryptography related issues are discussed in [11]. 3. SCOPE OF PRESENT WORK Our work in this paper is focused primarily on the implementation of RSA. For efficient implementation we have used the GMP library, we have explored the behaviour and feasibility of the algorithm with the change of various input parameters, and finally a user interface is developed to provide an application of our analysis Phạm vi của công việc Việc thực thi ứng dụng trong tài liệu này tập trung chủ yếu vào ứng dụng của thuật toán RSA. Để ứng dụng đạt hiệu quả cao, có sử dụng thư viện GMP và đã nghiên cứu tính khả thi và các thực hiện thuật toán với sự thay đổi khác nhau của thông số đầu vào, và cuối cùng giao diện người sử dụng được phát triển để cung cấp một ứng dụng dựa vào các phân tích đưa ra. 5. OUR IMPLEMENTATION OF THE RSA ALGORITHM Chương trình ứng dụng thuật toán RSA 5.1 Introduction We have implemented the RSA cryptosystem in two forms : a console mode implementation, as well as a user friendly GUI implementation. We focus on the console mode implementation here, and leave the GUI implementation for a later section of this report. The console application uses a 1024 bit modulus RSA implementation, which is adequate for non-critical applications. By a simple modification of the source code, higher bit-strengths may be easily achieved, albeit with a slight performance hit. Giới thiệu Tôi đã thực hiện hệ thống mã hóa RSA ở dạng chương trình chế độ điều khiển. Ứng dụng bảng điều khiển sử dụng 1024 bít. Bằng cách chỉnh sửa đơn giản mã nguồn, có thể nâng cao số bít lên nhưng hiệu suất sẽ thâp đi. 5.2 Handling large integers and the GMP library Any practical implementation of the RSA cryptosystem would involve working with large integers (in our case, of 1024 bits or more in size). One way of dealing with this requirement would be to write our own library that handles all the required functions. While this would indeed make our application independent of any other third-party library, we refrained from doing so due to mainly two considerations. First, the speed of our implementation would not match the speed of the libraries available for such purposes. Second, it would probably be not as secure as some available open-source libraries are. Xử lý các số nguyên lớn và thư viện GMP Chương trình ứng dụng hệ thống mã hóa RSA sẽ làm việc với số nguyên lớn(1024 bít hoặc lớn hơn). Một cách cách là tự viết một thư viện xử lý được tất cả các chức năng được yêu cầu. Trong khi thực sự là chương trình ứng dụng này độc lập với thư viện bên thứ ba khác, tốc độ của chương trình sẽ không bằng tốc độ của thư viện, tiếp nữa là không bảo mật như các thư viện mã nguồn mở. There were several libraries to consider for our application. We narrowed the choice to three libraries: the BigInteger library (Java), the GNU MP Arbitrary Precision library (C/C++), and the OpenSSL crypto library (C/C++). Of these, the GMP library (i.e. the GNU MP library) seemed to suit our needs the most. Hiện tại có vài thư viện được xem xét sử dụng. Có ba thư viện được chọn: thư viện BigInteger(Java), thư viện GNU MP(C/C++), và thư viện Open SSL cryto (C/C+ +). Trong số đó, thư viện GMP dường như thích hợp cho việc thực hiện ứng dụng này nhất. The GMP library aims to provide the fastest possible arithmetic for applications that need a higher precision than the ones directly supported under C/C++ by using highly optimized assembly code. Further the GMP library is a cross-platform library, implying that our application should work across platforms with minimal modifications, provided it is linked with the GMP library for the appropriate platform. We have used the facilities offered by the GMP library heavily throughout our application. The key generation, encryption and decryption routines all use the integer handling functions offered by this library. Thư viện GMP có mục đích cung cấp thuật toán nhanh nhất cho các ứng dụng cần sự chính xác cao hơn các thư viện cùng hỗ trợ C/C++ bằng cách sử dụng mã hợp ngữ được tối ưu hóa cao. Hơn thế nữa, thư viện GMP là thư viện đa nền tảng, ứng dụng được viết này sẽ làm việc ở nhiều nền với các sự điều chỉnh ít nhất, nó được liên kết với thư viện GMP với nền tảng thích hợp. tôi đã sử dụng những điều kiện dễ dàng mà thư viện GMP cung cấp để tích hợp vào ứng dụng. Việc tạo khóa, mã hoa, giải mã đều được xử lý bởi các hàm được cung cấp bởi thư viện GMP. 5.3 Application Overview In this subsection, we present the basic structure of the console mode RSA implementation. The program is meant for use on a per user basis where each user's home directory stores files containing the private and public keys for the particular user. The application stores the private and public keys for a user in the files $HOME/.rsaprivate and $HOME/.rsapublic respectively. Tổng quan ứng dụng Trong tiểu đề này, tôi sẽ trình bày cấu trúc đơn giản của chương trình RSA chế độ dòng lệnh. Mỗi người dùng sẽ có một tập tin lưu trữ khóa công khai và khóa bị mật cho từng người dùng đó. Ứng dụng lưu trữ khóa công khai và khóa bí mật cho một người dùng ở trong trập tin $HOME/.rsa cho khóa bí mật và $HOME/.rsa cho khóa công khai At the very beginning the program searches for the existence of the aforementioned files and reads in the values of the private and public keys. If they are not present (as when the application is run for the first time), the program proceeds to generate the keys and writes them to the files. Mỗi khi chướng trình bắt đầu nó sẽ tìm các tập tin đã nêu trên xem có tồn tại không và đọc các giá trị khóa bí mật và khóa công khai. Nếu chúng không có nội dung (khi ứng dụng chạy lần đầu), chương trình sẽ tạo các khóa và viết chúng vào các tập tin. Following this, the user is presented with a menu, asking him whether he would like to encrypt a file, decrypt an encrypted file, or quit the application. If the user chooses to encrypt a file, he is asked to enter the path to the file containing the recipient's public keys as well as the number of characters to encrypt at a time (this is justified later). If decryption is chosen, the path to the encrypted file is requested and the program subsequently decrypts the file to the standard output. Chương trình sẽ hỏi người sử dụng liệu có muốn mã hóa file hay giải mã một file đã mã hóa hoặc là thoát khỏi chương trình. Nếu người sử dụng chọn mã hóa file, thì người dùng sẽ được hỏi đưa đường dẫn đến file có chưa khóa công khai của người nhận. Nếu giải mã được chọn, cái thành phần đường dẫn để mã hóa file được yêu cầu và chương trình giải mã file đó đến một đầu ra chuẩn. 5.4 RSA key generation The generation of the RSA keys is of paramount importance to the whole application. The application maintains a constant named 'BITSTRENGTH' which is the size of the RSA modulus (n) in bits. According to this setting, two character arrays to contain the digits of the primes p and q are declared. A simple loop through all the digits of this array initializes the array with a random string of bits. We have used C's inbuilt random number generation routines to generate the bits of the string. The random generator is seeded using the srand() routine by the return value of the function time(), which returns the time since the epoch (00:00:00 UTC, January 1, 1970), measured in seconds. Key generation at the same return value of time() is avoided by sleep(), which delays the execution by one second, thus ensuring that the random numbers are never repeated. srand giống như rand là hàm dùng để tạo số ngẫu nhiên nhưng srand sau mỗi lần khởi động cho các kết quả không trùng nhau. srand là hàm thiết lập 1 hạt seed -"start point" .nghĩa là lấy seed làm cơ sở để random number.Nếu cùng seed thì sẽ random giống nhau. #include<stdio.h> #include<conio.h> #include<stdlib.h> void main() { int a,b; srand(5); //dat seed cho a; a=rand()%5; printf("%d\nPress to continue\n",a); getch(); srand(5); //dat lai seed cho b; b=rand()%5; printf("%d:%d\n",a,b); //ket qua giong nhau } Tạo khóa RSA Việc tạo các khóa RSA là tối quan trọng trong ứng dụng này. Ứng dụng này duy trì một hằng số tên là ‘BITSTRENGTH’. Theo như cài đặt, hai mảng ký tự chứa các con số của số nguyên tố p và q đã được tìm ra. Một vòng lặp xuyên suốt các chữ số của mảng này khởi tạo mảng với một chuỗi bit ngẫu nhiên. Tôi có sử dụng hàm tạo số ngẫu nhiên để tạo các bít của chuỗi này. Máy tạo số ngẫu nhiên được sử dụng hàm srand() bằng cách nhận giá tri hàm time(), hàm này trả lại thời gian kể từ khi bắt đầu và được đo bằng giây. Việc tạo khóa trả lại giá trị của time() được tránh bởi hàm sleep(), đây là độ trễ thực hiện được tính bằng giây, do đó để đảm bảo rằng các số ngẫu nhiên không bao giờ lặp lại At the end of this process, we have strings containing binary representations of the numbers p and q, but they are not prime yet. To achieve that, two gmp integers are first initialized with the contents of these strings. Then, the function mpz_nextprime() is called, which changes p and q to the next possible primes. This function uses a probabilistic algorithm to identify primes. According to the gmp manual, it is adequate for practical purposes and the chance of a composite passing is extremely small. Ở cuối quá trình xử lý này, tôi có các chuỗi bao gồm các số nhị phân của các số p và q, nhưng chúng không phải là số nguyên tố. Để đạt được điều này, hai số nguyên gmp được tạo với nội dung của các chuỗi này. Sau đó, hàm mpz_nextprime() được gọi, nó thay đổi p và q thành các số nguyên tố tiếp theo. Hàm này sử dụng thuật toán xác suất để xác định các số nguyên tố. Now that we have the two 512-bit primes p and q, calculating the values of n (=pq) and x (=(p- 1)*(q-1)) is a simple matter of invoking mpz_mul() with the proper arguments. Next, to determine the value of 'e', we started with a value of 65537, and incremented it by two each time until the condition gcd(e,x) = 1 is satisfied (which, incidentally, is almost always satisfied by the number 65537 itself). Bây giờ chúng ta đã có hai số p và q là số nguyên tố kích cỡ khoảng 512 bit, tính giá trị của n (=pq) và x (=(p-1)*(q-1)) là các thông số của hàm mpz_mul(). Tiếp theo, để xác định giá trị của e, ta bắt đầu với giá trị 65537, và tăng nó lên cho đên khí gcd(e,x)=1 được thỏa mãn Now there exists a procedure in the gmp library with the prototype int mpz_invert(mpz_t ROP, mpz_t OP1, mpz_t OP2) which computes the multiplicative inverse of OP1 modulo OP2 and puts the result in ROP. Using this function helps us avoid writing our own routine based on the Extended Euclidean Algorithm (as this function executes extremely fast). In this way, we obtain the value of d, which completes our quest for the RSA keys. Finally the keys (d,e,n) are stored in two files .rsapublic and .rsaprivate, both in the user's home directory. Giờ đã có sự tồn tại của thủ tục trong thư viện gmp với hàm “int mpz_invert(mpz_t ROP, mpz_t OP1, mpz_t OP2)”, hàm này tích nhân nghịch đảo của OP1 mô đun OP2 và đưa kết quả vào ROP. Sử dụng hàm này giúp chúng ta tránh được việc viết các hàm dựa trên thuật toán Euclidean mở rộng (giống như hàm thực hiện cực nhanh). Theo cách này, chúng ta thu được giá trị của d, vậy là đã hoàn thành yêu cầu cho các khóa RSA. Cuối cùng khóa (d,e,n) được lưu trữ vào hai tập tin .rsapublic và .rsapricate, cả hai đều có đường dẫn đến nơi lưu trữ cho người dùng. It is to be noted that the entire application can use a higher (or lower) bitstrength of the RSA modulus n by simply changing the constant BITSTRENGTH at the very beginning of the source-code. Chú ý rằng toàn bộ ứng dụng có thể sử dụng độ mạnh cao hơn của mô đun n RSA bằng cách thay đổi hằng số BITSTRENGTH ở đoạn đầu mã nguồn. 5.5 RSA encryption As the application is executed, the existence of the key files are checked and if they do not exist, the RSA keys are generated. Following this, the user is presented with a menu, which enables him to choose to encrypt, decrypt or quit. Khi chương trình ứng dụng thực thi, nó sẽ kiểm tra các tệp tin khóa có tồn tại không nếu không, các khóa RSA sẽ được tạo. Người dùng sẽ được được phép chọn mã hóa, giải mã hoặc thoát. First, the path to the file containing the public key of the recipient is requested from the user. However the user is also given the option of using his own public keys (in which case, only he can decrypt the message). Using the values of e and n read from the relevant file containing the public keys, the message is encrypted. Đầu tiên, đường dẫn đến tập tin chưa khóa công khai của người nhận được yêu cầu từ người sử dụng. Tuy nhiên người sử dụng cũng được tùy chọn sử dụng các khóa công khai của mình(chỉ người đó mới có thể giải mã được bản tin. Sử dụng các giá trị của e và n đọc từ tệp tin có khóa công khai, bản tin được giải mã. A critical requirement for the proper functioning of the RSA algorithm is that the message m must be represented as an integer in the range [0,n-1] (where n is, as usual, the RSA modulus). Our application converts text messages to integers by using a simple mapping of every character to its ASCII code. But encrypting only one character at a time is not only expensive in terms of the time required to encrypt and decrypt, but also in terms of security. Yêu cầu cuối cùng trong thuật toán RSA là bản tin m phải được biểu diễn bởi một số nguyên trong giải [0, n-1]. Ứng dụng chuyển bản tin rõ thành các số nguyên bằng cách so sánh trong bản mã ASCII. Nhưng mã hóa chỉ một ký tự một thời điểm không giảm về thời gian mã hóa và giải mã mà còn về sự bảo mật. This is because the encrypted integers would then only be from a small finite set (containing a maximum of as many integers as the number of ASCII characters). Hence, we ask the user the number of characters to encrypt at a time. For an RSA encryption scheme with the modulus size of 1024 bits, we have seen that about 100 characters can be encrypted at once. Lesser number of characters cause encryption and (especially) decryption to take significantly longer, whereas higher number of characters often violate the condition that the message m must lie in the interval [0,n-1]. Có điều này bởi vì các số nguyên được mã hóa sẽ chỉ là từ một tập hợp hữu hạn nhỏ(có chứa tối đa số lượng số nguyên bằng bới số lượng trong bảng mã ASCII). Người dùng sẽ được hỏi số lượng các ký tự mã hóa cùng một lúc. Lược đồ mã hóa RSA với mô đun lô cỡ 1024, có nghĩa là khoảng 100 ký tự có thể được mã hóa cùng một lúc. The entire file to encrypt is processed as a group of strings each containing the specified number of characters (except possibly the last such string). Each character in such a string is converted to its 3- character wide ASCII code, and the entire resulting numeric string is our message m. Encrypting it is achieved by computing m ^ e mod n. There is a gmp routine specifically for such a computation having the prototype void mpz_powm (mpz_t ROP, mpz_t BASE, mpz_t EXP, mpz_t MOD) which sets ROP to (BASE raised to EXP) modulo MOD. Thus invoking moz_powm(c,m,e,n) stores the encrypted partial message in the integer c. This is written each time to the file to encrypt to until the whole message has been processed. This completes the encryption process. Toàn bộ tệp tin để mã hóa được xử lý như một nhóm các cuỗi mà mỗi nhóm bao gồm số lượng cụ thể các ký tự. Mỗi ký tự trong chuỗi được chuyển thành 3 ký tự [...]... được mô tả This completes a discussion of our console mode implementation of the RSA algorithm This public key infrastructure has been tested in a multi-user scenario successfully The following section analyses the time required for the various functions of our implementation, varying quite a few parameters Vậy là đã hoàn thành vấn đề thảo luận về ứng dụng chế độ dòng lệnh của thuật toán RSA Cơ sở tầng... 512-bit RSA is definitely the fastest among the ones shown, it is not the most secure, providing marginal security from a concerted attack The slowest (2048-bit RSA) should be used in critical situations since it offers the maximum resistance to attacks In our opinion the 1024-bit modulus is a good balance between speed and security 7 A GRAPHICAL USER INTERFACE TO THE RSA CRYPTOSYSTEM 7.1 Introduction This... Encryption time Decryption time 1 5.068153 254.349886 25 0.219304 11.367492 50 0.128547 6.293279 75 0.096291 4.419277 100 0.078851 3.365591 RSA Timings (per 10,000 characters) 6.2 Timings for RSA for varying bit strengths By varying the constant representing the bit-strength, RSA moduli of other sizes may be used quite easily The following times were recorded using the same input file (10,000 characters):... course, the values of d and n are read in beforehand Giải mã RSA Người dùng chọn giả mã tệp tin đã mã hóa, hàm giải mã được gọi Các phép toán của hàm này thật sự khá đơn giản Từ tập tin mã hóa, hàm giải mã này xử lý từng số nguyên một Cách thực hiện là: với mỗi số nguyên tính toán giá trị cd mod n bằng cách gọi hàm gmp_powm(m, c, d, n) và lưu trữ kết quả vào m Dĩ nhiên, giá trị của d và n được trong tệp tin... Screenshots of the application The following screen shows the main window of our RSA GUI: When the user clicks on the "Check RSA Key Pairs" button, if the key files do not exist (as in the first time), the following message is shown: The user is taken to the key generation dialog, whose functions are pretty selfexplanatory This dialog is shown next: The following diagram shows the "Encrypt" tab of the... the message to be encrypted should lie within the range specified by the modulus (that is, m lies in the range [0,n-1]), which poses a limitation on the maximum number of characters that can be encrypted at a single time 9 A SIMPLE CONSOLE IMPLEMENTATION Here is a simple console mode implementation of the algorithm as described in this paper To compile and run this console, you need the GMP library,... algorithm as described in this paper To compile and run this console, you need the GMP library, available here You can also download the C++ file here Compile it as follows: g++ -lgmp -o rsa rsa.cpp And run it by invoking the rsa executable in a console window ... as our integrated development environment Our application consists of three C++ classes, of which the class named RSA is the most important It provides slots (signal handlers) for encrypting files, decrypting files, mailing the encrypted file to another user, loading the values of the RSA keys from the key-files, saving encrypted/decrypted files and so on One notable difference as far as features are... 2.4.20) Key generation : 0.465994 seconds (averaged over 5 samples) The following times were recorded while encrypting/decrypting a file with exactly 10,000 characters: Phân tích thời gian thực hiện Thời gian cho RSA 1024bit (không có trình biên dịch tối ưu hóa) Tất cả thời gian được ghi lại dưới đây được đo trên bộ vi xử lý 733MHz pentium, sử dụng các hàm đo thời gian cung cấp bởi thư viện C trên nền... the similar looking "Decrypt" tab: The decrypted file may be saved using the "Save Decrypted File" button, which opens up a file-dialog for saving the decrypted file 8 CONCLUSION In this paper an efficient implementation of RSA is shown by using various functions of the GMP library Feasibility analysis is done by comparing the time taken for encryption and decryption It shows that when we increase the . OF THE RSA ALGORITHM USING THE GNU MP LIBRARY Rajorshi Biswas, Shibdas Bandyopadhyay, Anirban Banerjee Indian Institute of Information Technology, Calcutta / /thực thi nhanh thuật toán RSA sử. Việc thực thi ứng dụng trong tài liệu này tập trung chủ yếu vào ứng dụng của thuật toán RSA. Để ứng dụng đạt hiệu quả cao, có sử dụng thư viện GMP và đã nghiên cứu tính khả thi và các thực. nơi này đến nơi khác. Thuật toán RSA được sử dụng rộng rãi trong các ứng dụng của cơ sở hạ tầng khóa công khai. Trong tài liệu này, đã làm một ứng dụng của thuật toán RSA sử dụng thư viện GMP

Ngày đăng: 04/05/2014, 10:40

Từ khóa liên quan

Mục lục

  • ABSTRACT

  • // tính trừng tượng

  • KEYWORDS

  • Cryptography,RSA,PKI,GMP

  • 1. INTRODUCTION

  • 2. REVIEW OF EXISTING LITERATURE

  • 3. SCOPE OF PRESENT WORK

  • 5. OUR IMPLEMENTATION OF THE RSA ALGORITHM

  • 5.1 Introduction

  • 5.2 Handling large integers and the GMP library

  • 5.3 Application Overview

  • 5.4 RSA key generation

  • 5.5 RSA encryption

  • 5.6 RSA decryption

  • 6. TIME ANALYSIS

  • 6.1 Timings for 1024-bit RSA (without compiler optimization)

  • 6.2 Timings for RSA for varying bit strengths

  • 7.1 Introduction

  • 7.2 Implementation

  • 7.3 Screenshots of the application.

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan