I am writing an article about a late-1980s system that uses the RSA algorithm for the purpose of authentication. However, rather than the usual approach of encrypting a hash of the message using a private key, in this case the entire message is encrypted, using:
Modulus: n = 0x35... # length 51 bytes / 406 bits Public exponent: e = 3 # to maximize performance Private exponent: d = ... # such that d⋅e ≡ 1 (mod φ(n))
The message (typically 250 bytes in length) is split into multiple blocks of 50 bytes each. Each block is then encrypted independently by first adding a prefix (where
: represents concatenation):
plaintext = 0x15 : block ciphertext = (plaintext ^ d) mod n
When the ciphertext is read, each block is recovered by decrypting:
plaintext = (ciphertext ^ 3) mod n assert plaintext == 0x15 block = plaintext[1..]
In terms of authentication, verifying that the first byte of the plaintext is
0x15 is not particularly useful - decrypting random ciphertext would pass that check approximately 2% of the time.
Instead, this system relies on the fact that, if the message was not encrypted using the correct private key, after decryption the message itself would be invalid.
Is there a name for this (unconventional?) use of public-key cryptography for authentication? Could it be considered a form of digital signature?
When describing this system, is it correct to refer to the use of the private exponent as "encrypting" and the public exponent as "decrypting", as above? Could the ciphertext be described as "encrypted", "signed" or neither of these?