Cryptography 加密低方差值是否有风险?

Cryptography 加密低方差值是否有风险?,cryptography,encryption-symmetric,Cryptography,Encryption Symmetric,例如,信用卡到期月份只能有12个值。因此,黑客有十二分之一的机会猜测一个月的正确加密值。如果他们知道这一点,他们能更快地破解加密吗 如果是这种情况,需要多少值的变化来避免这种情况?银行卡号安全码通常只有三位数,如何?如果您以适当的方式使用AES等适当的密码,那么加密这些值是完全安全的 这是因为被认为是安全的操作模式(如CBC和CTR)采用了一个称为初始化向量的附加参数,该参数有效地使密文随机化,即使相同的纯文本被多次加密 请注意,正确使用IV非常重要。加密函数的每次调用都必须使用不同的IV。对于

例如,信用卡到期月份只能有12个值。因此,黑客有十二分之一的机会猜测一个月的正确加密值。如果他们知道这一点,他们能更快地破解加密吗


如果是这种情况,需要多少值的变化来避免这种情况?银行卡号安全码通常只有三位数,如何?

如果您以适当的方式使用AES等适当的密码,那么加密这些值是完全安全的

这是因为被认为是安全的操作模式(如CBC和CTR)采用了一个称为初始化向量的附加参数,该参数有效地使密文随机化,即使相同的纯文本被多次加密


请注意,正确使用IV非常重要。加密函数的每次调用都必须使用不同的IV。对于CBC模式,IV必须是不可预测的,最好是随机的,而CTR需要唯一的IV(对于CTR来说,随机IV通常也是不错的选择).

良好的加密意味着,如果用户知道,例如,如您所述,信用卡的到期月份是12个值中的一个,那么它将仅限制选项的数量,而不是更多

i、 e

如果黑客需要猜测三个数字,a、b、c,每个数字都可以有1到3的值。 选项数量为3*3*3=27。 现在黑客发现第一个数字a总是固定值2。 所以选项的数量是1*3*3=9。 如果披露数字a的值将导致将期权数量限制在比您已破解的值少9的范围内,但在强模型中,如果其中一个数字将被披露,则将被限制的期权数量将精确到9

我想,现在你显然不是只使用exp.date进行加密


我希望我说得够清楚了

他们如何验证他们的猜测是否正确,以及加密方法是什么?我不确定。但是他们有十二分之一的机会,所以他们可以根据十二种不同的假设进行工作——如果这有意义的话。加密方法不需要是秘密的;所以,在这种情况下,规定他们实际拥有卡号。但不是到期日。为$1执行测试事务就足以验证哈希/加密到期是否正确。而这种对散列算法正确性的简单验证可能会威胁算法本身的安全性?对称加密方法种类繁多,我无法从你的问题中判断你的专业水平(以及你是否在使用,例如,国产凯撒密码,或其他什么)。与战时加密相比。你永远不可能知道你是否得到了正确的信息,直到部队开始按照你想象的那样移动,根据你解密的一条未加密但混乱且可能是垃圾的信息。如果每次加密我都使用不同的随机IV,那么我如何知道使用哪个IV来解密?@IanWarburton有些系统只是将IV连接到密文的开头,这是一种有效的方法。您还可以将其存储在数据库的另一个字段中。静脉注射一点也不需要保密,这很吸引人。因此,我将把它前置到存储在数据库中的密文中。你认为将新Guid的前16个字符作为子字符串是一个很好的随机IV吗?@IanWarburton No;这将只使用一个字节256个可能值中的16个不同ASCII字符。你应该使用加密安全的随机数生成器。是的,我自己加密exp.date并将结果放入数据库列中,用于存储该值。对不起,我以为exp.date是你的密钥。由于存在许多重复日期的可能性,输出的解决方案可能会更少,除非您为每个用户使用不同的IV。为什么你需要加密它呢?这是一个秘密吗?@TomF注意,你应该在每次加密操作中使用不同的IV。你不必这样做。例如,如果您的数据块中有要加密的序列ID,则可以使用相同的IV,因为输入无论如何都不会重复。虽然不推荐使用这种方式,因为这种方式会否定IV的用途,但如果它可以节省带宽,那么可以使用固定的IV(例如使用时间,比方说分辨率为3分钟),将导致该时间窗口内的重复输入输出相同。