• Windows认证


    Windows认证

    本地认证

    • 本地认证流程
      Windows登录密码储存在系统本地的SAM文件中(C:\Windows\system32\config),登录时系统会将用户输入的密码与SAM文件中的密码进行对比(登录的密码会在lsass.exe进程中明文保存)
      在这里插入图片描述

    LM和NTLM哈希

    Windows操作系统通常使用两种方法对用户的明文密码进行加密处理。LM Hash(LAN Manager Hash)本质是DES加密,明文密码限定在14位以内。NTLM Hash是基于MD4算法进行加密的(Windows 2000、XP、2003默认使用LM Hash,支持NTLM Hash)
    Windows中,Hash的结构通常为username:RID:LM-HASH:NT-HASH

    • LM Hash加密过程
      1.将明文的小写字母转为大写
      2.将大写字符串转换为16进制字符串
      3.转换后不足14字节则用0补全
      4.分为两组7字节,每组的16进制转换为二进制,每7bit加0
      5.两组二进制转为16进制字符串,依次作为DES加密key为魔术字符串KGS!@#$%的16进制进行加密
      6.拼接两次DES加密的结果即为LM Hash
    • NTLM Hash加密过程
      1.将明文转换为Unicode格式
      2.对Unicode字符串进行MD4加密,生成32位16进制字符串即为NTLM Hash

    网络认证

    工作组中的计算机只能点对点进行信息的传输。主机A想访问主机B的资源,就要向主机B发送一个存在于主机B上的一个账户,主机B接收到后在本地进行验证,验证成功就允许主机A进行访问

    NTLM协议

    NTLM协议是基于Challenge/Response认证机制,仅支持Windows的网络认证协议。NTLM协议v1的challenge有8位,主要加密算法是DES。NTLM协议v2的challenge有16位,主要加密算法是HMAC-MD5。

    • NTLM协议认证流程
      1.协商:向下兼容,双方确定传输协议的版本等信息
      2.认证:
      (1)主机A向B发送用户名,B本地存在该用户则随机生成16位字符(challenge)
      (2)B使用该用户的NTLM Hash和challenge加密生成challenge1并存储在本地
      (3)主机B发送challenge给A,A对该用户的NTLM Hash和challenge进行加密得到Response并发送给主机B
      3.验证:B收到Response后与challenge1进行比较,相同则验证成功,允许A访问资源

    域认证

    在域环境中,用户信息存储在ntds.dit中

    Kerberos协议

    Kerberos网络认证协议,通过密钥系统为客户机/服务器应用程序提供认证服务,是一种可信任的第三方认证服务

    • 密钥分发中心(Key Distribution Center,KDC):
      AS(Authentication Server):认证服务器,专门用来认证客户端的身份,认证后发放客户用于访问TGS的TGT(票据授予票据)
      TGS(Ticket Granting Server):票据授予服务器,用来发放认证过程和客户端访问服务端时所用的ST(服务授予票据)
    • 认证流程
      1.客户端以明文方式发送用户名、主机IP、当前时间戳给AS。AS验证用户身份,验证完发送TGS密码加密的TGT和client密码加密的CT_SK(客户端和TGS的会话密钥)给客户端
      在这里插入图片描述
      2.客户端解密出信息获得CT_SK和TGS信息,发送CT_SK加密的信息、TGT和要访问的server服务给TGS。TGS解密出信息,对比TGT中的用户信息和请求用户是否一致,验证完发送Server密码加密的ST(服务票据)和CT_SK加密的CS_SK(客户端和服务器的会话密钥)给客户端
      在这里插入图片描述
      3.客户端解密出CS_SK,发送使用CS_SK加密的信息和ST给服务端。服务端验证服务信息并检查ST的用户信息和请求用户是否一致,同意请求建立连接
      在这里插入图片描述
  • 相关阅读:
    python 之f-strings 来格式化字符串
    电脑使用技巧分享  电脑小白们快收藏
    声明式UI是否会成为Android开发的主流?
    数据库实验五 函数
    C语言 基础开发----目录
    萌新的FPGA学习绪论-1
    后台管理系统通用解决方案
    5 张图告诉你 RocketMQ 为什么不使用 Zookeeper 做注册中心
    双线程架构:小程序相比于H5的架构优势
    ubuntu安全扩展交换内存swap memory
  • 原文地址:https://blog.csdn.net/qq_45455136/article/details/126642977