A hyperproperty relates executions of a program and is used to formalize security objectives such as confidentiality, non-interference, privacy, and anonymity. Formally, a hyperproperty is a collection of allowable sets of executions. A program violates a hyperproperty if the set of its executions is not in the collection specified by the hyperproperty. The logic HyperCTL^* has been proposed in the literature to formally specify and verify hyperproperties. The problem of checking whether a finite-state program satisfies a HyperCTL^* formula is known to be decidable. However, the problem turns out to be undecidable for procedural (recursive) programs. Surprisingly, we show that decidability can be restored if we consider restricted classes of hyperproperties, namely those that relate only those executions of a program which have the same call-stack access pattern. We call such hyperproperties, \emph{stack-aware hyperproperties.} Our decision procedure can be used as a proof method for establishing security objectives such as noninference for recursive programs, and also for refuting security objectives such as observational determinism. Further, if the call stack size is observable to the attacker, the decision procedure provides exact verification.
翻译:超性财产与执行程序有关, 并被用于正式确定保密、 不干涉、 隐私和匿名等安全目标。 形式上, 超性财产是可允许的处决组集合。 一个程序违反超性财产, 如果这组处决不是超性财产组指定的收藏。 文献中提出了超CTL 逻辑, 以正式指定和核实超性财产。 检查一个有限国家程序是否满足超CTL 公式的问题已知是可变的。 但是, 这个问题对于程序( 递解) 程序来说是无法确知的。 令人惊讶的是, 我们显示, 如果我们考虑有限的超性财产组处决, 也就是那些只与具有同样调用访问模式的程序的处决有关, 就会恢复无损性。 我们称之为超性财产, \ emph{ stack-aware 超性财产组模式。} 我们的决定程序可以用作确定安全目标的证明方法, 例如不推导循环程序( 递解) 。 令人惊讶的是, 我们显示, 是否可恢复 安全级 目标, 如 进一步 要求 安全 安全 等 安全 。