基于类型的PIN处理API分析
1. PIN处理API的安全问题
在PIN验证过程中,攻击者可以通过嗅探到达验证设施的所有加密信息来构建特定的内存。例如,在某些内存情况(如M1和M2)下执行PIN验证(PIN V),会因为加密PIN错误或解密表(dectab)改变派生PIN的值而得到“PIN wrong”的结果。而在M′1和M′2中,由于解密表正确,执行PIN V会分别得到“PIN correct”和“PIN wrong”的结果,这就破坏了系统的鲁棒性。因此,为了克服这个问题,必须建立输入的完整性。
2. 类型系统
为了静态检查带有密码原语的程序是否满足鲁棒性和非干扰性(在不进行信息解密的情况下),引入了一种新的类型系统。
- 依赖域 :通过引入依赖域的概念来细化完整性级别,用于跟踪变量之间的完整性依赖关系。依赖域表示为D : ˜D,其中D是域名。例如,PIN : PAN表示“相对于账户号码PAN的PIN值”,当PAN固定时,PIN的值也固定。域D : ∅(也写作D)称为完整性代表,可用于检查其他域的完整性,且其值在运行时保持不变。
- 完整性级别 :与依赖域D : ˜D相关联的完整性级别[D : ˜D]高于H,即[D : ˜D] ⊑I H。在某些情况下,会丢失关于精确结果域的信息,只记录值由域˜D确定,写作 • : ˜D。得到的完整性预序为[D : ˜D1] ⊑[• : ˜D1] ⊑I [• : ˜D2] ⊑I H ⊑I L,其中˜D1 ⊆˜D2。新的完整性级别用δI表示,常用的机密性级别用δC表示,还使用C表示无特定域的常数值。
- 类型语法