文章导读:
对称加密
非对称加密
数字证书
Kerberos认证流程

Hadoop生态利用Kerberos认证机制来识别可靠的服务和节点,保障Hadoop集群的安全,那么Kerberos到底是什么?为什么要选择它来进行认证?Kerberos认证的流程又是怎样的呢?让我们带着这些问题看一下这篇文章。

Kerberos是什么

Kerberos是一种网络认证协议,它作为一种可信任的第三方认证服务,通过对称加密的方式执行认证服务。为客户端、服务端的应用程序提供强大的、严谨的认证服务。

上面我们提到了对称加密,我们先科普一下什么是对称加密和非对称加密以及数字证书等常见概念。

对称加密

举个栗子:
我们都知道数字有一些特殊的意义,比如:5=我 2=爱 1=你。你看上个姑娘叫小芳,你想向她表达爱慕之情但是又不想明说。
你:521
小芳:对不起你是个好人。

上面其实就是对称加密的一种方式,首先你和小芳都知道相同的加密算法即5=我 2=爱 1=你。然后你通过该加密算法将“我爱你”三个字加密后的结果521发送给小芳,小芳通过相同的加密算法(5=我 2=爱 1=你)进行解密,并给你发了一张好人卡。

对称加密:在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。

那么对称加密有没有什么缺点呢?

举个栗子:
你又看上了小芳的朋友小丽,展开了新一波的攻势。
你:521
小丽:你上次跟小芳也是这么说的,你真不是个好人

由于对称加密需要双方都知道加密的密钥,那么持有相同密钥的人很容易对其他人的信息进行解密。

非对称加密

非对称加密比对称密钥相对来讲比较安全一些,为了不让小丽知道你给小芳说了什么,你们开始停止使用共同的密钥,这样就不会被小丽知道你和小芳说话的内容了。然后每个人生成一个“私钥”和一个“公钥”,通过公钥加密的信息可以利用私钥进行解密。私钥每个人自行进行保护,然后把公钥进行分享。

举个栗子:
你:小芳,你的公钥给我下,我给你看个宝贝。
小芳:“你怕是个傻子吧” 给你,这是我的公钥。
你:iwty
小芳:iwty经过私钥解密后得到内容我爱你。

非对称密钥看上去比对称密钥安全了不少,公钥随便给你,反正私钥在我手里,加密的信息通过私钥才能解密。这时候即使小丽拿到了你给小芳发的信息,她没有小芳的私钥也不知道说的是什么。

非对称加密:需要一对密钥,可公开的为公钥,私有保护的为私钥。其他用户通过该用户的公钥加密的消息,只能通过该用户的私钥进行解密。也就是说公开了其中公钥并不会造成什么影响。

那么非对称密钥就一定是安全的吗?再举个例子:
你:小芳,你的公钥给我下,我给你看个好宝贝。
小丽(冒充小芳):“这是小丽的公钥”,这是小芳的公钥。
你:iwty
小丽:使用自己的私钥解密后得到我爱你的真实信息。

所以这时候,怎么证明你拿到的“小芳的公钥”就是小芳的公钥呢?

数字证书

前面说到,如何证明你拿到的“小芳的公钥”就是小芳的公钥。数字证书是什么意思呢,就是选择双方信任的第三方所颁发的一个认证标识。

举个例子:
你想对小芳表达爱慕之情,但是不要意思直接说,又怕被小丽知道。所以你找来了另外一个关键任务小明。你、小芳和小明之间进行了约定。小明把他的公钥给了你,并告诉你,他会将小芳的公钥信息用他的私钥进行加密,加密后给你,如果你可以用小明的公钥解开,那么这个就是真正的小芳的公钥,你就可以发信息了。

你:拿着小明给你的公钥,小芳,你公钥给我一下,我给你看个宝贝。
小芳:小明你帮我加密一下吧,然后发给了你
你:用小明的公钥解密了用小明私钥加密的小芳的公钥(这句有点绕),并确认是小芳的公钥,然后发送iwty
小芳:解密信息得到我爱你,并发了一张好人卡。

在上面的例子中,小明起到了关键性的作用,他证明了小芳是小芳,发给你的小芳的公钥没有被别人修改过。但是大家发现了什么没有,这里又有一个“小明的公钥”。那么谁来证明“小明的公钥”就是小明的公钥呢?

当然,这种都是可值得信赖的第三方机构充当小明的角色,比如我们所谓的注册中心RA和证书机构CA。但是需要注意的是,小明的角色也是可以被黑客黑掉的,黑客把小明的公钥(根证书)换成自己的,那么又可以为所欲为了。

Kerberos

终于到我们的主角Kerberos了,前面我们也提到了Kerberos是可信任的第三方,那么它与数字证书的颁发机构有什么不同呢?它是否可以被伪造,如何保证认证机制?

在举例之前呢,我们先来了解几个新名词:
principal(安全个体):被Kerberos成功认证的个体,有一个名字和口令
Ticket:门票,用来向服务器证明自己的身份,包括标识、会话密钥、时间戳。
KDC(key distribution center ) : 是一个网络服务,提供ticket和临时会话密钥
AS (Authentication Server): 认证服务器
TSG(Ticket Granting Server): 许可证服务器

举个栗子,这里我尽可能的简化相关逻辑,便于理解:
你(Client)和小芳(Server)分别作为一个安全的个体,向KDC进行认证,添加你们的principal名称和密码。(密码你知,KDC知 所以是对称加密)

好,现在你想和小芳联系了,但是你要确认这个小芳是你想找的小芳。

你:hello KDC,我想联系下小芳,你把认证的session key给我吧。
KDC接收到请求之后,首先从数据库里面查找你的principal,确认你是一个认证过的安全个体。然后将一个session key进行加密,注意,这里的session key有两份,一份是由你的密钥加密的,一份是由小芳的密钥加密的。它把两份都给了你。
注意思考,这里为什么要把小芳密钥加密后的session key也给你(1. 这样kdc不用维护session key的列表 2. kdc直接发送给小芳不一定可达)
你:你接收到两个session key,我们简化为Ckey(client 加密的key)和Skey(Server 加密的key)。这时候你用你自己的密钥,解开了Ckey。为了表明是你现在想与小芳说话而不是别人监听破解你的key而发送消息,这时候需要引入一个时间戳(认证时一个可接受的时间范围,时间间隔太长认为不安全,则server端不予处理)

这时候你把你的个人信息(ClientInfo)+时间戳 通过解密后的Ckey(kdc给你的session key)加密,加上Skey 发送给小芳。
小芳:小芳接收到你的消息,首先用自己的密钥解开Skey,获取到session key。再利用session key解密你发送的个人信息+时间戳。通过对比时间戳,发现时间在可控范围内,则认为你是安全的个体。可以进行通话。

你:而这个时候你可能也有点慌,这是不是小芳啊?别又是小丽。你想认证一下小芳怎么办呢?你需要把上一步的个人信息+时间戳利用session key进行加密,加上Skey和一个需要Server认证的flag即可。
小芳:小芳接收到你的消息,首先用自己的密钥解开Skey,获取到session key,再利用session key解密你发送的个人信息+时间戳。如果你需要认证,flag=true。则把你发送的时间戳用session key加密后发送给你。
你:接收到小芳发来的消息,用session key进行解密,发现与之前的时间戳一致。则验证是小芳而不是小丽。(这部分呢就是双向认证)

那么Kerberos比上面的流程要稍微复杂一点:

  1. Client作为一个安全个体认证到KDC之后,KDC会分发一个Ticket认购权证称为TGT(或者描述为Client连接KDC的密钥,经过KDC的Key加密过),需要注意的是TGT有时间限制,过期后需要重新向KDC获取,这样也保障了一定的安全性。
  2. Client要与Server进行通信则首先用TGT从KDC获得一个可以访问某一服务的Ticket(Session Key+Client Info)。这个Ticket是认证过程中最重要的一环,它的颁发机构就是双方可信的KDC,KDC对TGT解密认证,分发Ticket。
  3. Client向Server提交Ticket,Server接受到Ticket之后,对Ticket进行解密,验证时间戳。如需双方验证则发送加密时间戳到Client进行验证,验证成功后Client可以访问Server。

Kerberos认证这部分确实比较复杂,可以对照图例多过两遍。那么Kerberos都有哪些优点?我们来总结一下:

  1. 安全可靠:Kerberos实现了双向认证
  2. 性能高:虽然Kerberos的认证需要Client Server 和 KDC三方认证,但是Client获取到Ticket之后(Ticket未过期),就可以直接与Server进行认证而不需要KDC的参与。
  3. 支持HA高可用,且成为被广泛接收的标准。支持不同平台进行操作。

参考资料:
kerberos认证原理---讲的非常细致,易懂

欢迎关注我:叁金大数据(不稳定持续更新~~~)

Kerberos 简介——教你做个好人相关推荐

  1. Kerberos简介——教你做个好人

    对称加密 非对称加密 数字证书 Kerberos认证流程 Hadoop生态利用Kerberos认证机制来识别可靠的服务和节点,保障Hadoop集群的安全,那么Kerberos到底是什么?为什么要选择它 ...

  2. 代码之外_教你做坏人

    世人都教你做一个好人,而我教你如何做坏人. 世界上没有没有真正的好人,也没有真正的坏人,你学到的好不一定是真的好,我教你的坏也不是真的坏. 听话的孩子大多都过的不太好 中国传统就是喜欢听话的孩子,父母 ...

  3. 1小时教你做360度全景“小星球”效果图 Skillshare – Create a Panoramic ‘Little Planet’ from Anywhere

    1小时教你做360度全景"小星球"效果图 Skillshare – Create a Panoramic 'Little Planet' from Anywhere 1小时教你做3 ...

  4. 三十行代码教你做个通用文字识别程序

    三十行代码教你做个通用文字识别程序 准备 开始编程 测试 准备 在开始敲代码前,我们先做一些准备.我们的这个通用文字识别程序的原理很简单,就是通过API调用百度智能云提供的免费的通用文字识别(标准版) ...

  5. 手把手教你做微信公众号

    手把手教你做微信公众号 微信公众号可以通过注册的方式来建立. 1.进入微信公众平台 首先,在浏览器中搜索微信公众号,网页第一个就是,如下图所示,我们点进去. 2.注册微信平台账号 进入官网之后,如下图 ...

  6. 对话李笑来:区块链世界里老实做个好人就能赚很多钱

    "我不认为所谓的'割韭菜'是这个世界里赚钱最好的方式,效率很低且坏,我认为这个世界有更高效的赚钱方式." 区块链的核心游戏规则,到底是价值投资还是投机收割?这个问题在区块链世界里就 ...

  7. c语言弟弟的作业,教弟弟做作业作文500字

    <教弟弟做作业作文500字>由会员分享,可在线阅读,更多相关<教弟弟做作业作文500字(2页珍藏版)>请在人人文库网上搜索. 1.教弟弟做作业作文500字弟弟是一个懒惰的小孩, ...

  8. 手把手教你做关键词匹配项目(搜索引擎)---- 第九天

    第九天 回顾: 8. 手把手教你做关键词匹配项目(搜索引擎)---- 第八天 7. 手把手教你做关键词匹配项目(搜索引擎)---- 第七天 6. 手把手教你做关键词匹配项目(搜索引擎)---- 第六天 ...

  9. python手机版做小游戏代码大全-Python大牛手把手教你做一个小游戏,萌新福利!...

    原标题:Python大牛手把手教你做一个小游戏,萌新福利! 引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规 ...

最新文章

  1. 分布式监控报警平台Centreon之:Centreon安装(1)
  2. 在OpenWrt中上传文件至路由器
  3. 【译】Understanding Linked Data Formats
  4. 关于switch-case问题
  5. python命令行工具_python命令行工具Click快速掌握
  6. 10实用的JS实用技巧
  7. 图的基本概念【数据结构】
  8. 结合MSDN理解windows service 服务安装的三个类。
  9. ios 获取固件版本_觉得iOS测试版本BUG太多?系统降级试一试?
  10. 如何在苹果Mac上的分屏浏览视图中使用 App?
  11. 如何做好企业SWOT分析?用这个企业项目设计工具就足够了!
  12. python长度单位换算表_长度单位换算表大全
  13. 【英语:基础进阶_原著扩展阅读】J6.原著阅读实战训练
  14. CSDN线上竞赛第52期题解
  15. php aes 256 加解密,PHP完整的AES加解密算法使用及例子(256位)
  16. 缓冲技术之四:LRU缓冲管理策略分析
  17. 出现数据库不给访问的情况
  18. 5.Serializer,ModelSerializer区别
  19. 【品牌专场】跨越 X 突破,音视频聚力新机遇
  20. 遥感影像镶嵌拼接如何抠图及多源影像补图,如何进行区域替换去云异常区域

热门文章

  1. [C/C++] RGBA数组生成Windows下的ico文件
  2. 智慧工地~智慧工厂:安全生产可视化指挥调度系统~“安全第一、预防为主、综合治理”
  3. Android 跳转到第三方应用
  4. 测试iphone硬件好坏的软件,如何检测苹果手机硬件有没有故障,这几招收好不谢!...
  5. 互联网大会马化腾领衔发言,15个领先科技成果剑指互联网下半场
  6. ArcGIS10 图框生成和批量打印工具V5.0正式发布
  7. 40页PPT | 数据治理方法论和案例(附下载)
  8. JAVA——实现求出1到100之间的既是3的倍数又是5倍数的数字之和.
  9. 天大福利!世界第一科技出版公司 Springer 免费开放 400 多本电子书!
  10. WPF实现简单的颜色调色板功能