对这门课程的安全部分进行一个小结.

往期随笔

第八周第一节

第八周第二节

第九周第一节

第九周第二节

前言:为什么互联网要提及安全

因为security牵扯到我们每一个人,有人每时每刻都想着要偷取别人的个人信息来卖钱。

我们对于这个世界 太普通了,大部分想偷取我们利益的人,基本都是想拿走我们的银行卡,然后在冻结银行卡之前,买一些东西给他们维持生计。

没有完美的安全措施。

两个术语:贯穿着整个安全的课程

Confidentially : 防止信息被第三方查看

Integrity : 防止被第三方欺骗

两个密码系统:

  • public-key cryptosystem
  • secret-key cryptosystem

两种信息:

  • 明文:Plaintext is a message that will be put into secret form.
  • 暗文:Ciphertext is a transformed version of plaintext that is unintelligible(不能理解的) to anyone without the means to decrypt(解释清楚).

第八周:private-key cryptosystem 密钥密码系统

  • Confidentially : 对称密钥
  • Integrity : 哈希函数 -> Digest

Confidentially 保证机密性 : 对称密钥

密钥,又称作 symmetric-key 对称密钥,意味着发送方和接收方都知道信息的内容。简单的来说,加密和解密使用同一把钥匙。

利用这一 相同的钥匙 保证 Confidentially。

实例:凯撒密码(The Caesar cipher) 是一种最古老的 最广泛应用的加密方式,输入一串暗文,利用凯撒密码的解密方式 得到明文。它采用的是 替换(shift)的概念。

问题:需要有一个绝对安全的交流环境。需要一个安全的方法告诉对方密钥。

Integrity 防止欺骗 : 哈希函数 -> Digest

在计算机世界里,信息的传递也需要一个这样的“防伪标签”。从“signature”,我们能够获知数据的来源,以及判断信息是否被篡改。

哈希密码函数 的实参可以是 任意的数据段,并且会返回一个 固定大小的比特字符串。对数据偶然或者有意的改变 都会造成哈希值的变化,编成电码的数据 经常被称作“信息”,哈希值也被称作 message digest 或者是 simple digest。

利用哈希值的变化,判断数据是否有被篡改,保证 Integrity。

  • 文本 ---(hash function)---> Digest.
  • A large block of data ---(hash fuction)---> fixed-size bit string

实例:一些优秀的哈希技术:SHA1,HD5···

问题:但糟糕的是,输入两串不一样的数据,有可能输出的Digest会相同。这就证明了 哈希函数产生的这一串数字可能会指明两串不同的数据。

应用:哈希密码

当你创建了一个密码的时候,数据库调用哈希函数来reset你的密码,转换成 hash value,然后存储它。然后当你想要登陆的时候,它们再次将你输入的密码转换成hash然后与数据库中的存储内容进行比对,如果是准确的,那么就允许你登陆。

将你的信息转换为hash之后,并没有办法再从hash转换成对应的信息,因为原始信息已经丢失了。

具体操作 : Simple Message Signing 简单的文件签名

首先发送数据的一端,就叫它是A端吧,那么接收端就是B端了。

A端首先和B端共享了 一个秘密解码(secret),SHA通过这个秘密解码可以计算出 数据和解码(message_1secret)的 SHA值,也就是我们所说的 数据摘要digest了。

好了,A端发送了数据 message_1 和 数据1的摘要 digest_1。也就是 message_1+digest_1。

···经过了不可靠的媒介传送到了B端···

OK,此时B端拥有的东西是 和A端相同的 秘密解码(secret)。接收的是 message_2(可能是message_1,也可能是message_1的变种) 和 digest_1。

那么此时B端需要知道的是,数据是否是A端传送过来的,或者说,传送的数据是不是发生了改变。

通过什么来验证呢:就是我们所说的数据摘要了。B端 使用 秘密解码(secret) 和 接收到的 不知道有没有发生改变的 message_2 计算出了 数据2(message_2secret)的摘要 digest_2。

那么进行比对:digest_1 和 digest_2 如果一样 ---> message_1 和 message_2 一样 ---> 数据是A端发生的,传送过程中数据很安全,没有发生改变。

唯一知道如何匹配的方法是 知道这个secret。也就是说,除了知道 secret 的 发送端 和 接收端,其他人并不知道 怎么样计算出 数据的摘要digest。

在信息末尾 添加digest(hash_value),并且通过在接收端的比对,判断信息是否有被篡改。通过 Digest 这个机制保证了 Integrity。

缺陷:(公钥系统弥补)

进行shared secret本身就是一件很困难的事情,因为中间媒介的不安全性。

第九周:public-key cryptosystem 公钥密码系统

  • Confidentially : 不对称的密码系统,public key 加密,private key 解密。
  • Integrity : CA证书 以及 带有 Digest 的 public key。

Confidentially 保证机密性 : public key + private key

public key 加密,private key 解密。

从两个非常大的素数的乘积中获取 public key 和 private key。

在媒介中传递的是 public key,会被第三方获取,但是由于得到public key的素数算法,很难从 public key 获取 private key,但不是完全不可能(利用超级计算机)。

所以 从可计算性的角度来看,破解它基本是一件基本不可能的事情。除了暴力破解它之外,没有什么好的方法来从public-key破解出private-key。

保证了 Confidentially。

应用:SSL/HTTPS/TLS

我们利用这个 secret key 和 public key 的密码机制,对HTTP进行了改进,在数据模型中增加了一个小型的Layer。

HTTP 是应用层的一个协议,在应用层(application layer)和运输层(transport layer)之间,有一个小的层次:SSL。工作就是 利用公钥密码系统,加密和解密应用层传递的信息。

应用层发送的数据,都是未加密的。在TCP/IP四层模型的其他位置,比如中间的路由器,IP层,光纤等等,它们并不能区别加密的信息和未加密的信息,它们只是做了运输的工作。

Integrity 防止欺骗 : CA证书 和 带有 CA认证(digest) 的 public key

保证Integrity有两点:

  • (1)保证我们信息发往的对象不是第三方 : CA证书
  • (2)保证传递给我们的 public key 不是来自第三方,而是来自我们想要沟通的对象 : 带有 CA认证(digest) 的 public key

(1)保证我们信息发往的对象不是第三方 : CA证书

公钥证书:电子文件 使用数字签名 将一个 认证的身份/姓名 和public key捆绑在了一起。

它可以用于核实 public key 的来源。保证我们信息发送的对象不是第三方。

我们花了很大的价钱购买了证书,但是CA同样也花了很大的精力来认证,防止错误地发送证书给第三方。

我们发送数据的对象 通过 public key 上的CA证书 证明是可靠的对象,是我们的数据想要发往的对象而不是第三方。

(2)保证传递给我们的 public key 不是来自第三方,而是来自我们想要沟通的对象 : 带有 CA认证(digest) 的 public key

具体参见:第九周第二节

(1)VeriSign 有一个public key 和 一个 private key,他们存储了private key。随后他们把 Verisign public key 交给了苹果,微软以及Linux,这些公司把 VeriSign public key 装进了你的laptop中。

(2)Amazon 此时想做一些交易,Amazon 在它的服务器中,生成了一对 Amazon public key 和 Amazon private key, Amazon private key从不离开Amazon的服务器。然后,Amazon 把它的 Amazon public key 传送给 VeriSign,第三方可能会看见,但是没有关系,它只是public key。

(3)在 VeriSign 的服务器内部,使用了它的 VeriSign private key 生成了摘要(digest),并且把证书和 在尾部添加了 digest 的 Amazon public key 发送给 Amazon。
-那么现在 Amazon 拥有的不是以前的 Amazon public key 了,它现在是 被 VeriSign 证明(通过digest) 的 Amazon public key,也就是说,之前 Amazon 把它的 public key 发送给 VeriSign, Verisign 对它进行了签名(也就是身份验证),使得第三方很难去伪造它。 (4)经过了很长的一段时间,你想在你的laptop上面登录 Amazon 购买一些鞋子。
-Amazon 把带有 CA证书 和 digest 的 Amazon public key 发送给你,那么此时你拥有的是 从你购买电脑的那一刻起,安装在你电脑里面的 VeriSign public key,通过这个 Verisign public key 和 Digest 你验证了 Amazon public key 是经过 Verisign 认证的,那么也就是说,这个 Amazon public key 确实是 Amazon 发送过来的。 (5)我们可以放心的用 发送过来的 Amazon public key 加密我们的信息(因为我们通过 Verisign 的 digest 验证了这个 public key 的安全性),然后发送给目的地 而不必担心目的地是虚假的(因为CA证书)。 (6)Amazon 收到了你用 Amazon public key 加密的 暗文,随后 Amazon 使用 从未离开的 Amazon private key 对 暗文 进行解密。得到了想要的信息。

小结:

安全部分分为两大块:(1)公钥部分 (2)密钥部分

贯穿安全部分的两个术语:(1)Confidentially (2)Integrity

密钥部分:(1)Confidentially : 对称的密码系统(比如凯撒密码) (2)Integrity : 哈希函数 生成 Digest,发送端和接收端进行对比。

公钥部分:(1)Confidentially : 不对称的密码系统 public key 加密 private key 解密 (2)Integrity : 1)利用CA证书确定发送的目的地 2)利用CA认证的 带有digest的 public key 来确认发送 public key 对象(是我们要沟通的对象而不是第三方)。

2016/8/14

【Coursera】Security Introduction -Summary的更多相关文章

  1. 【Coursera】Security Introduction -Eighth Week(1)

    Security Introduction People With Bad Intent 今天,Bob 向 Alice 发送了一条 "Hello,Allice!" 的信息,他们希望 ...

  2. 【Coursera】Security Introduction -Ninth Week(1)

    前言 Coursera 的 Internet History,Technology,and Security 进入最后一周的学习了,在这最后一周内,需要进行的内容是 public-key 公钥系统的讲 ...

  3. 【Coursera】Security Introduction -Eighth Week(2)

    Review -Terminology(术语): Confidentiallity & Integrity 泄密 & 欺骗 Confidentiallity: Prevent unau ...

  4. 【Coursera】Security Introduction -Ninth Week(2)

    对于公钥系统,我们现在已经有了保证它 Confidentially 的一种方法:SSL.SSL利用了公钥的概念. 那么 who we are talking to? Integrity Certifi ...

  5. 【Coursera】Seventh Week

    Application Layer:Use the services of the TCP layer Quick Review Link Layer(Ethernet):gets the data ...

  6. 【python】An Introduction to Interactive Programming in Python(week two)

    This is a note for https://class.coursera.org/interactivepython-005 In week two, I have learned: 1.e ...

  7. 【Coursera】History: Dawn of Electronic Computing学后小结

    今天学习了Coursera上University of Michigan开的互联网的历史.技术和安全课程的FirstWeek内容. 先是吐槽下这个Coursera,认证非常麻烦,PC端需要摄像头拍照. ...

  8. 【Coursera】支持向量机

    一.最大间隔分类器 1. 函数间隔:\(γ^{i} = y^{i}(w^{T} x + b)\), 改变w和b的量级,对分类结果不会产生任何影响,但是会改变函数间隔的大小.因此,直接对函数间隔求最大值 ...

  9. 【转】An introduction to using and visualizing channels in Go

    An introduction to using and visualizing channels in Go 原文:https://www.sohamkamani.com/blog/2017/08/ ...

随机推荐

  1. 003-Nginx 设置Header 获取真实IP

    1.X-Forwarded-For的定义: X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项.它 ...

  2. HTTP API响应数据规范整理

    概述 本文档为本人对长期开发API接口所整理的经验总结,如有不完善或不合理的地方,望各位多提意见. 文档目的为规范服务器端API接口,便于服务器端与客户端代码重用.服务器端和客户端可根据实际所定义规范 ...

  3. CentOS6.7上安装Mysql5.7

    CentOS6.7上安装Mysql5.7 2017年07月22日 18:27:05 阅读数:564 环境的配置总是令人作呕,所以这次表明版本条件: 首先,这是一台新机器 其次,CentOS版本如下: ...

  4. MySQL读写分离-简单思考

    本文图片资源均来自互联网,没有干货,只是提供一种简单的思路. 基础原理 两台MySQL机器一个主,一个从实现数据实时同步比较简单,代码层面无需任何修改,添加一台机器简单配置配置即可,但是MySQL数据 ...

  5. selenium python 启动Chrome

    启动Chrom浏览器 下载chromedriver: http://chromedriver.storage.googleapis.com/index.html 当时找chromedriver与chr ...

  6. 筛选DataTable中的数据

    DataTable dt = bll.GetTable(); //查询数据 DataTable newdt = new DataTable(); //一个新的table来保存筛选的记录 newdt = ...

  7. CSS选择器可以用数字开头吗

    最好是字母开头,后面用数字可以,直接用数字开头不符合官方规范,虽然浏览器牛逼点也能解析出来,但是最初就不要这么做,坏习惯养成很难改.而且如果团队合作,css的命名都需要有固定的格式,还要有可读性方便他 ...

  8. 圆锥体完全均衡下重力异常正演 [MATLAB]

    在完全均衡的模型下,若地表有一圆锥体(山峰等),计算跨越山顶的截面上所得到的各种重力异常. 地壳密度 $kg\cdot m^{-3}$ 上地幔密度 $g\cdot cm^{-3}$ 地表地形圆锥体半径 ...

  9. tfs项目解绑及svn上传

    1.tfs解绑 file--源代码管理——tfs解绑 2.svn将本地的文件夹上传到server 右击--import--url--新建文件夹

  10. zw版【转发·台湾nvp系列Delphi例程】HALCON TestRegionPoint1

    zw版[转发·台湾nvp系列Delphi例程]HALCON TestRegionPoint1 unit Unit1;interfaceuses Windows, Messages, SysUtils, ...