4

出厂自带的Windows是怎么激活的?兼谈国产操作系统的收费困境

 3 years ago
source link: https://zhuanlan.zhihu.com/p/369673509
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

出厂自带的Windows是怎么激活的?兼谈国产操作系统的收费困境

中央处理器 (CPU)话题下的优秀答主

大家买回家的笔记本电脑,大都自带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贴在笔记本的底下:

v2-7df13714875977af5d614999944f3d8b_720w.jpg

还把该key打印出来,不干胶贴在手册里面。但用户手册经常丢失,贴纸时间长了也容易花掉。而且大家千万别高估用户的智商,曾经出过用户把CDROM当作咖啡架,让用户"Press Any Key"还打电话来问Any Key是哪个Key的各种奇事。让他们老老实实照着输入这些码,会带来很多客服问题。

如此说来,把Key放在BIOS里面,和机器一起给用户显然是一个更好的办法。它需要保证三点:

1.认机器不认人。

2.小改机器配置不需要激活。

3.大改机器配置需要重新激活。

这种激活技术,也叫做OEM Activation[1],简写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工具,微软在官网详细说明了每个工具干什么和有谁来提供[2]。整个过程主要分产线和用户端两方面:

产线:

  • 系统硬件生产完毕,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的版权费漏洞问题,造福整个产业链!

最后,如果大家对固件安全感兴趣,推荐大家参加固件云课堂,里面专门由安全讲座:

卓易云课堂​cloudclass-manage.zqtong.com

迎大家关注本专栏和用微信扫描下方二维码加入微信公众号"UEFIBlog",在那里有最新的文章。

用微信扫描二维码加入UEFIBlog公众号


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK