大家买回家的笔记本电脑,大都自带Windows 10。拿回家上上网,不知不觉,Windows就自动被激活了。甚至自己重新安装Windows,也不用手动输入那一长串恼人的序列码,就会自动激活。它是怎么做到的呢?
理解整个流程相当重要。它保证了操作系统提供商,在没有从最终消费者那里拿到一分钱的货款的情况下,可以从硬件生产商家(OEM)那里收到应得的费用,从而有足够的资金进行操作系统的维护和升级,进入良性循环。它的安全性、唯一性和不可否认性,不但可以减少盗版,也可以让某些小OEM不能隐瞒产量(大OEM相信不敢)。
国产操作系统多基于Linux,如麒麟和统信UOS。和大多数人的认知不同,国产Linux的发行版是收费的,而且收费主要是通过OEM收取过来。长久以来,如何保证OEM足额的缴纳版权费,是各个国产厂商头疼的大事。很有意思的是,BIOS厂商也有同样的问题,也很头疼如何知道OEM到底卖了多少个主板,从而确定是不是收到了足够的标签费。我们今天就Windows的OEM激活拓展开来,先看看Windows OEM激活的过程,最后探讨国产操作系统厂商如何借鉴。
OEM Activation (OA)
Windows的是卖钱的,售卖过程就是给用户花钱得到一个Product Key,是一组5 x 5的串号,用在一个电脑上。当然OEM等是成批购买,价格相当便宜。曾经笔记本出厂就已经激活了Windows,为了让用户可以重装Windows时可以找到该Key,用一个贴纸把Key贴在笔记本的底下:
还把该key打印出来,不干胶贴在手册里面。但用户手册经常丢失,贴纸时间长了也容易花掉。而且大家千万别高估用户的智商,曾经出过用户把CDROM当作咖啡架,让用户"Press Any Key"还打电话来问Any Key是哪个Key的各种奇事。让他们老老实实照着输入这些码,会带来很多客服问题。
如此说来,把Key放在BIOS里面,和机器一起给用户显然是一个更好的办法。它需要保证三点:
1.认机器不认人。
2.小改机器配置不需要激活。
3.大改机器配置需要重新激活。
这种激活技术,也叫做OEM Activation,简写OA,到Windows 10为止,已经发展了三代:
1.OA 1.0:也叫做SLP。第一代OA,支持Windows XP和Windows server 2003。它很容易被绕过,已完全淘汰。
2.OA 2.0/2.1:BIOS在ACPI表里面报告SLIC表(Software Licensing Table Specification)。用在Windows Vista、Windows 7和Windows Server 2008中。它也已经被破解,已淘汰。
3. OA 3.0:我们经常称它OA3,Windows 8引入,也用在了Windows 10中。它引入了一个ACPI table:Microsoft Data Management (MSDM) table。而它的使能过程是我们今天的主要内容。
什么是OA3和怎么用OA3?
OA3的核心是BIOS包含一张MSDM表。整个表相当简单:
来源:参考资料1
它的主要内容在最后的Software Licensing Structure结构中,我用RW抓出我的机器的MSDM表如下:
如果大家仔细比较SLIC和MSDM,会发现它们很像,而实际升级主要在OA3的制作和激活过程。
OA3使能过程包含两个工具:OA3Tool和OA3 BIOS工具,微软在官网详细说明了每个工具干什么和有谁来提供。整个过程主要分产线和用户端两方面:
产线:
系统硬件生产完毕,Windows 10的镜像已经被块拷贝到目标硬盘上。在WinPE中运行OA3Tool.exe来问Key server要一个Key。会生成一个OA3.bin,包含MSDM表。运行一个BIOS工具来将这个OA3.bin注入到BIOS中。BIOS一般已经在固件中预留了一个dummy的OA3.bin,这个工具一般会发起一个SMI,让SMI来更新OA3.bin。这个工具是每家BIOS厂商不同而不同的。再运行一次OA3Tool.exe (参数不同)。它会根据硬件信息生成一个128 bit的hash值,代表当前硬件。这个hash和OA3.bin中的Product Key会被当做CBR(Computer Build report)报告给微软的服务。注意整个过程是产线的脚本自动完成的。
用户:
用户开机后4小时之后,系统开始自动激活。它读取MSDM中的Product Key,并根据当时的硬件自动算出一个新的128bit的硬件Hash,两个一起传给微软激活服务器。微软激活服务器发现这两个信息再数据库中存在,发送准许激活消息,Windows正式激活。激活信息被存在硬盘中,每次启动都会检查硬件Hash有没有变化。如果变化很大,则需要重新激活。至于什么是硬件大变,微软官方的说法:
If you make significant hardware changes on your device, such as replacing your motherboard, Windows will no longer find a license that matches your device, and you’ll need to reactivate Windows to get it up and running.
大概是,换主板当然不行,换硬盘可以;换网卡不行,添加网卡可以。
结束语
国产操作系统已经起步,两强收入相当可观:
但它们的收入相比微软从Windows里面攫取的金钱来看,那是远远不如。国产操作系统需要更多的资金来继续巩固发展,要雇佣大量的开发人员,据了解,国产两强的开发人员都有数千人,开支巨大。
OA3是微软的体系,当然国产操作系统不能用,但这不妨碍我们可以从中借鉴一些有用的思路。但这还不够,微软利用它的强势地位,让几乎所有BIOS厂商都支持OA3,国产操作系统各自为战,很难像微软一样整合上下游,来保护自己的利益。这就同安全启动的证书一样,困扰着国产操作系统。
也许需要在国家层面制定一个统一的标准,来规范操作系统的各种接口行为,包括今天介绍的操作系统激活,和一直困扰大家的安全启动证书问题。顺便也可以解决BIOS的版权费漏洞问题,造福整个产业链!