Windows XP Embedded(嵌入式) 开发人员的安全性考虑

windows XP Embedded 开发人员的安全性考虑


Microsoft Corporation
2002 年 3 月

 

适用于:
   Microsoft windows XP Embedded

摘要:Microsoft windows XP Embedded 为开发人员提供了一个 windows XP 操作系统的组件化版本。开发人员可以精确挑选满足其设计需要的组件,从而减少他们的设计所占用的空间。本文从技术角度概述了 windows XP Embedded 提供的组件化环境中的安全性考虑。

目录

  • 简介
  • 独特的安全性和可靠性优点
  • 针对基准配置的安全性考虑
  • 嵌入式设备面临的威胁和攻击
  • 将安全保护功能映射到组件
  • 安全审查核对表
  • 详细信息
  • 关于作者

简介

Microsoft® windows® XP Embedded 是 Microsoft windows NT® Embedded 4.0 的后续产品。Windows XP Embedded 采用与 windows XP Professional 相同的二进制文件,使您能够快速开发可靠的、功能齐全的连接设备。

windows XP Embedded 组件数据库包括大约 10,000 个组件。您可以建立许多 windows XP Embedded 运行时映像,从安全要求最低的基本仅内核配置到功能齐全的设备(包含联网、多媒体、安全保护以及其他通常在安装有 windows XP Professional 的计算机上可以找到的功能)。

独特的安全性和可靠性优点

windows XP Embedded 继承了 windows XP Professional 中的所有安全保护功能。

此外,Windows XP Embedded 还具有以下优点:

  • 代码更少 - 您可以忽略您的产品不需要的组件,从而降低操作系统 (OS) 的复杂性并增强可靠性。
  • 硬件更少 - 您可以只包括设计中所需要的硬件,从而提高可靠性。这也有助于实现一个更为安全的系统,因为其中的硬件访问点更少。
  • 可完全控制访问点 - 您可以控制用户接触到的输入和输出设备,从而能够精确指定支持哪些设备。嵌入式设备可以配置为一个封闭式系统,并且可以有选择地支持设备。例如,您可以通过谨慎选择设备驱动程序组件,禁止支持可以从外部访问的设备,例如 USB 设备、鼠标、键盘、游戏控制器、软盘驱动器和网络等。
  • 单一目标配置 - 您可以针对单一目标来配置设备。可以控制设备上能够运行哪些应用程序以及是否可以安装第三方应用程序,这样可以减少出现应用程序兼容性问题或受到安全攻击的可能性。
  • 网络脆弱性降低 - 通过只选择目标设备所需要的组件,降低安全方面的脆弱性。例如,如果不是出于维护的需要,您可以删除网络的 Telnet 功能,从而避免为攻击者提供一个可能的入口点。
  • 防止修改系统数据或应用程序 - 您可以使用增强型写入筛选器 (EWF) 组件使只读存储卷在 OS 上显示为读/写设备。这是通过将磁盘写入操作重定向到一个替代的可写存储位置(例如,系统内存)或者重定向到一个特殊磁盘覆盖分区来实现的。例如,当 El Torito CD-ROM 启动组件与 EWF(配置为将磁盘写入操作重定向到系统内存)一起使用时,您可以从只读 CD-ROM 介质启动。
  • 禁止安装劣质应用程序 - 可以使用增强型写入筛选器 (EWF) 禁止安装劣质应用程序,并禁止更改其他永久性配置。如果设计中不包含读/写存储设备,则在启动之间该设计将被视为无状态,因为必须保证系统每次都以同样的方式启动。启动之间对 OS 所做的任何更改都只保存在系统内存中,并且在系统重新启动时这些更改将丢失。例如,这种技术可以用于赌博性游戏设备,某些国家(地区)的法律要求这些设备在系统启动之间不能保留任何信息。
  • 备份和恢复优势 - 以下两个优点使您能够创建一个更加安全的备份和恢复环境:
    • 系统备份和恢复速度更快。由于设备减少了存储所占用的空间,因此可以更快更可靠地执行备份和恢复操作。
    • 默认恢复。使用默认恢复时,无状态的 El Torito CD-ROM 系统将自动使系统在重新启动或重新开机时恢复到原始状态。这样可以免去专门的备份或恢复过程以及与备份和恢复相关的相应安全问题。
  • 无需移动式部件 - 通过使用不带硬盘驱动器的存储设备(例如电子盘 [Disk On Chip]、闪存设备以及其他基于硅元件的存储设备),可以使您的设计更加强壮。
  • 简化了设计测试和验证 - 较少的设计量可以减少系统的测试工作,从而允许您更专注于嵌入式应用程序的测试。

针对基准配置的安全性考虑

您可以通过以下基准配置之一使用目标设计器来建立您的基本设计配置:

  • 仅内核 - 仅内核配置不支持 Microsoft Win32® 应用程序编程接口 (API),并且不包含任何内置安全保护功能或工具。
  • Minlogon - 与 Winlogon 相比,Minlogon 配置的登录进程的可靠性要差一些。默认情况下,Minlogon 不包括本地安全验证子系统进程 (LSASS)。

    选择 Minlogon 之前,请确保您不要求 LSASS 用户身份验证。

    如果没有 LSASS,Minlogon 就没有标准的 windows XP Professional 中所提供的交互式登录和身份验证功能,而总是将用户登录为系统用户。

    即使选择了 Minlogon 组件,目标设计器也可以在运行时映像中包括 LSASS。如果所包括的其他组件要求使用 LSASS,或者手动添加了本地安全授权子系统组件,就会发生这种情况。

    LSASS 组件的可见性设置较低,因此,您需要降低可见性级别才能在目标设计器中看到该组件。有关详细信息,请参阅 windows XP Embedded 帮助文档。

  • Winlogon - Winlogon 配置使用 windows XP Professional 提供的标准 windows 登录进程。

    在 windows XP Professional 中,会话管理器 Smss.exe 是系统中创建的第一个用户模式进程。而会话管理器将启动 windows 子系统进程和标准的 windows 登录进程。标准的 windows 登录进程要求本地安全验证子系统进程 (LSASS)。

    LSASS 是一种用户模式进程,它负责以下几个方面的工作:

    • 本地系统安全策略,例如,允许哪些用户登录到计算机、密码策略、授予用户和组的权限以及系统安全审核设置。
    • 用户身份验证。
    • 将安全审核消息发送到事件日志。

    即使开始指定了仅内核或 Minlogon 配置,您添加到设计中的某些组件也可能会需要 Winlogon 基准配置。这些组件表明自己需要 Winlogon,从而导致在运行目标设计器相关性检查时会自动将 Winlogon 组件添加到您的设计中。

    注意:默认的用户密码为空白,应将其更改为一个可靠的密码,以确保适当的身份验证安全保护。

下表显示了可用的设计模板以及它们是支持 Minlogon 还是 Winlogon。

设计模板 Minlogon Winlogon
基于 windows 的终端(专业版)   X
信息设备   X
基本机顶盒 X X
数字机顶盒 X X
高级机顶盒   X
展台/游戏控制台 X X
家用网关   X
零售点终端   X
网络连接存储   X

选择设计模板时,应考虑以下问题:

  • 目标用户是谁,需要什么级别的访问安全性?
  • 如果设备包含敏感数据,那么如何确保数据的安全?或如何防止数据被破坏或泄漏?
  • 针对与该设备进行通信的任何其他设备或用户,将采取什么样的安全措施?
  • 恶意实体可能会通过什么方法实际访问该设备?设备是否具有足够的安全保护?

有关详细信息,请参阅 windows XP Embedded 帮助文档。

嵌入式设备面临的威胁和攻击

Michael Howard 和 David LeBlanc 所著的《Writing Secure Code》一书提供了有关安全设计、安全编码以及测试技术的实用信息。

规避技术列出了 windows XP 的安全保护功能,这些功能必须映射到将安全保护功能映射到组件中所述的组件。

下表使用《Writing Secure Code》一书中介绍的 STRIDE 模型,介绍了主要的安全威胁以及可以用来规避风险的相应 windows XP Professional 安全保护功能。

威胁 说明 规避技术
欺骗性身份 从本地或远程非法访问系统。 身份验证支持安全保护功能:摘要式身份验证、Passport 身份验证、Kerberos 身份验证和 X.509 证书身份验证等。
篡改数据 恶意修改数据。 授权支持和防篡改安全保护功能:访问控制列表 (ACL)、权限、加密文件系统 (EFS)、IPSec 和数字签名等。
否认 如果另一方无法提供证明,用户会拒绝承认执行过某个操作。 身份验证支持、授权支持以及安全支持保护功能:审核、IPSec 和数字签名等。
信息泄露 将信息泄露给没有访问权的人。 授权和防篡改的安全保护功能:授权、增强保密协议和加密等。
拒绝服务 拒绝向有效用户提供服务。 Internet 连接安全保护支持和 API 安全保护功能:防火墙、身份验证、授权、筛选和限制等。
提升权限 没有权限的用户获得特许访问权,从而危害或破坏系统。 身份验证、授权和安全管理保护功能:组策略、软件/系统限制等。

将安全保护功能映射到组件

windows XP Embedded 支持与 windows XP Professional 相同的可配置安全选项。默认安全设置在 Defltwk.inf 中定义。要了解如何将自定义安全设置应用到嵌入式设备,请参阅“系统设计中的安全性”指南。

以下各表包含了有关 windows XP 安全保护功能以及它们如何与组件相关的信息。每一个功能都需要一个拥有关键二进制文件的组件以及组件的相关性。

某些列出的组件可能不可见。如果要看到这些组件,您需要在目标设计器中降低其可见性级别。

本节讨论以下主题:

  • 身份验证支持
  • 授权支持
  • API 支持
  • 存储介质上的防篡改和数据保密功能
  • 网络上的防篡改和数据保密功能
  • 无线安全保护支持
  • Internet 连接安全保护支持
  • 安全管理支持

身份验证支持

身份验证是一个用户或设备向另一个当事人、用户或设备证明其身份的过程。下表显示了如何将身份验证功能映射到组件。

功能 关键二进制文件 组件
公用二进制
(适用于所有身份验证功能)
Lsass.exe、Lsasrv.dll 本地安全授权子系统 (LSASS)
  Secur32.dll 原型:Secur32
  Crypt32.dll 原型:Crypt32
  Cryptdll.dll 原型:Cryptdll
  Netapi32.dll 原型:Netapi32
  Netlogon.dll Netlogon/NetJoin
基本
内置于 HTTP 中的本机身份验证机制。如果使用该功能,则需要一个具有强大的服务器端身份验证的 SSL 加密链接,以确保连接的安全性。
Advapi32.dll Win32 API - 高级
摘要式
一种简单的询问和响应协议。用于取代基本身份验证。
Wdigest.dll 摘要式身份验证安全程序包
NTLM
windows NT LAN 管理器。Windows NT 4.0 上的本机身份验证协议。包括跨域身份验证。Windows XP 为了保持向后兼容,也支持 NTLM。
Msv1_0.dll 本地安全授权子系统 (LSASS)
Kerberos
提供安全的行业标准身份验证。
Kerberos.dll 本地安全授权子系统 (LSASS)
Passport
联机用户身份验证。用户只需创建一个用户名和密码,便可以轻松安全地访问所有 Passport 帐户。
Wininet.dll Wininet 库
凭据管理器
用于密码信息的安全存储。使用此功能,用户只需输入一次用户名和密码,系统将在后续访问中自动提供该信息。
Credui.dll 凭据管理用户界面
  Keymgr.dll 密钥管理器
  Advapi32.dll Win32 API - 高级
安全通道(X.509 证书)
支持使用数字签名证书的多种级别的证书权限层次结构。
Schannel.dll 本地安全授权子系统 (LSASS)
  Cryptnet.dll 加密网络服务
智能卡
windows XP Embedded 将智能卡功能集成到 OS 之中,包括支持通过智能卡登录到终端服务会话。
Scardsvr.exe、Scardssp.dll 智能卡子系统
  Winscard.dll 原型:Winscard

授权支持

一旦当事人、用户或计算机通过身份验证,授权进程将确定该当事人可以执行什么操作。下表显示如何将授权支持功能映射到组件。

功能 关键二进制文件 组件
访问控制列表 (ACL)、当事人、权限
一种保护系统对象的机制。例如,可以将文件夹或文件共享配置为接受默认的 ACL 设置,也可以实施自定义的 ACL 设置以限制对对象的访问。
Ntdll.dll 原型:Ntdll
  Lsass.exe、Lsasrv.dll 本地安全授权子系统 (LSASS)
  Authz.dll 原型:AuthZ
GPO、限制(软件、计算机)
组策略对象管理和控制。使用组策略定义应用到计算机或用户的策略设置。
Gptext.dll 组策略客户端核心
  Profmap 原型:Profmap
本地、漫游配置文件 Userenv.dll 本地配置文件核心
    漫游配置文件
审核 Ntdll.dll 原型:Ntdll
  Lsass.exe、Lsasrv.dll 本地安全授权子系统 (LSASS)
  Msaudite.dll 审核资源 DLL
  Eventlog.dll 事件日志

API 支持

您可以利用内置到 windows XP 中的全功能安全 API 支持。下表显示了如何将 API 支持功能映射到组件。

功能 关键二进制文件 组件
CryptoAPI
CryptoAPI 提供的服务可以使应用程序开发人员增加应用程序的安全性。包括编码到 ASN.1 和从 ASN.1 解码的功能、加密和解密数据的功能以及使用数字证书进行身份验证的功能。
Crypt32.dll 原型:Crypt32
  Cryptnet.dll 加密网络服务
SSPI(安全保护支持提供程序接口)
用于凭据管理、上下文管理、邮件支持和程序包管理的 API。
Secur32.dll 原型:Secur32
  Ksecdd.sys 原型:Ksecdd
  Lsasrv.dll 本地安全授权子系统 (LSASS)

存储介质上的防篡改和数据保密功能

嵌入式运行时配置中的文件系统的安全级别在很大程度上是由您所选择的文件系统组件确定的。下表显示了如何将存储介质上的防篡改和数据保密功能映射到组件。

功能 关键二进制文件 组件
EFS
支持多用户的加密文件系统 (EFS) 是 NTFS 文件系统 (NTFS) 的一部分。EFS 使用随机生成的密钥对每个文件进行加密,该密钥对用户来说是透明的。
Efsadu.dll 用户界面核心
  Ntfs.sys NTFS
  Crypt32.dll 原型:Crypt32
  Lsasrv.dll 本地安全授权子系统 (LSASS)
NTFS
windows NT 文件系统支持使用访问控制列表 (ACL) 来保护文件系统对象。
Ntfs.sys NTFS
WFP
windows 文件保护功能可防止丢失或损坏重要的系统文件。
Sfc.dll 原型:Sfc
  Sfcfiles.dll 原型:Sfcfiles
  Sfc_os.dll 原型:Sfcos
回滚驱动程序
windows XP 系统恢复功能的一部分。使用回滚驱动程序功能可以将设备驱动程序替换为以前安装的版本。
Newdev.dll “添加硬件”控制面板
  Setupapi.dll 原型:Setupapi
系统恢复
一种定期创建系统快照的子系统,允许您将 OS 恢复为以前的状态。
Sr.sys、Srrstr.dll、Srsvc.dll、Srclient.dll 系统恢复核心
卷的影子副本服务
管理和实现卷的影子副本,用于备份和其他目的。
Volsnap.sys 卷的影子副本服务
  Srv.sys 文件共享

网络上的防篡改和数据保密功能

嵌入式运行时映像中的网络安全级别在很大程度上是由您所选择的网络组件决定的。下表显示了如何将网络上的防篡改和数据保密功能映射到组件。

功能 关键二进制文件 组件
IPSec Internet 协议 (IP) 安全保护。
使用加密安全服务,使组织能够通过虚拟专用网络 (VPN) 安全地传输数据。
Ipsec.sys、Ipsecsvc.dll、Winipsec.dll IP 安全服务
SSL/TLS
安全套接字层。HTTPS 是用于 SSL 端口 443 的 URL 方案的名称。
Schannel.dll 本地安全授权子系统 (LSASS)
  Cryptnet.dll 加密网络服务
  Secur32.dll 原型:Secur32
  Crypt32.dll 原型:Crypt32
  Cryptdll.dll 原型:Cryptdll
  Netapi32.dll 原型:Netapi32
  Netlogon.dll Netlogon/NetJoin
安全 RPC
MSRPC 将 windows 安全保护应用到 COM+、DCOM 和 RPC 中。
Rpcrt4.dll RPC 本地支持
  Secur32.dll 原型:Secur32
  Authz.dll 原型:AuthZ
    Kerberos 上的安全 RPC
    协商上的安全 RPC
    NTLM 上的安全 RPC
    SSL 上的安全 RPC

无线安全保护支持

无线网络连接提出了一系列新的需要考虑的安全问题。下表显示了如何将 802.11 / 无线安全保护支持功能映射到组件。

功能 关键二进制文件 组件
有线设备隐私 (WEP) Wzcsvc.dll 原型:Wzcsvc
  Wzcsapi.dll 无线零配置

Internet 连接安全保护支持

您可以使用功能完备的 Internet 连接安全保护支持。下表显示了如何将 Internet 连接安全保护支持功能映射到组件。

功能 关键二进制文件 组件
Internet 连接防火墙 (ICF)
保护设备免受常见的 Internet 攻击。
Hnetcfg.dll、Alg.exe Internet 连接共享和防火墙
S/MIME
采用加密来保护电子邮件的安全。
Mapi32.dll Mapi32 库
  Cryptnet.dll 加密网络服务
  Crypt32.dll 原型:Crypt32
WebDAV/Web 文件夹
如果您使用加密文件系统 (EFS) 对文件进行加密和解密,并且希望在网络上共享这些文件时使其保持加密状态,请使用 Web 分布式创作和版本控制 (WebDAV) 以及 Web 文件夹。
Msonsext.dll Web 文件夹
HTTPS
传统的 URL 方案 HTTP 使用端口 80,并且不具有任何安全性。HTTPS URL 方案使用端口 443,并且结合了 SSL/TLS 加密安全措施。
Wininet.dll Wininet 库
  Schannel.dll 本地安全授权子系统 (LSASS)
  Cryptnet.dll 加密网络服务
  Secur32.dll 原型:Secur32
  Crypt32.dll 原型:Crypt32
  Cryptdll.dll 原型:Cryptdll
  Netapi32.dll 原型:Netapi32
  Netlogon.dll Netlogon/NetJoin
PPTP/L2TP
通过使用 VPN 连接(使用点对点隧道协议 [PPTP]),您可以通过 Internet 或其他公共网络安全地访问专用网络。将第 2 级隧道协议 (L2TP) 与 IPSec 配合使用时,可以提供安全的数据传输,就象在公司 Web 站点的单个 LAN 内传输数据一样。
Raspptp.sys、Ras.sys 拨号网络公用库

安全管理支持

在 windows XP Embedded 中,您可以利用 windows XP Professional 中包含的全套管理工具。下表显示了如何将安全管理支持功能映射到组件。

功能 关键二进制文件 组件
证书管理 Certmgr.dll 证书 MMC 管理单元工具
安全配置、分析 Scesrv.dll windows 安全配置编辑器引擎
  Scecli.dll windows 安全配置编辑器客户端引擎
  Samlib.dll 安全帐户管理器客户端
  Samsrv.lib 安全帐户管理器服务器库
  Wsecedit.dll 安全设置编辑器
  Secedit.exe 安全配置引擎命令行实用程序
IP 安全管理 Ipsecsnp.dll、Ipsmsnap.dll IP 安全工具和用户界面
组策略管理 Gpedit.dll 组策略核心管理 MMC 管理单元
本地用户和组管理 Nusrmgr.cpl “用户”控制面板
凭据管理 Credui.dll 凭据管理用户界面
  Keymgr.dll 密钥管理器

有关详细信息,请参阅 windows XP Embedded 帮助文档。

安全审查核对表

下面的列表将有助于解决与 windows XP Embedded 设备及其应用程序相关的安全问题:

  • 在为运行时映像开发技术规范和应用程序时,请使用本文所述的安全保护资源。
  • 有关最新的 Microsoft 安全和快速修复工程 (QFE) 更新信息,请访问 Windows Embedded 主页。
  • 请阅读 windows XP Embedded 联机帮助中的安全保护信息。
  • 仅包括嵌入式设备所需的驱动程序组件和应用程序。
  • 在设计中减少网络端口的使用。删除可能带来安全威胁的所有网络接口。例如,如果不需要使用 Telnet 和简单网络管理协议 (SNMP) 组件,请将其删除。
  • 确保没有可以成为恶意攻击的访问点的其他物理硬件接口。
  • 考虑使用 NTFS 文件系统 (NTFS),该系统可以为您的数据文件提供安全的访问控制列表 (ACL)。使用加密文件系统 (EFS) 功能对数据文件进行本地加密。如果需要通过网络对 EFS 保护的文件进行安全加密,请使用 WebDAV/Web 文件夹。
  • 使用 Internet 连接防火墙 (ICF) 以禁止不安全或未授权的网络通信。
  • 审查当事人所要求的权限。

详细信息

有关网络安全的详细信息,请参阅 Michael Howard 和 David Leblanc 所著《Writing Secure Code》一书(Microsoft Press,2002 年出版),以及 Keith Brown 所著《Programming windows Security》一书(Addison Wesley Longman, Inc.,2000 年出版)。

下面的 Web 站点可以提供更多的安全保护信息:

  • 有关安全保护的一般信息,请参阅 Security(英文)主页。
  • 有关 windows Embedded 产品的信息,请参阅 Windows Embedded 主页。
  • 有关开发人员问题的信息,请参阅 MSDN Library(英文)。
  • 有关 windows XP 的信息,请参阅 Windows XP(英文)主页。
  • 有关 windows XP Embedded 安全保护的详细信息,请参阅产品说明文档中的“安全保护”。

关于作者

本文撰稿者包括但不仅限于 windows Embedded 组、Security 组和 Componentization 组的成员。

你可能感兴趣的:(中文MSDN)