初始矢量

在密码学的领域里,初始矢量(英语:initialization vector,缩写为IV),或译初矢量,又称初始变量(starting variable,缩写为SV),是一个固定长度的输入值。一般的使用上会要求它是乱数或拟乱数(pseudorandom)。使用乱数产生的初始矢量才能达到语义安全(哈希函数与消息验证码也有相同要求),并让攻击者难以对同一把密钥的密文进行破解。在区块加密中,使用了初始矢量的加密模式被称为区块加密模式。
有些密码运算只要求初始矢量不要重复,并只要求它用是内部求出的乱数值(这类乱数实际上不够乱)。在这类应用下,初始矢量通常被称为nonce(临时使用的数值),是可控制的(stateful)而不是乱数。这种作法是因为初始矢量不会被寄送到密文的接收方,而是收发两方透过事前约定的机制自行计算出对应的初始矢量(不过,实作上还是经常会把nonce送过去以便检查消息的遗漏)。计数器模式中使用串行的方式来作为初始矢量,它就是一种可控制之初始矢量的加密模式。