1 羊妈妈的认证

大灰狼把黑色的爪子伸进门缝,说道:
“我是你们的妈妈,快快开门吧!”
七只小羊回答道:
“不是不是,妈妈的手是白色的,你的手的黑色的,你不是我们的妈妈!”
听了小羊的话,大灰狼把它的爪子染成了白色,于是小羊们就被大灰狼的白爪子给骗了,便打开了门。
这是因为小羊们用来认证的“白色的手”是大灰狼也能够模仿出来的。
如果有一种“只有羊妈妈才能生成的信息”,那就可以实现更可靠的认证了吧。

阅读全文 »

1 本章概要

使用消息认证码可以确认自己受到的消息是否就是发送者的本意,也就是说,使用消息认证码可以判断消息是否被篡改,以及是否有人伪装成发送者发送了该消息。
消息认证码是密码学家工具箱中 6 个重要的工具之一。这 6 个重要工具分别是:对称密码、公钥密码、单向散列函数、消息认证码、数字签名和伪随机数生成器。

阅读全文 »

1 本章概要

针对计算机所处理的消息,有时候我们也需要用到“指纹”。当需要比较两条消息是否一致时,我们不必直接对比消息本身的内容,只要对比它们的“指纹”即可。
本章中,使用单向散列函数就可以获取消息的“指纹”,通过对比“指纹”,就能够知道两条消息是否一致。
我们将详细介绍现在使用非常广泛的 SHA-1 单向散列函数,并思考对单向散列函数的攻击方法。

阅读全文 »

1 混合动力汽车

在介绍混合密码系统之前,我们先来说说混合动力汽车。混合动力汽车同时装备了电动机和发动机两种动力系统。
电动机由电池驱动,发动机由汽油驱动。当速度较慢时,汽车由电动机驱动,能够安静地行驶。当速度加快时,动力切换到发动机,以便输出更强的动力。
当踩下刹车时,损失的能量中的一部分能够被回收并用来对电池进行充电。

阅读全文 »

1 投币寄物柜的使用方法

介绍公钥密码之前,先说说投币寄物柜:将物品放入寄物柜中,然后投入硬币并拔出钥匙,就可以将寄物柜关闭了。关闭后的寄物柜,没有钥匙是无法打开的。
只要有硬币,任何人都可以关闭寄物柜,但寄物柜一旦被关闭,只有使用钥匙才能打开,而不是硬币。

因此我们可以说,硬币是关闭寄物柜的密钥,而钥匙则是打开寄物柜的密钥。

阅读全文 »

看完这部电影,不得不说,最后被男主拿出的戒指感动到了~戒指没有不见,它一直在那里。
回想女主第一次拒绝结婚的理由让人熟悉而又无奈,这不是我们每个男生都害怕听到的理由吗?

我还没有准备好

幸好,最后结局有情人终成眷属了。回想起剧情,就像溪水,可能会流的慢,但是总会流到那里。

最后女主结婚的理由才像她自己:

阅读全文 »

1 炒鸡蛋与对称密码

鸡蛋炒好之后就完全分不清原来的蛋黄和蛋白了,使用对称密码进行加密,和炒鸡蛋有着异曲同工之妙。炒鸡蛋搅拌的是鸡蛋,而密文打乱的则是比特序列。
然后,它们最大的不同是,炒鸡蛋无法还原成原来的鸡蛋,但密文却必须能够让接收者正确解密才行。
因此,如果只是随意地搅拌和混合,则不能称之为加密,而必须仔细设计出一种能够还原的混合方式。

阅读全文 »

1 本章概要

本章将介绍历史上几种著名的密码:

  1. 凯撒密码
  2. 简单替换密码
  3. Enigma

此外,还介绍两种破译密码的方法:

  1. 暴力攻击
  2. 频率分析

最后,我们还将思考密码算法与密钥之间的关系。
本章所介绍的密码在现在都已经不再适用了,但在寻找密码弱点的方法、破译密码的思路以及密码算法与密钥的关系等方面,这些密码与现在密码技术依然是相通的。

阅读全文 »

1 本章概要

从整体上了解密码世界的模样。

2 密码

2.1 Alice 与 Bob

要讲解密码,需要给参与信息交互的人和计算机起几个名字,如下表:

名称 说明
Alice 一般角色
Bob 一般角色
Eve 窃听者,可窃听通信内容
Mallory 主动攻击者,可妨碍正常通信、伪造消息等
Trent 可信的第三方
Victor 验证者
阅读全文 »

1 Lock 接口

2. 队列同步器

队列同步器 AbstractQueueSynchronizer (简称同步器),是用来构建锁或者其它同步组件的基础框架,它使用了一个 int 成员变量表示同步状态,
通过内置的 FIFO 队列完成资源获取线程的排队工作。

2.1 队列同步器的接口与示例

同步器是实现锁(也可以是任意同步组件)的关键,在锁的实现中聚合同步器,利用同步器实现锁的语义。可以这样理解二者的关系:锁是面向使用者,
它定义了使用者与锁交互的接口,隐藏了实现细节;同步器面向的是锁的实现者,它简化了锁的实现方式,屏蔽了同步状态管理、线程的排队、等待与唤醒等底层操作。
锁和同步器很好地隔离了使用者和实现者所需关注的领域。

阅读全文 »