My understanding is crypto researchers tend to prefer solving a problem in software without the need for secure hardware. Why is this? What is the big problem with using secure hardware if the hardware components are cheap and can be easily made?
-
$\begingroup$ everything you can do in hardware you can emulate in software $\endgroup$– ratchet freakDec 8, 2013 at 0:37
-
$\begingroup$ What makes you think the hardware components are cheap and can be easily made? Apart from the cost that a regular hardware chip has, a production facility for crypto hardware has to be extensively screened and guarded permanently as long as production goes on, if you want any notion of security. $\endgroup$– orlpDec 11, 2013 at 15:07
2 Answers
I'm not a researcher in the field of cryptography. With that out of the way, the most obvious reasons I can think of are:
- Software is more universally deployable, increasing the target audience of some solution.
- With a hardware solution, potential customers may be forced to invest a huge amount of money to deploy it. A software solution is probably cheaper to deploy and may even be deployed on an infrastructure that is already present.
- Software is easier and arguably cheaper to upgrade if necessary, thus it's more practical. Consider replacing thousands of hardware components (possibly even after recalling them from customers) versus releasing a software update.
- It's easier to experiment with software. Furthermore, a hardware solution will have been implemented in software before physical production of a hardware component will start anyway.
- If you can do it with software, you can do it with hardware. So focusing on a solution based on the former does not invalidate the same solution with regard to the latter.
My opinion is that it's mostly due to cost and practicality.
As a final note: a solution to a problem is an abstract notion. Your question is related to a particular implementation of a solution, which is basically irrelevant. For a solution to be solid and valid, it'll have to be universally correct. Implementation is a 'detail'.
I think this question is setting up a false dichotomy.
It's not that a researcher has an opinion as to whether they prefer software or hardware implementations. The choice of implementation depends on the requirements of the specific cryptosystem you're building.
For example, if you're designing a system to encrypt voice traffic on a mobile phone network, then clearly that's going to favour hardware based solutions.
Alternatively, if you're building an open-source program that handles file-encryption, this is going to strongly favour a software based solution.
Some requirements drive hybrid solutions. Two factor authentication systems such as Yubikey or RSA's Securid use a blend of hardware and software.
It's worth pointing out that all software requires hardware at some level. At what point does the software solution become a hybrid solution?
These days, the lines are becoming more blurred. Modern processors now contain hardware RNGs and instructions that implement the core operations in AES.
So even applications that appear on the surface to be composed entirely of software could utilise these instructions if they were available.
To summarise, I think the distinction between drawn in the question is false and that all cryptography uses a blend of hardware and software. The precise blend is controlled by the requirements of the system. Over time, more of the crypto is finding its way in to hardware due to better standardisation.