IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 有关HTTPS -> 正文阅读

[区块链]有关HTTPS

HTTP2.0?https://www.ruanyifeng.com/blog/2016/08/http.html?

证书透明度(CT)

逻辑我差不多知道了但是吧主要都是依靠证书的正确性。证书如果伪造那整个体系就荡然无存。谷歌提出了?证书透明度(CT)证书的有效补充

区块链技术非常类似,通过密码学手段(Merkle hash tree)保证了其数据只能增长,但修改、插入、删除都会被发现

(协商缓存那里也是巴拉巴拉) 其实吧就是吧可以看https://zhuanlan.zhihu.com/p/43789231,这个几乎全解决了,我一点也不想整理。。。

1 由于http协议本身是无状态的,因此协议本身是不支持“登录状态”这样的概念的,必须由项目自己来实现。

2 服务器把证书传输给浏览器,浏览器从证书里获取公钥就行了,证书就如身份证,证明“该公钥对应该网站”。

啊啊啊问注册逻辑原来是想问https!

?

那么看下知乎这篇文章,希望能获得一点什么 【这个写的很好0.0 感恩!!!就靠它啦~】

链接:https://zhuanlan.zhihu.com/p/43789231 写的很棒!

1.如果用对称加密,那么~?

如果通信双方都各自持有同一个密钥,且没有别人知道,这两方的通信安全当然是可以被保证的(除非密钥被破解)。

然而最大的问题就是这个密钥怎么让传输的双方知晓,同时不被别人知道。(确实)如果由服务器生成一个密钥并传输给浏览器,那在这个传输过程中密钥被别人劫持到手了怎么办?之后他就能用密钥解开双方传输的任何内容了,所以这么做当然不行。可以预先保存所有的,但显然也不太现实

其他注意:

1 采用对称加密,如果只使用一个秘钥,很容易破解;如果每次用不同的秘钥,海量秘钥的管理和传输成本又会比较高。

2?

千万千万千万不能明文保存密码【那么传递的时候是传的什么????传哈希????】

千万不要用明文存储密码(不管是存在数据库还是日志中)

加密部分

自己总结:

1 因为是单向的哈希,网站也不知道你的密码是什么,只有你自己输入之后按照哈希单向进去,你输入的哈希=存储的哈希,才ok。所以“找回密码” 只能重置,因为网站并不知道你的密码是什么(可以这么说hhhh)

2 如果是验证你曾经用过的密码,那应该也是验证你密码去做哈希运算比较存储的哈希。

以下来源ryf-找回密码登录设计

秘钥部分

单钥?DES(Data Encryption Standard)

双钥?RSA( Rivest-Shamir-Adleman)公钥用来加密信息,私钥用来数字签名

a) 公钥和私钥是一一对应的关系,有一把公钥就必然有一把与之对应的、独一无二的私钥,反之亦成立,所有的(公钥, 私钥)对都是不同的。

b) 用公钥可以解开私钥加密的信息,反之亦成立。

c) 同时生成公钥和私钥应该相对比较容易,但是从公钥推算出私钥,应该是很困难或者是不可能的。

因为任何人都可以生成自己的(公钥,私钥)对,所以为了防止有人散布伪造的公钥骗取信任,就需要一个可靠的第三方机构来生成经过认证的(公钥,私钥)对。目前,世界上最主要的数字服务认证商是位于美国加州的Verisign公司,它的主要业务就是分发RSA数字证书。

为什么RSA能够做到非对称加密呢

简单来说,RSA利用的原理是,如果两个互质关系的正整数的乘积足够大,是极难进行因式分解的(目前被破解的最长RSA密钥是768个二进制位,而正常使用的至少是1024位的密钥 极其重要就用2048位)。

通过一定的运算,把某计算结果和乘积作为公钥,另一个计算结果和乘积作为私钥,即可以实现,利用公钥进行加密,并利用私钥进行解密。具体的数学公式推导和证明可以参考RSA算法原理。↓?https://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html

HTTP与https

常规的http请求,所有信息明文传播,只要中间人在链路中的任意阶段进行劫持,就会带来三大风险:

  • 窃听风险(eavesdropping):第三方可以获知通信内容。
  • 篡改风险(tampering):第三方可以修改通信内容。
  • 冒充风险(pretending):第三方可以冒充他人身份参与通信。

怎么解决这些问题?用https。

https 可以认为是 http + TLS TLS 是传输层加密协议,它的前身是 SSL 协议,如果没有特别说明,SSL 和 TLS 说的都是同一个协议。

SSL/TLS协议是为了解决http的三大风险而设计的,希望达到:

  • 内容加密。所有信息都是加密传播,第三方无法窃听。
  • 身份认证。配备身份证书,防止身份被冒充。即使被 DNS 劫持到了第三方站点,也会提醒用户有可能被劫持
  • 数据完整性。防止内容被第三方冒充或者篡改。具有校验机制,一旦被篡改,通信双方会立刻发现。

百度抓包,有个jsencrypt库(加密用)(印科瑞普特)

经常被大家用来加密的算法有MD5和SHA系列(如SHA1、SHA256、SHA384、SHA512等)。
通常黑客在侵入保存密码的数据库之后,他会随机猜测一个密码,生成一个哈希值。如果该哈希值在数据库中存在,那么他就猜对了一个用户的密码。如果没有猜中也没有关系,他可以再次随机猜测下一个密码进行尝试。

事实上黑客为了提高破解密码的效率,他们会事先计算大量密码对应的各种哈希算法的哈希值,并把密码及对应的哈希值存入一个表格中(这种表格通常被称为彩虹表),在破解密码时只需要到事先准备的彩虹表里匹配即可。因此现在黑客们破解仅仅只用哈希算法加密过的密码事实上已是不费吹灰之力。

加“盐”提高安全性

为了应对黑客们用彩虹表破解密码,我们可以先往明文密码加盐,然后再对加盐之后的密码用哈希算法加密。由于盐在密码校验的时候还要用到,因此通常盐和密码的哈希值是存储在一起的。

采用加盐的哈希算法对密码加密,要确保要往每个密码里添加随机的唯一的盐,而不是让所有密码共享一样的盐。

虽然加盐的算法能有效应对彩虹表的破解法,但它的安全级别并不高,因为计算哈希值耗时极短,黑客仍然可以用穷举法来破解,只是增加了一些耗时。

用BCrypt或者PBKDF2增加破解的难度

为了应对暴力破解法,我们需要非常耗时的而不是非常高效的哈希算法。BCrypt和PBKDF2算法应运而生。

这两个算法最大的特点是我们可以通过参数设置重复计算的次数,重复计算的次数越多耗时越长。如果计算一个哈希值需要耗时1秒甚至更多,那么黑客们采用暴利法破解密码将几乎不再可能。破解一个6位纯数字密码需要耗时11.5天,更不要说高安全级别的密码了。

如果我们想要尽可能保证用户的信息安全,我们需要做以下的工作

  • 使用https请求
  • 利用RSA加密密码并传输数据
  • 用BCrypt或者PBKDF2单向加密,并存储

注意!加盐哈希也容易破解!(穷举法,彩虹表)

用BCrypt PBKDF2

这两个算法最大的特点是我们可以通过参数设置重复计算的次数,重复计算的次数越多耗时越长。如果计算一个哈希值需要耗时1秒甚至更多,那么黑客们采用暴利法破解密码将几乎不再可能。破解一个6位纯数字密码需要耗时11.5天,更不要说高安全级别的密码了

(就是说,把第几次验证也作为一个参数加入字符串~~ 比如说你的验证码2分钟就过期了,但是破解就很慢了以此保证安全性)

来源:https://juejin.cn/post/6844903604944371726#heading-8

HTTP

S(背诵部分)

如果我们想要尽可能保证用户的信息安全,我们需要做以下的工作

  • 使用https请求
  • 利用RSA加密密码并传输数据
  • 用BCrypt或者PBKDF2单向加密,并存储

https的加密过程?https://messiahhh.github.io/blog/?(这个链接总结的非常精炼)

  1. 将HTTP报文交给TLS处理,TLS和服务端进行TLS握手,交换版本信息,加密算法,压缩算法,随机数(浏览器一个,客户端一个)。
  2. 服务端发送证书,浏览器用CA的公钥对其进行验证。
  3. 浏览器用服务端的公钥加密生成的预备主密码发送给服务端,两个随机数和预备主密码生成主密码
  4. 使用主密码生成对称加密的密钥对,消息认证码的密钥对,对称加密的CBC分组(分组模式)需要的初始化向量密钥对。
  5. 握手之后进行加密,对HTTP报文分组,分组后压缩,压缩后的数据和MAC一起加密。
  6. 对称加密保障私密性,消息认证码保障完整性,数字证书保障认证,防止中间人攻击。

找回密码(概念理解来自ryf)

一个网站要想保证密码安全,第一步就是以正确的方法保存密码。一般说来,密码有三种保存方式。

(1)明文保存(×××)

"明文保存"就是用户的密码原文不动地写入数据库。这种方式最不安全,极易泄漏,应该严格禁用。

(2)加密保存

"加密保存"就是使用密钥,将密码加密后,以密文保存进数据库。这种方式虽然有一定的安全性,但是终究还是可以用密钥还原密码。因此,还是存在泄漏的可能,也不推荐使用。

(3)哈希保存aaaaa

"哈希保存"就是对密码使用哈希算法,将哈希值保存进数据库。为了增加随机性,防止彩虹表这一类的工具,计算哈希的时候,每个用户都有一个不一样的盐值(salt),也会同时保存进数据库。

哈希是单向运算,无法还原,所以即使哈希值泄漏,一般来说,也不会暴露用户的原始密码。

第一条规则:密码永远都要哈希保存

第二条规则:找回密码就是让用户重置密码。

第三条规则:重置密码的时候,要给出一个链接,让用户到网页上自己修改密码。

重置链接由于是明文传播,而且直接修改密码,所以必须有失效时间。一般来说,可以设成10分钟失效

第四条规则:重置密码之前,如果用户提供了错误的邮件地址,不要提示他。

如果提示的话,你可以知道你的朋友是否在AltPorn上注册了(很大可能性是他本人注册使用的),这样就算隐私泄漏了吧~ (其实注册的时候,尤其是一些敏感网站应该care下的)

正确的做法是,不管用户输入什么邮箱,都向该邮箱发邮件。在邮件里说明,有人尝试重置密码,但是他输入的邮箱不在数据库里面。(发这种邮件带上ip地址)

第五条规则:重置密码的时候,识别用户最好依靠邮件地址,而不是用户名。

还有就是加上验证码,回验个人信息

题外话:github之争+手动探究,F12那一大坨是什么?

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-09-09 11:48:53  更:2021-09-09 11:50:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:41:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码