Does stream and block ciphers only apply to symmetric key algorithms or does it apply to both symmetric and asymmetric?
2 Answers
Stream and block ciphers are usually used with symmetric keys. This is for performance reasons as public-key cryptography is much more expensive.
That said, public key encryption also encrypts blocks of data (block sizes in RSA are based on the key size), so it technically uses block ciphers, we just don't usually focus on that.
In short, it's more about the cost of encryption/decryption than anything else. It would be prohibitively expensive to do public-key encryption for large amounts of data.
Symmetric keys give you cheap computation but the problem of a shared secret. Public keys give you expensive computation but easily shared information needed to communicate securely.
This is why the common approach is a hybrid one:
- Key encryption key: use public key cryptography to encrypt a symmetric key generated on the fly
- Data encryption key: use the symmetric key to encrypt/decrypt the actual data
-
So for asymmetric key algorithms we don't divide them to block or stream ciphers? Commented Dec 14, 2017 at 19:42
-
@YousifShibeika No, we don't categorise asymmetric ciphers as block or stream; that would make no sense. Commented Dec 14, 2017 at 20:09
-
There's still a concept of blocks in the sense that there's a maximum size for a unit of encryption. eg: one encryption operation in RSA is a little under the key size, so if you want to encrypt more than that you need to split your data into "blocks". But you'll rarely see blocks and stream ciphers being brought up in the context of public key crypto.– MarcCommented Dec 14, 2017 at 20:11
-
Usually? Are there any cases where an asymmetric cipher is categorized that way?– forestCommented Dec 15, 2017 at 0:58
-
Nothing stops you from using RSA as a block cipher. It just isn't called that way because block ciphers usually mean that we're processing so much data as to make public-key crypto too expensive.– MarcCommented Dec 15, 2017 at 1:20
Public key encryption is not a block cipher in the standard definition of the term (a pseudorandom permutation family), nor under that of a stream cipher (an encryption scheme that XORs the messages with the output of a pseudorandom generator seeded with a random, shared secret key).
I think you're asking this out of some form of the common preconception that the concepts "block cipher" and "stream cipher" are general taxonomy of ciphers, two buckets into which we generally sort all objects that are suitable for use as ciphers. But they're not so; "block cipher" and "stream cipher" are two fairly narrow types of object that have simply been of great interest to modern cryptographers. There are designs that are based on different, less well-known concepts, e.g. the concept of an enciphering schemes that serves as the foundation for AEZ, one of the current candidates in the CAESAR competition.