信任问题:微软与苹果在数字信任与加密方面的差距
我对苹果在其操作系统和设备上实施加密的做法感到非常赞赏。总体而言,苹果在其设备上使用安全隔区(Secure Enclave)方面有着长期的优良记录,并且在采用最新的加密方法上推进了数字信任。相比之下,个人并不太认可微软在数字信任和加密实现方面的表现。在我看来,微软在采用先进加密技术方面往往落后于行业数年。
我可能会错,但我认为微软可能正在通过云端动态添加根证书授权(CA,Certificate Authority)的数字证书。这种做法并不安全,可能会引发一系列问题,甚至成为攻击的切入点。尤其是对于隔离系统(air-gapped systems),这将是个严重的问题。其他应用程序,如 Python,不会自动触发可信根证书的下载,这可能会导致某些 Python 程序出错。此外,微软还似乎在 Windows 的新安装中添加了过期的根 CA 证书,这也很不寻常。
为了让大家了解数字证书的重要性,让我们探讨一下它们的应用场景。
数字证书的重要性
在此背景下,X509证书包含了Bob的公钥,当Bob使用私钥为数据或软件签名时,Alice可以使用Bob的公钥(从数字证书中获取)来验证该签名。每个数字证书都需要一个通向根CA的证书链。如果没有根CA,证书将无法被信任。
TRCA中的可疑证书(受信任的根证书机构)
我在Mac的Parallels虚拟机中安装了Windows 11,对其根证书的使用感到惊讶。特别问题在于,一些根证书已经在多年前到期:
例如,我们可以看到一张证书的创建日期竟然可以追溯到1999年:
微软可能有一些遗留软件需要使用这些证书中包含的公钥,因此这些软件或许忽视了证书过期带来的风险。但这种情况不应发生!
我可能会有误解,但微软在处理加密方面的记录确实不佳,其历史上有许多不良实现的例子。
另一个奇怪的现象是,当我们安装全新的Windows 11系统时,仅有17个根证书被安装。这不足以覆盖所有主要的根证书机构。Windows似乎依赖于Windows更新中的CTL(证书信任列表)。因此,用户必须启用更新,否则很可能会收到许多未信任的根证书警告。
微软当前的受信任根证书列表(https://ccadb.my.salesforce-sites.com/microsoft/IncludedCACertificateReportForMSFT
)可以在此查看:
Microsoft Edge也会检查自己的CLT列表,然后将新的证书添加到TRCA(受信任的根证书机构)中。
示例:最长过期时间的证书
例如,DigiCert的一张证书有效期长达2046年:
这是一个4K RSA公钥:
使用PowerShell下载和检查当前可信证书
可以使用以下PowerShell代码来下载并检查当前的可信证书:
# list taken from https://learn.microsoft.com/en-us/security/trusted-root/participants-list
# THANK YOU @ASwisstone https://x.com/ASwisstone ! :)
$content = $null
$content = (Invoke-WebRequest https://ccadb-public.secure.force.com/microsoft/IncludedCACertificateReportForMSFTCSV).Content
if (!$content)
{
Write-Host 'Cannot download list of certs. Exiting.' -ForegroundColor Red
}
else
{
$legitCerts = ($content -join '' | ConvertFrom-Csv).'SHA-1 Fingerprint'
#Grab local certs:
$machineRootCerts = dir Cert:LocalMachineRoot
$userRootCerts = dir Cert:CurrentUserRoot
#analyze
$allRootCerts = $machineRootCerts + $userRootCerts
$diffCerts = $allRootCerts | Where-Object {$_.Thumbprint -notin $legitCerts}
#display
if ($diffCerts.Count -eq 0)
{
Write-Host 'All your certs are present on the list.' -ForegroundColor Green
}
foreach ($cert in $diffCerts)
{
Write-Host (($cert.PSPath -split '::')[1]+"`t"+$cert.Issuer) -ForegroundColor Red
}
}
结论
总体来看,微软在数字证书管理方面存在一些让人担忧的问题,特别是对过期和旧证书的使用,可能为潜在的安全风险打开了大门。对于使用Windows系统的用户,保持更新以及定期检查证书的有效性至关重要。
原文始发于微信公众号(独眼情报):微软的愚蠢根证书系统
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论