加密和Kerberos鉴权

2020-02-29  本文已影响0人  FingerStyle

这篇主要介绍常用的加密算法和鉴权协议,关于Kerberos的大概过程,可以参考这篇
https://www.cnblogs.com/huamingao/p/7267423.html

这里面有一个点没说清楚,就是第四步客户端收到 session key和服务端secret key加密后的session ticket后, 是如何获得session Key的,实际上session key和服务端secret key加密后的session ticket是分开返回的,可以参考这篇文章
https://blog.csdn.net/weixin_39848953/article/details/112076045

=========================================================================
加密算法: 对称/非对称加密、Hash、密码交换算法
鉴权协议:Kerberos(windows内部使用)、OAuth、OpenID等

一、加密算法
对称加密:
1.分组加密 :如DES/AES/TEA
2.序列加密: 如ECB (分组密文间无关联)/CCB(分组间有关联)

非对称加密: RSA

HASH:MD5、SHA
密钥交换: Diffie-hellman(也可用非对称加密算法)

二、Kerberos鉴权过程
登录前的鉴权阶段
主要在C(客户端)和AS(鉴权服务器,存放各种key,相当于agent)之间进行

  1. C与S 建立TCP连接,C->S 申请公钥
  2. S->C ,返回公钥
  3. C->S ,用公钥加密密码,传给S
  4. S->C ,鉴权完成,返回skey。

如果有人在第一步S和C中间伪装S,传给C假的公钥,获取了密码。则形成C->H->S的中间人攻击
解决办法:在第一步建立连接中,用密码作二次MD5生成密钥,加密uid,时间戳等,解决假server问题。因为自己的server知道密码,所以能解出内容。

已登录后申请访问业务A:
在C(客户端)和BS(业务服务器)之间进行

  1. C->S skey(业务A)
  2. S->C skey(KEYA(uid+timestamp))
  3. C->S KEYA(uid+timestamp)

数据有效性检查:账号、时间、IP
解密函数返回成功不代表认证成功,还需要做有效性检查。协议设计时尽量不要在多个字段上用一样的数据,否则需要在各个字段做校验。

上一篇 下一篇

猜你喜欢

热点阅读