Menu
Woocommerce Menu

HTTPS在传输数据之前需要客户端(,3522vip靠谱吗:password)加密流程

0 Comment


该漏洞在opensshd-7.2p2
中被发现,但是安全人员指出,该漏洞应该在更早的版本中已经存在。

       
首先Mysql的密码权限存储在mysql.user表中。我们不关注鉴权的部分,我们只关心身份认证,识别身份,后面的权限控制是很简单的事情。
在mysql.user表中有个authentication_string字段,存储的是密码的两次sha1值。

ZK的节点有5种操作权限:
CREATE、READ、WRITE、DELETE、ADMIN 也就是
增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)
注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限

一、HTTPS的基本工作原理:
HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS/SSL中使用了非对称加密,对称加密以及HASH算法。握手过程的简单描述如下:
1.浏览器将自己支持的一套加密规则发送给网站。
2.网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
3.获得网站证书之后浏览器要做以下工作:
a)
验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。
b)
如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。
c)
使用约定好的HASH计算握手消息,并使用生成的随机数(密码)对消息进行加密,最后将之前生成的所有信息发送给网站。
4.网站接收浏览器发来的数据之后要做以下的操作:
a)
使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
b) 使用密码加密一段握手消息,发送给浏览器。
5.浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。
这里浏览器与网站互相发送加密的握手消息并验证,目的是为了保证双方都获得了一致的密码,并且可以正常的加密解密数据,为后续真正数据的传输做一次测试。另外,HTTPS一般使用的加密与HASH算法如下:
非对称加密算法:RSA,DSA/DSS
对称加密算法:AES,RC4,3DES
HASH算法:MD5,SHA1,SHA256
其中非对称加密算法用于在握手过程中加密生成的密码,对称加密算法用于对真正传输的数据进行加密,而HASH算法用于验证数据的完整性。由于浏览器生成的密码是整个数据加密的关键,因此在传输的时候使用了非对称加密算法对其加密。非对称加密算法会生成公钥和私钥,公钥只能用于加密数据,因此可以随意传输,而网站的私钥用于对数据进行解密,所以网站都会非常小心的保管自己的私钥,防止泄漏。
TLS握手过程中如果有任何错误,都会使加密连接断开,从而阻止了隐私信息的传输。
二、服务端证书的生成:
打开mac上的终端,使用keytool为Tomcat生成证书,假定目标机器的域名是“localhost”,keystore文件存放在“/Users/用户名/工作/CA/”目录下,名称叫做“tomcat.keystore”,使用“RSA”加密,口令为“password”,过期时间为100年,使用如下命令生成:

1、用户配置文件

  在/etc/passwd中存储着每个用户的一些基本信息,操作系统是根据该配置文件对用户进行管理的。
通过 man
5 passwd 命令可以查看该配置文件的说明

  3522vip靠谱吗 1

  3522vip靠谱吗 2

  •   account:用户名
  •   password:x    为了安全起见,密码位于/ect/shadow中  
  •   UID:用户ID(系统通过UID来识别用户,而用户名是给人看的)

       0:表示超级用户

     1-499:系统用户(伪用户,不能登录并且不能删除)

     500-65535:普通用户

  •   GUID:用户初始组ID
  •       GECOS:用户的备注信息,可有可无
  •   directory:户登陆后在默认所在的目录
  •      
    shell:root/普通用户使用/bin/bash,伪用户不需要登录则使用/sbin/nologin

漏洞描述如下:

你可以用下面的语句,验证和mysql.user表中存储的是一致的。
  select sha1(UNHEX(sha1(‘password’)))
  以上就是服务端关于密码的存储,接下来是认证过程。

身份的认证有4种方式:
world:默认方式,相当于全世界都能访问
auth:代表已经认证通过的用户(cli中可以通过addauth digest user:pwd
来添加当前上下文中的授权用户)
digest:即用户名:密码这种方式认证,这也是业务系统中最常用的
ip:使用Ip地址认证

keytool -genkey -v -alias tomcat -keyalg RSA -keystore /Users/用户名/工作/CA/tomcat.keystore -validity 36500

2.用户密码管理文件

  用户的密码被保存在/ect/shadow中,当然密码不可能以明文的方式进行存储,是经过SHA512加密后放在/ect/shadow中的

  为了安全起见,该文件的所有权限是被关闭的(当然,这对root用户是无效的)

  3522vip靠谱吗 3

  3522vip靠谱吗 4

  图中的那些伪用户是不能登录的,所以他们没有登录密码,都用*或者!!来标识,后面的数字表示密码修改时间、使用期限等等,这里不做介绍。有个小技巧就是如果不希望某个用户登录的话就可在他的密码前加个!很好,这样他每次登录都会失败。

当我们使用ssh客户端去连接服务端的时候,如果向服务端发送一个大于10KB的密码,由于OpenSSH服务端会对user:password的组合,使用加密算法SHA256/SHA512进行加密。

Mysql采用的是一种challenge/response(挑战-应答)的认证模式。
  第一步:客户端连接服务器
  第二步:服务器发送随机字符串challenge给客户端
  第三步:客户端发送username+response给服务器
    其中response=HEX(SHA1(password) ^ SHA1(challenge +
SHA1(SHA1(password))))
  第四步:服务器验证response。
    服务器存储了SHA1(SHA1(password)))
    所以可以计算得到SHA1(challenge + SHA1(SHA1(password))))
    那么SHA1(password)=response^ SHA1(challenge +
SHA1(SHA1(password))))
    最后再对SHA1(password)求一次sha1和存储的数据进行比对,一致表示认证成功。

设置访问控制:

(参数简要说明:“/Users/用户名/工作/CA/tomcat.keystore”是证书文件的保存路径,证书文件名称是tomcat.keystore
;“-validity 36500”含义是证书有效期,36500表示100年,默认值是90天
“tomcat”为自定义证书名称)。 在命令行填写必要参数: A、
输入keystore密码:此处需要输入大于6个字符的字符串。
B、
“您的名字与姓氏是什么?”这是必填项,并且必须是tomcat部署主机的域名或者IP[如:gbcom.com
或者
10.1.25.251](就是你将来要在浏览器中输入的访问地址),否则浏览器会弹出警告窗口,提示用户证书与所在域不匹配。在本地做开发测试时,应填入“localhost”。
C、
你的组织单位名称是什么?”、“您的组织名称是什么?”、“您所在城市或区域名称是什么?”、“您所在的州或者省份名称是什么?”、“该单位的两字母国家代码是什么?”可以按照需要填写也可以不填写直接回车,在系统询问“正确吗?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入“n”重新填写上面的信息。
D、
输入的主密码,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以,完成上述输入后,直接回车则在你在第二步中定义的位置找到生成的文件。
三、客户端证书的生成:
为浏览器生成证书,以便让服务器来验证它。为了能将证书顺利导入至IE和Firefox,证书格式应该是PKCS12,因此,使用如下命令生成:
keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore
/Users/用户名/工作/CA/mykey.p12

3、用户组管理文件

  /etc/group文件

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图