Windows加密是安全体系的重要基础和组成部分。现代CPU的保护模式是系统安全的硬件基石,基于CPU硬件的特权分级,Windows让自身的关键系统代码运行在高处理器特权级的内核模式,各种应用程序则运行在低处理器特权级的用户态,保证了系统层面的基本安全控制逻辑(如内存、文件等系统资源的访问控制机制等)的有效性。加密技术与系统安全控制逻辑的结合,使得用户信息在面对一定程度上不可靠的存储和传输环境时,如计算机失窃、存在网络嗅探的情形下,仍能保持其私密性、不可篡改的完整性等安全属性。

Windows加密技术可以从两个层面予以讨论。其一是基本的加密算法服务,这是基本的层面,在这个层面上,摘要,对称加密,非对称加密等基本的加密算法可以通过CryptoAPI等操作系统API接口,为应用程序所用。其二是Windows系统加密功能,这个层面的内容包括EFS,用户信息保护,SSL等网络加密协议等等。Windows在其基本加密算法服务的基础上,建立一个较为完善的加密系统。这个加密系统一方面保护Windows系统(单机和域)的安全,另一方面,也提供了可供应用程序直接使用的系统级加密保护服务。

Windows加密算法以服务提供软件包(CSP)机制组织管理。Windows定义了CSP的架构及其API。通过这些API函数,应用程序可以枚举系统中存在的CSP,选择符合自己需要的CSP,使用CSP所实现的算法进行加密操作。每个CSP包含有来自某个厂商实现的一组加密算法和密钥保护机制,不同的CSP可以含有相同算法的不同实现。有的CSP是与硬件结合的,算法逻辑和密钥保护实现在独立的硬件上,这种CSP起着接口适配作用,使得应用软件与这些加密硬件隔离开来。微软在Windows中预置了几个CSP,这些CSP所包含的加密算法在所有的Windows计算机上都是立即可用的。通过CSP框架,应用软件可以使用Windows定义的统一API,实施加密操作。这样,应用很容易适应不同的加密算法实现方式。看上去差异很大的加密实现方式,对于应用程序来说,只是CSP名称的差异。CSP的选用很容易做成可以配置的选项,有应用系统集中管控或者由终端用户自行选择。

Windows加密系统的目标有,保护Windows计算机和Windows网络自身、用户账户安全、用户数据安全。Windows系统发行介质含有微软的公钥,使用基于数字签名技术的代码签名机制,来验证系统组件的完整性。这一完整性保证了系统代码的确来自微软官方,不会被第三方篡改。

在Windows被安装到一台计算机上的时候,会随机生成该计算机的安全标识(SID)和设备主密钥。设备主密钥被用来保护本地计算机边界之内的数据,验证设备在Windows域中成员身份。

在Windows中创建一个用户帐户时,会产生一个用户SID和用户主密钥。用户主密钥密钥被用户口令加密保护。Windows系统为用户对一些重要的安全数据进行了加密,如数字证书私钥、系统工具保存的网络登录口令等等,这些都是由用户主密钥所保护的。由于用户主密钥使用用户口令加密存储,所以管理员强制重置用户口令时,是无法解密恢复原来的主密钥的。这时,我们会看到这样的提示:“您正在重置xxxx的密码。如果这样做,xxxx将丢失网站或网络资源的所有个人证书和存储的密码”。这也意味着即使是管理员,也不能通过重置口令这一途径读取用户的加密信息。值得注意的是,用户口令本身使用了摘要算法加密,为了对抗字典攻击,Windows在注册表中只保存了摘要值的一半比特。由于还原主密钥需要全部的比特,这使得攻击者即使“碰”上了注册表中的这一半比特,也不能解密还原用户的主密钥。

Windows加密文件系统(EFS)对用户数据提供了保护。加密文件系统使用混合加密体制保护文件内容。每个EFS加密的文件都使用随机生成的不同对称密钥(FEK)保护。FEK被用户数字证书公钥加密保护,还原FEK需要能够访问用户的文件加密证书私钥。这一私钥又得到用户主密钥的保护,用户主密钥又在用户口令的保护之下。由于重置用户密码会失去原先的主密钥,从而失去EFS的访问能力,所以会导致不再能够打开原先使用EFS加密的文件。这种情况下,唯一的途径是使用在第一次加密文件时,备份的EFS文件加密证书私钥。EFS加密与不加密的区别在于,对于不加密的文件,具有管理员权限的账户,不登录用户账户,也能打开这些文件。设备或者硬盘失窃时,信息窃贼是很容易得到这样一个权限的,把硬盘挂在自己的计算机上就可以了。EFS以强加密阻止这一情况的发生。如果冠希当初勾选了文件夹的加密属性以开启EFS,再配合以一个不易猜测的Windows开机登录口令,他就不会因送修电脑而被那么早的被送上新闻头条。

在保护本地各种加密要素安全的基础上,Windows实现了一系列网络加密协议,有些是Windows网络专用的,如RDP协议;有些是互联网通用的,如SSL、IPSec等。应用程序可以通过相关的加密API,利用这些系统中实现了的加密协议,加密保护应用程序在网络上传输的信息。

Windows加密技术概述的更多相关文章

  1. .NET加密技术概述

    微软.NET 的System.Security.Cryptography中的类实现了各种具体的加密算法和技术.这些类,有一些是非托管 Microsoft CryptoAPI 的包装,而另一些则是纯粹的 ...

  2. IM-即时通讯技术概述

    IM-即时通讯技术概述 简述 即时通讯技术(IM)支持用户在线实时交谈.如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容.大多数常用的即时通讯发 ...

  3. android 数据加密——加密的概述

    数据加密又称密码学,它是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文.数据加密目前仍是计算机系统对信息进行保护的一种最可靠的办法.它利 ...

  4. 【云安全与同态加密_调研分析(8)】同态加密技术及其应用分析——By Me

    ◆同态加密技术(Homomorphic Encryption, HE)及其应用◆ ◆加密方案◆ ◆应用领域◆ ◆厂商◆ ◆同态加密现有产品形态和工程实现◆ ◆参考链接◆ ◆备注(其他参考信息)◆ 同态 ...

  5. Windows加密API的功能分类

    本地数据加密保护本地数据加密保护机制提供了简单的DAPI调用接口,密钥管理等等一概由系统来处理.DAPI的数据加密保护机制在用户登录会话范围或者本地计算范围,使用操作系统设计的方式加密保护数据和解密还 ...

  6. Windows加密API的层次

    Windows平台下的应用程序可以分为托管的.NET程序和本机的Win32(以及Win64)两大类..NET有着类似于JAVA的虚拟机和二进制码托管运行环境,提供了在不同Windows平台上的代码可携 ...

  7. Windows加密服务架构

    Windows加密是安全体系的重要基础和组成部分.现代CPU的保护模式是系统安全的硬件基石,基于CPU硬件的特权分级,Windows让自身的关键系统代码运行在高处理器特权级的内核模式,各种应用程序则运 ...

  8. PHP加密技术

    一.MD5加密 直接干,这里以一个登录页面为例: <?php require_once 'config/database.config.php'; $act=$_REQUEST['act']; ...

  9. Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC

    Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC 博客分类: Java/Security Javabase64macmd5sha     加密解密,曾经是我一 ...

随机推荐

  1. Hexo基本使用

    1. 简述 Hexo是一个基于Node.js的博客系统,常用于搭建在GitHub上. 其本质其实是一个基于Node.js的内嵌webserver的程序,可以通过一些命令根据markdown生成静态页面 ...

  2. C# 继承(2)

    接着上章: 代码如下- class NameList { public string Name { get; set; } public void ID() => Console.WriteLi ...

  3. loj #2510. 「AHOI / HNOI2018」道路

    #2510. 「AHOI / HNOI2018」道路 题目描述 W 国的交通呈一棵树的形状.W 国一共有 n−1 个城市和 nnn 个乡村,其中城市从 111 到 n−1 编号,乡村从 111 到 n ...

  4. [Swift]八大排序算法(一):冒泡排序

    排序分为内部排序和外部排序. 内部排序:是指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列. 外部排序:指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存 ...

  5. Python3之shutil模块

    一. 简介 shutil 是高级的文件,文件夹,压缩包处理模块. 二. 使用 shutil.copyfileobj(fsrc, fdst[, length])将文件内容拷贝到另一个文件中 import ...

  6. Python描述符深入理解

    Python的描述符乍眼看去简单,但是细节方面如果不注意容易掉坑,总结以下几个坑,以作备忘,先看代码: class D: def __get__(self, inst, owner): if inst ...

  7. screen虚拟终端

    screen命令相当于后台执行(虚拟终端) 用法:在一些要执行很久的操作,比如我有个文件有10个G,要传输一天左右,你如果是直接传输,万一你的连接断了.是不是意味着你的操作白费的呢,这时我们可以打开一 ...

  8. docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled (Client.Timeout exceeded while awaiting headers).

    docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled ...

  9. mysql 命令连接

    远程登陆MySQL,同时指定对应的端口和ip. 假设远程的ip为:10.154.0.43 端口为:1341 输入如下命令: mysql -h 10.154.0.43 -P 1341 -u root - ...

  10. POJ_1850 Code【组合的运用】

    题目: Transmitting and memorizing information is a task that requires different coding systems for the ...