Bird
Raised Fist0
Computer Networksknowledge~5 mins

Asymmetric encryption (RSA) in Computer Networks - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Asymmetric encryption (RSA)
O(k)
Understanding Time Complexity

When using RSA encryption, it is important to understand how the time to encrypt or decrypt data changes as the size of the input grows.

We want to know how the number of steps needed grows when the message or key size increases.

Scenario Under Consideration

Analyze the time complexity of the RSA encryption process shown below.


function rsaEncrypt(message, publicKey) {
  let encrypted = 1n;
  let base = BigInt(message);
  let exponent = BigInt(publicKey.e);
  let modulus = BigInt(publicKey.n);

  while (exponent > 0n) {
    if (exponent % 2n === 1n) {
      encrypted = (encrypted * base) % modulus;
    }
    base = (base * base) % modulus;
    exponent = exponent / 2n;
  }
  return encrypted;
}
    

This code encrypts a message by repeatedly squaring and multiplying modulo a large number, using the public key exponent.

Identify Repeating Operations

Look at what repeats in the code:

  • Primary operation: The while loop that does repeated squaring and multiplication.
  • How many times: The loop runs roughly as many times as the number of bits in the exponent.
How Execution Grows With Input

The number of loop steps grows with the size of the exponent, which depends on the key size.

Input Size (bits in exponent)Approx. Operations
10About 4 steps
100About 7 steps
1000About 10 steps

Pattern observation: The steps increase roughly in a logarithmic scale as the exponent size grows.

Final Time Complexity

Time Complexity: O(k)

This means the time to encrypt grows linearly with the number of bits in the key exponent.

Common Mistake

[X] Wrong: "RSA encryption time depends only on the message size."

[OK] Correct: The main factor is the key size (exponent length), not the message length, because the math works on big numbers related to the key.

Interview Connect

Understanding how RSA's encryption time grows helps you explain real-world security trade-offs clearly and confidently.

Self-Check

"What if we changed the exponent to a fixed small number? How would the time complexity change?"

Practice

(1/5)
1. What is the main purpose of the private key in RSA asymmetric encryption?
easy
A. To share with anyone for secure communication
B. To encrypt messages for everyone to read
C. To decrypt messages encrypted with the public key
D. To generate the public key

Solution

  1. Step 1: Understand RSA key roles

    In RSA, the public key encrypts data, and the private key decrypts it.
  2. Step 2: Identify private key function

    The private key is kept secret and used to decrypt messages encrypted by the public key.
  3. Final Answer:

    To decrypt messages encrypted with the public key -> Option C
  4. Quick Check:

    Private key = decrypt [OK]
Hint: Private key always decrypts what public key encrypts [OK]
Common Mistakes:
  • Confusing encryption and decryption roles
  • Thinking private key is shared publicly
  • Assuming private key encrypts messages
2. Which of the following is the correct way to describe RSA keys?
easy
A. Both keys are identical and interchangeable
B. Public key encrypts, private key decrypts
C. Private key is public, public key is private
D. Keys are randomly generated but not related

Solution

  1. Step 1: Recall RSA key relationship

    RSA uses a pair of keys where the public key encrypts and the private key decrypts.
  2. Step 2: Evaluate options

    Only Public key encrypts, private key decrypts correctly states the roles of the keys in RSA encryption.
  3. Final Answer:

    Public key encrypts, private key decrypts -> Option B
  4. Quick Check:

    Public encrypt, private decrypt [OK]
Hint: Public encrypts, private decrypts in RSA [OK]
Common Mistakes:
  • Thinking keys are the same
  • Mixing up public and private key roles
  • Believing keys are unrelated
3. Consider this simplified RSA scenario:
Public key: (e=3, n=33)
Private key: (d=7, n=33)
Message m = 4

What is the encrypted message c using c = m^e mod n?
medium
A. 31
B. 12
C. 16
D. 4

Solution

  1. Step 1: Calculate encryption formula

    Compute c = 4^3 mod 33 = 64 mod 33.
  2. Step 2: Find remainder

    64 divided by 33 leaves remainder 64 - 33*1 = 31, so 64 mod 33 = 31.
  3. Step 3: Re-check calculation

    Actually, 4^3 = 64, 64 mod 33 = 31, so c = 31.
  4. Final Answer:

    31 -> Option A
  5. Quick Check:

    4^3 mod 33 = 31 [OK]
Hint: Calculate power then mod for encryption [OK]
Common Mistakes:
  • Forgetting to apply modulo
  • Calculating power incorrectly
  • Mixing up encryption and decryption formulas
4. In an RSA implementation, a developer wrote:
c = (m ** d) % n
to encrypt a message. Why is this incorrect?
medium
A. Because d is the private key exponent used for decryption, not encryption
B. Because m should be raised to e for decryption
C. Because modulo n should not be used in RSA
D. Because exponentiation operator ** is invalid in Python

Solution

  1. Step 1: Understand RSA key usage

    Encryption uses the public exponent e, decryption uses private exponent d.
  2. Step 2: Identify error in code

    The code uses d to encrypt, which is incorrect; it should use e.
  3. Final Answer:

    Because d is the private key exponent used for decryption, not encryption -> Option A
  4. Quick Check:

    Encrypt with e, decrypt with d [OK]
Hint: Encrypt with e, decrypt with d [OK]
Common Mistakes:
  • Using private key exponent for encryption
  • Confusing exponentiation operator validity
  • Ignoring modulo operation necessity
5. A company wants to use RSA to securely send a 128-bit message. Which of the following is the best practice to ensure security and efficiency?
hard
A. Encrypt the entire 128-bit message directly with RSA public key
B. Share the private key with the recipient to speed up encryption
C. Use the private key to encrypt the message and public key to decrypt
D. Use RSA to encrypt a symmetric key, then use that key to encrypt the message

Solution

  1. Step 1: Understand RSA limitations

    RSA is slow and inefficient for large data encryption like 128-bit messages directly.
  2. Step 2: Identify best practice

    Common practice is to encrypt a symmetric key with RSA, then use that key for fast message encryption.
  3. Final Answer:

    Use RSA to encrypt a symmetric key, then use that key to encrypt the message -> Option D
  4. Quick Check:

    Hybrid encryption = RSA + symmetric key [OK]
Hint: Encrypt keys with RSA, data with symmetric cipher [OK]
Common Mistakes:
  • Encrypting large data directly with RSA
  • Sharing private key publicly
  • Reversing encryption/decryption key roles
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard