密码技术概述

您所在的位置:网站首页 win兼容性设置的原理 密码技术概述

密码技术概述

2023-09-14 16:06| 来源: 网络整理| 查看: 265

密码技术概述 项目 04/12/2023

适用于:Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows 10、Windows Server 2012 R2、Windows 8.1、Windows Server 2012、Windows 8、Windows 7、Windows Server 2003、Windows Server 2008、Windows Server 2008 R2、Windows Vista

本主题面向 IT 专业人员介绍 Windows 如何在从 Windows Server 2012 和 Windows 8.1 开始的 Windows 版本中实现密码。 还讨论了强密码、密码短语和密码策略。

密码在 Windows 中的存储方式

本文提供有关“静态”密码存储的信息。

Windows 以 256 个字符的 UNICODE 字符串表示密码,但登录对话框限制为 127 个字符。 因此,最长的密码可以有 127 个字符。 服务等程序可以使用更长的密码,但必须以编程方式设置。

Windows 操作系统以多种不同的方式存储密码,用于不同的目的。

存储为 OWF 的密码

为了在 Windows 网络(包括 Active Directory 域)中使用,密码默认以两种不同的方式存储:作为 LAN 管理器单向功能 (LM OWF) 和 NT OWF。 “单向函数”是一个术语,表示数据的单向数学转换。 正在转换的数据只能通过加密进行单向转换,不能反向转换。 最常用的单向函数类型是加密哈希。 哈希是一小组数据,在数学上与计算哈希的一些较大的数据集相关联。 如果更改了较大的数据集,哈希也会更改。 例如,哈希可以作为校验和,用来验证数据在传输中是否未被修改。 加密哈希是满足某些属性的哈希。 例如,创建的加密哈希必须符合以下条件:在合理的时间内仅从哈希推断出较大的数据集在数学上是不可行的。 同样,在数学上找到两组生成相同哈希的大数据也是不可行的。

有许多不同类型的单向函数。 根据定义,所有哈希函数都是单向函数。 但是,通常可逆的普通加密函数也可用于创建单向函数。 要这样做,可在加密函数中交换数据和密钥,并使用数据作为密钥来加密固定值(密钥)。 这就是 LM 哈希的计算方式。 LM 哈希的计算方法如下:

密码用 NULL 字节填充,正好为 14 个字符。 如果密码长度超过 14 个字符,则替换为 14 个 NULL 字节以完成其余操作。 密码将转换为全部大写。 密码分为两个 7 字节(56 位)密钥。 每个密钥用于加密固定字符串。 步骤 4 中的两个结果连接起来并存储为 LM 哈希。

LM OWF 算法包含在 Windows 中,以便向后兼容无法使用较新算法的软件和硬件。

NT 哈希是一个纯粹的哈希。 密码使用 MD4 算法进行哈希处理并存储。 NT OWF 用于由 Windows NT 4.0 和更早版本的域以及 Active Directory 域中的域成员进行身份验证。

NT 哈希和 LM 哈希都没有加盐。 盐渍是在计算单向函数之前将密码与随机数值(盐)组合在一起的过程。

存储在 Active Directory 中的密码

静态密码存储在 Active Directory 数据库(NTDS.DIT 文件)。 下表列出了这些属性:

Active Directory 属性 内容 unicodePwd 加密的 NT 哈希 dbcsPwd 加密的 LM 哈希 ntPwdHistory 加密的 NT 哈希 - 密码历史记录 lmPwdHistory 加密的 LM 哈希 - 密码历史记录 supplementalCredentials Kerberos 密钥、WDigest 等。

注意

从 Windows Vista 和 Windows Server 2008 开始,默认情况下禁用 LM 哈希的存储。

存储在 DIT 文件中时,NT 哈希受到两层加密的保护。 在 Windows Server 2016/Windows 10 及更高版本中,首先使用 DES 加密以实现向后兼容性,然后使用 CNG BCrypt AES-256 进行加密(请参阅 CNGBCRYPT_AES_ALGORITHM)。 以前的 Windows 版本使用两层 DES + RC4 加密来加密 NT 哈希。

有关补充凭据的详细信息,请参阅 MS-SAMR:补充凭据和补充凭据结构。

存储在本地 SAM 中的密码

在域成员和工作站上,本地用户帐户密码哈希存储在位于注册表中的本地安全帐户管理器 (SAM) 数据库中。 它们使用与 Active Directory 相同的加密和哈希算法进行加密。 从 Windows Server 2016 开始,本地用户帐户的 supplementalCredentials 属性中的密码也存储在本地 SAM 数据库中。

缓存的凭据

当域用户登录到域成员时,Windows 还会在域成员上存储密码验证程序。 如果计算机无法访问域控制器,此验证程序可用于对域用户进行身份验证。 密码验证程序通常也称为缓存凭据。 其计算方式如下:采用 NT 哈希,与用户名连接,然后使用 MD4 哈希函数对结果进行哈希处理。

密码在 Windows 中的工作原理

在 Windows 和许多其他的操作系统中,对用户标识进行身份验证的一种方法是使用机密通行短语或密码。

我们建议使用安全的多重身份验证,例如智能卡、FIDO 和 Windows Hello 企业版。 但是,在某些情况下仍然需要密码身份验证。

保护网络环境需要所有用户都使用强密码。 这有助于避免恶意用户通过手动方法或通过工具猜测弱密码来获取已泄漏用户帐户的凭据的威胁。 对于管理帐户更是如此。 定期更改复杂密码可以降低密码攻击成功的可能性。

密码策略设置控制密码的复杂性和生存期。 密码策略会影响 Windows 密码,不一定是功能密码。

用户修改其密码的能力受密码策略和可用接口的约束。 例如,通过安全桌面,用户可以随时根据系统管理员或域管理员管理的密码策略来更改其密码。 Windows 保管库、BitLocker 和加密文件系统等功能允许用户修改特定于该功能的密码。

如何在 Windows 中使用密码

当用户登录时,用户键入的密码将转换为两种类型的单向函数,并由本地安全机构子系统服务 (LSASS) 进程保存在内存中。 如果用户使用本地帐户进行身份验证,则会将 NT OWF 与本地存储的 NT 哈希进行比较,如果两者匹配,则用户登录。 如果用户通过使用主机名访问资源来针对 Active Directory 域进行身份验证,则在针对密钥分发中心 (KDC)(通常是域控制器)的 Kerberos 登录中使用 NT 哈希。

以下情况使用不能使用 Kerberos:

针对仅运行 Windows NT 4.0 或更早版本的域进行身份验证 使用 IP 地址而不是主机名访问 Active Directory 域成员上的资源 访问不属于 Active Directory 域成员的计算机上的资源 访问属于 Active Directory 域但不受域信任的计算机上的资源 访问运行不支持 Kerberos 的计算机上的任何资源

在这些情况下,身份验证过程使用两种不同的协议,称为 LAN 管理器和 NTLM。 该过程从客户端向身份验证服务器请求质询开始。 收到质询后,客户端将计算对此质询的响应。 具体的过程是:首先将密码的两个哈希值(空值)填充到 168, 然后将每个哈希的 168 位拆分为三个 56 位 DES 密钥。 然后使用六个 DES 密钥对质询进行加密。 使用 LM 哈希生成的三个密文被连接起来,成为 LAN 管理器响应。 使用 NT 哈希生成的三个密文将串联并成为 NTLM 响应。

可以通过“网络安全:LAN 管理器身份验证级别”组策略设置中的“LM 兼容级别”设置来修改用于计算响应的函数。 如果该值设置为 1 或更低,则客户端将发送原始 LAN 管理器和 NTLM 响应。 如果设置为 2,则仅发送 NTLM 响应。 如果设置为 3 或更高,则使用两种协议的新版本。 NTLM 版本称为 NTLMv2。 LAN 管理器版本通常称为 LMv2。 两种协议都使用 NT 哈希来计算响应,并且都使用客户端质询,或者是取代服务器质询,或者是作为服务器质询的补充。 此外,如果 LM 兼容级别设置设置为 1 或更高,则 NTLM 响应带有时间戳,以帮助防止重播攻击。 有关 LM 兼容级别设置的信息,请参阅网络安全:LAN 管理器身份验证级别。

强密码

密码提供了防止对组织进行未授权的访问的第一道防线。 从 Windows Server 2003 开始,Windows 会在操作系统安装过程中检查管理员帐户密码的复杂性。 如果密码为空或不符合复杂性要求,“Windows 安装程序”对话框将提示你为管理员帐户创建强密码。 如果将此密码留空,你将无法通过网络访问此帐户。

弱密码使攻击者可以轻松访问你的计算机和网络,而强密码则更难破解。 下表比较了弱密码和强密码。

弱密码 强密码 空白 长度至少为 7 个字符 包含易于发现或已知的信息,例如用户名或域名 包含“机密”或随机信息 与以前的密码类似 与以前的密码大不相同 包含完整的字典单词 包含以下字符的组合:

- 大写字母

- 小写字母

- 数字

- 符号包括空格

J*p2leO4>F 便是一个强密码示例。

密码可以满足强密码的大多数标准,但仍然相当弱。 例如,尽管 Hello2U! 满足强密码的大多数标准,并且还满足密码策略的复杂性要求,但仍然是一个相对较弱的密码。 H!elZl2o 是一个强密码,因为字典单词穿插着符号、数字和其他字母。 请务必教育用户使用强密码的好处,并教他们如何创建真正的强密码。

你可以创建包含扩展 ANSI 字符集中的字符的密码。 使用扩展 ANSI 字符会增加创建密码时可以选择的字符数。 因此,密码破解软件破解包含这些扩展 ANSI 字符的密码可能需要比破解其他密码更多的时间。 在密码中使用扩展 ANSI 字符之前,请对其进行全面测试,以确保包含扩展 ANSI 字符的密码与组织使用的应用程序兼容。 如果您的组织使用几种不同的操作系统,则在密码中使用扩展 ANSI 字符时需要格外注意。 例如,这些系统可以在 ISO-8859-15 中标准化。 Windows 上的实际协议实现通常使用 UNICODE 或 UTF8,而不是实际的 ANSI 编码。

包含扩展 ANSI 字符集中字符的密码示例包括 kUµ!¶0o 和 Wf©$0k#»g¤5ªrd。

Windows 中的通行短语

通行短语是基于令牌的密码的一种不同形式,其中的令牌是单词而不是字符集中的符号。 通行短语的一个示例是包含特殊字符、数字、大写字母和小写字母的句子。 通行短语和密码之间的主要区别如下:

通行短语通常有空格;密码不能有空格。 通行短语比绝大多数单词长得多,更重要的是,比普通人能记住的任何随机字母字符串都长。

通常,符合策略中设置的字符限制的通行短语比密码更难破解,因为通行短语包含的字符更多。 存储密码或通行短语的是 LM 和 NT 哈希,LM 哈希是两者中较弱的。

有多种方法可以确保不存储 LM 哈希;其中之一是使用密码或密码长度超过 14 个字符。 还可以使用“网络安全:下次更改密码时不存储 LAN 管理器哈希值”组策略设置。 使用此策略设置全局关闭所有帐户的存储 LM 哈希。 更改将在下次更改密码时生效。 由于策略的效果不是立竿见影的,因此你不会立即注意到因不存储 LM 哈希而导致的任何潜在互操作性问题。

Windows 中可用的本地密码策略

你可以实施强制要求密码复杂性要求的密码策略设置。 有关此策略设置的详细信息,请参阅密码必须满足复杂性要求。 有关如何应用密码策略的信息,请参阅应用或修改密码策略。 有关所有可用密码策略设置的信息,请参阅密码策略。

通过 Active Directory 域服务 (AD DS) 提供的细粒度密码策略

从 Windows Server 2008 开始,你可以使用严格的密码策略指定多个密码策略,并将不同的密码限制和帐户锁定策略应用到单个域中的不同用户集。 例如,为了提高特权帐户的安全性,您可以将较严格的设置应用到特权帐户,而将不太严格的设置应用到其他用户的帐户。 或者在某些情况下,您可能希望为其密码与其他数据源同步的帐户应用特殊密码策略。

为了存储细化密码策略,AD DS 架构中存在两个新的对象类:

密码设置容器 密码设置

有关这些策略的详细信息,请参阅 AD DS:细化密码策略。



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3