2. 基于模拟的安全模型
假设存在两个世界,一个理想世界,一个现实世界。现实世界中,协议参与各方交互式地运行协议。在理想世界中,存在一个可信第三方,各个参与方只需把自己的输入交给可信第三方,由可信第三方完成计算,并将结果返回给各参与方。
我们说一个协议是安全的,如果任何现实世界中的攻击都可以在理想世界中被模拟,如果存在攻击在现实世界中成功,那么在理想世界中也存在模拟的攻击可以成功,但是消息通过安全信道发送,计算由可信方执行,因此在理想世界中不能实施成功的攻击,从而在现实世界中攻击也不能成功。所以,现实世界中的攻击手段少于等于理想世界。也就是说,现实世界至少和理想世界一样安全。而理想世界的安全性显而易见,因为这是由可信第三方保证的,所以我们通过这种方式刻画协议的安全性。
3. 独立运行安全的不足
如果协议是独立运行的,即环境中只有该协议在执行,那么我们称其为 stand-alone。如果一个协议在独立运行的情况下是安全的,并不能说明在组合执行的情况下,其也是安全的。甚至可以构造一些流氓协议,破坏原始协议的安全性。此外,即使同一个协议的多个实例并行运行,也不一定能够保证安全性。
其中,协议π是一个输入为n比特的密钥的安全协议,用户们共享2n比特的密钥k=k1k2
协议π1:用户公开k1,使用k2作为密钥执行协议π
协议π2:用户公开k2,使用k1作为密钥执行协议π
协议π1和π2同时执行后,就不再安全。
4. UC安全
2001年,Canetti提出了通用可组合安全(Universally Composable Security,以下简称为UC安全)的概念。它的最优秀的性质就是一种模块化设计思想:可以单独设计协议,只要协议满足UC安全,那么就可以保证它和其它协议并行运行的安全。UC安全模型使得对任意密码协议有统一和系统的描述,使得复杂协议分析变得简单。
·UC框架定义了 现实环境 (real world),现实环境描述协议的真实运行情况,其中所有参与者在真实敌手A存在的环境下运行真实协议。
·UC框架定义了 理想环境 (ideal world),用来描述密码协议的理想运行情况。在理想环境下,存在虚拟参与者、理想敌手S和理想函数F。参与者间以及敌手S与参与者不直接通信,所有参与者和敌手S均与理想函数交互。理想函数本质上是一个不可攻陷的可信角色,用来完成密码协议所需的理想运行环境下满足安全需求的理想功能。
在UC框架中,环境Z用来模拟协议运行的整个外部环境(包括其它并行的协议、攻击者等)。Z可以与所有的参与者以及攻击者A和S直接通信,不允许直接访问理想函数F。
协议设计者按照如下步骤来构造更为复杂的协议。
1.设计一个“高层的”协议来安全地解决复杂任务,并假设其中用到的子任务可以安全地执行;
2.设计UC安全的协议来完成子任务;
3.通过将通UC安全的子任务插入到“高层”协议中来获得一个完整的协议。
设计一个比较复杂的协议的时候,我们就有了一个强力的工具帮助实现模块化的设计,首先从底层开始设计一个个UC安全的子协议,然后一层层地都用UC安全定理进行组合,那么就可以保证整个系统的安全性,而且如果系统的协议最项层依然保证UC安全的话(也就是说,它也能安全实现某个理想功能),整个系统就都是一个安全的模块,可以供更复杂的系统直接调用。
已有的一些理想函数:安全通信,公钥加密,两方计算和多方计算等。