Aldebaran

人生最棒的感觉,就是你做到别人说你做不到的事。

0%

关于KMS激活服务(Key Management Service)

三田寺円

前言

Windows XP和Server 2003要想避开激活机制的最好办法就是去下载VOL版或者MSDN的操作系统,只要输入正确的序列号,甚至有的根本不需要序列号,安装完以后也根本不用激活,并且只要运行一个脚本程序,一个免费的正版Windows就诞生了。

从Windows Vista开始,微软改进了密钥管理办法,针对批量许可证客户推出了新的密钥类型:密钥管理服KMS(Key Management Service)以及多次激活密钥MAK(Multiple Activation Key)。后者允许对应密钥能多次永久激活,而KMS主要针对大体量的客户进行动态激活管理。

这里我们只讨论KMS。

图解

01

基本原理

首先我们看微软官方的说明

  • How KMS Works

      KMS activation requires TCP/IP connectivity. By default, KMS hosts and client computers use DNS to publish and find the KMS service. The default settings can be used, which require little to no administrative action, or KMS hosts and client computers can be manually configured based on network configuration and security requirements.
    
  • KMS Activation Renewal

      KMS activations are valid for 180 days—the activation validity interval. To remain activated, KMS client computers must renew their activation by connecting to the KMS host at least once every 180 days. By default, KMS client computers attempt to renew their activation every seven days. If KMS activation fails , the client will retry every two hours. After a client computer’s activation is renewed, the activation validity interval begins again.
    

由于Windows Server 2008/2012和Windows Vista Enterprise以及Windows7/8/8.1都是为公司而设计,所以在一个公司中肯定会有很多台配置相等的计算机,并用一个服务器建立起一个局域网(LAN),而KMS正好利用这一点,它要求局域网中必须有一台KMS服务器,KMS服务器的作用是给局域网中的所有计算机的操作系统提供一个有效的产品序列号,然后计算机里面的KMS服务就会自动将系统激活。每一个由KMS Server提供的序列号的有效期只有180天,而不是其他版本的永久使用一个序列号。所以操作者必须在快到期的时候在此手动连接KMS服务器让它提供一个新的序列号,否则180天以后就会回到试用版本状态。

简而言之就是KMS客户端向KMS服务器定期注册来维持激活状态激活

值得注意的是,KMS的激活方式并非永久激活,而是有180天的有效期,未激活状态有30天的宽限期,期间默认会每2小时尝试激活,期间如果仍未激活那么系统部分功能会受到影响同时可能频繁重启。激活成功后默认每7天客户端会连接KMS服务器更新激活状态并刷新有效期,如果上次激活成功后的180天内客户端没有成功更新激活状态,那么系统会再次进入未激活状态。

KMS 激活流程

部署KMS激活的第一步是安装Windows KMS Host key并激活KMS主机,KMS主机激活完成后,KMS将在DNS服务器中使用SRV(服务资源记录)存储KMS主机位置。KMS主机默认情况下会自动通过动态DNS (Dynamic DNS)发布,KMS客户端(使用 KMS激活的Win8/8.1)通过发布的信息查找和连接KMS主机。
KMS主机会保存一个“激活计数”作为激活Windows 8/8.1 客户端的条件之一。初次部署时,每当一台新的Windows 8/8.1客户端成功连接到KMS主机后,该激活计数会增加。当激活计数达到阈值25时,所有Windows 8客户端都会被自动激活。该激活计数将由KMS主机进行维护,KMS主机将自动移除超过30天CMID记录。

1. KMS主机安装Windows 8 KMS Host key
2. 通过Internet或者电话激活KMS主机
3. KMS服务每次启动时都会在DNS中添加SRV record服务资源记录
4. KMS客户端每次向DNS查询KMS服务信息时,将从DNS提供的服务资源记录列表随机选择一个KMS主机。如果选择的KMS主机没有响应,KMS客户端计算机将从它的SRV记录列表中删除该KMS主机记录,同时随机从列表中选择一个新的KMS主机。
5. 客户端计算机通过TCP匿名远程过程调用连接到KMS主机,默认端口为1688。在客户端计算机和KMS主机建立TCP会话之后,客户端计算机会产生CMID客户端标识 然后向KMS主机发送请求记录。这条请求记录会用AES加密算法做签名。已经激活的客户端会每7天发发送一次请求刷新激活记录,未激活的 Windows 8 客户端每2小时发送一次请求进行激活。
注意:如果缓存KMS主机无法响应后续的激活状态更新,KMS客户端计算机将会通过DNS中KMS SRV记录重新查找新的KMS主机。
6. KMS主机会将客户端标识(CMID)保存在KMS主机上的一张表中。每个激活请求在该表中的存留时间为30天。当某个Windows 8 客户端刷新它的激活,那么该客户端的缓存CMID将从表中删除,同时创建一个新的记录,存留周期重新变为30天。如果某个KMS客户端没有在30天之内刷新它的激活,那么相对应的CMID将会从表中删除同时激活计数减1。
7. KMS主机将激活计数返回给客户端, 客户端将激活计数的值与授权策略对比,如果满足激活阈值,则进行激活。默认情况下Windows 8 客户端每周自动进行一次激活。

这里提到了两个角色:

  • KMS Host

    即KMS服务器,基于Windows服务器安装批量激活服务角色,使用特定的激活码向微软注册KMS Host,用于管理和维护客户端的激活请求和数据。

    KMS服务默认端口号是TCP 1688。

  • KMS Client

    即KMS客户端,不同于零售版本以及MAK密钥,针对不同的操作系统版本,KMS有固定的产品密钥,使用对应的产品密钥向KMS服务器注册激活,并定期请求KMS刷新激活状态。

    各版本Windows系统产品密钥参考 https://technet.microsoft.com/en-us/library/jj612867.aspx

KMS的利用

能够通过KMS进行激活的一般称为VL版,即VOLUME授权版,一般不会单独在零售市场进行发售,一般是直接向企业提供电子ISO映像进行批量授权安装,基于对KMS原理研究成果,我们可以自行搭建KMS激活服务器,实现每180天一次的自动激活,使得系统一直保持激活状态。

现存主流的激活工具:KMS Activator与KMSpico,都是KMS的利用。