暗号プリミティブの必要性を満たすために、製品は非標準、証明されていない、または許可されていない/非準の暗号実装を使用して暗号アルゴリズムを実装する。
暗号プロトコルや暗号システムは、基本的な構成要素として暗号プリミティブ (および関連アルゴリズム)に依存している。プリミティブの一般的な例としては、デジタル署名、一方向ハッシュ関数、 暗号、公開鍵暗号などがある。しかし、「プリミティブ」という概念は、見方によって異なることがある。いくつかの概念の詳細については、「用語解説」を参照のこと。
暗号プリミティブは、ある特定のタスクを、正確に定義され、数学的に信頼できる 方法で達成するために定義される。例えば、ある特定の暗号プリミティブ(暗号化ルーチンなど)において、N個の異なる入力を試した後にのみ、そのプリミティブを破ることができるというコンセンサスがあるとする(ここで、Nの値が大きいほど暗号は強力である)。AES-256のような暗号化方式では、Nは合理的な時間で実行できないほど大きくなると予想される。
ある暗号プリミティブを、予想される試行回数よりも大幅に少ない回数で破ることができることを示す脆弱性が発見された場合、そのプリミティブは弱体化したとみなされる(極端な場合、口語的に「破られた」とみなされることもある)。その結果、この暗号プリミティブを使用するものは、安全でない、あるいはリスクが高いとみなされることになる。このように、一見小さな暗号プリミティブが破られたり弱められたりするだけでも、そのプリミティブに依存しているためにシステム全体が脆弱になる可能性がある。歴史的な例は、DESを使用するTLSに見られる。このバージョンのTLSでは、DESをトランスポート暗号化用の暗号プリミティブと呼ぶのが一般的だろう。重要なのは、DESの鍵長が56ビットであることだ。N=2^56の鍵を試すことは、ほとんどの行為者にとって非現実的であると考えられていた。残念なことに、現在では56ビットの鍵でシステムを攻撃することはブルートフォース(総当り)で可能であり、DESの暗号化を破ることは現実的である。敵対者がこのバージョンのTLSで送信された情報を読み、その情報を使ってシステムを攻撃することは現実的になった。その結果、このTLSの使い方は弱く、DESを使ったTLSに依存しているシステムは、潜在的にシステム全体が攻撃に対して脆弱になる可能性があると主張できる。
暗号プリミティブとそれに関連するアルゴリズムは、学術界、産業界、政府機関の経験豊富な暗号技術者が、可能性のある欠陥を探し、広範な研究とレビューを行った後に初めて安全とみなされる。さらに、暗号プリミティブと関連アルゴリズムは、新しい数学的手法や攻撃手法が発見されると、頻繁に安全性が再評価される。 その結果、時間の経過とともに、よく知られた暗号プリミティブであっても、アルゴリズムを打ち負かしたり、その堅牢性を著しく低下させたりする可能性のある新しい攻撃が発見されると、準拠ステータスを失うことがある。
アドホックな暗号プリミティブが実装された場合、その実装が暗号技術者によく理解されている攻撃に対して脆弱であることはほぼ確実であり、その結果、機密情報の漏洩やその他の結果につながる。
この弱点は、暗号アルゴリズムをハードウェアで実装する場合、さらに管理が難しくなる。第一に、ハードウェアはソフトウェアのように簡単にパッチを当てることができないため、リリース後、生産後に発見された欠陥は、通常、製品のリコールなしには修正できない。第二に、ハードウェア製品は何年も使用されることが多く、その間に攻撃者が利用できる計算能力は増大する一方である。したがって、暗号プリミティブのハードウェア実装には、強力で実績のある暗号プリミティブのみを使用することが絶対不可欠です。
To fulfill the need for a cryptographic primitive, the product implements a cryptographic algorithm using a non-standard, unproven, or disallowed/non-compliant cryptographic implementation.
Cryptographic protocols and systems depend on cryptographic primitives (and associated algorithms) as their basic building blocks. Some common examples of primitives are digital signatures, one-way hash functions, ciphers, and public key cryptography; however, the notion of "primitive" can vary depending on point of view. See "Terminology Notes" for further explanation of some concepts.
Cryptographic primitives are defined to accomplish one very specific task in a precisely defined and mathematically reliable fashion. For example, suppose that for a specific cryptographic primitive (such as an encryption routine), the consensus is that the primitive can only be broken after trying out N different inputs (where the larger the value of N, the stronger the cryptography). For an encryption scheme like AES-256, one would expect N to be so large as to be infeasible to execute in a reasonable amount of time.
If a vulnerability is ever found that shows that one can break a cryptographic primitive in significantly less than the expected number of attempts, then that primitive is considered weakened (or sometimes in extreme cases, colloquially it is "broken"). As a result, anything using this cryptographic primitive would now be considered insecure or risky. Thus, even breaking or weakening a seemingly small cryptographic primitive has the potential to render the whole system vulnerable, due to its reliance on the primitive. A historical example can be found in TLS when using DES. One would colloquially call DES the cryptographic primitive for transport encryption in this version of TLS. In the past, DES was considered strong, because no weaknesses were found in it; importantly, DES has a key length of 56 bits. Trying N=2^56 keys was considered impractical for most actors. Unfortunately, attacking a system with 56-bit keys is now practical via brute force, which makes defeating DES encryption practical. It is now practical for an adversary to read any information sent under this version of TLS and use this information to attack the system. As a result, it can be claimed that this use of TLS is weak, and that any system depending on TLS with DES could potentially render the entire system vulnerable to attack.
Cryptographic primitives and associated algorithms are only considered safe after extensive research and review from experienced cryptographers from academia, industry, and government entities looking for any possible flaws. Furthermore, cryptographic primitives and associated algorithms are frequently reevaluated for safety when new mathematical and attack techniques are discovered. As a result and over time, even well-known cryptographic primitives can lose their compliance status with the discovery of novel attacks that might either defeat the algorithm or reduce its robustness significantly.
If ad-hoc cryptographic primitives are implemented, it is almost certain that the implementation will be vulnerable to attacks that are well understood by cryptographers, resulting in the exposure of sensitive information and other consequences.
This weakness is even more difficult to manage for hardware-implemented deployment of cryptographic algorithms. First, because hardware is not patchable as easily as software, any flaw discovered after release and production typically cannot be fixed without a recall of the product. Secondly, the hardware product is often expected to work for years, during which time computation power available to the attacker only increases. Therefore, for hardware implementations of cryptographic primitives, it is absolutely essential that only strong, proven cryptographic primitives are used.