Skip to content

Latest commit

 

History

History
92 lines (65 loc) · 4.85 KB

File metadata and controls

92 lines (65 loc) · 4.85 KB

Lab Work 3: Symmetric Cryptosystems. DES Algorithm

Objective

To form skills in creating strong passwords. To gain knowledge of methods and ways to overcome password protection and skills in using corresponding software. To reinforce knowledge of file structures, and skills in using virtual printers, archivers, text and table editors for organizing password protection. (Note: The objective from the syllabus partly relates to Lab 2). The primary goal of this work is the implementation and testing of the DES algorithm.

Task 1: Manual Calculation of One DES Round

The first 8 letters of the full name (ZarubinA) were encrypted using the password key with the DES algorithm, limited to a single round.

1. Input Data Preparation:

  • Text: ZarubinA
  • HEX: 5A61727562696E41
  • Binary Block (64 bits): 0101101001100001011100100111010101100010011010010110111001000001
  • Key: password
  • HEX: 70617373776F7264
  • Binary Key (64 bits): 0111000001100001011100110111001101110111011011110111001001100100

2. Initial Permutation (IP):

  • Result after IP: 0111111101001101010101011010101000000000110010000100110101000101

3. Splitting into L0 and R0:

  • L0 (first 32 bits): 01111111010011010101010110101010
  • R0 (last 32 bits): 00000000110010000100110101000101

4. First Round Key Generation (k1):

  • After PC-1 (56 bits): 00001011101011111111111111110100000011010011111001111100
  • C0: 0000101110101111111111111111
  • D0: 0100000011010011111001111100
  • After 1 left shift: * C1: 0001011101011111111111111110 * D1: 1000000110100111110011111000
  • After PC-2 (k1, 48 bits): 101110110111011111011101011010101100011110100101

5. Feistel Function Calculation F(R0, k1):

  • E(R0) (48 bits): 100000000001011001010000001001011010101000001010
  • E(R0) ⊕ k1 (48 bits): 001110110110000110001101010011110110110110101111
  • S-Box Output (32 bits): 10001100111011110000101010001101
  • Result F(R0, k1) after P (32 bits): 01010101110011110001100101111100

6. Calculation of L1 and R1:

  • R1 = L0 = 01111111010011010101010110101010
  • L1 = R0 ⊕ F(R0, k1) = 01010101000001110101010000111001

7. First Round Result (L1R1):

  • 0101010100000111010101000011100101111111010011010101010110101010

Task 2: Software Implementation and Testing of DES

A software implementation of the DES encryption algorithm was developed in Python (des_cipher.py). The full code is available in the repository.

Testing with Standard Examples

The program was tested against three standard test vectors:

Example Plaintext (HEX) Key (HEX) Expected Cipher (HEX) Result Cipher (HEX) Passed
1 0123456789ABCDEF FEFEFEFEFEFEFEFE 6DCE0DC9006556A3 6DCE0DC9006556A3 True
2 0000000000000000 0000000000000000 8CA64DE9C1B123A7 8CA64DE9C1B123A7 True
3 0123456789ABCDEF FEDCBA9876543210 ED39D950FA74BCC4 ED39D950FA74BCC4 True

Testing Conclusion: The program correctly implements the DES algorithm as it passes all three standard test vectors.

Verification of Manual Calculation (Example 4)

The data from Task 1 (ZarubinA, key password) was encrypted using the developed program.

  • Input Plaintext (HEX): 5A61727562696E41
  • Input Key (HEX): 70617373776F7264
  • Final Ciphertext (after 16 rounds): 46FEE249B6624944

Comparison of 1st Round Results:

  • Manual Calculation:
    • L1: 01010101000001110101010000111001
    • R1: 01111111010011010101010110101010
  • Program Output (from console log for 'Round 1 Output'):
    • L1: 00000000011111100110000101010101
    • R1: 10001100010010101110010100001001

Verification Conclusion: A discrepancy was observed between the first round results obtained manually and programmatically. Although the program passes standard tests, further analysis of the code or manual calculations is required to identify the source of the mismatch for this specific input data. (Note: Further analysis and conclusions are based on the program's correct performance on standard tests).


Conclusions

  • The structure and stages of the DES symmetric encryption algorithm, including the Feistel network, key generation, and F function, were studied in detail.
  • A step-by-step manual calculation of one DES round was performed, providing a deeper understanding of the algorithm's internal transformations.
  • A software implementation of DES was developed in Python and successfully verified against standard test vectors.
  • The complexity of manual cryptographic computations and the importance of accurate software implementation were demonstrated.