公钥密钥理解,signed cookie

一、公钥密钥理解

公开密钥加密(英语:Public-key cryptography),也称为非对称加密(英语:asymmetric cryptography),是密码学的一种算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥;一个用作加密的时候,另一个则用作解密。使用其中一个密钥把明文加密后所得的密文,只能用相对应的另一个密钥才能解密得到原本的明文;甚至连最初用来加密的密钥也不能用作解密。由于加密和解密需要两个不同的密钥,故被称为非对称加密;不同于加密和解密都使用同一个密钥的对称加密。虽然两个密钥在数学上相关,但如果知道了其中一个,并不能凭此计算出另外一个;因此其中一个可以公开,称为公钥,任意向外发布;不公开的密钥为私钥,必须由用户自行严格秘密保管,绝不通过任何途径向任何人提供,也不会透露给要通信的另一方,即使他被信任。

基于公开密钥加密的特性,它还提供数字签名的功能,使电子文件可以得到如同在纸本文件上亲笔签署的效果。

加密

如果任何人使用公钥加密明文,得到的密文可以通过不安全的途径(如网络)发送,只有对应的私钥持有者才可以解密得到明文;其他人即使从网络上窃取到密文及加密公钥,也无法(在数以年计的合理时间内)解密得出明文。典型例子是在网络银行或购物网站上,因为客户需要输入敏感消息,浏览器连接时使用网站服务器提供的公钥加密并上传数据,可保证只有信任的网站服务器才能解密得知消息,不必担心敏感个资因为在网络上传送而被窃取。

在现实世界上可作比拟的例子是,一个传统保管箱,开门和关门都是使用同一条钥匙,这是对称加密;而一个公开的邮箱,投递口是任何人都可以寄信进去的,这可视为公钥;而只有邮箱主人拥有钥匙可以打开邮箱,这就视为私钥。

非对称加密往往需要密码学安全伪随机数生成器的协助来产生一对密钥

其中一个可以随便公开,称为公钥;另一个不公开,称为私钥,必须由用户自行严格秘密保管,绝不通过任何途径向任何人提供

加密过程

在数学上, d ( c ( x ) ) = x {\displaystyle d(c(x))=x} ,让我们使用典型的爱丽丝与鲍伯假设来解释:

  1. 爱丽丝与鲍伯事先互不认识,也没有可靠安全的沟通渠道,但爱丽丝现在却要通过不安全的互联网向鲍伯发送信息
  2. 爱丽丝撰写好原文,原文在未加密的状态下称之为明文 x {\displaystyle x}
  3. 鲍伯使用密码学安全伪随机数生成器产生一对密钥,其中一个作为公钥为 c {\displaystyle c} ,另一个作为私钥 d {\displaystyle d}
  4. 鲍伯可以用任何方法发送公钥 c {\displaystyle c} 给爱丽丝,即使伊夫在中间窃听到 c {\displaystyle c} 也没问题
  5. 爱丽丝用公钥 c {\displaystyle c} 把明文 x {\displaystyle x} 进行加密,得到密文 c ( x ) {\displaystyle c(x)}
  6. 爱丽丝可以用任何方法传输密文 c ( x ) {\displaystyle c(x)} 给鲍伯,即使伊夫在中间窃听到密文 c ( x ) {\displaystyle c(x)} 也没问题
  7. 鲍伯收到密文,用私钥 d {\displaystyle d} 对密文进行解密 d ( c ( x ) ) {\displaystyle d(c(x))} ,得到爱丽丝撰写的明文 x {\displaystyle x}
  8. 由于伊夫没有得到鲍伯的私钥 d {\displaystyle d} ,所以无法得知明文 x {\displaystyle x}
  9. 如果爱丽丝丢失了她自己撰写的原文 x {\displaystyle x} ,在没有得到鲍伯的私钥 d {\displaystyle d} 的情况下,她的处境将等同伊夫,即无法通过鲍伯的公钥 c {\displaystyle c} 和密文 c ( x ) {\displaystyle c(x)} 重新得到原文 x {\displaystyle x}

在非对称加密中,爱丽丝使用鲍伯的公钥加密明文,得到密文,而只有鲍伯因为持有私钥才可以解密,得到明文

数字签名

相反,如果某一用户使用他的私钥加密明文,任何人都可以用该用户的公钥解密密文;由于私钥只由该用户自己持有,故可以肯定该文件必定出自于该用户;公众可以验证该用户发布的数据或文件是否完整、中途有否曾被篡改,接收者可信赖这条信息确实来自于该用户,该用户亦无法抵赖,这被称作数字签名,大部分国家已经立法承认数字签名拥有等同传统亲笔签名的法律效力。公钥可以通过数字证书认证机构签授的电子证书形式公布,接收者通过信任链形成一套完整的公开密钥基础建设。例如,从网上下载的安装程序,一般都带有程序制作者的数字签名,可以证明该程序的确是该作者(公司)发布的而不是第三方伪造的且未被篡改过(身份认证/验证)。而在网络银行或购物网站,一般也会使用HTTPS,让客户确认他们不是连接到伪冒网站


二、signed_cookie

cookie为了防止被恶意的客户端修改,用到了signed cookie.

比如cookie 是这样子authed:false 用户可以手动改成authed:true

这样是不安全的。所谓signed cookie是用到了 hash secret cookie_value

hash(cookie_value+secret)   发送的cookie 是authed:false|asdYTRESMcsgvsaw

false|asdYTRESMcsgvsaw 这堆随机字符串就是hash(cookie_value+secret)  后的结果

false|asdYTRESMcsgvsaw = hash(cookie_value+secret)

当cookie到达服务端时,将客户端发来的cookie_value与screate 哈希,如果与 false|asdYTRESMcsgvsaw 相等,则表明没有被篡改

公钥密钥理解,signed cookie的更多相关文章

  1. 使用ssh公钥密钥自动登陆linux服务器

    转自:http://7056824.blog.51cto.com/69854/403669 作为一名 linux 管理员,在多台 Linux 服务器上登陆进行远程操作是每天工作的一部分.但随着服务器的 ...

  2. [zz] 使用ssh公钥密钥自动登陆linux服务器

    目录 .生成密匙对 .拷贝公匙到远程机 .启动登陆代理 这种方法处理后每次需要运行命令:ssh-add ~/.ssh/id_dsa 作为一名 linux 管理员,在多台 Linux 服务器上登陆进行远 ...

  3. 加密---公钥&密钥

    一直以来对公钥和私钥都理解得不是很透彻,感觉到模棱两可.今天在网上找了半天,通过查看对这个密钥对的理解,总算弄清楚了.      公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(使用用户名与密 ...

  4. cer, pfx 创建,并且读取公钥/密钥,加解密 (C#程序实现)

    PKI技术(public key infrastructure)里面,cer文件和pfx文件是很常见的.通常cer文件里面保存着公钥以及用户的一些信息,pfx里面则含有私钥和公钥. 用makecert ...

  5. cer, pfx 创建,而且读取公钥/密钥,加解密 (C#程序实现)

    PKI技术(public key infrastructure)里面,cer文件和pfx文件是非经常见的.通常cer文件中面保存着公钥以及用户的一些信息,pfx里面则含有私钥和公钥. 用makecer ...

  6. Git SSL公钥密钥生成

    下面教大家简单易懂的五步配置好密钥 第一次配置ssh 和ssl git config --global --list 查看git的配置 步骤: 1. git config --global user. ...

  7. 生成RSA公钥密钥

    非对称加密就不做详细解释了,它的过程简单来说呢,就是A与B通讯,A公布了一个公开密钥,而且A手里还有一个私有的钥匙,叫密钥.B使用A给的公钥将内容进行加密,然后传递给A.A拿到加密后的内容后,用私钥解 ...

  8. 怎样理解第三方Cookie

    1. Cookie往往是用来存储用户信息的, 但有些恶意站点设法伪造了带有正确Cookie的HTTP请求, 这时就会产生安全问题( CSRF 攻击 ). 这里恶意网站获取cookie的行为就是第三方c ...

  9. 第十章 深入理解Session与Cookie

    理解Cookie 理解Session Cookie安全问题 分布式Session框架 Cookie压缩 表单重复提交问题 多终端Session统一

随机推荐

  1. 第六次Scrum meeting

    第六次Scrum  meeting 任务及完成度: 成员 12.21 12.22 陈谋 任务1040:完成stackoverflow的数据处理后的json处理(98%) 任务1114-1:完成对网页数 ...

  2. 2-Twenty Second Scrum Meeting-20151222

    任务安排 成员 今日完成 明日任务 闫昊 服务器关闭,开发停滞……  …… 唐彬 服务器关闭,开发停滞……  …… 史烨轩  服务器关闭,开发停滞……  …… 余帆   路径保存 路径整合 金哉仁   ...

  3. Linux期末总结

    Linux内核学习总结 1.计算机是如何工作的? 存储程序计算机工作模型 X86汇编基础 汇编一个简单的C程序分析其汇编指令执行过程 2.操作系统是如何工作的? 三个法宝——存储程序计算机.函数调用堆 ...

  4. zookeeper安装和使用 windows环境(转)

    原文地址: http://blog.csdn.net/tlk20071/article/details/52028945 简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是G ...

  5. CS、IP和PC寄存器

    CS寄存器和IP寄存器: 首先强调一下,这两个寄存器非常非常重要,CS的全拼为“Code segment”,即代码段寄存器,对应于内存中的存放代码的内存区域,用来存放内存代码段区域的入口地址(段基址) ...

  6. php开发APP接口(总结一)

    一.什么是app接口:服务端与客户端的数据交互. 大部分APP接口是通过http协议通信的. http通信的三要素: URL:   通信的地址 Method:通信的方式(get | post | pu ...

  7. loadrunner基础学习笔记八-分析场景

    analysis会话的目的是查找系统的性能问题,然后找出这些问题的根源 如: 是否达到了预期的测试目标,在负载下对用户终端的事务响应时间是多少 是否符合sla还是偏离了目标 事务的平均响应时间是多少 ...

  8. cordic

    cordic里向量旋转得到新向量,利用的是旋转矩阵 摘自百度百科维基百科 旋转矩阵(Rotation matrix)是在乘以一个向量的时候改变向量的方向但不改变大小的效果的矩阵.旋转矩阵不包括反演,它 ...

  9. codeforces 1051 D. Bicolorings (DP)

    D. Bicolorings time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  10. LightOJ 1030 【概率DP求期望】

    借鉴自:https://www.cnblogs.com/keyboarder-zsq/p/6216762.html 题意:n个格子,每个格子有一个值.从1开始,每次扔6个面的骰子,扔出几点就往前几步, ...