Pdf 1.4-1.6 version password cracking method and GPU having scheduler scheduling the same method
Patent Information
- Application Number
- KR1020230056112
- Authority / Receiving Office
- KR · KR
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2023-04-28
- Publication Date
- 2026-09-23
- Estimated Expiration
- 2043-04-28
Smart Images

Figure 112023048054965-PAT00016_ABST
Abstract
Description
Technology Field
[0001] The present invention relates to a PDF 1.4-1.6 version cipher decryption method and a GPU having a scheduler that schedules such a series of decryption steps, and more specifically, to a PDF 1.4-1.6 version cipher decryption method that cracks a PDF 1.4-1.6 version cipher through the optimization of MD5 and RC4 encryption algorithms and a GPU having a scheduler that schedules such a series of decryption steps. Background Technology
[0003] Every year, hundreds of thousands of passwords are lost or forgotten, rendering legitimate owners or authorized law enforcement officials unable to access necessary information. Password cracking is used to recover these passwords. Password cracking refers to the process of recovering passwords from data stored or transmitted within computer systems. Through password cracking, users can recover forgotten passwords or access digital evidence authorized by judges. Malicious attackers use it to gain unauthorized access to systems. In password cracking, a large number of combinations of characters and numbers are brute-forced to figure out the password.
[0004] Common methods include dictionary attacks and brute-force attacks. A dictionary attack involves trying frequently used or predictable user passwords. However, if passwords are not stored in a dictionary, a brute-force attack must be performed, attempting to try every possible password. While the principle of a brute-force attack is simple, it requires a massive amount of computation. The longer a user's password, the more attempts are required; in severe cases, billions of candidate passwords must be checked, and solving the problem can take anywhere from days to months. To rapidly process large amounts of computation, research is actively underway to use GPUs instead of CPUs for password cracking. Since most modern computers are equipped with GPUs and support parallel processing, they are well-suited for password cracking, which requires processing a vast number of passwords.
[0005] PDF (Portable Document Format) is a file format developed by Adobe in 1992 that allows documents containing text formatting and images to be used regardless of software, hardware, or operating systems. Due to this universality, all versions were standardized as ISO 32000 and have established themselves as a global standard document.
[0006] Generally, encrypted files contain an internal hash value generated by hashing a user-set password using a unique algorithm. This hash value is used to verify the accuracy of the entered password before decrypting the contents of the encrypted file. Therefore, the decryption process repeatedly compares guessed passwords with the stored hash value obtained by hashing them with a unique algorithm, without the need to attempt to decrypt the entire file. The unique algorithms used to generate these hashes are publicly available for PDFs, and different hash generation algorithms are used depending on the PDF version. Prior art literature
[0008] 1. R. Chen, Y. Zhang, J. Zhang and J. Xu, “Design and optimizations of the MD5 crypt cracking algorithm based on CUDA,” International Conference on Cloud Computing, Springer, Cham, pp.155-164, 2014.2. C. Li, H. Wu, S. Chen, X. Li and D. Guo, “Efficient implementation for MD5-RC4 encryption using GPU with CUDA,” 2009 3rd International Conference on Anti-counterfeiting, Security, and Identification in Communication, IEEE, pp.167-170, 2009.3. K.W. Kim, S. S. Lee, D. W. Hong and J. C. Ryou, “Gpu-accelerated password cracking of pdf files,” KSII Transactions on Internet and Information Systems(TIIS), Vol.5, No.11, pp.2235-2253, 2011.4. A. Khalid, G. Paul and A. Chattopadhyay, “New speed records for Salsa20 stream cipher using an autotuning framework on GPUs,” International Conference on Cryptology in Africa, Springer, Berlin, Heidelberg, pp. 189-207, 2013. 해결하려는 과제
[0009] The present invention aims to provide a PDF 1.4-1.6 version decryption method capable of recovering passwords with speed optimization on a GPU for large-scale decryption targeting the decryption algorithm of PDF 1.4-1.6 versions, which are currently the most widely used among various PDF versions, and a GPU having a scheduler that schedules such a series of decryption steps. means of solving the problem
[0010] The above objective of the present invention is a method for decrypting a PDF version 1.4-1.6 password on a GPU equipped with shared memory, comprising: a first step of receiving a guessed password from a user; a second step of generating initial data by combining the received password with a padding value and metadata of a PDF file; a third step of hashing the generated initial data using an MD5 algorithm; a fourth step of repeatedly hashing the MD5 hashed value from the third step 50 times using an MD5 algorithm; a fifth step of generating a key string using the output value from the fourth step and repeatedly encrypting the generated key string and the User_String value of the PDF file 20 times using RC4; a sixth step of obtaining a hashed value by processing the fileID value of the PDF using an MD5 algorithm; a seventh step of determining whether the hashed value from the sixth step matches the encrypted value from the fifth step; if the determination result of the seventh step is true, the guessed password from the first step is selected as the hacked password and the process terminates; and if the determination result of the seventh step is false, based on the newly guessed password This can be achieved by a PDF 1.4-1.6 version decryption method, which includes an 8th step of repeating steps 1 through 7 above, and among the steps of repeating hashing 50 times in the 4th step, the first hashing step includes a 4-1 step of calculating an A register by performing operations according to relation 4, and a 4-2 step of moving the A register value to a B register for applying the MD5 algorithm in the next step, and moving the B register value, C register value, and D register value received in the first hashing step to a C register, D register, and A register, respectively.
[0011] Here, registers A, B, C, and D refer to the registers that receive the data required for the MD5 hashing operation.
[0012] Equation 4
[0013]
[0014] In relation 4, x is part of the password guessed in the first step above, and rot32(z, s) means rotating the z value (first argument value) to the left s times.
[0015] Another objective of the present invention can be achieved by a GPU including a scheduler that receives input from a host the aforementioned series of execution steps for decrypting PDF version 1.4-1.6 passwords and then schedules them to a plurality of streaming multiprocessors. Effects of the invention
[0017] According to the PDF 1.4-1.6 version decryption method and the GPU having a scheduler that schedules this series of decryption steps according to the present invention, by optimizing the MD5 and RC4 hashing steps used for PDF 1.4-1.6 version decryption, it was possible to achieve a high throughput of 22.5% on the RTX 3060 and 15.2% on the RTX 3090 compared to the conventional Hashcat. Brief explanation of the drawing
[0019] Figure 1 is a diagram of the MD5 rounder function. Figure 2 is an example of an RC4 key-scheduling algorithm implemented in C. Figure 3 is an example of an RC4 pseudo-random generation algorithm implemented in C. Figure 4 is a decryption algorithm for PDF versions 1.4-1.6. FIG. 5 is a GPU configuration diagram of an embodiment according to the present invention. FIG. 6 is an example of code that performs MD5 hashing according to the present invention. FIG. 7 is an example of code that performs RC4 hashing according to the present invention. FIG. 8 is an example of dynamic allocation performed in GPU shared memory. Figure 9 is a graph regarding the number of password operations per second (kp / s) according to the number of blocks per grid when cracking PDF passwords in an RTX 3060 environment. Figure 10 is a graph showing that when decrypting a PDF in an RTX 3060 environment, the number of cryptographic operations per second (kp / s) varies depending on the number of threads per block in each block of 128 or fewer per grid. Figure 11 is a graph showing the number of cryptographic operations per second (kp / s) calculated for more than 128 blocks per grid according to the number of threads per block when decrypting a PDF in an RTX 3060 environment. Specific details for implementing the invention
[0020] The terms used in this invention are used merely to describe specific embodiments and are not intended to limit the invention. Singular expressions include plural expressions unless the context clearly indicates otherwise. In this specification, terms such as "comprising" or "having" are intended to indicate the existence of the features, numbers, steps, actions, components, parts, or combinations thereof described in the specification, and should be understood as not precluding the existence or addition of one or more other features, numbers, steps, actions, components, parts, or combinations thereof.
[0021] In addition, in this specification, the phrase “on or above” means being located above or below the target part, and does not necessarily mean being located on the upper side with respect to the direction of gravity. Furthermore, when a part such as a region or plate is said to be “on or above” another part, this includes not only cases where it is in contact with or spaced apart from the other part “immediately on or above” the other part, but also cases where there is another part in between.
[0022] In addition, when a component is described in this specification as being "connected" or "connected" to another component, it should be understood that the component may be directly connected to or directly connected to the other component, but unless otherwise specifically stated, it may also be connected or connected through another component in between.
[0023] Additionally, in this specification, terms such as "first," "second," etc., may be used to describe various components, but said components should not be limited by said terms. These terms are used solely for the purpose of distinguishing one component from another.
[0025] Hereinafter, in order to enable a person skilled in the art to easily practice the present invention, preferred embodiments of the present invention will be described in detail with reference to the attached drawings.
[0027] With the advancement of hardware technology over the past few years, many researchers have conducted studies on the high-speed implementation of cryptography decryption algorithms on GPUs. Geet et al. performed optimizations on GPUs for a thorough attack on the SHA 512 algorithm. D rmuth and Kranz implemented two types of hash ciphers, Bcrypt and Scrypt, on GPUs and FPGAs, respectively. Chen et al. optimized the MD5 Crypt algorithm for mass processing using CUDA programming. For the CUDA optimization implementation, they employed well-known methods such as considering the optimal number of blocks per grid and threads per block, as well as techniques involving the use of shared memory and CUDA Streams. Li et al. efficiently implemented MD5-RC4 using CUDA. By analyzing that the "S" array is placed in GPU local memory and utilizing shared memory, they demonstrated a 3–5 times speed improvement compared to CPU-based implementations. Kim et al. accelerated PDF decryption on GPUs using CUDA. Notably, by using multiple GPUs, they achieved a speed 1,000 times faster than CPUs. PDF decryption is supported by most decryption tools. Among these, HashCat is one of the cryptographic tools with a large user base and is considered to have the best performance. HashCat, first created by Jens "atom" Steube in 2009, is an open-source project used by many people. Hashcat's code became publicly available under the MIT license in 2015. Based on OpenCL, it is compatible with almost all OpenCL. Therefore, it can run on CPUs, GPUs, FPGAs, DSPs, and coprocessors. It also supports over 300 different algorithms.
[0028] The decryption algorithms in PDF versions 1.4–1.6 repeatedly use the MD5 and RC4 algorithms. The MD5 algorithm is a cryptographic hash function that takes a message of arbitrary length as input and generates a 128-bit value. The input message is divided into 512-bit blocks and processed sequentially. It operates with a 128-bit State consisting of four 32-bit words: A, B, C, and D. The first State is initialized with a fixed constant. Message blocks are processed in each round, and as shown in Fig. 1, the round consists of operations based on a non-linear function F, modular addition, and left rotation. M i is a 32-bit block of the input message, and K i is a constant. The function F is divided into the following four types, and a different F function is used every 16 rounds in 64 rounds as shown in Equation 1.
[0029]
[0030] In mathematical formula 1 represents XOR, AND, OR, and NOT operations, respectively.
[0032] The RC4 algorithm is a stream cipher consisting of a Key-Scheduling Algorithm (KSA) and a Pseudo-Random Generation Algorithm (PRGA). First, the KSA algorithm of FIG. 2 is used to initialize a variable-length key between 40 and 2048 bits using KSA with a 256-byte permutation and two 8-bit index pointers. Then, a bit stream is generated using the PRGA of FIG. 3.
[0033] When a user enters a password for authentication in an encrypted file, the encryption hash is calculated and compared with a stored hash. If they match, the system grants the user access to the specified resource. The same verification procedure is used for password cracking. A password candidate is entered, and when the output is obtained, it is compared with a known hash, also known as a verification value. If the output value matches the known hash value, the password is considered valid. While proprietary applications often hide the internal implementation of password processing, open formats are generally documented, and specifications for the necessary password verification steps are mostly publicly available. The algorithms for generating these hashes in PDF are publicly available, and different algorithms are used depending on the version of the PDF. The decryption algorithm for PDF versions 1.4-1.6, which is the subject of the implementation of the present invention, is shown in Fig. 4 and can be broadly divided into three stages. In the first stage, the guessed password value (ST10) is combined with the padding value and the file's metadata (objstring, permission, fileID) to generate Initial Data (Initial_Data) (ST20), and the generated Initial Data is hashed using the MD5 algorithm to generate MD (ST30). Next, the hashed 128-bit value (Md) is hashed 50 times using the MD5 algorithm to generate Md (ST40). The second step is to have the User_String value of the PDF file encrypted 20 times using RC4 (ST50). The key is a 128-bit value obtained by XORing each of the four 32-bit elements that make up the 128-bit output hash value from step ST40 with a round constant. Then, the User_String value, which is the file's metadata, is encrypted 20 times using RC4. In the third step, the file ID value of the file is hashed using the MD5 algorithm to obtain a value (md) (ST60), and the password is verified by comparing md with the ciphertext generated in step ST50 to determine if they match.Repeat steps ST10 through ST70 until a match is found, until the correct password value is obtained.
[0034] CUDA (Compute Unified Device Architecture) is a GPGPU technology that enables parallel processing algorithms executed on GPUs to be written using industry-standard languages, including the C programming language. CUDA has been developed by NVIDIA, and using this architecture requires an NVIDIA GPU and a special stream processing driver. The CUDA GPU structure consists of a function kernel executed on the GPU, a thread group block, a grid of block groups, a warp of 32 threads, and a Streaming Multi-processor (SM) where one warp is executed to run threads concurrently. For password decryption, a single thread decrypts a single password, and multiple decryptions are performed in parallel. For performance, it is necessary to select appropriate values for the number of threads per block and the number of blocks per grid, and sufficient threads and blocks must be used to account for data transmission latency. A major advantage of CUDA is the ability to access fast shared memory areas that can be shared among threads. The proposed method of this invention demonstrated significant performance improvement by utilizing shared memory.
[0035] FIG. 5 is a GPU configuration diagram of an embodiment according to the present invention. The GPU is equipped with a plurality of streaming multiprocessors (SM), and within each SM, a plurality of streaming processors (SP) that execute actual program code are provided. The GPU is equipped with a memory structure in a hierarchical manner. Local memory is used by each thread and is mainly implemented as a set of registers; shared memory is memory used jointly by threads included in the same block; and global memory is memory shared by grids created by all applications and is used for data exchange between the host and the GPU.
[0037] In this invention, the PDF 1.4-1.6 version decryption algorithm is optimized using CUDA. In order to quickly process the large amount of computation required for the decryption process, speed optimization is necessary for parts that consume a lot of time. The PDF 1.4-1.6 version decryption algorithm repeatedly uses MD5 and RC4. Therefore, the optimization was focused on MD5 and RC4.
[0038] Unlike the case where a single algorithm is used and the input is variable, as in Non-Patent Literature 1, the PDF 1.4-1.6 version decryption algorithm repeatedly hashes a fixed 128-bit value using MD5, and subsequently, RC4 receives the 128-bit result of the repeated MD5 as input and repeatedly encrypts it. The hacking method proposed in this invention proposes optimization that considers a fixed input. Non-Patent Literature 2 uses a technique to store the state S in shared memory in the RC4 algorithm. However, due to limitations in the size of the shared memory, a fixed number of threads per block is used. In this invention, it was observed that the number of threads per block that achieves high performance varies depending on the number of blocks per grid. Non-Patent Literature 3 also provides results using multiple GPUs. However, decryption is a simple parallel problem that processes multiple guessed passwords using the same algorithm. Therefore, since the optimization for multiple GPUs is identical to the optimization for a single GPU, it is not addressed in this invention.
[0040] The MD5 algorithm will be briefly explained in terms of the data padding process, the initial hash value setting process, the main loop process, and the hash result generation process.
[0041] a. Data padding process
[0042] Padding is performed to divide the input data into 512-bit blocks. A 1-bit (bit value of 1) is added to the original data, and 0 bits are added continuously if necessary, until the total data length becomes 448 modulo 512 bits. Afterwards, the length of the original data is expressed as a 64-bit value and appended to the end of the padded data.
[0043] B. Initial hash value setting process
[0044] MD5 uses a 128-bit hash value and initially stores predefined values in four 32-bit registers A, B, C, and D (4 * 32 = 128 bits).
[0045] C. Main loop process
[0046] Data is processed into 512-bit blocks, and 4 different functions and 16 operations are applied to each block. These functions perform operations such as bit manipulation, logical operations, and arithmetic operations. This is performed 16 times for the modified F defined in Equation 1 in Fig. 1.
[0047] D. Hash result generation process
[0048] Finally, the processed value from each block is added to the initial hash value. After processing all data blocks, the four registers (A, B, C, D) are connected to obtain a 128-bit final hash value.
[0050] As explained in the above-mentioned process B (initial hash value setting process) and the above-mentioned process C (main loop process), it can be seen that in process B, the first round of process C is performed by inputting predefined values into registers consisting of 32-bit words A, B, C, and D, respectively. Therefore, in the present invention, the first round of the main loop process during the MD5 encryption process is implemented so that some operations in the first round are performed as pre-operations. Equation 2 is the pseudocode for the first round operation process during the main loop process.
[0051]
[0052] In Equation 2, f(b, c, d) represents the operation of applying the function of Equation 1 to status registers B, C, and D, and x is a message input in 32-bit units (M in Fig. 1). i It represents ), and K (Ki in Fig. 1) represents a constant input.
[0053] Since the values of a, b, c, d, K, and s are constant values, mathematical formula 2 can be changed to mathematical formula 4 and operated on.
[0054]
[0055]
[0056] Next, the value of register A calculated by mathematical formula 4 is stored in register B for the next round, the value of register B from the previous step is moved to register C, the value of register C from the previous step is moved to register D, and the value of register D from the previous step is moved to register A, after which the next round is performed.
[0058] Next, optimization was applied to 50 MD5 iterations. Since the hash operation on 128 bits is performed iteratively, only M_0, M_1, M_2, and M_3 are modified in the 512-bit input message M (M_0, M_1, …, M_14, M_15). The remaining values, excluding M_0, M_1, M_2, and M_3, are a series of zero bits added during the 512-bit padding process for MD5 encryption and values representing the message length. Therefore, only M_0, M_1, M_2, and M_3 are modified in the 512-bit input message M (M_0, M_1, …, M_14, M_15). The remaining message words, excluding M_0, M_1, M_2, and M_3, may not be retrieved from the corresponding memory when performing the MD5 operation. Message words with a value of 0 are not added, and the value representing the message length can be implemented as an addition operation that adds a fixed constant. Figure 6 is the implementation code of the proposed method.
[0060] The corresponding code of MD5 presented in Fig. 6, corresponding to the register value movement performed in the first round of Equation 4 and MD5, can be expressed as Equation 5.
[0061]
[0063] I will briefly explain the RC4 encryption algorithm. The RC4 encryption algorithm is performed in steps A and B below.
[0064] A. Initialization Phase (The Key-scheduling Algorithm; KSA)
[0065] First, the 256-byte state vector is initialized to 0, 1, 2, ... 255. Additionally, a key array (K[0] K[1] K[2] ... K
[0255] ) is created, into which the keys are copied. If the key length is 256 bytes, it is copied as is; if it is shorter than 256 bytes, it is copied repeatedly until the key array is full. Now, the state array and the 256-byte key array should be ready. Next, the state array is swapped using the key array.
[0066] me. The pseudo-random generation algorithm (PRGA)
[0067] After the shuffled state array (S[0] S[1] S[2] ... S
[0255] ) is prepared
[0068] 1) The state array is swapped based on two independent variables i and j.
[0069] 2) The values of the two state elements at the i-th and j-th are used to determine the indices of the state array for generating the key.
[0071] RC4 is a stream cipher frequently used in SSL / TLS or networking protocols, and it has the advantage of being very fast. RC4 generates a pseudo-random stream (key stream) to XOR with the plaintext. Therefore, RC4 itself can be used as a random number generator.
[0072] Since RC4 is optimized for 8-bit processors, it is generally implemented using 8-bit word operations. The technique proposed for RC4 optimization in this invention involves integrating the RC4 algorithm into a 32-bit word for computation. That is, while the conventional RC4 algorithm operates on the state vector S in units of 8-bit words, this invention operates on the state vector S in units of 32 bits as a single word. Unlike the prior art, this invention uses the 128-bit value generated as the result of the MD5 operation as the key value during the RC4 algorithm process.
[0073] MD5 operations are performed using 32-bit words, which corresponds to the 32-bit processor of the GPU, and the 128-bit key value resulting from MD5 is stored as four 32-bit words. Therefore, the output value of the MD5 process prior to RC4 can be used as a 32-bit word without conversion to an 8-bit word, and the number of addition and XOR operations is reduced by the amount of combination. Figure 7 shows the implementation code of the proposed method.
[0074] The RC4 algorithm repeatedly queries the state array S in KSA and PRGA. The process of loading and storing values from memory consumes a significant amount of time. A second proposed RC4 optimization technique to address this is to minimize the delay in querying and storing the state array S by storing it in shared memory. Since one decryption algorithm operates in each thread, 256 bytes of state array S are required. Consequently, 256 bytes of shared memory are also required for each thread to store the state array S. For this reason, the number of threads per block must be selected so as not to exceed the size of the shared memory available to the kernel. In this case, the shared memory can be allocated statically or dynamically. Since the available capacity of shared memory varies by GPU architecture, the number of threads available also varies by GPU architecture. Considering this, the present invention is implemented by dynamically allocating shared memory as shown in Fig. 8.
[0076] Since the number of threads per block and the number of blocks per grid affect performance, appropriate selection is required to achieve optimal performance. To verify this, we first examined the performance changes according to the number of threads per block and the number of blocks per grid. We ran a PDF decryption implementation applying the proposed method in an RTX 3060 environment and measured the number of password operations per second according to these changes. Figure 9 shows the results of the number of password operations per second according to the number of blocks. As the number of blocks increased, performance improved with increasing block count and converged to a specific point. In the case of the number of password operations per second according to the number of threads, it increased steadily as shown in Figure 10 when the number of blocks was small, but changed irregularly as shown in Figure 11 when the number of blocks increased.
[0077] Considering these irregularities, Autotune as presented in Non-Patent Literature 4 was used to select optimal parameters. Various factors, such as register usage, thread block size, and loops, affect performance. Non-Patent Literature 4 proposes Autotune, which automatically searches for optimal parameter values based on the device and algorithm. Non-Patent Literature 4 explores performance factors such as register usage, thread block size, and loop unrolling. Hashcat also added the Autotune feature starting from V3. The proposed method explored two factors: the number of threads and the number of grids. The implementation method of the present invention demonstrated the best performance in RTX 3060 and RTX 3090 environments with 65,536 blocks per grid and 96 threads per block.
[0078] The implementation applying the present invention is compared with previous research and the existing highest-performing implementation of Hashcat. Hashcat version 6.2.5 was used, and the number of password calculations per second was measured in RTX 3060 and RTX 3090 environments using the benchmark mode provided by Hashcat (hashcat -b -m10500 -w 4 -O). Hashcat measures the number of password calculations per second by measuring from before data transmission to the GPU until kernel completion. Therefore, the implementation of the proposed method according to the present invention was also measured using the same criteria. The results can be confirmed in Table 1. The implementation of the proposed method according to the present invention achieved 31,460 kp / s on the RTX 3060 and 66,351 kp / s on the RTX 3090. This represents a throughput more than 120 times and 250 times greater than that of previous research, respectively. However, this is judged to be due to the significant performance difference of the GPUs used in the experiment. Compared to Hashcat running in the same environment, it achieved a high throughput of 22.5% on the RTX 3060 and 15.2% on the RTX 3090.
[0079] reference environment speed KW Kim et al. 9800GTX 262 kp / s S. Cook 9800GTX 273 kp / s KW Kim et al. 4 * Tesla C1060 1,200 kp / s hashcat 6.2.5 RTX 3060 25,693 kp / s The present invention RTX 3060 31,460 kp / s hashcat 6.2.5 RTX 3090 57,601 kp / s The present invention RTX 3090 66,351 kp / s
Claims
Claim 1 A method for decrypting a PDF version 1.4-1.6 password on a GPU equipped with shared memory, comprising: a first step of receiving a guessed password from a user; a second step of generating initial data by combining the received password with padding values and metadata of a PDF file; a third step of hashing the generated initial data using the MD5 algorithm; a fourth step of repeatedly hashing the MD5 hashed value from the third step 50 times using the MD5 algorithm; a fifth step of generating a key string using the output value of the fourth step and repeatedly encrypting the generated key string and the User_String value of the PDF file 20 times using RC4; a sixth step of obtaining a hashed value by processing the fileID value of the PDF using the MD5 algorithm; a seventh step of determining whether the hashed value from the sixth step matches the encrypted value from the fifth step; if the determination result of the seventh step is true, the guessed password from the first step is selected as the hacked password and the process terminates; and if the determination result of the seventh step is false, the newly guessed password A PDF 1.4-1.6 version decryption method comprising an 8th step of repeating steps 1 through 7 based on the above, wherein among the steps of repeating hashing 50 times in the 4th step, the first hashing step comprises a 4-1 step of obtaining an A register by performing an operation according to relation 4, and a 4-2 step of moving the A register value to a B register and moving the B register value, C register value, and D register value received in the first hashing step to a C register, D register, and A register, respectively, for the application of the MD5 algorithm in the next step, wherein A, B, C, and D registers are registers that receive data required for MD5 hashing operations. Equation 4 In relation 4, x is part of the password guessed in the first step above, and rot32(z, s) means rotating the z value (first argument) to the left s times. Claim 2 A PDF 1.4-1.6 version decryption method according to claim 1, wherein the fourth step receives 512-bit data at each step, performs MD5 hashing on the top 128 bits of the 512 bits, and performs addition operations on some of the remaining bits. Claim 3 A PDF 1.4-1.6 version decryption method according to claim 1 or 2, wherein the fifth step is characterized by applying RC4 in word units composed of 32 bits. Claim 4 In paragraph 3, the state vector S used in the RC4 above is a PDF 1.4-1.6 version decryption method that stores and retrieves the state vector through dynamic allocation of the shared memory. Claim 5 A GPU comprising a scheduler that receives a series of execution steps for decrypting a PDF version 1.4-1.6 password from a host and schedules them to multiple streaming multiprocessors, wherein the series of execution steps for decrypting a PDF version 1.4-1.6 password comprises: a first step of receiving a guessed password from a user; a second step of generating initial data by combining the received password with a padding value and metadata of a PDF file; a third step of hashing the generated initial data using an MD5 algorithm; a fourth step of hashing the MD5 hashed value from the third step 50 times repeatedly using an MD5 algorithm; a fifth step of generating a key string using the output value of the fourth step and hashing the generated key string and the User_String value of the PDF file 20 times repeatedly using RC4; a sixth step of obtaining a hashed value by processing the fileID value of the PDF using an MD5 algorithm; a seventh step of determining whether the hashed value of the sixth step matches the encrypted value of the fifth step; and if the determination result of the seventh step is true, the guessed value of the first step A GPU having a scheduler that schedules a series of execution steps for decrypting a PDF version 1.4-1.6 password, characterized in that the first hashing step among the 50 iteration hashing steps of the fourth step includes a 4-1 step for finding an A register by performing operations according to relation 4, and a 4-2 step for moving the A register value to the B register and moving the B register value, C register value, and D register value received in the first hashing step to the C register, D register, and A register, respectively, for the application of the MD5 algorithm in the next step, wherein A, B, C, and D registers are registers that receive data necessary for MD5 hashing operations. Equation 4 In relation 4, x is part of the password guessed in the first step above, and rot32(z, s) means rotating the z value (first argument) to the left s times. Claim 6 A GPU having a scheduler that schedules a series of execution steps for decrypting a PDF version 1.4-1.6 cipher, characterized in that, in claim 5, the fourth step receives 512-bit data at each step, processes MD5 hashing for the top 128 bits of the 512 bits, and performs addition operations on some of the remaining bits. Claim 7 A GPU having a scheduler that schedules a series of execution steps for decrypting a PDF version 1.4-1.6 password, wherein, in claim 5 or 6, the fifth step is characterized by applying RC4 in word units composed of 32 bits. Claim 8 A GPU having a scheduler for scheduling a series of execution steps for decrypting a PDF version 1.4-1.6 password, characterized in that, in claim 7, the GPU is equipped with shared memory, and the state vector S used in the RC4 is stored and retrieved in a dynamic allocation manner of the shared memory.
Citation Information
Patent Citations
Hash function processing circuit
JP2004053716A