CN104871174A - 用于“自带”管理的引导机制 - Google Patents

用于“自带”管理的引导机制 Download PDF

Info

Publication number
CN104871174A
CN104871174A CN201380065648.0A CN201380065648A CN104871174A CN 104871174 A CN104871174 A CN 104871174A CN 201380065648 A CN201380065648 A CN 201380065648A CN 104871174 A CN104871174 A CN 104871174A
Authority
CN
China
Prior art keywords
operating system
host operating
computing machine
storage medium
physical storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201380065648.0A
Other languages
English (en)
Other versions
CN104871174B (zh
Inventor
L·加尔斯-埃里斯
J·G·茹内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN104871174A publication Critical patent/CN104871174A/zh
Application granted granted Critical
Publication of CN104871174B publication Critical patent/CN104871174B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Abstract

本发明针对一种用户便携设备(10),优选地是安全的防篡改设备,包含:使得能够与计算机(101)连接(S2)的连接接口(12);持久性存储器(14);和引导加载器(16),存储在持久性存储器(14)上,最好是存储在该设备的安全存储器(141)上,其中,引导加载器(16)在设备(10)与所述计算机(101)通过所述连接接口连接(S2)后能被计算机(101)的固件(122)检测到(S3),并且包含以下指令:使所述固件(122)把引导加载器(16)装入(S4)计算机(101)的存储器(121),用于随后的执行(S5);和在计算机(101)上执行时,与固件相互作用,从所述计算机(101)的、其第一部分(120-1)和第二部分(120-2)上分别存储着第一主机操作系统(111-1)和第二主机操作系统(111-2)的物理存储介质(120)的分区信息(111-1p),确定所述物理存储介质的第二部分(120-2),其中该分区信息告知第一主机操作系统但不告知第二主机操作系统;定位第二部分(120-2)中的第二主机操作系统(111-2)的一分部(BI);和执行所述分部(BI),由此,只有主机操作系统的第二个能从用户便携设备(10)引导。本发明进一步针对相关的系统和方法。

Description

用于“自带”管理的引导机制
技术领域
本发明总体涉及用于引导计算机的用户便携设备的领域,也涉及所谓的“自带”计算工作环境
背景技术
BYO一般涉及“自带设备”(BYOD)、“自带技术”(BYOT)或密切相关的“自带行为”(BYOB)。BYOD或BYOT关系到这样的企业/业务政策——即员工怎么可以在工作时使用自带的个人移动设备,访问雇主的电子邮件、数据库和文件,除此之外还在家中使用这种设备,由此通过相同的设备访问个人的应用程序/数据。除了硬件,BYOB则将其扩展到到设备上使用的软件。
目前,很多员工既有自己的家用电脑(例如,笔记本电脑)又有雇主分配的电脑。员工因为保有自己的家用电脑而越来越舒适,雇主则趋向其中只需要一台电脑的电脑所有权模式。员工可能被要求在工作中使用他/她的家用电脑。这对雇主是有吸引力的,因为对计算机的系统性管理在很大程度上委托给了员工,导致费用的节省。这种方式也吸引员工,因为他们只需要一台计算机,可以根据自己的偏好选择计算机。此外,他们经常收到来自雇主的补偿。
然而,在同一台计算机上混合企业计算和个人计算,模糊了分属于业主和分属于员工的计算之间的界线。如果不对在该计算机上运行的软件设置约束条件,企业的机密信息就可能会因非企业应用程序的分发或破坏而遭到危害。如果雇主要求严格控制计算机,则会丧失对员工的吸引力,员工会担心企业的监控工具在危害他们的隐私。需要清晰地分隔各自关心的信息,以便能容易区分分属各自的信息。
虚拟机(VM)的运用,常常用于确定这种分隔,其中用VM封装一个完整的可执行环境。VM通常被称为客户操作系统,客户操作系统在其上运行的操作系统(OS),则被称为为主机操作系统。在一个简单的操作模式中,公司定义一个企业映像(corporate image),并以VM的形式将其向员工开放。于是,虚拟机就在员工的家用计算机上运行。在虚拟机内运行什么,由企业确定;而员工则能自由地决定在物理机器上运行什么,只要有一个合适的虚拟机管理器(例如VMware、Virtual Box)。
然而,这种做法保护员工不受雇主的侵犯,反正却不然。本发明旨在提供也保护雇主不受员工损害的解决方案。
此外,可信设备(包括安全、防篡改设备)上往往提供外部引导介质,这类设备广为人知。例如,为在线交易开发的一种解决方案,是所谓的区域受信信息通道(Zone Trusted Information Channel或ZTIC)。ZTIC是用于交易数据认证的安全的非可编程设备。由于ZTIC保持与服务器的安全的端到端网络连接,ZTIC本身就是防篡改的,不受恶意软件的攻击,并且,由于ZTIC自己有独立于其所连接的主机的输入和输出部件,ZTIC显示器上显示的数据是真实的(genuine)。更多的细节例如可参看,例如“The Zurich Trusted Information Channel-An Efficient Defenceagainst Man-in-the-Middle and Malicious Software Attacks”,by ThomasWeigold,Thorsten Kramp,Reto Hermann,FrankPeter Buhler,MichaelBaentsch.In P.Lipp,A.-R.Sadeghi,and K.-M.Koch(Eds.):TRUST 2008,LNCS 4968,pp.75-91,2008.Springer-Verlag Berlin Heidelberg 2008.
发明内容
一方面,本发明体现为一种用户便携设备,优选地是安全的防篡改设备,包含:
使得能够与计算机连接的连接接口;
持久性存储器;和
引导加载器,存储在持久性存储器上,最好是存储在该设备的安全存储器上,
其中,引导加载器在设备与所述计算机通过所述连接接口连接时能被计算机的固件检测到,并且包含以下指令:
使所述固件把引导加载器装入计算机的存储器,用于随后的执行;和
在计算机上执行时,与固件相互作用,以
从所述计算机的、其第一部分和第二部分上分别存储着第一主机操作系统和第二主机操作系统的物理存储介质的分区信息,确定所述物理存储介质中的所述第二部分,其中该分区信息告知第一主机操作系统但不告知第二主机操作系统;
定位第二部分中的第二主机操作系统的一分部;和
执行所述分部,由此,仅第二主机操作系统能从用户便携设备引导。
在实施例中,用户便携设备进一步包含存储在所述安全存储器上的完整性检查(integrity check)数据,并且,引导加载器被进一步配置得根据所述完整性检查数据检查所述分部的完整性。
优选地,引导加载器被配置得通过哈希(hashing)所述分部的内容和对照所述完整性检查数据核对结果哈希值,检查第二主机操作系统的所述分部的完整性。
在优选实施例中,引导加载器还被配置得在所述计算机上执行时,通过从物理存储介质的给定扇区搜索所述分部而定位所述分部,该扇区始于所述物理存储介质上存储的第一操作系统所用的最后一个扇区之后,最好是紧接其后。
优选地,引导加载器还被配置得在计算机上执行时,根据物理存储介质的分区信息计算第一部分的大小,并推断哪个扇区是第一操作系统使用的最后扇区。
在实施例中,引导加载器还被配置得在计算机上执行时,根据以下信息直接定位所述分部:
所述给定扇区;和
所述第二部分上存储的所述第二主机操作系统内的所述分部的相对位置的数据。
优选地,引导加载器还被配置得在计算机上执行时,致使在所述物理存储介质上构造一个覆盖磁盘,以屏蔽所述物理存储介质被第一主机操作系统占据的部分,该覆盖磁盘是所述物理存储介质支持的物理存储介质的软件表示,
其中,优选地,引导加载器还被配置得在计算机上执行时,致使构造该覆盖磁盘,使得该覆盖磁盘起始于物理存储介质的一个扇区,该个扇区在第一主机操作系统所占据的最后扇区之后,最好是紧接其后。
本发明还涉及一种系统,该系统包含按照以上实施例的任何之一的用户便携设备和用户便携设备通过连接接口可连接的计算机,其中,计算机具有分别在所述第一部分和第二部分上存储的第一主机操作系统和第二主机操作系统,并且其中,计算机的物理存储介质的分区信息告知第一主机操作系统但不告知第二主机操作系统。
优选地,第二主机操作系统的所述分部只包含:
第二操作系统的内核;和
引导所述计算机时涉及的软件。
另一方面,本发明体现为一种引导按照以上实施例的任何之一的系统中的计算机的方法,该方法包含,在用户便携设备与计算机连接时:
让用户便携设备的引导加载器被主机计算机的固件检测到,由此,按照引导加载器给固件的指令,引导加载器发送到计算机并在计算机上执行,以
定位和执行第二主机操作系统的一分部,使得
第二主机操作系统引导并且仅第二主机操作系统能从用户便携设备引导。
优选地,该方法进一步包含:
在所述物理存储介质上构造一个覆盖磁盘,所述物理存储介质最好是物理磁盘,以屏蔽所述物理存储介质被第一主机操作系统占据的部分,该覆盖磁盘是所述物理存储介质支持的物理存储介质软件表示;
在所构造的覆盖磁盘上运行第二主机操作系统;和
在运行的第二主机操作系统上的运行软件。
在优选实施例中,该方法进一步包含,在构造覆盖磁盘之前:
读取物理存储介质的分区信息;
根据所述分区信息,最好是通过计算所述物理存储介质上被第一主机操作系统占据的第一部分的大小,推断第二主机操作系统位于所述物理存储介质上的哪里;和
构造覆盖磁盘,使得该覆盖磁盘
起始于物理存储介质的一个扇区,该个扇区在第一主机操作系统所占据的最后扇区之后,最好是紧接其后,和
优选地,延续直至物理存储介质的末尾。
优选地,在第二主机操作系统上运行软件进一步包含:
运行一虚拟机,作为第二主机操作系统上的客户操作系统,该客户操作系统封装一个可执行环境。
在实施例中,第一主机操作系统是个人操作系统;第二主机操作系统是企业操作系统,并且,运行该虚拟机导致显示与给定用户有关的桌面。
最后一个方面,本发明体现为一种计算机程序产品,包含其中体现有引导加载器的计算机可读存储介质,其中引导加载器
能被计算机的固件检测到,并且
包含以下指令:
使所述固件把引导加载器装入计算机的存储器,用于随后的执行;和
在计算机上执行时,与固件相互作用,以
从所述计算机的、其第一部分和第二部分上分别存储着第一主机操作系统和第二主机操作系统的物理存储介质的分区信息,确定所述物理存储介质中的所述第二部分,其中该分区信息告知第一主机操作系统但不告知第二主机操作系统;
定位第二部分中的第二主机操作系统的一分部;和
执行所述分部,由此,当引导加载器在计算机(101)上执行时仅第二主机操作系统能从用户便携设备引导。
现在将通过非限定性例子并参照各附图,说明体现本发明的设备、系统和方法。
附图说明
-图1示意性地表示一个适于实现本发明实施例的通用计算系统;
-图2简略表示按照本发明实施例的用户可信设备的选定组件,以及这些组件功能上如何关联;
-图3示意性表示图1的计算系统的选定组件,以及表示按照本发明的方法的步骤地流程图;
-图4是表示按照实施例、使计算机能从安全地从用户设备引导的方法的高级流程图;和
-图5示意性表示实施例中涉及的在物理存储介质上构造的覆盖磁盘的构造。
具体实施方式
以下的说明的结构如下。首先,描述一般实施方案和高级变通方案(第1节)。下一节讨论更具体的实施方案和技术实现细节(第2节)。
1.一般实施方案和高级变通方案
如背景技术部分讨论的那样,虚拟机常被用于定义家庭/工作环境的分隔。然而可以认识到,如果主机OS受到危害,企业VM也受危害。VM内运行的管理工具没有能让这种危害被检测出来的(或者至少不能充分早地检测出来),因此,它们还需要在主机OS上运行。这样,就要要求员工在雇主的环境中控制软件。因此,员工必须不但要控制VM,而且也要控制VM在其上运行的主机OS。因此,就需要两个主机操作系统,一个用于员工,一个用于雇主。可以为每个主机操作系统分配磁盘上的一个分区,或者可以使用两个完全隔离的磁盘。
然而也可以想见,这并不足以解决问题,因为每个操作系统都可以访问另一个操作系统的磁盘,使得哪一个主机OS都可能受另一个的危害。加密的磁盘只能被拥有密钥地人读取。然而,不能把操作系统的整个磁盘的内容都加密,因为OS的某个分部(part),必须一直被执行到能从用户获得密码的时刻。这个分部的磁盘内容被称为“引导映像”(boot image)。未加密的引导映像例如能被引导加载器(bootloader)读取和执行。引导映像然后通过获得密钥和解密操作使用户能访问磁盘的其余部分。某人获得计算机后,能够启动(boot)计算机,但是,如果没有适当的密码,就不能读取含有数据的磁盘。然而,该人可以重新格式化磁盘,然后在磁盘上安装另一个操作系统,这个操作系统如果与格式化前的操作系统相似,就依然不会被发现。在同一台机器上运行两个主机操作系统的情形,与第三者获得计算机的情形类似。一个操作系统可能会覆盖另一个的磁盘。因此,受危害的家用OS就可能危害企业OS。
本发明解决这个问题的手段,是确保企业环境不受家用OS的危害,或更一般地,第一主机OS不能危害第二OS。同时,本发明的方案对第一(家用、本机)OS上运行什么并不设限。不需要在第一OS中作出任何变更,例如添加双引导(dual boot)功能或者改变分区表。
可以将发明人作出的以下发明方法作出如下的概括:
-经典的BYO计算机管理模型大多建议依托虚拟机来划定家庭/工作环境的分隔;
-这种方式并不令人满意,因为受危害的主机OS可能危害企业的虚拟机;
-因此,人们倾向于同时依赖两个主机操作系统,操作系统每个被分配一个磁盘分区,或者分配两个整体隔离的磁盘;
-发明人依然认识到,这种方法也有缺陷,因为其中一个操作系统能覆写另一个操作系统的磁盘;
-因此,发明人的构思是,对第一OS“隐藏”第二OS,例如,不在存储介质的分区信息中告知(acknowledge)公司OS,这样,第一OS就看不到第二OS,也就不能危害第二OS;
-不过,随之而来的问题是:如何引导第二OC?确实,第二OS并非是有自我意识的(self-conscious),可能就无法启动;
-因此,发明人的另一个构思是使其从外部设备(安全地)引导,该设备面临的挑战是在不知道一个OS在哪里的情况下还要定位该OS(因为在分区信息中找不到第二OS的痕迹);
-这个困难可以通过下面的技巧来克服:由于分区信息告知第一OS的特征,因此可以确定第一OS在存储介质上所处的位置,因此推定第二OS位于第一OS未占据的部分。
-因此,第二OS的可执行分部、例如引导映像就能被定位,从而能够启动引导过程。
-因此,主要需要的,是从分区表抽取关于第一OS的信息,然后推断第二OS的位置。
-有益地,可以在第二OS占据的部分上构造一个覆盖磁盘,使得后者能依次在这个覆盖磁盘上运行,第一OS则不担风险。
现在详细解释本发明的这些(和更多的)方面。首先,图1示意性地表示一个适于实现本发明实施例的通用计算系统。
可以理解,这里描述的方法很大程度上是非交互式的,并且是通过诸如用户设备、个人计算机、服务器或嵌入式系统的计算系统自动化了的。在示例性实施例中,本文描述的方法可以在(部分地)交互的或非交互的系统中实现。这些方法进一步可以在软件(例如固件)、硬件、或它们的组合中实现。在示例性实施例中,本文所述的方法在软件中实现,作为可执行程序,并由诸如个人电脑、工作站、小型机、或主机计算机的专用或通用数字计算机执行。最通用的系统100因此包括通用计算机,例如个人计算机101。
在示例性实施例中,在硬件结构方面,如图1所示,计算机101包括处理器105、耦合到存储器控制器115的存储器110以及通过本地输入/输出控制器135通信地耦合的一个或多个输入/输出(I/O)设备(或外围设备)10、145。输入/输出控制器135可以是——但不限于——如在本领域中已知的一个或多个总线或其它有线或无线连接。输入/输出控制器135可以有额外的元件以便能够通信,如控制器、缓冲器(高速缓存)、驱动器、中继器和接收器,为了简明,图中作了省略。此外,本地接口可以包括地址、控制、和/或数据连接,以便使上述部件之间能进行适当的通信。本文所述的I/O设备10、145一般可以包括现有技术已知的任何广义的加密卡或智能卡。下文参照图2详细讨论的用户可信设备10就是一个这样的设备。
处理器105是用于执行软件、特别是存储器110中存储(或装载)的软件的硬件设备。处理器105可以是任何定制的或商业上可获得的处理器,中央处理单元(CPU),与计算机101相关的几个处理器中的辅助处理器,基于半导体的微处理器(微晶片或芯片组的形式),宏处理器(macroprocessor),或者用于执行软件指令的任何一般设备。因此,处理器105也可以由若干核/处理器组成。
存储器110可以包括以下的任何一个或组合:易失性存储器元件(例如随机存取存储器(RAM,诸如DRAM、SRAM、SDRAM,等等))和非易失性(持久性)存储元件(例如ROM、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁带、光盘只读存储器(CD-ROM)、硬盘、软盘、卡带、盒带,等等)。此外,存储器110可包括电子的、磁性的、光学的、和/或其他类型的存储介质。注意,存储器110可以有分布式的体系结构,其中各个组成部分彼此远离,但可以被处理器105访问。特别地,存储器110包括一个给定的存储部分121,可以向其传送引导加载器16(也可能是起初存储在外部设备10上的其它模块),用于后续的执行。
存储器110中的软件可以包括一个或多个独立的程序,每个程序包含用于实现逻辑功能(特别是本发明实施例中涉及的逻辑功能)的可执行指令的列表。。在图1的例子中,存储器110可以装载指令,如果某些条件得到满足,这些指令使计算机101能从用户可信设备10启动引导(booting)并完成引导。
下面讨论的实施例中,存储器110还可以装载有两个合适的操作系统(OS)和111-1111-2中的一个,这两个操作系统否则是存储在物理存储介质120中的,例如物理磁盘中。不过要指出的是,这里讨论的新方法操作至少部分地在主机101的任何操作系统(他们在另一个层面操作,更接近硬件,计算机101的正常行为由此受到影响)“之前”操作。通常情况下,出现两个操作系统:第一OS 111-1,例如主要在家里使用的本机(native)本地操作系统;第二OS 111-2,例如公司的操作系统。OS111-1或111-2一旦(如果)被加载,将基本上控制其它计算机程序的执行,并提供调度、输入输出控制、文件和数据管理、内存管理、以及通信控制和相关服务。这两个操作系统一般有所不同,特别是控制哪些其它计算机程序以及所允许的文件和数据管理的程度等方面有所不同。
本文所述的方法的至少一部分的形式可以是源程序、可执行程序(目标代码)、脚本、或包含一组要被执行的指令的任何其他实体。如果是源程序,则该程序需要通过设备10和/或主机101的存储器内可能包括、可能不包括的编译器、汇编器、解释器等进行翻译。此外,本文所述的方法,可以用具有数据类和方法类的面向对象的编程语言编写,或者用具有例程、子例程和/或函数的过程编程语言编写。在所有的情况下,本文所讨论的新方法被设计得能结合固件122——如果需要的话——并在需要时结合设备的CPU 11而适当操作。
在示例性实施例中,可将传统的键盘150和鼠标155耦合到输入/输出控制器135。其他的输出设备,如I/O设备145,可以包括输入设备,例如但不限于打印机、扫描仪、麦克风,等等。最后,I/O设备10、145可以进一步包括传送输入和输出的设备,例如但不限于网络接口卡(NIC)或调制器/解调器(用于访问其他文件、设备、系统或网络)、射频(RF)或其他收发机、电话接口、桥、路由器,等等。如本文所述的I/O设备140、145可以是现有技术已知的任何一般的密码卡或智能卡。系统100可以进一步包括耦合到显示器130的显示控制器125。在示例性实施例中,系统100可以进一步包括网络接口124(例如NIC),用于耦合到网络165。网络165可以是基于IP网络,用于通过宽带连接在计算机101与任何外部服务器、客户端等之间进行通信。网络165在计算机101与外部系统——例如服务器30——之间发送和接收数据。在示例性实施例中,网络165可以是由服务供应商管理的被管理IP网络。网络165可以以无线方式实现,例如采用无线协议和技术,诸如WiFi、WiMAX网络,等等。网络165也可以是分组交换网络,诸如局域网、广域网、城域网、因特网、或其他类似类型的网络环境。网络165可以是固定的无线网络、无线局域网(LAN)、无线广域网(WAN)、个人区域网(PAN)、虚拟专用网(VPN),内联网或其他合适的网络系统,并包括用于接收和发送信号的装置。
如果计算机101是PC、工作站、智能装置之类,则存储器110中的软件可以进一步包括一个基本输入输出系统(BIOS)122。BIOS是在启动时初始化硬件并测试硬件的一套基本软件例程。BIOS一般来说能启动一个操作系统,支持硬件设备之间的数据传输。BIOS通常存储在ROM中,当计算机101被激活时,BIOS就能被以执行。
为了实现如本文所述的方法,BIOS 122将被引导加载器提示并与引导加载器相互作用,以确定隐藏的操作系统。不过,更一般来说,为此可以使用任何合适的固件122或固件的接口(即,持久性存储器与其中存储的程序代码和数据的组合,该组合在软件栈中任何OS 111的“下面”运行)。这通常就是BIOS。然而,合适的固件122或固件接口的例子,包括预启动执行环境BIOS(Preboot eXecution Environment(PXE)BIOS)、所谓的可扩展固件接口BIOS Extensible Firmware Interface(EFI)BIOS)、或统一可扩展固件接口Unified Extensible Firmware Interface(UEFI))。后者是定义操作系统与平台固件之间的软件接口的规范。UEFI被用来取代BIOS固件接口,存在于目前所有的IBM PC兼容的计算机。在实践中,大多数的UEFI映像都有对BIOS服务的传统支持。更一般地,任何具有对BIOS服务或类似服务的传统支持的固件,都可以考虑用于实现本文所描述的方法。更一般地,在软件栈中操作系统下层运行的任何初始化固件都可以用于实现本发明的目的。
当计算机101运行时,处理器105被配置得能执行存储器110中存储的软件,以便在存储器110读、写数据,以及根据软件控制计算机101的操作。本文所述的方法的全部或部分,但一般是部分方法,由处理器105读取,可能要在处理器105内缓存,然后被执行。
本文所述的方法中可以在软件中实现的部分,可以存储在任何计算机可读介质中,供任何计算机相关的系统或方法所用,或者与任何计算机相关的系统或方法结合使用。
所述技术领域的熟练人员应明白,本发明的各方面可以体现为系统、方法和计算机程序产品。因此,本发明的各方面所采取的形式,可以是完全硬件体现,完全固件和/或软件体现(包括固件/软件、常驻软件、微代码,等等)或组合了固件/软件和硬件的体现,在本文中总体被称为“模块”、“系统”、“过程”或“方案”,等等。此外,本发明的各方面所采取的形式,也可以是在一个或多个其中体现有计算机可读程序的计算机可读介质中体现的计算机程序产品。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言-诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行(作为一个独立的软件包)、还可以在以下的两个或多个设备上执行:用户计算机101、用户可信设备10、远程计算机30。主机计算机可以通过任意种类的网络——包括局域网(LAN)、广域网(WAN)、至外部计算机的连接(例如利用因特网服务提供商来通过因特网连接)-连接到服务器。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其他设备上,使得在计算机、其它可编程数据处理装置、或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机或其它可编程数据处理装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
总体参看图1-5,首先说明本发明的一个方面,其涉及用户便携设备10。这个设备主要包含:
连接接口12,例如USB连接接口,用于实现与个人计算机101的连接;
持久性存储器14,优选地,其包括安全存储器141;和
引导加载器16,配置有新的计算机化方法并存储在所述持久性存储器上。
引导加载器16被设计得使得在设备10与计算机101通过所述连接接口12连接时——例如重启计算机101时,能被初始化固件122——例如计算机101的BIOS——检测到。众所周知,这个功能例如能按(方便地存储在设备10上的)引导加载器本身的数据结构提供。引导加载器进一步包含用于使所述固件122把引导加载器(或其模块或组件)16装入计算机101的存储器121用于随后在计算机上执行的指令。
此外,引导加载器16被特别设计得用来与(在计算机101上执行时的)固件122相互作用,以执行一些不寻常的任务,这些任务的目的是确保在计算机101上共存的两个操作系统中,只有一个操作系统能从安全设备10引导,即使两个操作系统中的该一个操作系统是隐藏的——即没有被计算机101的物理存储介质120的分区表告知。
假设环境如下:计算机101的物理存储介质120存储第一主机OS 111-1——例如本机操作系统(亦称“家用”OS)和第二主机OS 111-2(例如“公司”OS)。操作系统111-1和111-2(或者是至少是局部)分别被存储在物理存储介质120第一部分120-1和第二部分120-2上。此外,假设介质120的分区信息111-1p不告知第二OS111-2。换言之,第二操作系统(对第一操作系统)是隐藏的。独立于这个假设环境,以下描述的当前引导加载器的具体功能不利用(甚至最好忽略)分区信息111-1p中任何关于第二OS的任何信息——即便这种信息仍然是可得到的,不过,这种信息最好是不能得到的)。
准确地说,在计算机101上执行时,引导加载器16要执行以下操作:
-首先,引导加载器确定介质120的第二部分120-2,即由第二OS 111-2使用的部分,特别是确定第二部分在哪里开始。然而,由于引导加载器使用的分区信息111-1p不告知(并且一般假设是不告知)第二OS 111-2,引导加载器需要间接地确定第二部分,确定第二部分时只用这个只告知第一OS的分区信息111-1p。
-其次,引导加载器将在第二部分120-2中定位第二OS 111-2的给定分部(附图中的“BI”)。这个分部最好是一个引导映像,或更一般地是任何可执行的分部,其在执行时将有助于使第二OS继续进行引导(boot);和
-最后,执行所定位的分部BI,由此,仅第二操作系统能有效地从用户便携设备10引导。
另外,按照另一个方面,本发明可体现为一种引导(boot)个人计算机101的方法,如图3和4所示。假设在起始步骤S1中提供一个诸如如上所述的便携设备10和一个计算机101,则该方法包含在便携设备10与计算机101连接时(S2)的以下步骤:
-步骤S3:让引导加载器16被固件122检测到,由此,按照引导加载器16给固件的指令:
○引导加载器发送(步骤S4)到计算机101并在计算机101上执行(步骤S5),以:
■随后定位(步骤S6)和执行(步骤S8)第二OS 111的一分部BI,使得
●第二OS引导(S8-S11)并且只有第二OS能从用户便携设备(10)引导。
引导加载器16与固件122——例如BIOS——相互作用,以执行各种操作;引导加载器按照固件执行基本操作的需要而不断地与固件相互作用。
本发明扩展到包含以上讨论的用户便携设备10和计算机101的系统。
因为(i)仅第二OS能从用户便携设备装置10引导,(ii)第一OS不参与这个过程,所以,本发明的解决方案无需执行本机OS,就能启动第二OS——例如公司OS,并让第二OS在家用计算机上运行。如后文将要详细解释的那样,所需的配置元素可以从分区信息访问到,该信息基本上是独立于本机OS的。因此,不需要启动本机OS,从而降低的篡改第二OS的风险。
作出的合理假设是,用户能收缩本机OS的分区,使得磁盘上有足够空间用于存储第二OS。这是例如通过在诸如Windows 7和OSX的操作系统上的简单地点击鼠标就能实现的。
现在更具体地参看图2、3和4:在实施例中,用户便携设备可进一步包含存储在存储器14上的完整性检查(integrity check)数据13。引导加载器被进一步配置得用于用所述完整性检查数据13检查(步骤S7)先前被引到加载器定位的该分部BI的完整性。
检查该分部BI的完整性,可视为信任链的第一步,其中,可信的引导加载器16通过预定的、预先存储的信息核查所定位的分部的完整性,所定位的分部例如是引导映像(无论是否加密过)。接着,引导映像可以如现有技术中的惯常的方式通过与用户互动而核查操作系统的其余部分的完整性。
在这种情况下,设备10最好是一个安全、防篡改的设备,即,完整性检查数据最好是存储在安全存储器141上。用安全设备核查所定位分部BI的完整性确实是有意义的,因为否则就存在引导加载器已经被篡改过的风险。
在实施例中,引导加载器16可以被配置得通过哈希(hashing)所述分部的内容和对照所述完整性检查数据13核对结果哈希值,检查第二主机操作系统111-2的所定位分部BI的完整性。在这种情况下,在设备10上存储该分部BI的内容——例如未加密的引导映像——的哈希值,每次引导时将其与磁盘上找到的比较即可。注意,优选地,引导映像只含有OS 111-2的内核外加一些库(libraries),例如在引导过程中需要的库,因此引导映像可以很小。
作为选择,如果分部BI是加密的,则可以用所述完整性检查数据中含有的密钥13来解密所述分部BI,这提供了测试所定位的分部的完整性的另一种手段。这比简单地确保内容的完整性具有更好的安全性,但是增加了更新软件的复杂性。
在变通方案中,在定位(步骤S6)和执行(步骤S8)引导映像之前,引导映像可以被存储在可信设备上,以及被传送到计算机101。
现在参看图5,由于第二操作系统111-2最好是隐藏的,引导加载器16可以读取(步骤S10a)第一操作系统111-1的分区信息111-1p,以便从所述分区信息中推断第二操作系统111-2位于物理存储介质120上的哪里。这可能需要计算所述物理存储介质120上被第一操作系统111-1占据的第一部分120-1的大小。
例如,假设第一主机OS 111-1和第二主机OS 111-2驻留在计算机101的同一个物理存储介质120上,例如物理磁盘上,引导加载器16可以被配置得在计算机101上执行时,通过从物理存储介质120的给定扇区fs2搜索所述分部BI而定位所述分部BI,该扇区fs2始于(所述物理存储介质120上存储的)第一OS 111-1所用的最后一个扇区ls1之后(例如,紧接其后)。哪个扇区ls1是第一OS 111-1所用的最后一个扇区ls1,在有些情况下,甚至可以直接从分区信息111-1p中获得,或者可以容易从分区信息111-1p计算出,分区信息是引导加载器在步骤S10a读取的。假设第二OS111-2存储在第一OS 111-1之后(例如,紧随其后),如图5所示,在步骤S10b,引导加载器可以从扇区fs2开始搜索ls1。
现在,根据从分区信息可获得的其它配置信息,引导加载器就可以开始从不是紧接在扇区ls1之后、而是远离ls1的扇区fs2中搜索第二OS 111-2,因为分区信息可能揭示,若干紧邻的扇区被用作第一和第二OS以外的其它用途。
取决于缺省地(依具体环境而定)假设的、或者可从分区信息111-1p直接获知的信息量,引导加载器可能还需要计算物理存储介质上被第一OS 111-1占据的第一部分的大小s1。知道了大小s1,就容易推断出哪个扇区ls1是第一OS使用的最后扇区,这是因为,扇区大小是已知的,或者是可以从例如计算机说明书中获知的。注意,在一些特定环境中,有些策略要求可能把所允许的本机操作系统的选择限制在一个或若干OS版本,这样,OS的大小可能就是缺省地已知的,由此,在有些情况下,可以跳过计算第一OS的大小的步骤。
接下来,由于分部BI未必存储在第一OS 111-1占据的第一扇区,引导加载器16可能需要间接地定位所述分部BI。这是可以实现的,因为除了标识所述扇区ls1的数据之外,还有关于分部BI在所述第二部分120-2内的相对位置r1的信息。分部BI的相对位置r1是设备10可以获知的(存储在其上),或者可以在设备10(直接或间接)连接的服务器30获得。
最后这两个实施例涉及更特别的情形,其中,PC 101配有单一的存储磁盘,两个操作系统分享这个磁盘。为了在第二OS的引导过程中不改变第一(本机)OS,需要从引导加载器识别第二OS位于磁盘上的哪里。通常,这个信息被存储在磁盘120起始处的分区表111-1p内,但这就可能被从本机OS注意到,这在本发明的环境中是不希望有的事。因此,相反地,在按照本发明的系统中,最好避免出现这个信息。相反,引导加载器读取位于磁盘起始处的本机OS的分区表,并例如计算它在磁盘上占用多大空间。基本上,第一操作系统的大小,是现有的分区所覆盖的磁盘的分数(fraction)。引导加载器于是假设,第二OS将被发现在磁盘上家用OS之后的一个扇区开始。接着,引导加载器就可以使用如前所述的机制来定位分部BI,确定其完整性,并执行之。
有意思是,引导加载器可以进一步被配置得致使在所述物理存储介质120(例如物理磁盘)上构造(步骤S10c)一个覆盖磁盘(overlay disk)120o,以屏蔽所述物理存储介质被第一OS 111-1占据的部分。这样一个覆盖磁盘是所述物理存储介质支持的(backed by)物理存储介质的软件表示(software representation),其可以是:(a)一个实际的物理存储设备,诸如磁盘,等等;或(b)多个这样的存储设备;或(c)物理存储设备的局部。
覆盖磁盘的构建,可以获益于已经抽取的信息:例如,引导加载器可以将覆盖磁盘构造的使其起始于扇区fs2,即紧接扇区ls1后。
相应地,本发明的方法可以进一步包含以下步骤:
S10c:在物理存储介质120上构造覆盖磁盘120o;
S11:在所构造的覆盖磁盘102o上运行第二主机OS 111-2e;使得
S12:在第二主机OS 111-2e运行期间,软件112能在第二主机OS 111-2e的架构内运行。
注意,附图标记111-2e表示运行中的第二OS,即装载到内存后正在执行的第二OS,而111-2则表示存储在介质120中的第二OS。
若是不构造覆盖磁盘,例如就需要一个分区或整个磁盘用于第二OS。然而,在这两种情况下,第二OS都会被第一OS检测到,这样第一OS就可能危害第二OS。现在,如果第二OS是加密的,则第一OS就不能访问第二OS,但是仍然能覆写第二OS。因此,最好是构造覆盖磁盘。
在计算机存储领域众所周知,逻辑卷管理(logical volume management或LVM)的方法是已知的,这些方法允许在海量存储设备上分配空间。这种方法比常规的分区方案更加灵活。特定地,卷管理器(volume manager)能把分区联结、捆绑或以其它方式组合成管理员能调整大小或移动的更大虚拟分区,可能还不中断系统使用,例如参看维基(Wikipedia)网页http://en.wikipedia.org/wiki/Logical_volume_management。在本发明中,可以依靠卷管理器来分配一部分存储介质120,来创建被第二OS用作其主要“磁盘”的虚拟存储器部分。在这方面,有许多卷管理技术可以使用。
引导加载器可以配备构造覆盖磁盘的方法。不过,直接构造覆盖磁盘的,最好不是引导加载器,而是引导加载器定位并装入内存的引导映像,例如第二OS的内核加上初始RAM盘(initial RAM disk)。在所有情况下,引导加载器都能被设计得在计算机101处执行时致使(例如引导映像BI)在物理存储介质120上构造覆盖磁盘120o。
软件112例如可以是作为客户OS运行的虚拟机,其封装(encapsulate)一个可执行环境。在本发明所考虑的环境中——其中第一主机OS 111-1是本机OS,第二OS是公司OS——这特别有益于实现安全的BYO管理模型。,客户OS可能尤其导致按照给定的公司策略显示与给定的用户有关的桌面。
如在说明设备10时已经指出的那样,在构建覆盖盘之前,优选的方法可进一步包含:
S10a:读取分区信息111-1p;
S10b:根据所述分区信息,最好是通过计算所述物理存储介质上被第一主机OS占据的第一部分的大小s1,推断S10b第二主机OS 111-2位于所述物理存储介质上的哪里;和
S10c:构造覆盖磁盘,使得该覆盖磁盘起始于扇区fs2,扇区fs2位于第一主机OS所占据的最后扇区ls1之后,最好是紧接其后。
由于该覆盖磁盘结构,容易使得有可能让第二OS继续引导,就是说,第二OS将寻找其自己的磁盘,也即其使用的那部分磁盘。同时,第二OS运行时,由于其结构而“相信”自己拥有整个磁盘(覆盖磁盘最好延续到存储介质的末尾为止)。有各种各样的方法来构建这样一个覆盖磁盘。一个优选的实施方案是,使用例如用系统管理程序(hypervisor)获得的设备映射器的构造(device-mapper construct)来创建覆盖磁盘。然而要注意的是,除非第二OS需要在VM中运行,否则系统管理程序不起作用(系统管理程序与覆盖(overlay)无关,无论有没有系统管理程序,覆盖都可以由OS实现)。
另一方面,本机OS所感知的第二OS使用的空间,只是其使用范围之外的未被占用的空间。本机OS因此完全不知道第二OS的存在。若要去除第二OS的所有痕迹,只要要求回收(reclaim)这个“未被占用的”空间就足矣。
现在一起参看图1、2和5,如前文所述,本发明也可以体现为一个包含便携设备10和计算机101的系统100。第一主机OS 111-1和第二主机OS 111-2被分别存储在存储介质120的第一部分120-1和第二部分120-2上。个人计算机的物理存储介质的分区信息告知第一主机操作系统111-1,但不告知第二主机操作系统111-2。
优选地,第二主机OS的分部BI只包含第二操作系统的内核,以及在引导计算机时涉及的软件,即进行引导所需的软件库,如上面所讨论的那样,其中可能包括构建覆盖磁盘所需的软件。
另外,如前文所述,固件122优选地是下述之一:
BIOS;
可扩展固件接口EFI;或者
统一可扩展固件接口UEFI
接下来,返回图2,持久性存储器14优选地包含:
-安全存储器141,其上存储着引导加载器16的第一分部161(或给定部分)(和/或设备10的额外模块);和
-非安全存储器142,例如SD卡,其上存储着引导加载器的第二分部(或其他部分)。
安全存储器的存在,使用户可信设备成为安全的设备。例如,模块16的分部可以加密地驻留在非安全存储器142上,而相应的加密密钥则存储在安全存储器141上。由于成本原因,安全存储器通常被限制在128ko或256ko。因此,最好主要用来存储加密数据,例如哈希值/签名13。然而,引导加载器的一个分部161可以驻留在安全存储器141上,而引导加载器的其它分部162则可以加密地驻留在非安全存储器上。在变通方案中,引导加载器16驻留在SD卡上,但是用驻留在安全存储器141的签名来加密。当计算机101要求引导加载器16的给定块或任何数据块时,存储器14中驻留的软件会敦促设备10的CPU 11解密所请求的块,例如用在安全存储器141上存储的加密数据进行解密。
设备10的连接接口12例如可以是以下类型:
通用串行总线或USB;
外部小型计算机系统接口或SCSI;
外部串行高级技术附件或SATA;
火线(Firewire);或
雷电(Thunderblot)
不过,更一般地说,连接接口可以是允许计算机从外部设备10引导的任何当前或未来的(有线或无线)连接器。此外,相同的接口12可允许用户可信设备10与诸如投影仪、打印机、或其它输出设备等任何外部设备进行通信。
用户可信设备10可以正常配备耦接到存储器的处理装置(或计算装置,即CPU)11,诸如密码处理器(crypto Processor),它一般包含持久性存储器14,优选地,也包含非持久性存储器(非持久性存储器未予明确显示,但是可以被认为是处理装置方式11的一部分)。
在本发明的环境中,持久性存储器尤其还存储着——除了上述的引导加载器外——至少部分地要由处理装置11执行的计算机化的方法。当然,这里所述的设备的各种功能可以被视为具有不同功能的单一模块,并能在计算机101、或者部分地在计算机101和设备10上执行。
如果有必要,安全设备10有一个读卡器用于读取在诸如非安全存储器142或任何智能卡的存储卡上存储的用户凭据。这样的数据(例如存储在卡上的用户凭据)可以安全地得到适当的使用。特别地,通过主机101并使用这种数据,可以在用户(或严格来说,设备10)与第三方——例如服务器30——之间建立值得信赖的连接。在变通方案中,用户凭据可以直接存储在安全装置上。可以提供进一步的接口(如控制按钮和显示器)以允许与用户的相互作用。
最后,如前文所述,设备10或引导加载器16可以进一步被设计得能连接到外部实体30,例如服务器。这个功能例如可以由设备10的一个专用连接模块来提供。这个模块可以在设备10或计算机101上执行,以指令——优选地通过计算机101——与服务器30连接。与服务器30的连接,可以以若干方式实现。最有利的是通过计算机101连接到服务器30,无论有没有第二OS的帮助。发往服务器的数据,在设备10上被加密,从服务器30接收的数据,被设备10解密。这就确保了通信通道的端到端的安全性。
例如,连接模块可以与固件122相互作用,以便随后与计算机101的网卡124相互作用,以便发起通过网卡124实现的在网络165上的通信,这样,就可以联系服务器30。因此,在这种情况下,连接模块依赖于主机的固件来实现与外部实体的通信,这样,设备就不需要内置的网卡或连网装置,也不必存储用于主机101的网卡124的驱动程序。现在,不必用固件122来初始化网卡124,连接模块就可以直接访问在设备10上存储的网卡驱动程序,以与网卡124相互作用,由此也能联系外部实体30。然而,在这种情况下,需要在设备10中存储适当的网卡驱动程序,并且有可能要更新网卡驱动程序。另外,作为激进的替选方案,可以让设备10配备网络接入手段,例如配备网络设备(有线的或无线的),以便直接连接到服务器。在这种情况下,连接模块在设备处运行。这样的解决方案虽然有点昂贵,但是,由于无需与计算机101进行额外的交互就能联系服务器,可以减少延迟。
以上参照附图简要地描述了各种实施方式,这些实施方式可以有许多变通方案。可以考虑对上述功能加以组合。下一节给出一些例子。
2.具体实施例/技术实现细节
本节中讨论一些具体实施例,其中假设:
第一OS是本机(家用)OS,第二OS是公司OS;和
被引导加载器定位的可执行的分部BI是一个引导映像。
如上一节中详细解释的那样,本发明方法依赖于在外部设备10上驻留的引导加载器16。该设备方便地带有USB连接器12以及能够识别这种装置的所有现代固件。引导加载器至少部分地161存储在设备的防篡改存储器141中,这意味着它不会被授权的实体以外的实体变更。
在步骤S1,提供用户设备10和计算机101。将可信设备插入计算机101,开启计算机(步骤S2)。计算机的固件122识别可信设备10并确定其是可引导的(bootable)(步骤S3)。引导加载器16被固件装入计算机的存储器121(步骤S4)并被执行(步骤S5)。
如前文所述,引导加载器被配置得计算机101的磁盘120中含有引导映像BI的区(section)。一旦引导映像在磁盘上被定位(步骤S6),引导加载器或者可以要么检测未加密的引导映像的内容的完整性(integrity),要么用可信设备10上存储的密钥13对引导映像解密(步骤S7)。
在前一种情况中,在设备10上存储完整(integral)引导映像的内容的哈希值13,将其与每一次引导时在磁盘上找到的进行比较,这就足够了。引导映像可以只含有OS的内核,加上引导过程中需要的一些库(libraries),因此相当地小。
在后一种情况中,引导加载器可以用存储的密钥13解密引导引导映像。这比简单地确保内容的完整性具有更好的安全性,但却提高了增加更新软件的复杂性。作为替代,引导映像自身可以存储在可信设备上。这能确保引导加载器的完整性,但却需要可信设备上的更多存储空间,并且在实践中需要更多的更新。
设备10最好配备一个屏幕、以及接受或拒绝一个请求的手段。这样,就可以提示用户确认要使引导加载器和/或密钥可用。该环境于是包含两个主机操作系统111-1、111-2,一个是家用的,另一个是用于公司的。然而,在(员工提供的)设备10出现时,仅第二OS 111-2是能引导的(bootable)。如果家用OS安装在计算机101的第二个磁盘上安装新的操作系统,这个新的操作系统将不能被该可信设备引导。本方案涉及一个信任链,其中,可信的引导加载器16通过预先存储的或以其它方式可获得的信息来核查引导映像的完整性,引导映像则通过与用户相互作用而验证OS的其余部分的完整性。可信设备需要存储引导加载器16和某种额外信息13,例如散列值或密钥,即完整性检查数据。它可以在几百KB(千字节)的数据中被编码,并且预期很少变化。磁盘上驻留的引导映像含有公司OS的内核(kernel)和一些有用的驱动程序和应用程序。它可以在几十MB(兆字节)中被编码,预期其变化频率与内核和关键的库需要修补的频率相同。这些组件是远程更新的。引导镜像在步骤S8执行。可信的企业环境111-2e一旦运行(步骤S11),就能验证这些组件是否是最新的,如果不是,是否能被修改。
在优选实施例中,雇主的主机OS 111-2是员工修改不了的,这样,就可以将单一映像部署到所有的员工,这能增强安全性,简化系统的更新。公司主机OS 111-2于是就是安全地运行分配给员工的公司VM的工具。这个虚拟机可以就其执行的软件为员工定制,并且可以被员工以对待普通台式机的同样方式进行修改。当计算机被用于家庭用途时,计算机通电后引导相应的磁盘或磁盘分区。当计算机被用于公司通途时,用户插入公司提供的可信设备10。固件将在该设备上存储的引导加载器读入内存,引导加载器读取并测试磁盘上存储的引导映像的完整性。如果引导映像是完整的,则引导映像公司主机OS的加密的根文件系统。VM然后被以文件的形式存储在这个文件系统上,然后可以被执行,步骤S12。
由于公司的虚拟机是在公司的主机OS上执行的,公司可以自由选择任何操作系统作为主机OS,只要该操作系统能支持适当的虚拟机管理器。例如,企业VM可以是Windows 7台式机,而公司主机OS是Linux。
在优选实施例中,主机OS 111-2支持显式引导映像。如果不是这样,则可以利用创建映像时进行的映像准备阶段从该OS中提取一个引导映像,或者用另一个OS作为引导映像。
引导程序还具有额外的功能,如果计算机101只有一个磁盘120且家用OS和公司OS共用这个磁盘,这些功能特别有益。要在公司OS的引导过程中不改变家用OS,就必须能从引导加载器识别公司OS被存储在磁盘上的哪里。这个信息通常被存储在位于磁盘起始处的分区表中,但这样的话,从家用操作系统就能看到这个信息,因此,在本发明的环境中,这是不可接受的。相反,引导加载器读取位于在磁盘起始处找到的家用OS的分区表并计算其在磁盘上占用多少空间(基本上,家用OS的大小,是现有的分区所覆盖的磁盘的一小部分)。然后,引导加载器家为了定位公司OS,就假设公司OS将被发现始于磁盘上家用OS之后的扇区(步骤S6)。引导加载器采用前文所述的哈希机制(hashing mechanism)来检查公司OS的引导映像的完整性(步骤S7),并将其装入内存,用于引导,步骤S8。引导映像被存储在公司OS盘内的某个预定位置。
另外,为了让公司OS找到其自己的磁盘(即其使用的磁盘的一小部分),继续引导,引导过程最好是在实际的物理磁盘120上构造一个覆盖磁盘120o(步骤S10a-c),由此屏蔽被本机家用OS使用的那部分磁盘。为此,引导过程读取(S10a)本机分区表,构造(S10c)覆盖磁盘,使得覆盖磁盘始于本机OS使用的最后一个扇区之后的扇区并延续到磁盘的末尾。假设用户已经缩小了本机OS的分区,以便磁盘上有足够的自由空间来存储公司OS。在本机OS看来,公司OS所用的空间,只不过是其使用范围之外的未被占用的空间。本机OS完全不清楚公司OS的存在。若要去除公司OS的所有痕迹,只要要求回收(reclaim)这个未被占用的空间就足矣。由于覆盖磁盘的构造,公司OS运行时认为其自己拥有整个磁盘。图5示出了覆盖磁盘的构造。
已经参照有限数量的实施例、变通方案和附图描述了本发明,所属技术领域的熟练人员应当明白,在不脱离本发明的范围的情况下可以作出各种变更和可替换的等同方案。特别地,在给定实施例、变通方案中描述的、或在某个附图中表示的一个特征(装置特征或方法特征),可以与另一个实施例、变通方案或附图中的另一个特征结合,或者取代另一个特征,而不脱离本发明的范围。可以相应地设想就任何上述实施例或变通方案变异所描述的特征的各种组合,它们都落在后附权利要求的范围内。此外,在不脱离本发明的范围的情况下,可以作出许多微小的修改,使特定的情况或材料适应本发明的教导。因此,本发明并不局限于所公开的具体实施方式,而是要包括落在后附的权利要求的范围内的所有实施方式。此外,还可以设想上文未予明确触及的许多其它变通方案。例如,设备10的电源可以采用太阳能电池或任何其它合适的电池。如前文所述,这里描述的各计算机化的方法,已经按照它们的主要功能分类:即,使引导加载器被发送(步骤S6)到计算机(101)并在计算机(101)上执行(步骤S8),定位(步骤S6)并执行(步骤S8)第二主机操作系统的一个可执行分部BI。这些主要功能都被描述为是分配给引导加载器的。然而,也可以等同地将本发明的实施例描述为将同样的功能分布于两个或更多的模块上,每个模块要提供这些功能的一个或多个。
附图标记
10       用户可信设备
11       安全设备的CPU
12       连接接口
14       持久性存储器
16       引导加载器/引导使能数据结构
30       服务器
100      通用计算机系统
101      主机计算机
105      计算机处理器
110      存储器
111      操作系统(OS)
115      存储器控制器
120      物理存储介质(物理磁盘)
120-1    物理存储介质120的第一部分
s1       物理存储介质的第一部分的大小
ls1      物理存储介质的第一部分的大小的最后扇区
120-2    物理存储介质的第二部分
fs2      物理存储介质的第二部分的第一扇区
122      主机计算机的固件(BIOS)
124      网卡
125      显示控制器
130      显示器
141      安全存储器
142      非安全存储器
145      输入/输出设备(外围设备)
150      键盘
155      鼠标
161      引导加载器的第一分部
162      引导加载器的第二分部
165      网络

Claims (15)

1.一种用户便携设备(10),优选地是安全的防篡改设备,包含:
使得能够与计算机(101)连接(S2)的连接接口(12);
持久性存储器(14);和
引导加载器(16),存储在持久性存储器(14)上,最好是存储在该设备的安全存储器(141)上,
其中,引导加载器(16)在设备(10)与所述计算机(101)通过所述连接接口连接(S2)时能被计算机(101)的固件(122)检测到(S3),并且包含以下指令:
使所述固件(122)把引导加载器(16)装入(S4)计算机(101)的存储器(121),用于随后的执行(S5);和
在计算机(101)上执行时,与固件相互作用,以
从所述计算机(101)的、其第一部分(120-1)和第二部分(120-2上分别存储着第一主机操作系统(111-1)和第二主机操作系统(111-2)的物理存储介质(120)的分区信息(111-1p),确定所述物理存储介质的第二部分(120-2),其中该分区信息告知第一主机操作系统但不告知第二主机操作系统;
定位第二部分(120-2)中的第二主机操作系统(111-2)的一分部(BI);和
执行所述分部(BI),由此,仅第二主机操作系统能从用户便携设备(10)引导。
2.按照权利要求1的用户便携设备(10),其中,用户便携设备进一步包含存储在所述安全存储器(14)上的完整性检查数据(13),并且,引导加载器被进一步配置得根据所述完整性检查数据(13)检查所述分部(BI)的完整性。
3.按照权利要求2的用户便携设备(10),其中,引导加载器(16)被配置得通过哈希所述分部的内容和对照所述完整性检查数据(13)核对结果哈希值,检查所述分部(BI)的完整性。
4.按照权利要求1至3的任何之一的用户便携设备(10),其中,引导加载器还被配置得在计算机(101)上执行时,通过从物理存储介质(120)的给定扇区(fs2)搜索所述分部(BI)而定位所述分部(BI),该扇区(fs2)始于所述物理存储介质上存储的第一操作系统所用的最后一个扇区(ls1)之后,最好是紧接其后。
5.按照权利要求4的用户便携设备(10),其中,引导加载器还被配置得在计算机(101)上执行时,根据物理存储介质的分区信息(111-1p)计算第一部分的大小,并推断哪个扇区(ls1)是第一操作系统使用的最后扇区。
6.按照权利要求5的用户便携设备(10),其中,引导加载器还被配置得在计算机(101)上执行时,根据以下信息直接定位所述分部(BI):
所述给定扇区(ls1);和
所述第二部分(120-2)上存储的所述第二主机操作系统(111-2)内的所述分部(BI)的相对位置(r1)的数据。
7.按照权利要求1至6的任何之一的用户便携设备(10),其中,引导加载器还被配置得在计算机(101)上执行时,致使在所述物理存储介质(120)上构造一个覆盖磁盘(120o),以屏蔽所述物理存储介质被第一主机操作系统(111-1)占据的部分,该覆盖磁盘是所述物理存储介质支持的物理存储介质的软件表示,
其中,优选地,引导加载器还被配置得在计算机(101)上执行时,致使构造该覆盖磁盘,使得该覆盖磁盘起始于物理存储介质的一个扇区,该个扇区在第一主机操作系统所占据的最后扇区之后,最好是紧接其后。
8.一种系统(1),包含按照权利要求1至7的任何之一的用户便携设备(10)和用户便携设备通过连接接口(12)可连接的计算机(101),其中,计算机(101)具有分别在第一部分和第二部分上存储的第一主机操作系统(111-1)和第二主机操作系统(111-2),并且其中,计算机的物理存储介质的分区信息告知第一主机操作系统(111-1)但不告知第二主机操作系统(111-2)。
9.按照权利要求8的系统,其中,第二主机操作系统的未加密分部(BI)只包含:
第二操作系统的内核;和
引导所述计算机时涉及的软件。
10.一种引导按照权利要求8或9的系统中的计算机(101)的方法,该方法包含,在用户便携设备与计算机(101)连接(S2)时:
让用户便携设备(10)的引导加载器(16)被主机计算机(101)的固件(122)检测到,由此,按照引导加载器(16)给固件的指令,引导加载器发送(S4)到计算机(101)并在计算机(101)上执行,以
定位(S6)和执行(S8)第二主机操作系统(111-2)的一分部(BI),使得
第二主机操作系统引导并且仅第二主机操作系统能从用户便携设备(10)引导(S8-S11)。
11.按照权利要求10的方法,进一步包含:
在所述物理存储介质(120)上构造(S10a-b)一个覆盖磁盘(120o),所述物理存储介质(120)最好是物理磁盘,以屏蔽所述物理存储介质被第一主机操作系统(111-1)占据的部分,该覆盖磁盘是所述物理存储介质支持的物理存储介质软件表示;
在所构造的覆盖磁盘(120o)上运行(S11)第二主机操作系统(111-2e);和
在运行的第二主机操作系统(111-2e)上的运行(S12)软件(112)。
12.按照权利要求11的方法,进一步包含,在构造覆盖磁盘之前:
读取(S10a)物理存储介质(120)的分区信息(111-1p);
根据所述分区信息,最好是通过计算所述物理存储介质上被第一主机操作系统占据的第一部分的大小(s1),推断(S10b)第二主机操作系统(111-2)位于所述物理存储介质上的哪里;和
构造(S10c)覆盖磁盘,使得该覆盖磁盘
起始于物理存储介质的一个扇区,该个扇区在第一主机操作系统所占据的最后扇区之后,最好是紧接其后,和
优选地,延续直至物理存储介质的末尾。
13.按照权利要求11或12的方法,其中,在第二主机操作系统上运行软件进一步包含:
运行(S12)一虚拟机(112),作为第二主机操作系统(111-2e)上的客户操作系统,该客户操作系统封装一个可执行环境。
14.按照权利要求13的方法,其中:
第一主机操作系统(111-1)是个人操作系统;和
第二主机操作系统(111-2)是企业操作系统;
并且其中,
运行该虚拟机(112)导致显示与给定用户有关的桌面。
15.一种计算机程序产品,包含其中体现有引导加载器(16)的计算机可读存储介质,其中引导加载器(16)能被计算机(101)的固件(112)检测到,并且包含以下指令:
使所述固件(122)把引导加载器(16)装入(S4)计算机(101)的存储器(121),用于随后的执行(S5);和
在计算机(101)上执行时,与固件相互作用,以
从所述计算机(101)的、其第一部分(120-1)和第二部分(120-2)上分别存储着第一主机操作系统(111-1)和第二主机操作系统(111-2)的物理存储介质(120)的分区信息(111-1p),确定所述物理存储介质的第二部分(120-2),其中该分区信息告知第一主机操作系统但不告知第二主机操作系统;
定位第二部分(120-2)中的第二主机操作系统(111-2)的一分部(BI);和
执行所述分部(BI),由此,当引导加载器在计算机(101)上执行时仅第二主机操作系统能从用户便携设备(10)引导。
CN201380065648.0A 2012-12-14 2013-11-26 用户便携设备及用于“自带”计算工作环境的系统和方法 Expired - Fee Related CN104871174B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1222584.3 2012-12-14
GB1222584.3A GB2508895A (en) 2012-12-14 2012-12-14 Bootloader for booting a computer into a second operating system that is hidden from a first host operating system
PCT/IB2013/060409 WO2014091344A1 (en) 2012-12-14 2013-11-26 Boot mechanisms for 'bring your own' management

Publications (2)

Publication Number Publication Date
CN104871174A true CN104871174A (zh) 2015-08-26
CN104871174B CN104871174B (zh) 2017-06-13

Family

ID=47630747

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380065648.0A Expired - Fee Related CN104871174B (zh) 2012-12-14 2013-11-26 用户便携设备及用于“自带”计算工作环境的系统和方法

Country Status (5)

Country Link
US (1) US9721102B2 (zh)
JP (1) JP6095796B2 (zh)
CN (1) CN104871174B (zh)
GB (1) GB2508895A (zh)
WO (1) WO2014091344A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107273769A (zh) * 2017-07-11 2017-10-20 北京洋浦伟业科技发展有限公司 一种电子设备的保护方法和装置
CN107544925A (zh) * 2016-06-24 2018-01-05 爱思开海力士有限公司 存储器系统及加速引导时间的方法
CN108804034A (zh) * 2018-05-22 2018-11-13 无锡辰云科技股份有限公司 一种基于读写分离的云终端处理方法及系统
CN109997140A (zh) * 2018-09-10 2019-07-09 深圳市汇顶科技股份有限公司 使用一次写入寄存器从设备的睡眠状态加速安全启动的低功耗嵌入式设备
WO2020052202A1 (en) * 2018-09-10 2020-03-19 Shenzhen GOODIX Technology Co., Ltd. Low power embedded device using a write-once register to speed up the secure boot from sleep states of the device

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201525858A (zh) * 2013-12-31 2015-07-01 Ibm 基板管理控制器與其韌體載入方法
GB2525409B (en) 2014-04-24 2016-11-02 Ibm Enabling an external operating system to access encrypted data units of a data storage system
US9672361B2 (en) * 2014-04-30 2017-06-06 Ncr Corporation Self-service terminal (SST) secure boot
US11200066B2 (en) * 2018-05-30 2021-12-14 Ncr Corporation Secure device for bypassing operating system (OS) security
JP7439067B2 (ja) * 2018-09-27 2024-02-27 ランディス・ギア イノベーションズ インコーポレイテッド ファイルシステムの検証とインストール
JP7428049B2 (ja) 2020-03-30 2024-02-06 大日本印刷株式会社 デバイス、セキュアエレメント及びデバイスのセキュアブート方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1437106A (zh) * 2002-02-08 2003-08-20 联想(北京)有限公司 计算机单功能模式的启动方法
US20030221115A1 (en) * 2002-05-23 2003-11-27 Shinji Itoh Data protection system
CN101222697A (zh) * 2007-01-09 2008-07-16 上海晨兴电子科技有限公司 使用移动终端作为计算机扩展应用的实现方法
JP2009043133A (ja) * 2007-08-10 2009-02-26 Hitachi Software Eng Co Ltd 情報処理装置
CN101751519A (zh) * 2008-12-09 2010-06-23 纬创资通股份有限公司 提升一计算机系统的信息安全的方法及其相关计算机系统
CN101809536A (zh) * 2007-09-28 2010-08-18 微软公司 经由移动设备的多os(操作系统)引导

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1274009A3 (en) * 2001-07-03 2003-12-03 Hewlett-Packard Company System and method to enable a legacy BIOS system to boot from a disk that includes EFI GPT partitions
TWI220955B (en) 2003-03-11 2004-09-11 Acer Inc Computer system being operated under multiple operation modes and operation method thereof
KR100673681B1 (ko) * 2004-03-25 2007-01-24 엘지전자 주식회사 개인용 컴퓨터에서의 인스턴트 온 기능 실행방법
JP2006301771A (ja) 2005-04-18 2006-11-02 Toshiba Corp 情報処理装置および動作制御方法
JP4767129B2 (ja) * 2006-08-17 2011-09-07 株式会社エヌ・ティ・ティ・ドコモ Os切替装置及びos切替方法
US7721078B2 (en) * 2006-10-31 2010-05-18 Dell Products, Lp Method and system to dynamically boot to a non-visible partition
US8171275B2 (en) * 2007-01-16 2012-05-01 Bally Gaming, Inc. ROM BIOS based trusted encrypted operating system
JP2008234220A (ja) * 2007-03-19 2008-10-02 Ricoh Co Ltd 情報処理装置、ソフトウェア起動方法及び画像処理装置
DE112009000612A5 (de) * 2008-03-14 2012-08-02 Mitsubishi Electric Corp. Multi-Betriebssystem-Booteinrichtung (OS), Multi-OS-Boot-Programm, Aufzeichnungsmedium und Multi-OS-Bootverfahren
US20110112819A1 (en) 2009-11-11 2011-05-12 Sony Corporation User interface systems and methods between a portable device and a computer
JP5250573B2 (ja) * 2010-02-08 2013-07-31 株式会社日立製作所 シンクライアントマスタの書換システム、およびシンクライアントマスタの書換方法
CN102906698A (zh) * 2010-05-20 2013-01-30 杉中顺子 外部启动设备、外部启动方法、信息处理装置及网络通信系统
US8578443B2 (en) * 2011-06-01 2013-11-05 Mobileasap, Inc. Real-time mobile application management

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1437106A (zh) * 2002-02-08 2003-08-20 联想(北京)有限公司 计算机单功能模式的启动方法
US20030221115A1 (en) * 2002-05-23 2003-11-27 Shinji Itoh Data protection system
CN101222697A (zh) * 2007-01-09 2008-07-16 上海晨兴电子科技有限公司 使用移动终端作为计算机扩展应用的实现方法
JP2009043133A (ja) * 2007-08-10 2009-02-26 Hitachi Software Eng Co Ltd 情報処理装置
CN101809536A (zh) * 2007-09-28 2010-08-18 微软公司 经由移动设备的多os(操作系统)引导
CN101751519A (zh) * 2008-12-09 2010-06-23 纬创资通股份有限公司 提升一计算机系统的信息安全的方法及其相关计算机系统

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107544925A (zh) * 2016-06-24 2018-01-05 爱思开海力士有限公司 存储器系统及加速引导时间的方法
CN107544925B (zh) * 2016-06-24 2020-05-08 爱思开海力士有限公司 存储器系统及加速引导时间的方法
CN107273769A (zh) * 2017-07-11 2017-10-20 北京洋浦伟业科技发展有限公司 一种电子设备的保护方法和装置
CN108804034A (zh) * 2018-05-22 2018-11-13 无锡辰云科技股份有限公司 一种基于读写分离的云终端处理方法及系统
CN108804034B (zh) * 2018-05-22 2021-03-02 上海鲲鲸云股份有限公司 一种基于读写分离的云终端处理方法及系统
CN109997140A (zh) * 2018-09-10 2019-07-09 深圳市汇顶科技股份有限公司 使用一次写入寄存器从设备的睡眠状态加速安全启动的低功耗嵌入式设备
WO2020052202A1 (en) * 2018-09-10 2020-03-19 Shenzhen GOODIX Technology Co., Ltd. Low power embedded device using a write-once register to speed up the secure boot from sleep states of the device

Also Published As

Publication number Publication date
WO2014091344A1 (en) 2014-06-19
JP2015537323A (ja) 2015-12-24
JP6095796B2 (ja) 2017-03-15
US20150332050A1 (en) 2015-11-19
US9721102B2 (en) 2017-08-01
CN104871174B (zh) 2017-06-13
GB2508895A (en) 2014-06-18
GB201222584D0 (en) 2013-01-30

Similar Documents

Publication Publication Date Title
US11394548B2 (en) Secure provisioning of operating systems
JP6484255B2 (ja) 信頼実行環境を含むホストのアテステーション
CN104871174A (zh) 用于“自带”管理的引导机制
EP3805968B1 (en) Technologies for secure hardware and software attestation for trusted i/o
US10318724B2 (en) User trusted device for detecting a virtualized environment
US8522018B2 (en) Method and system for implementing a mobile trusted platform module
US9792143B1 (en) Platform secure execution modes
US11409884B2 (en) Security profiling of system firmware and applications from an OOB appliance at a differentiated trust boundary
Li et al. A trusted virtual machine in an untrusted management environment
JP4732513B2 (ja) ソフトウェア・ベースのセキュリティ・コプロセッサを提供する方法および装置
CN107003866A (zh) 来自加密模板的加密虚拟机的安全创建
US9639690B2 (en) User trusted device to attest trustworthiness of initialization firmware
CN103270518A (zh) 虚拟机验证
GB2512376A (en) Secure execution of software modules on a computer
CN114402295A (zh) 安全运行时系统和方法
US11689365B2 (en) Centralized volume encryption key management for edge devices with trusted platform modules
Gligor Security limitations of virtualization and how to overcome them
US20180089415A1 (en) User trusted device for detecting a virtualized environment
Peters et al. Achieving Software Security for Measuring Instruments under Legal Control.
US11960737B2 (en) Self-deploying encrypted hard disk, deployment method thereof, self-deploying encrypted hard disk system and boot method thereof
US20230261867A1 (en) Centralized volume encryption key management for edge devices with trusted platform modules
Yadav SECURE BOOTLOADER IN EMBEDDED SYSTEM USING MISRA-C
Wan Hardware-Assisted Security Mechanisms on Arm-Based Multi-Core Processors
Feng et al. Using mobile phones to enhance computing platform trust
Butler et al. SwitchBlade: Policy-Driven Disk Segmentation

Legal Events

Date Code Title Description
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170613

CF01 Termination of patent right due to non-payment of annual fee