我是密码学领域的新手。 考虑下面的openssl配置参数。
$openssl_config = array(
"digest_alg" => "sha512",
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
"encrypt_key_cipher" => OPENSSL_CIPHER_AES_256_CBC
);
我只想知道使用上述配置我们可以获得的加密强度。
e.g。是256位,2048位,512位?标准是什么?
由于
答案 0 :(得分:0)
我只想知道使用上述配置我们可以获得的加密强度。
"加密强度"大致以安全级别来衡量。它允许您比较不同类型的算法。在Crypto ++ wiki上Security Level处理了它。
实际上,安全级别表示打破算法需要多少操作。这既是理论上的,也是实际的。例如,SHA-1具有80位的理论安全性。那是因为碰撞的生日攻击。然而,由于密码分析方面的进步,它接近61位,如Marc Steven从2011年开始的攻击。详见Project HashClash。
对称密钥,哈希,有限域,整数分解和椭圆曲线有等效安全级别的表。对称密钥用于块和流密码,如AES,Camellia和RC4。哈希用于散列,如惠而浦,SHA和HMAC。有限域是针对Diffie-Hellman和其他相关问题。对于RSA和其他因子分解问题的整数因子分解。椭圆曲线适用于基于EC的问题。
您可以在下面找到NIST表。其他发布标准的组织包括NESSIE,ECRYPT,ISO / IEC。
以下是您指定的算法的安全级别:
理论上,攻击者会攻击最弱的组件。所以他/她会追求RSA,因为它是最弱的加密组件。但在实践中,我并不认为这很重要。最弱的组件提供112位安全性,对大多数对手来说都是遥不可及的。
在实践中,攻击者可能会在您的网络服务器中发现一个漏洞并在其静止时获取秘密,因为加密太难了。
作为一项学术练习,并且由于您选择了AES-256,您希望以下内容在整个系统中保持256位安全性:
当RSA模数高于3072位或4096位(左右)时,通常会切换到椭圆曲线。
如果您希望保持最低112位的安全级别,那么您可以使用: