密码学非专业笔记

Snowdon 那事之后看了些关于密码学的博客和文献。于是非专业的笔记一下。

在公共信道上的加密通信,基本中的基本是身份验证。而加密的第一步是双方协商达成共享密钥,当然同时任何第三方都不能获得该密钥,这是密钥交换身份验证和密钥交换是不可分割的

签名算法一般是 RSA(RSASSA-PSS)和 DSA。哈希函数一般是 SHA-2 系列(SHA-3 规范还没完成)。
密钥交换算法一般是 RSA(RSAES-OAEP)和 Diffie-Hellman。

上面两者都属于公开密钥加密。其基本概念是利用单向的 trapdoor function,这样的函数易于单向计算,而反向计算极其复杂。RSA 利用的是整数分解问题,将两个大质数相乘很简单,但将结果分解为质数的乘积被认为非常困难。DSADH 利用的是离散对数问题,在某一群(Zp,或者椭圆曲线的群)上,计算一个数的指数很容易,但计算对数则被认为非常难(如果用的是椭圆曲线的群的话就是 ECDH 和 ECDSA 了)。

RSA 下,身份验证和密钥交换是结合在一起的。B 的公钥在 B 的证书中,A 用 B 的公钥加密一串随机数然后发送给 B,这只有用 B 的私钥才能解密,这串随机数就是共享密钥了。
DH 下,可以不使用证书(但签名仍是绝对必要的),这样 A 和 B 都保持匿名。A 和 B 互相向对方发送一个 DH 参数,只有这两方才能利用对方的参数计算出共享密钥(简单来说,A 发送 ga,B 发送 gb,只有知道 ab 的一方才能计算出 gab)。

完成密钥交换后,数据传输就可以采用比较简单的对等加密算法了。双方使用该共享密钥用对等加密算法加密需要传输的数据,算法选择比较容易,一般是 AES 256 + CBC 或 CRT。
不过 Google 和 Facebook 等大网络公司使用的却是一般认为有缺陷的 RC4,据说这是因为 TLS 1.0 的 AES + CBC 的配置缺陷(IV 不是随机生成的)导致 TLS 1.0 上只有 RC4 能免疫 BEAST 攻击

最后看几个现实的网站。Chrome 的话可以在网址的左边看到连接信息。

Outlook
TLS 1.1: RSA, AES_256_CBC

Gmail
TLS 1.1: ECDHE_ECDSA, RC4_128
这货好像又因为隐私问题刚被挖坟。

Lavabit
TLS 1.0: DHE_RSA, AES_256_CBC
前两天刚被 NSA 干掉了。

Hushmail
TLS 1.0: RSA, RC4_128
几年前就被加拿大政府招安了,鉴于加拿大和美国的亲密关系…

上面两个加密邮箱的问题是:虽然服务器上用户的邮件是用公开密钥加密后存放的,即使是服务器的所有者一般也无法看到内容。但是用户的私钥也是存放在服务器,通过网络访问的用户需要将 passphrase 传送到服务器将其私钥解密后再解密邮件。这样至少在这个时间点服务器可以使用用户的 passphrase 解密该用户的所有邮件。如果 NSA 要求服务器截留用户的 passphrase 的话就没有任何隐私可言了。
话说 Colin 的 Tarsnap 目前还活得的挺好。这是一个加密的备份服务,而私钥和加密都在用户端完成,服务器端没有任何解密的可能(除了前段时间的一个严重 bug)。

另,还有传闻说 NSA 开始对标准/规范文件和 Intel 的硬件随机数生成器动手了…

下面几个链接有不错的信息:
Cryptographic Right Answers,简洁有效。
Applied Cryptography Engineering,对经典教材 Cryptography Engineering 的建议扩充。
An Introduction to the Theory of Elliptic Curves,专门的椭圆曲线理论的导论,我只能大致看懂前半。顺便,这东西和高中的椭圆抛物线双曲线没啥关系。

Advertisements
This entry was posted in Computer and Internet, Science and tagged . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s