从本文开始,我们将开启密码学的历程。

一个简单的通信游戏

第一个应用实例

我们给出密码学的第一个应用实例

这是个简单的问题,两个朋友Alice和Bob,他们在玩一个叫做抛硬币的游戏。

如果Alice对Bob说,“你选一面,我抛硬币并告诉你结果”,显然Bob不能同意,因为他不能验证抛硬币的结果。

为了解决这个问题,便有了这样的想法:

为此我们先了解一个奇妙函数f(x)f(x)

1
2
3
奇妙函数f
1) 对任意整数x计算f(x)是容易的,给出f(x)计算x是不可能的
2) 不可能找到一对整数(x,y),满足x!=y且f(x)=f(y)

在这个基础上,我们可以得到第一个密码协议:

game

安全性分析

首先,由于性质2)Alice无法找到两个数x和y,其中一个是奇数另一个是偶数,满足f(x)=f(y)f(x)=f(y),因此,一旦Alice告诉Bobf(x)f(x)的值,她就完成了抛硬币的过程。

其次,由于ff具有性质1),Bob不能判断Alice使用的x是奇数还是偶数,因此他不得不把其猜测真是地给出。

虽然这个协议听上去十分简单,但它的确是一个合格的密码协议,因为协议中使用了现代密码学的一个基本要素——单向函数

密码学的新作用——保证游戏的公平性

密码学一度曾为政府所独占,军事和外交部门使用它来保密消息。

img

图一:《模仿游戏》(The Imitation Game)是一部2014年英美合拍的历史剧情片。讲述英国数学家、逻辑学家、密码分析学家和计算机科学家艾伦·图灵在二战中帮助盟军破译纳粹德国的军事密码的真实故事。

可是今天,密码学除了用于对信息进行保密外,还有一个新的用途:在有大量“玩家”的“游戏”中保证公平性,正如我们刚才讨论过的通信游戏。

在一个娱乐场所进行判决可能不是一件大不了的事情,因而通过电话掷硬币来做决定只可能被看成是一种取乐的通信游戏。可是,有很多通信“游戏"必须更加认真地对待。随着越来越多的事务处理和电子商务活动在开放的网络中以电子方式开展,我们通信中的许多实例将会涉及各种各样的“游戏"。

一般来说,这种“游戏”的“玩家"往往彼此物理上相距很远,要依靠不安全的开放网络进行通信。物理距离和缺少安全性组合到一块儿,有助于和/或激励一些“玩家”(甚至一些未受邀请的玩家)以某种聪明的方式挫败游戏规则。违背规则的企图是为了获得某种未授权的优势,例如造成秘密信息的泄露、改变数据而不被发现、伪造证据、责任否认、破坏审计和信任、降低可用性或完全不提供服务等。现代通信在事务处理、商业运作、提供服务(以及很多其他方面,如公司业务、个人信息、军事活动和国家事务的保密)方面的重要性意味着要求不遵守游戏规则的玩家不应该获得任何未授权的优势。

密码系统和协议的准则

我们应当从一个基本的问题开始:什么是好的密码系统和协议?

显然,这个问题不好答,各有各的说法,每个人对于好的定义是不一样的。有说难以计算的,有说不易察觉的。本博客的主要任务就是对这个基本问题给出更深入的答案。

简单来说它应该有以下特点:

  • 保护的程度与应用需求相符合:不应该去设计过于复杂的密码系统来保护价值不匹配的信息,好的密码系统复杂程度应该刚刚好。
  • 对安全性的信心要依据所建立的“种系”:对于一个密码协议或系统,攻破它的困难性应该归结于某个困难的数学问题
  • 实际效率:我们所说的数学问题应该是高效可解的,该问题能在问题规模的多项式时间内可解。
  • 采用实际的和可用的原型和服务:
  • 明确性:要明确所需要的所有假定,要明确所提供的确切的安全服务,要明确数学方面的一些特殊情况