CN113330435A - 跟踪被污染的连接代理 - Google Patents
跟踪被污染的连接代理 Download PDFInfo
- Publication number
- CN113330435A CN113330435A CN202080010883.8A CN202080010883A CN113330435A CN 113330435 A CN113330435 A CN 113330435A CN 202080010883 A CN202080010883 A CN 202080010883A CN 113330435 A CN113330435 A CN 113330435A
- Authority
- CN
- China
- Prior art keywords
- connection broker
- connection
- client device
- server
- public
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 27
- 238000003384 imaging method Methods 0.000 claims 1
- 230000015654 memory Effects 0.000 description 47
- 239000003795 chemical substances by application Substances 0.000 description 24
- 238000007726 management method Methods 0.000 description 23
- 238000004891 communication Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 230000006855 networking Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 241000699666 Mus <mouse, genus> Species 0.000 description 2
- 241000700605 Viruses Species 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0823—Network architectures or network communication protocols for network security for authentication of entities using certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/33—User authentication using certificates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/126—Applying verification of the received information the source of the received data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2463/00—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
- H04L2463/081—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying self-generating credentials, e.g. instead of receiving credentials from an authority or from another peer, the credentials are generated at the entity itself
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Computer And Data Communications (AREA)
- Debugging And Monitoring (AREA)
Abstract
本文描述了在例如没有可信中央机构的情况下用于跟踪被污染的连接代理的方法和系统。在服务器中断期间,客户端设备可以基于公钥加密或基于证书的系统来验证连接代理未被污染。如果连接代理未被污染,则服务器可以对与连接代理相关联的公钥或证书进行签名。服务器可以将租约、与服务器相关联的公钥提供到客户端设备。连接代理可以对由客户端设备生成的数据进行签名。客户端设备可以例如基于与服务器相关联的公钥来验证签名公钥的签名。客户端设备可以例如基于与连接代理相关联的验证的公钥来验证签名数据的签名。
Description
相关申请的交叉引用
本申请要求于2019年1月2日提交的美国非临时专利申请第16/238,202号的优先权,该专利申请的全部内容通过引用明确地并入本文。
技术领域
本文中描述的各方面总体上涉及桌面和应用虚拟化、基于服务器的计算环境、虚拟机、云计算和联网。
背景技术
桌面和应用虚拟化技术可以允许从具有任何操作系统的任何设备(例如独立于它们实际在其上的机器)访问桌面和应用。企业的个人可以远程地工作和协作,而不管设备或网络。用户可以接收在他们的会话的生命期分配的专用虚拟机。在将用户分配给虚拟机之前,可信代理机构可以检查该机器是干净的还是被例如先前登录的用户污染。随着代理机构的中断,用户可能无法确认机器是干净的还是被污染。
发明内容
下文呈现本文中描述的各个方面的简化概述。本概述不是广泛的概述,并且不旨在标识所需的或关键的元素或者描绘权利要求的范围。以下概述仅以简化形式呈现一些概念,作为以下提供的更详细描述的介绍性序言。
为了克服上述现有技术中的限制,并且为了克服在阅读和理解本说明书时将显而易见的其他限制,本文中描述的各方面涉及一种将计算设备上的连接代理以及与该连接代理相关联的公钥注册到一个或多个服务器的方法。基于确定连接代理没有被一个或多个先前登录的用户污染,一个或多个服务器可以对与连接代理相关联的公钥进行签名。连接代理可以从一个或多个服务器接收与连接代理相关联的签名公钥。连接代理可以存储与连接代理相关联的签名公钥。连接代理可以对从客户端设备接收的数据进行签名。连接代理可以将与连接代理相关联的签名公钥和签名数据发送到客户端设备。确定连接代理没有被一个或多个先前登录的用户污染可以包括确定未授权的软件应用程序没有被安装在连接代理上。在注册连接代理和与连接代理相关联的公钥之前,基于确定连接代理被污染,一个或多个服务器可以对连接代理进行重置映像。一个或多个服务器可以生成与一个或多个服务器相关联的公钥和私钥。一个或多个服务器可以将与一个或多个服务器相关联的公钥和私钥存储在与一个或多个服务器相关联的数据库中。在对从客户端设备接收的数据进行签名之后,连接代理可以从连接代理中移除与连接代理相关联的私钥。在发送与连接代理相关联的签名公钥之后,连接代理可以从连接代理中移除与连接代理相关联的签名公钥和与连接代理相关联的公钥。在发送与连接代理相关联的签名公钥和签名数据之后,将客户端设备连接到与连接代理相关联的虚拟桌面或虚拟应用中的一个或多个。
本公开的一个或多个方面还可以提供一种由客户端设备并且从一个或多个服务器接收与一个或多个服务器相关联的公钥的方法。客户端设备可以从计算设备上的连接代理接收信息,该信息包括与连接代理相关联并且由与一个或多个服务器相关联的私钥签名的公钥,以及由客户端设备生成并且由与连接代理相关联的私钥签名的数据。客户端设备可以确定与连接代理相关联的签名公钥的签名是否对应于与一个或多个服务器相关联的公钥。接收与一个或多个服务器相关联的公钥包括由一个或多个服务器将连接租约发布到客户端设备。基于确定与连接代理相关联的签名公钥的签名不对应于与一个或多个服务器相关联的公钥,客户端设备可以连接到连接租约中的第二连接代理。基于确定与连接代理相关联的签名公钥的签名对应于与一个或多个服务器相关联的公钥,客户端设备可以确定签名数据的签名是否对应于与连接代理相关联的签名公钥。基于确定签名数据的签名不对应于与连接代理相关联的签名公钥,客户端设备可以连接到连接租约中的第二连接代理。基于确定签名数据的签名不对应于与连接代理相关联的签名公钥,客户端设备可以连接到连接代理。连接设备可以从一个或多个服务器接收与一个或多个服务器相关联的第二公钥。基于与一个或多个服务器相关联的第二公钥,客户端设备可以验证与连接代理相关联的签名公钥。与连接代理相关联的签名公钥可以包括机器ID或有效日期中的一个或多个。
本公开的一个或多个方面还可以提供一个或多个非暂时性计算机可读介质,一个或多个非暂时性计算机可读介质存储计算机可读指令,计算机可读指令在被执行时使计算设备上的连接代理将该连接代理和与该连接代理相关联的公钥注册到一个或多个服务器。基于确定连接代理没有被一个或多个先前登录的用户污染,计算机可读指令可以使连接代理从一个或多个服务器接收与连接代理相关联并且由一个或多个服务器签名的公钥。计算机可读指令可以使连接代理存储与连接代理相关联的签名公钥。计算机可读指令可以使连接代理对从客户端设备接收的数据进行签名。计算机可读指令可以使连接代理将与连接代理相关联的签名公钥和签名数据发送到客户端设备。在连接代理对从客户端设备接收的数据进行签名之后,计算机可读指令可以使连接代理从连接代理中移除与连接代理相关联的私钥。在连接代理将与连接代理相关联的签名公钥发送到客户端设备之后,计算机可读指令可以使连接代理从连接代理中移除与连接代理相关联的签名公钥和与连接代理相关联的公钥。计算机可读指令可以使连接代理从客户端设备并且基于确定与连接代理相关联的签名公钥的签名被验证来接收连接到连接代理和连接到客户端设备的请求。确定与连接代理相关联的签名公钥的签名被验证可以包括确定签名数据的签名被验证。
这些和另外的方面将受益于下面进一步详细讨论的公开内容而被理解。
附图说明
通过参考考虑附图的以下描述,可以获得对本文中描述的方面及其优点的更完整的理解,在附图中,相同的附图标记指示相同的特征,并且其中:
图1描绘了可以根据本文中描述的一个或多个说明性方面使用的说明性计算机系统架构。
图2描绘了可以根据本文中描述的一个或多个说明性方面使用的说明性远程访问系统架构。
图3描绘了可以根据本文中描述的一个或多个说明性方面使用的说明性虚拟化(管理程序)系统架构。
图4描绘了可以根据本文中描述的一个或多个说明性方面使用的说明性的基于云的系统架构。
图5描绘了可以根据本文中描述的一个或多个说明性方面使用的说明性操作环境。
图6A和图6B描绘了可以根据本文中描述的一个或多个说明性方面使用的一个或多个连接代理的示例操作的说明性流程图。
图7A和图7B描绘了可以根据本文中描述的一个或多个说明性方面使用的一个或多个服务器的示例操作的说明性流程图。
图8A和图8B描绘了可以根据本文中描述的一个或多个说明性方面使用的一个或多个客户端设备的示例操作的说明性流程图。
具体实施方式
在各种实施例的以下描述中,参考上文标识且形成其一部分的附图,并且在附图中以说明的方式示出其中可以实践本文中描述的各方面的各种实施例。应理解,在不脱离本文中描述的范围的情况下,可以利用其他实施例,并且可以进行结构和功能修改。各个方面能够是其他实施例并且能够以各种不同的方式实践或执行。
作为对以下更详细描述的主题的概述,本文中描述的各方面涉及在没有例如可信代理机构的情况下跟踪计算设备上的连接代理。连接代理可以生成私钥和公钥,发送或接收公钥,和/或对由客户端设备生成的数据进行签名。一个或多个服务器可以生成私钥和公钥,确定连接代理是干净的还是被污染,发送或接收公钥,和/或对公钥进行签名。客户端设备可以接收公钥,发送或接收由客户端设备生成的数据,和/或将私钥与公钥进行匹配。这样,即使在一个或多个服务器中断时,客户端设备也可以确定连接代理是干净的还是被污染。因此,与客户端设备相关联的个人可以在不使用例如可信代理机构的情况下有利地且安全地利用连接代理。
应理解,本文中使用的措辞和术语是为了描述的目的,而不应当被认为是限制性的。相反,本文中使用的短语和术语被给予其最广泛的解释和含义。使用“包括”和“包含”及其变体是指涵盖其后列出的项及其等同物以及附加项及其等同物。术语“安装”、“连接”、“耦合”、“定位”、“接合”和类似术语的使用是指包括直接和间接安装、连接、耦合、定位和接合。
计算架构
计算机软件、硬件和网络可以用在各种不同的系统环境中,包括独立环境、联网环境、远程访问环境(也称为远程桌面)、虚拟化环境和/或基于云的环境等。图1图示了可用于在独立环境和/或联网环境中实现本文中描述的一个或多个说明性方面的系统架构和数据处理设备的一个实例。各种网络节点103、105、107和109可以经由诸如因特网的广域网(WAN)101互连。也可以或可替代地使用其他网络,包括专用内联网、公司网络、局域网(LAN)、城域网(MAN)、无线网络、个人网络(PAN)等。网络101用于说明的目的,并且可以用更少或附加的计算机网络代替。局域网133可以具有任何已知的LAN拓扑中的一个或多个,并且可以使用各种不同的协议中的一个或多个,诸如以太网。设备103、105、107和109以及其他设备(未示出)可以经由双绞线、同轴电缆、光纤、无线电波或其他通信介质连接到网络中的一个或多个。
本文中使用并在附图中描绘的术语“网络”不仅指其中远程存储设备经由一个或多个通信路径耦合在一起的系统,而且指有时可以耦合到这种具有存储能力的系统的独立设备。因此,术语“网络”不仅包括“物理网络”,而且还包括“内容网络”,其包括归属于单个实体的数据,该单个实体驻留在所有物理网络上。
部件可以包括数据服务器103、web服务器105和客户端计算机107、109。数据服务器103提供对数据库和控制软件的总体访问、控制和管理,以执行本文中描述的一个或多个说明性方面。数据服务器103可以连接到web服务器105,用户通过该web服务器105与所请求的数据交互并且获得所请求的数据。替代地,数据服务器103可以本身充当web服务器,并且直接连接到因特网。数据服务器103可以通过局域网133、广域网101(例如,因特网),经由直接连接或间接连接,或经由一些其他网络连接到web服务器105。用户可以使用远程计算机107、109,例如使用web浏览器经由web服务器105所承载的一个或多个外部暴露的网站连接到数据服务器103而与数据服务器103交互。客户端计算机107、109可以与数据服务器103一起使用以访问存储在其中的数据,或者可以用于其他目的。例如,如本领域中已知的,用户可以从客户端设备107使用因特网浏览器来访问web服务器105,或者通过执行通过计算机网络(诸如因特网)与web服务器105和/或数据服务器103通信的软件应用来访问web服务器105。
服务器和应用可以被组合在相同的物理机器上,并且保留单独的虚拟地址或逻辑地址,或者可以驻留在单独的物理机器上。图1仅图示了可以使用的网络架构的一个实例,并且本领域技术人员将理解,所使用的特定网络架构和数据处理设备可以改变,并且对于它们提供的功能是次要的,如本文中进一步描述的。例如,由web服务器105和数据服务器103提供的服务可以被组合在单个服务器上。
每个部件103、105、107、109可以是任何类型的已知计算机、服务器或数据处理设备。例如,数据服务器103可以包括控制数据服务器103的整体操作的处理器111。数据服务器103还可以包括随机存取存储器(RAM)113、只读存储器(ROM)115、网络接口117、输入/输出接口119(例如,键盘、鼠标、显示器、打印机等)和存储器121。输入/输出(I/O)119可以包括用于读、写、显示和/或打印数据或文件的各种接口单元和驱动器。存储器121还可以存储用于控制数据处理设备103的整体操作的操作系统软件123、用于指示数据服务器103执行本文中描述的各方面的控制逻辑125,以及提供可以或不可以结合本文中描述的方面使用的辅助、支持和/或其他功能的其他应用软件127。控制逻辑125在本文中也可以被称为数据服务器软件125。数据服务器软件125的功能可以指基于编码到控制逻辑125中的规则自动做出的操作或决定、由将输入提供到系统中的用户手动做出的操作或决定,和/或基于用户输入(例如,查询、数据更新等)的自动处理的组合。
存储器121还可以存储用于执行本文中描述的一个或多个方面的数据,包括第一数据库129和第二数据库131。在一些实施例中,第一数据库129可以包括第二数据库131(例如,作为单独的表格、报告等)。即,根据系统设计,信息可以存储在单个数据库中,或分离成不同的逻辑数据库、虚拟数据库或物理数据库。设备105、107和109可以具有与关于设备103所描述的相似或不同的架构。本领域技术人员将理解,本文中描述的数据处理设备103(或设备105、107或109)的功能可以跨多个数据处理设备分布,以例如将处理负载跨多个计算机分配,从而基于地理位置、用户访问级别、服务质量(QoS)等来隔离交易。
一个或多个方面可以体现在计算机可用或可读的数据和/或计算机可执行指令中,诸如体现在由一个或多个计算机或本文中描述的其他设备执行的一个或多个程序模块中。一般而言,程序模块包括例程、程序、对象、部件、数据结构等,其在由计算机或其他设备中的处理器执行时执行特定任务或实现特定抽象数据类型。模块可以用随后被编译用于执行的源代码编程语言来编写,或者可以用诸如(但不限于)超文本标记语言(HTML)或可扩展标记语言(XML)的脚本语言来编写。计算机可执行指令可以存储在诸如非易失性存储设备的计算机可读介质上。可以使用任何合适的计算机可读存储介质,包括硬盘、CD-ROM、光存储设备、磁存储设备和/或它们的任何组合。另外,表示本文中描述的数据或事件的各种传输(非存储)介质可以以穿过诸如金属线、光纤和/或无线传输介质(例如,空气和/或空间)的信号传导介质传播的电磁波的形式在源和目的地之间传送。本文中描述的各个方面可以体现为方法、数据处理系统或计算机程序产品。因此,各种功能可整体或部分地体现在软件、固件和/或硬件或硬件等效物(诸如集成电路、现场可编程门阵列(FPGA)等)中。特定的数据结构可用于更有效地实现本文中描述的一个或多个方面,并且这样的数据结构被认为在本文中描述的计算机可执行指令和计算机可用数据的范围内。
进一步参考图2,本文中描述的一个或多个方面可以在远程访问环境中实现。图2描绘了包括可根据本文中描述的一个或多个说明性方面使用的说明性计算环境200中的计算设备201的示例系统架构。计算设备201可以用作单服务器或多服务器桌面虚拟化系统(例如,远程访问或云系统)中的服务器206a,并且可以被配置成为客户端访问设备提供虚拟机。计算设备201可以具有用于控制设备201及其相关部件(包括RAM205、ROM207、输入/输出(I/O)模块209和存储器215)的整体操作的处理器203。
I/O模块209可以包括计算设备201的用户可以通过其提供输入的鼠标、小键盘、触摸屏、扫描仪、光学读取器和/或指示笔(或其他输入设备),并且还可以包括用于提供音频输出的扬声器中的一个或多个以及用于提供文本输出、视听输出和/或图形输出的视频显示设备中的一个或多个。软件可以存储在存储器215和/或其他存储装置中,以将指令提供到处理器203,用于将计算设备201配置到专用计算设备中,以便执行本文中描述的各种功能。例如,存储器215可以存储由计算设备201使用的软件,诸如操作系统217、应用程序219和相关联的数据库221。
计算设备201可以在支持到诸如终端240(也被称为客户端设备)等一个或多个远程计算机的连接的联网环境中操作。终端240可以是包括以上关于计算设备103或201描述的多个或全部元件的个人计算机、移动设备、膝上型计算机、平板计算机或服务器。图2所描绘的网络连接包括局域网(LAN)225和广域网(WAN)229,但还可以包括其他网络。当在LAN联网环境中使用时,计算设备201可以通过网络接口或适配器223连接到LAN225。当在WAN联网环境中使用时,计算设备201可以包括调制解调器或其他广域网接口227,用于在诸如计算机网络230(例如,因特网)等的WAN229上建立通信。将理解,所示的网络连接是说明性的,并且可以使用在计算机之间建立通信链路的其他装置。计算设备201和/或终端240还可以是包括诸如电池、扬声器和天线(未示出)等各种其他部件的移动终端(例如,移动电话、智能手机、个人数字助理(PDA)、笔记本等)。
本文中描述的方面还可以与众多其他通用或专用计算系统环境或配置一起操作。可适用于本文中描述的方面的其他计算系统、环境和/或配置的实例包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人计算机(PC)、小型计算机、大型计算机、包括以上系统或设备中的任一个的分布式计算环境等。
如图2所示,一个或多个客户端设备240可以与一个或多个服务器206a-206n(本文中统称为“服务器206”)通信。在一个实施例中,计算环境200可以包括安装在服务器206与客户端机器240之间的网络电器。网络电器可以管理客户端/服务器连接,并且在一些情况下可以在多个后端服务器206之间负载平衡客户端连接。
在一些实施例中,客户端机器240可以被称为单个客户端机器240或单组客户端机器240,而服务器206可以被称为单个服务器206或单组服务器206。在一个实施例中,单个客户端机器240与多于一个的服务器206通信,而在另一个实施例中,单个服务器206与多于一个的客户端机器240通信。在又一实施例中,单个客户端机器240与单个服务器206通信。
在一些实施例中,客户端机器240可以由以下非穷举性术语中的任一个来引用:客户端机器;客户端;客户端计算机;客户端设备;客户端计算设备;本地机器;远程机器;客户端节点;端点;或端点节点。在一些实施例中,服务器206可以由以下非穷举性术语中的任何一个来引用:服务器、本地机器;远程机器;服务器群或主机计算设备。
在一个实施例中,客户端机器240可以是虚拟机。虚拟机可以是任何虚拟机,而在一些实施例中,虚拟机可以是由类型1或类型2管理程序管理的任何虚拟机,管理程序例如由Citrix系统、IBM、VMware或任何其他管理程序开发的管理程序。在一些方面中,虚拟机可以由管理程序管理,而在其他方面中,虚拟机可以由在服务器206上执行的管理程序或在客户端240上执行的管理程序管理。
一些实施例包括客户端设备240,其显示由在服务器206或其他远程定位的机器上远程执行的应用生成的应用输出。在这些实施例中,客户端设备240可以执行虚拟机接收机程序或应用以在应用窗口、浏览器或其他输出窗口中显示输出。在一个实例中,应用是桌面,而在其他实例中,应用是生成或呈现桌面的应用。桌面可以包括为可集成本地应用和/或远程应用的操作系统的实例提供用户接口的图形壳层。本文中使用的应用是在操作系统(以及可选地还有桌面)的实例已经被加载之后执行的程序。
在一些实施例中,服务器206使用远程呈现协议或其他程序来将数据发送到在客户端上执行的瘦客户端或远程显示应用,以呈现由在服务器206上执行的应用生成的显示输出。瘦客户端或远程显示协议可以是以下非穷举性协议列表中的任何一个:佛罗里达州劳德代尔堡的思杰系统公司(CitrixSystems,Inc.)开发的独立计算架构(ICA)协议;或由华盛顿州雷德蒙市的微软(MicrosoftCorporation)公司制造的远程桌面协议(RDP)。
远程计算环境可以包括多于一个服务器206a-206n,使得服务器206a-206n例如在云计算环境中在逻辑上一起分组到服务器群206中。服务器群206可以包括在逻辑上分组在一起时地理上分散的服务器206,或在逻辑上分组在一起时彼此邻近定位的服务器206。在一些实施例中,服务器群206内的地理上分散的服务器206a-206n可以使用WAN(广域)、MAN(城域)或LAN(局域)通信,其中不同地理区域可以被表征为:不同的大陆;大陆的不同区域;不同的国家;不同的州;不同的城市;不同的校园;不同的房间;或前述地理位置的任何组合。在一些实施例中,服务器群206可以作为单个实体来管理,而在其他实施例中,服务器群206可以包括多个服务器群。
在一些实施例中,服务器群可以包括执行基本上类似类型的操作系统平台(例如,WINDOWS、UNIX、LINUX、iOS、ANDROID、SYMBIAN等)的服务器206。在其他实施例中,服务器群206可以包括第一组执行第一类型的操作系统平台的一个或多个服务器和第二组执行第二类型的操作系统平台的一个或多个服务器。
服务器206可以根据需要被配置为任何类型的服务器,例如文件服务器、应用服务器、web服务器、代理服务器、电器、网络电器、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、安全套接字层(SSL)VPN服务器、防火墙、web服务器、应用服务器,或者被配置为为主应用服务器、执行活动目录的服务器或执行提供防火墙功能、应用功能或负载平衡功能的应用加速程序的服务器。也可以使用其他服务器类型。
一些实施例包括第一服务器206a,第一服务器206a从客户端机器240接收请求,将该请求转发到第二服务器206b(未示出),并且用来自第二服务器206b(未示出)的响应来响应由客户端机器240生成的请求。第一服务器206a可以获取客户端机器240可用的应用的枚举以及与承载应用的枚举内标识的应用的应用服务器206相关联的地址信息。然后,第一服务器206a可以使用web接口呈现对客户请求的响应,并且直接与客户端240通信以向客户端240提供对标识后的应用的访问。一个或多个客户端240和/或一个或多个服务器206可以通过网络230(例如网络101)传输数据。
图3示出了说明性桌面虚拟化系统的高级架构。如图所示,桌面虚拟化系统可以是单服务器或多服务器系统,或者云系统,该系统包括被配置成将虚拟桌面和/或虚拟应用的至少一个虚拟化服务器301提供到一个或多个客户端访问设备240。如本文中使用的,桌面是指其中可以承载和/或执行一个或多个应用的图形环境或空间。桌面可以包括为可集成本地应用和/或远程应用的操作系统的实例提供用户接口的图形壳层。应用可以包括在操作系统(并且可选地还有桌面)的实例被加载之后执行的程序。操作系统的每个实例可以是物理的(例如,每个设备一个操作系统)或虚拟的(例如,在单个设备上运行的OS的许多实例)。每个应用可以在本地设备上执行,或者在位于远处的设备(例如远程的)上执行。
计算机设备301可以被配置为虚拟化环境(例如,单服务器、多服务器或云计算环境)中的虚拟化服务器。图3中图示的虚拟化服务器301可以被部署为图2中图示的服务器206的一个或多个实施例或由其他已知的计算设备来部署和/或实现。包括在虚拟化服务器301中的是硬件层,该硬件层可以包括一个或多个物理盘304、一个或多个物理设备306、一个或多个物理处理器308以及一个或多个物理存储器316。在一些实施例中,固件312可以存储在物理存储器316中的存储器元件内,并且可以由物理处理器308中的一个或多个执行。虚拟化服务器301还可以包括操作系统314,该操作系统314可以存储在物理存储器316中的存储器元件中,并且由物理处理器308中的一个或多个执行。此外,管理程序302可以被存储在物理存储器316中的存储元件中,并且可以由物理处理器308中的一个或多个执行。
对物理处理器308中的一个或多个进行执行的可以是一个或多个虚拟机332A-C(统称为332)。每个虚拟机332可以具有虚拟盘326A-C和虚拟处理器328A-C。在一些实施例中,第一虚拟机332A可以使用虚拟处理器328A来执行包括工具栈324的控制程序320。控制程序320可以被称为控制虚拟机、Dom0、Domain0或用于系统管理和/或控制的其他虚拟机。在一些实施例中,一个或多个虚拟机332B-C可以使用虚拟处理器328B-C来执行客户操作系统330A-B。
虚拟化服务器301可以包括具有与虚拟化服务器301通信的一个或多个硬件的硬件层310。在一些实施例中,硬件层310可以包括一个或多个物理盘304、一个或多个物理设备306、一个或多个物理处理器308以及一个或多个物理存储器316。物理部件304、306、308和316可以包括例如以上描述的部件中的任一个。物理设备306可以包括例如网络接口卡、视频卡、键盘、鼠标、输入设备、监视器、显示设备、扬声器、光驱、存储设备、通用串行总线连接、打印机、扫描仪、网络元件(例如,路由器、防火墙、网络地址转换器、负载平衡器、虚拟专用网络(VPN)网关、动态主机配置协议(DHCP)路由器等),或连接到虚拟化服务器301或与虚拟化服务器301通信的任何设备。硬件层310中的物理存储器316可以包括任何类型的存储器。物理存储器316可以存储数据,并且在一些实施例中可以存储一个或多个程序或一组或多组可执行指令。图3图示了其中固件312存储在虚拟化服务器301的物理存储器316内的实施例。存储在物理存储器316中的程序或可执行指令可以由虚拟化服务器301的处理器308中的一个或多个执行。
虚拟化服务器301还可以包括管理程序302。在一些实施例中,管理程序302可以是由虚拟化服务器301上的处理器308执行以创建和管理任何数量的虚拟机332的程序。管理程序302可以被称为虚拟机监视器或平台虚拟化软件。在一些实施例中,管理程序302可以是监视在计算机器上执行的虚拟机的可执行指令和硬件的任何组合。管理程序302可以是类型2管理程序,其中管理程序在虚拟化服务器301上执行的操作系统314内执行。虚拟机然后可以在管理程序302之上的级别执行。在一些实施例中,类型2管理程序可以在用户的操作系统的背景下执行,使得类型2管理程序与用户的操作系统交互。在其他实施例中,虚拟化环境中的一个或多个虚拟化服务器301可以替代地包括类型1管理程序(未示出)。类型1管理程序可以通过直接访问硬件层310内的硬件和资源而在虚拟化服务器301上执行。即,当类型2管理程序302通过主机操作系统314访问系统资源时,如图所示,类型1管理程序可以直接访问所有系统资源而无需主机操作系统314。类型1管理程序可以直接在虚拟化服务器301的物理处理器308中的一个或多个上执行,并且可以包括存储在物理存储器316中的程序数据。
在一些实施例中,管理程序302可以以模拟直接访问系统资源的操作系统330或控制程序320的任何方式将虚拟资源提供到在虚拟机332上执行的操作系统330或控制程序320。系统资源可以包括但不限于物理设备306、物理盘304、物理处理器308、物理存储器316以及包括在虚拟化服务器301的硬件层310中的任何其他部件。管理程序302可用于仿真虚拟硬件,分区物理硬件,虚拟化物理硬件和/或执行提供对计算环境的访问的虚拟机。在还一些实施例中,管理程序302可以控制在虚拟化服务器301上执行的虚拟机332的处理器调度和存储器分区。管理程序302可以包括由加利福尼亚州帕洛阿尔托市的VMWare公司制造的管理程序;XENPROJECT管理程序,其是由开源XenProject.org团体监督开发的开源产品;由微软提供的HyperV、VirtualServer或虚拟PC管理程序,或其他程序。在一些实施例中,虚拟化服务器301可以执行管理程序302,该管理程序302创建虚拟机平台,客户操作系统可以在虚拟机平台上执行。在这些实施例中,虚拟化服务器301可以被称为主机服务器。这种虚拟化服务器的一个实例是由佛罗里达州劳德代尔堡的思杰系统公司提供的XENSERVER。
管理程序302可以创建客户操作系统330在其中执行的一个或多个虚拟机332B-C(统称为332)。在一些实施例中,管理程序302可以加载虚拟机映像以创建虚拟机332。在其他实施例中,管理程序302可以执行虚拟机332内的客户操作系统330。在还一些实施例中,虚拟机332可以执行客户操作系统330。
除了创建虚拟机332之外,管理程序302还可以控制至少一个虚拟机332的执行。在其他实施例中,管理程序302可以呈现具有由虚拟化服务器301提供的至少一个硬件资源(例如,硬件层310内可用的任何硬件资源)的抽象的至少一个虚拟机332。在其他实施例中,管理程序302可以控制虚拟机332访问虚拟化服务器301中可用的物理处理器308的方式。控制对物理处理器308的访问可以包括确定虚拟机332是否应当访问处理器308,以及如何将物理处理器能力呈现给虚拟机332。
如图3所示,虚拟化服务器301可以承载或执行一个或多个虚拟机332。虚拟机332是一组可执行指令,该组可执行指令在由处理器308执行时可以模仿物理计算机的操作,使得虚拟机332可以执行与物理计算设备非常相似的程序和过程。虽然图3图示了虚拟化服务器301承载三个虚拟机332的实施例,但是在其他实施例中,虚拟化服务器301可以承载任何数量的虚拟机332。在一些实施例中,管理程序302可以将该虚拟机332可用的物理硬件、存储器、处理器和其他系统资源的唯一虚拟视图提供到每个虚拟机332。在一些实施例中,唯一虚拟视图可以基于以下各项中的一项或多项:虚拟机许可、策略引擎对一个或多个虚拟机标识符的应用、访问虚拟机的用户、在虚拟机上执行的应用、虚拟机所访问的网络或任何其他期望的准则。例如,管理程序302可以创建一个或多个不安全虚拟机332和一个或多个安全虚拟机332。可以防止不安全虚拟机332访问可以允许安全虚拟机332访问的资源、硬件、存储器位置和程序。在其他实施例中,管理程序302可以将物理硬件、存储器、处理器和虚拟机332可用的其他系统资源的基本类似的虚拟视图提供到每个虚拟机332。
每个虚拟机332可以包括虚拟盘326A-C(统称为326)和虚拟处理器328A-C(统称为328)。在一些实施例中,虚拟盘326是虚拟化服务器301的一个或多个物理盘304或虚拟化服务器301的一个或多个物理盘304的一部分的虚拟化视图。物理盘304的虚拟化视图可以由管理程序302生成、提供和管理。在一些实施例中,管理程序302将物理盘304的唯一视图提供到每个虚拟机332。因此,在这些实施例中,与其他虚拟盘326相比,包括在每个虚拟机332中的特定虚拟盘326可以是唯一的。
虚拟处理器328可以是虚拟化服务器301的物理处理器308中的一个或多个的虚拟化视图。在一些实施例中,物理处理器308的虚拟化视图可以由管理程序302生成、提供和管理。在一些实施例中,虚拟处理器328具有至少一个物理处理器308的基本上所有相同的特性。在其他实施例中,虚拟处理器308提供物理处理器308的修改视图,使得虚拟处理器328的特性中的至少一些与对应的物理处理器308的特性不同。
进一步参考图4,本文中描述的一些方面可以在基于云的环境中实现。图4图示了云计算环境(或云系统)400的实例。如图4所示,客户端计算机411-414可以与云管理服务器410通信以访问云系统的计算资源(例如,主机服务器403a-403b(本文中统称为“主机服务器403”)、存储资源404a-404b(本文中统称为“存储资源404”)和网络元件405a-405b(本文中统称为“网络资源405”))。
管理服务器410可以在一个或多个物理服务器上实现。管理服务器410可以运行例如由佛罗里达州的思杰系统公司提供的CLOUDPLATFORM,或OPENSTACK等等。管理服务器410可以管理各种计算资源,包括云硬件和软件资源,例如,主机计算机403、数据存储设备404和联网设备405。云硬件和软件资源可以包括私有部件和/或公有部件。例如,云可以被配置为由一个或多个特定客户或客户端计算机411-414和/或通过专用网络使用的私有云。在其他实施例中,公有云或混合公有-私有云可以由其他客户在开放或混合网络上使用。
管理服务器410可以被配置成提供用户接口,云运营商和云客户可以通过该用户接口与云系统400交互。例如,管理服务器410可以将用户接口提供到一组应用编程接口(API)和/或一个或多个云操作员控制台应用(例如,基于web的或独立的应用),以允许云运营商管理云资源,配置虚拟化层,管理客户账户,以及执行其他云管理任务。管理服务器410还可以包括具有用户接口的一组API和/或一个或多个客户控制台应用,用户接口被配置成经由客户端计算机411-414接收来自终端用户的云计算请求,例如,创建、修改或销毁云内虚拟机的请求。客户端计算机411-414可以经由因特网或一些其他通信网络连接到管理服务器410,并且可以请求访问由管理服务器410管理的计算资源中的一个或多个。响应于客户端请求,管理服务器410可以包括资源管理器,该资源管理器被配置成基于客户端请求来选择和提供云系统的硬件层中的物理资源。例如,管理服务器410和云系统的附加部件可以被配置成通过网络(例如,因特网)为客户端计算机411-414处的客户提供、创建和管理虚拟机及其操作环境(例如,管理程序、存储资源、由网络元件提供的服务等),将计算资源、数据存储服务、联网能力以及计算机平台和应用支持提供给客户。云系统还可以被配置成提供各种特定服务,包括安全系统、开发环境、用户接口等。
例如,某些客户端411-414可以与代表同一终端用户创建虚拟机的不同客户端计算机或与同一公司或机构隶属的不同用户相关。在其他实例中,某些客户端411-414可以是不相关的,诸如与不同公司或机构隶属的用户。对于不相关的客户端,关于虚拟机或任何一个用户的存储的信息可以对其他用户隐藏。
现在参考云计算环境的物理硬件层,可用性区域401-402(或区域)可以指并置的一组物理计算资源。区域可以在地理上与计算资源的整个云中的其他区域分离。例如,区域401可以是位于加利福尼亚的第一云数据中心,而区域402可以是位于佛罗里达州的第二云数据中心。管理服务器410可以位于可用性区域中的一个处,或者位于单独的位置处。每个区域可以包括通过网关与区域外部的设备(例如管理服务器410)对接的内部网络。云的终端用户(例如,客户端411-414)可能知道或可能不知道区域之间的区别。例如,终端用户可以请求创建具有指定量的存储器、处理能力和网络能力的虚拟机。管理服务器410可以响应于用户的请求,并且可以分配资源以创建虚拟机,而无需用户知道虚拟机是使用来自区域401还是区域402的资源创建的。在其他实例中,云系统可以允许终端用户请求在特定区域中或在区域内的特定资源403-405上分配虚拟机(或其他云资源)。
在该实例中,每个区域401-402可以包括各种物理硬件部件(或计算资源)403-405的布置,例如,物理主存资源(或处理资源)、物理网络资源、物理存储资源、交换机以及可用于将云计算服务的附加硬件资源提供给客户。云区域401-402中的物理主存资源可以包括一个或多个计算机服务器403,诸如以上描述的虚拟化服务器301,该虚拟化服务器301可以被配置成创建并且承载虚拟机实例。云区域401或402中的物理网络资源可以包括一个或多个网络元件405(例如,网络服务提供商),网络元件405包括被配置成将网络服务提供给云客户的硬件和/或软件,诸如防火墙、网络地址转换器、负载平衡器、虚拟专用网络(VPN)网关、动态主机配置协议(DHCP)路由器等。云区域401-402中的存储资源可以包括存储盘(例如,固态驱动器(SSD)、磁硬盘等)和其他存储设备。
图4所示的示例云计算环境还可以包括具有附加硬件和/或软件资源的虚拟化层(例如,如图1至图3所示),该附加硬件和/或软件资源被配置成创建和管理虚拟机并且使用云中的物理资源向客户提供其他服务。虚拟化层可以包括如以上在图3中描述的管理程序,以及提供网络虚拟化、存储虚拟化等的其他部件。虚拟化层可以作为与物理资源层分离的层,或者可以与物理资源层共享相同硬件和/或软件资源中的一些或全部。例如,虚拟化层可以包括安装在具有物理计算资源的虚拟化服务器403中的每一个中的管理程序。替代地,可以使用已知的云系统,例如WINDOWSAZURE(华盛顿州雷蒙德市微软公司)、AMAZONEC2(华盛顿州西雅图市亚马逊公司)、IBMBLUECLOUD(纽约州阿蒙克市市的IBM公司)或其他公司。
跟踪被污染的连接代理
图5描绘了说明性操作环境。示例操作环境可以包括一个或多个服务器501、一个或多个连接代理502、一个或多个客户端设备503、一个或多个数据库504以及通信链路510。服务器501和/或连接代理502可以包括例如图1的数据服务器103或web服务器105、图2的计算设备201或服务器206、图3的虚拟化服务器301、虚拟机332A-C和/或图4的虚拟化服务器403。客户端设备503可以包括例如图1的客户端计算机107或109、图2的客户端机器240和/或图4的客户端计算机411-414。数据库504可以包括例如图1的存储器121或数据库129或131、图2的存储器215或数据库221、图3的物理盘304、物理存储器316或虚拟盘326和/或图4的存储资源404。数据库504可以包括SQL(结构化查询语言)数据库。SQL可以是在编程中使用的并且被设计用于管理保存在关系数据库管理系统(RDBMS)中的数据的域专用语言。服务器501、连接代理502、客户端设备503和/或数据库504可以经由一个或多个通信链路510连接。通信链路510可以包括或者是例如网络101或133、图2的网络225或229或计算机网络230和/或图4的网络资源405的一部分。
服务器501和连接代理502可以为客户端设备503提供与桌面和应用虚拟化相关的各种服务。例如,服务器501、连接代理502、客户端设备503和数据库504可以允许对虚拟桌面和应用的在线和离线访问,提供用于从云构建和传送桌面和应用的平台,允许公司和机构同步和共享文件,提供移动应用和设备管理,允许对虚拟应用和桌面的通用访问,提供应用迁移和管理,和/或提供基于云的协作服务。这些功能可以是桌面和应用虚拟化实施方案的非限制性实例。
在一些实施例中,服务器501可以监视和/或提供承载在虚拟机上的一组虚拟应用或虚拟桌面(例如,虚拟应用或桌面池),该组虚拟应用或虚拟桌面可以被配置有统一的设置和特征。服务器501可以包括例如管理程序,诸如图3的管理程序。管理程序可以是可以创建和/或运行虚拟机的计算机软件、固件和/或硬件。在一些情况下,当客户端设备503建立与服务器501的会话时,服务器501或其管理程序可以将该会话从适当的虚拟桌面池分配给可用的虚拟桌面。在服务器501中断期间,服务器501可能不在线。在这种情况下,服务器501可能不能验证客户端设备503的连接代理502。验证连接代理502的示例方法将在下面进一步详细讨论。
在一些实施例中,服务器501可以包括可以通过共享桌面映像将补丁、更新和/或其他配置信息传送到多个虚拟桌面或应用端点的软件流技术。服务器501可以包括传送控制器,该传送控制器可以包括负责管理用户访问和/或代理和优化连接的服务器侧部件。传送控制器还可以提供创建虚拟应用程序和桌面以及服务器映像的机器创建服务。服务器501可以基于其用户凭证将客户端设备503引导到其分配的应用或桌面。服务器501可以包括远程应用或桌面连接和虚拟化的组合。服务器501可以运行操作客户端OS的多个虚拟机。服务器501还可以提供与云计算和联网相关的服务。
在一些实施例中,连接代理502可以启用到客户端设备503的虚拟应用和桌面(例如,来自虚拟应用或桌面池)的连接。连接代理502可以被安装在运行客户端设备503的应用或虚拟桌面的机器上。连接代理502可以使机器能够注册到服务器501。连接代理502可以管理到客户端设备503的连接。连接代理502可以负责响应来自服务器501或客户端设备503的请求。在连接代理502注册到服务器501之后,连接代理502可以开始为来自客户端设备503的请求提供服务。连接代理502可以提供一个或多个虚拟机,它们可以是被安装在软件上的操作系统或应用环境。虚拟机可以模仿客户端设备503的专用硬件。客户端设备503的用户可以在虚拟机上具有与他们在专用硬件上相同或相似的体验。连接代理502可以例如通过使用专用硬件、软件或其组合使客户端设备503能够连接到可以提供物理计算机的功能的虚拟机。
在一些实施例中,客户端设备503可以请求、接收和/或验证来自服务器501和连接代理502的信息,以安全地连接到虚拟机、连接代理502和/或服务器501。客户端设备503可以从服务器501请求关于可用连接代理或虚拟机的信息。客户端设备503可以包括应用和/或桌面虚拟化软件,该应用和/或桌面虚拟化软件可以将集中承载的应用传送到本地设备而无需安装它们。软件可以将与整个桌面不同的单独的应用传送到客户端设备503。利用该软件,例如,WINDOWS应用可以用在通常不能运行它们的客户端设备503上,包括APPLE计算机、移动设备和/或GOOGLECHROMEBOOK。相反地,软件可以允许在WINDOWS桌面上运行不兼容的应用。客户端设备503可以包括可以从驻地数据中心或公有云、私有云或混合云传送的客户端代理。客户端设备503的用户可以经由客户端代理访问虚拟应用和桌面。客户端设备503可以包括瘦客户端或轻计算机,该瘦客户端或轻计算机可以被优化用于与基于服务器的计算环境建立远程连接。
在云计算环境中,客户端设备503的用户可能需要确信连接代理502是干净的或未被污染。例如,连接代理502可能被先前登录的用户的恶意软件(诸如调试器或按键记录器)污染。当安装在虚拟机上的恶意软件错误地认为虚拟机是干净的并登录到受损害的计算机时,恶意软件可能会损害另一用户的凭证或数据。在这些场景中,服务器501可以跟踪哪些机器是干净的以及哪些机器已经被污染。如果连接代理502被污染,则服务器501可以对连接代理502进行重置映像。如前所述,服务器501可以包括图4的管理服务器410,该管理服务器410可以被配置成提供、创建和管理虚拟机及其操作环境。如果连接代理502是未被污染的或新成像的,则服务器501可以允许客户端设备503访问连接代理502。然而,在服务器中断期间,客户端设备503可能不能在没有可信代理机构的情况下验证连接代理502的干净状态或被污染状态。
本文中描述的实例可以使用公钥密码或非对称密码来确定连接代理502是干净的还是被污染,而无需诸如服务器501的可信中央机构。在公钥加密系统中,诸如服务器501或连接代理502的任何实体可以生成与该实体相关联的一对公钥和私钥。实体可以将消息与私钥(例如,与对应的公钥配对)组合以在消息上创建数字签名。该加密的消息可以用对应的公钥来解密。加密的消息可以与数字签名和对应的公钥组合以验证签名是有效的(例如,签名已经由对应的私钥的所有者作出)。私钥可以保持私有(例如,在实体内)并且公钥可以公开分发而不损害安全性。改变消息或签名可能会导致验证失败。在公钥签名系统中,如果私钥的所有者(例如在实体内)保持私钥秘密,则消息的真实性可以由签名来证明。例如,如果服务器501生成与服务器501相关联的一对私钥和公钥,则可以不将私钥发送到连接代理502或客户端设备503。相反,私钥可以被发送到数据库504和/或存储在数据库504上,数据库504可以被安全地保护。另一方面,与服务器501相关联的公钥发可以被送到连接代理502和/或客户端设备503。连接代理502和客户端设备503可以类似地将它们各自的公钥分发到其他实体,但是保持它们的私钥安全。在图6A至图8B中将进一步详细地描述使用键来跟踪被污染的桌面和/或应用的示例方法。
图6A和图6B描绘了一个或多个连接代理的示例操作的说明性流程图。在图6A中,在步骤601,可以配置连接代理502。例如,可以开启或启动连接代理502。连接代理502可以被安装在运行客户端设备503的应用或虚拟桌面的机器上。连接代理502可以由从服务器501下载的连接代理安装程序来安装。在步骤602,连接代理502可以生成与连接代理502相关联的一对私钥和公钥。连接代理502可以将公钥和私钥存储在存储器中。如前所述,存储器可以与例如图1的存储器121或数据库129或131、图2的存储器215或数据库221、图3的物理盘304、物理存储器316或虚拟盘326,和/或图4的存储资源404相对应。如下面将进一步详细描述的,连接代理502可以将公钥公开地分发到例如服务器501和客户端设备503。另一方面,私钥可以被保护在与连接代理502相关联的存储器内。连接代理502还可以使用私钥对数据(例如,消息)进行签名,这将在下面进一步详细描述。
在步骤603,连接代理502可以将注册请求发送到服务器501。如下面将进一步详细描述的,例如参考图7A和图7B,服务器501可以确认连接代理502是干净的或未污染的,并且然后可以接受连接代理502的注册。在步骤604,在注册之后,连接代理502可以将其公钥发送到服务器501。服务器501可以接收连接代理502的公钥,并且可以在例如连接代理502未被污染的情况下对公钥进行签名。服务器501可以使用与服务器501相关联的私钥来对连接代理502的公钥进行签名。下面将参考图7A和图7B进一步详细地描述确定连接代理502是否被污染以及对公钥进行签名的实例。在步骤605,连接代理502可以接收由服务器501使用与服务器501相关联的私钥签名的公钥。在步骤606,连接代理502可以将签名公钥存储在例如存储器内。
在步骤607,连接代理502可以接收由客户端设备503生成的数据。数据可以包括由客户端设备503生成的随机数据(例如,nonce)。例如,随机数可以由安全随机数生成算法生成,诸如可以自动创建具有随机特性的长游程数的伪随机数生成器(PRNG)。客户端设备503还可以从连接代理502请求一个或多个凭证,客户端设备503可以使用该凭证来确定连接代理502是否未被污染。例如,客户端设备503可以请求连接代理502上的虚拟机的机器ID和/或有效日期。客户端设备503可以基于在连接租约期间由服务器501提供的信息来验证这些机器ID和/或有效日期。如果服务器501离线,则客户端设备503仍能够验证连接代理502是未被污染还是被破坏。
在步骤608,连接代理502可以对从客户端设备503接收的数据进行签名。例如,连接代理502可以从存储器中检索其私钥和/或使用连接代理的私钥对数据进行签名。在对数据进行签名之后,连接代理502可以将签名数据存储在存储器内。在一些实施例中,连接代理502可以将其私钥和公钥、签名公钥和/或签名数据存储在存储器内。
在图6B中,在步骤615,连接代理502可以例如通过从连接代理502内的存储器内擦除私钥来删除其私钥。通过删除私有私钥,私钥可能不会被潜在的入侵者、病毒和/或黑客复制,这可用于损害客户端服务器架构。例如,如果黑客拥有连接代理502的私钥,则黑客可以使用该私钥来设置虚拟机中的恶意软件和/或损害用户的凭证。
在步骤616,连接代理502可以将其签名公钥发送到客户端设备503。如前所述,服务器501可能已经对连接代理502的公钥进行签名,并且签名公钥可能已经安全地存储在存储器中(例如,在步骤606)。连接代理502可以从存储器检索签名公钥并且将签名公钥发送到客户端设备503。
在步骤617,连接代理502可以将签名数据发送到客户端设备503。如前所述,连接代理502可能已经对从客户端设备503接收的数据进行签名,并且将签名数据安全地存储在存储器中(例如,在步骤608)。连接代理502可以从存储器中检索签名数据,并且将签名数据发送到客户端设备503。
在步骤618和619,连接代理502可以删除其公钥和存储在连接代理502的存储器中的签名公钥。通过从存储器中删除密钥,连接代理502可以防止黑客和/或恶意软件复制其公钥或签名公钥上的签名。连接代理502还可以通过移除与跟连接代理502相关联的公钥/私钥对相关的任何安全信息来保护云计算系统。安全信息可以包括连接代理502上的虚拟机的机器ID和/或有效日期。移除安全信息可以在签名公钥和签名数据已经被发送到客户端设备503之后执行。
客户端设备503可以完成连接代理502的验证,诸如基于与服务器501相关联的公钥来验证签名公钥的签名以及验证签名数据的签名。将参考图8A和图8B进一步详细地讨论验证连接代理502的实例。在连接代理502被验证之后,客户端设备503可以尝试连接到连接代理502。在步骤620,连接代理502可以从客户端设备503接收连接请求。在步骤621,连接代理502可以连接到客户端设备503以提供分配给客户端设备503的一个或多个虚拟机。用户可以在客户端设备503处安装客户端代理应用或软件。安装有客户端代理软件的客户端设备503能够从诸如服务器501或连接代理502的集中式主机访问虚拟桌面和/或应用。用户可以从许多不同的计算机或移动平台访问远程桌面和/或应用。
图7A和图7B描绘了一个或多个服务器的示例操作的说明性流程图。图7A和图7B可以补充图6A和图6B中所示的方法和/或过程(例如,其中描述了一个或多个连接代理的示例操作)。在图7A中,在步骤701,可以配置服务器501。例如,可以开启或启动服务器501。在步骤702,服务器501可以生成与服务器501相关联的一对私钥和公钥。在步骤703,服务器501可以将公钥和/或私钥存储在数据库504中,数据库504可以是服务器501外部或内部的存储器。
一个或多个服务器可以经由数据库504共享一对公钥和私钥。例如,一个或多个服务器可以单独连接到数据库504。数据库504可以存储用于一个或多个服务器的公共公钥/私钥对。替代地,一个或多个服务器可以具有单独的数据库504。数据库504中的每一个可以存储与一个或多个服务器中的每一个相关联的单独的公钥/私钥对。如果存在公钥/私钥对的池,则可以在每次验证时轮换密钥对。例如,服务器501可以使用第一公钥/私钥对来验证第一连接代理未被污染。服务器501可以使用第二公钥/私钥对来验证第二连接代理未被污染,等等。在每次验证之后,可以为了安全可以删除所使用的公钥/私钥对。可以通过密码、防火墙、证书等安全地保护数据库504免受来自入侵者、病毒和/或黑客的潜在攻击。
在步骤704,服务器501可以从连接代理502接收注册连接代理502的请求。连接代理502可以发送该请求,例如图6A的步骤603。在步骤705,服务器501还可以从连接代理502接收与连接代理502相关联的公钥。服务器501可以在数据库504处存储公钥。
在步骤706,服务器501可以确定连接代理502是否未被污染。例如,服务器501可以被配置成提供、创建和/或管理连接代理502上的虚拟机及其操作环境(例如,管理程序、存储资源等)。服务器501可以验证连接代理502的未污染状态。服务器501可以触发与连接代理502相关联的盘的复位或重置映像。如果在最后的盘重置映像之后没有用户连接到连接代理502,则连接代理502未被污染。如果在最后的盘重置映像之后任何用户已经连接,则可以执行步骤706。服务器501可以实施这样的策略,即服务器501可以为连接代理502的每次重置映像对公钥签名一次。服务器501可以确保连接代理502在服务器501发布新签名之前被重置映像。步骤706可以在服务器501接收与连接代理502相关联的公钥之前或之后执行(例如,在步骤705)。如果连接代理502被污染(例如,被损坏、被破坏、被间谍软件问题困扰等),则服务器501可以进行到步骤707。
在步骤707,服务器501可以对连接代理502进行重置映像。例如,服务器501可以移除和/或重新安装与连接代理502相关联的桌面、应用和/或虚拟机。服务器501可以使用服务器501上的资源管理器(例如,图4所示的管理服务器410的资源管理器)来提供、创建和/或管理连接代理502上的虚拟机。服务器501可以执行与连接代理502相关联的盘的块级复位。服务器501还可以通知客户端设备503连接代理502被污染。服务器501可以将客户端设备503重新分配给已经向服务器501验证和/或注册到服务器501的不同的连接代理或虚拟机。替代地,服务器501可以将客户端设备503分配给新成像的连接代理502。服务器501可以返回到例如步骤704,以确定它是否已经接收注册连接代理的另一请求。
参考步骤706,如果连接代理502未被污染(例如,步骤706:是),则服务器501可以进行到图7B所示的步骤715。在步骤715,服务器501可以对与连接代理502相关联的公钥进行签名。例如,服务器501可以例如从数据库504检索其私钥和/或与连接代理502相关联的公钥。服务器501可以使用服务器的私钥对连接代理的公钥进行签名。
服务器501还可以将诸如与连接代理502相关联的一个或多个虚拟机的机器ID和/或有效日期等附加安全机制添加到签名公钥上。例如,正被签名的数据可以包括机器ID和/或有效日期。如果恶意用户要访问签名数据的签名,例如通过在登录之前截取网络流量,或者由于签名未被完全从存储器中删除的错误,则机器ID和/或有效日期可以使潜在损坏最小化。此外,签名连同机器ID和/或有效日期可以在几小时或几天之后自动到期,从而使其没有价值。机器ID和/或有效日期中的每一个可以与连接代理502中的一个相关联。机器ID和/或有效日期可以经由对客户端设备503的租约而被发送到客户端设备503。下面将进一步详细地描述租约的实例。在步骤716,服务器501可以将签名公钥发送到连接代理502。
服务器501可以保持关于与客户端设备503的可用连接代理相关的信息的租约。例如,客户端设备503可以接收连接代理的列表,并且该列表对于预定的租约时段(例如,两周)是有效的。由于客户端设备可以连接并且服务器501在租约期间对连接代理进行重置映像,所以该列表可以包含被污染和未被污染的连接代理的混合。租约还可以包含属于服务器501的一个或多个公钥。在服务器或数据库中断期间,客户端设备503可以使用先前由服务器501提供的连接代理的未到期列表。该列表可以由客户端设备503使用,直到服务器501被恢复。通过验证下面进一步详细描述的签名,客户端设备503可以确定列表中的连接代理是被污染还是未被污染。
在步骤717,服务器501可以从客户端设备503接收对指示可用应用、桌面、虚拟机和/或连接代理的信息的请求。服务器501可以定期进行可用连接代理的验证并且存储连接代理的列表。在步骤718,服务器501可以将指示可用应用、桌面、虚拟机和/或连接代理的信息发送到客户端设备503。例如,服务器501可以发布关于该可用性信息的租约,并且可以在请求时将该信息发送到客户端设备503,或者可以周期性地发送信息。在步骤719,服务器501可以将属于服务器501的一个或多个公钥发送到客户端设备503。服务器的公钥可用于验证与连接代理502相关联并且由服务器501签名的公钥的签名。签名公钥可以由连接代理502发送到客户端设备503。如果签名被验证,则客户端设备503可以确定连接代理502未被污染和/或连接代理的公钥被服务器501正确地签名。以下将参考图8A和图8B更详细地讨论验证连接代理502未被污染的客户端设备503的实例。
在步骤717至719中的一个或多个步骤期间,客户端设备503可以从服务器501询问连接代理502的可用性。客户端设备503可以从服务器501接收指示连接代理可用性的数据(例如,在步骤718中)连同(或分开地)与服务器501相关联的公钥(例如,在步骤719中)。将参考图8A和图8B描述使用服务器公钥的客户端设备503的附加实例。步骤717至719中的一个或多个步骤可以发生在服务器501从连接代理502接收注册请求之前(例如,在步骤704中)。同样或者替代地,步骤717至719中的一个或多个可以独立于步骤704至716而发生。
图8A和图8B描绘了一个或多个客户端设备的示例操作的说明性流程图。图8A和图8B可以补充图6A和图6B(例如,其中描述了一个或多个连接代理的示例操作)和图7A和图7B(例如,其中描述了一个或多个服务器的示例操作)中所示的方法和/或过程。在步骤801,可以配置客户端设备503。可以开启或启动客户端设备503。在步骤802,客户端设备503可以将对可用连接代理的信息的请求发送到服务器501。如前所述,服务器501可以在图7B所示的步骤717接收请求。服务器501可以所请求的信息发送到客户端设备503,例如在图7B所示的步骤718处。
在步骤803,客户端设备503可以接收所请求的可用连接代理的信息。如前所述,服务器501可以将关于可用连接代理的信息的租约发布到客户端设备503,例如图7B的步骤717至719处。该信息可以指示应用、桌面、虚拟机和/或连接代理的可用性。在步骤804,客户端设备503可以从服务器501接收与服务器501相关联的公钥。如前所述,该公钥可以由服务器501发送,例如在图7B所示的步骤719处。如果服务器501使用多个公钥/私钥对,则服务器501可以将多个公钥中的每一个发送到客户端设备503。服务器501可以不将其私钥发送到客户端设备503。客户端设备503可以使用从服务器501接收的多个公钥来确保在验证连接代理502时没有停机时间。
客户端设备503可以生成待发送到连接代理502的数据。如前所述,数据可以包括由客户端设备503生成的随机数据(例如,nonce)。数据可以包括随机数或伪随机数。在步骤805,客户端设备503可以将由客户端设备503生成的数据发送到连接代理502。连接代理502可以接收数据,例如在图6A的步骤607处。如前所述,数据可以由连接代理502签名,例如在图6A的步骤608处。
在步骤806,客户端设备503可以从连接代理502接收由连接代理502签名的数据。在步骤807,客户端设备503可以从连接代理502接收与连接代理502相关联并且由服务器501签名的公钥。如前所述,在图7B的步骤715,服务器501可能已经对公钥进行签名。签名公钥可以由连接代理502接收和存储,例如在图6A的步骤605和/或步骤606处。通过步骤801至807中的一个或多个步骤,客户端设备503可以接收(1)与服务器501相关联的公钥(例如,在步骤804中),(2)由连接代理502签名的数据(例如,在步骤806中),和/或(3)与连接代理502相关联并且由服务器501签名的公钥(例如,在步骤807中)。(3)中的签名信息还可以指示与连接代理502相关联的虚拟机的机器ID和/或有效日期。客户端设备503可以使用机器ID和/或有效日期来验证服务器501最近验证了连接代理502。客户端设备503可以将接收的数据中的一个或多个存储在存储器中。接收的数据可用于验证连接代理502未被污染,如以下将参考图8B进一步详细描述的。
在图8B中,在步骤811,客户端设备503可以基于与服务器501相关联的公钥来验证与连接代理502相关联并且由服务器501签名的公钥的数字签名(例如,在步骤715)。在公钥密码系统中,数字签名可以与和生成签名的私钥相对应的公钥相匹配,以便验证签名是有效的。如果匹配,则签名可能已经由私钥的所有者作出。
客户端设备503可以将与连接代理502相关联并且由服务器501签名的公钥的签名与和服务器501相关联的公钥相关联。如果签名和服务器的公钥相对应,则客户端设备503可以确定连接代理502被服务器501验证。如前所述,如果服务器501确定连接代理502未被污染(例如,在以上描述的步骤706中),则服务器501可以对与连接代理502相关联的公钥进行签名(例如,在以上描述的步骤715中)。服务器501可以将签名公钥发送到连接代理502(例如,在以上描述的步骤716中)。连接代理502可以存储签名公钥(例如,在以上描述的步骤606中)。连接代理502还可以将签名公钥发送到客户端设备503(例如,在以上描述的步骤616中)。客户端设备503可以从连接代理502接收签名公钥(例如,在以上描述的步骤807中)。
回到图8B,在步骤812,如果签名公钥的签名未被验证,则客户端设备503可以确定该签名不是服务器501作出的。客户端设备503可以尝试识别另一连接代理。为了搜索不同的连接代理,客户端设备503可以重新使用从服务器501接收的可用连接代理的列表(例如,在步骤803中)。替代地,客户端设备503可以从服务器501请求更新的列表。客户端设备503可以返回到步骤805以尝试例如通过重复步骤805至812中的一个或多个步骤来验证另一连接代理。
返回到图8B,如果在步骤812,签名公钥的签名被验证(步骤812:是),则客户端设备503可以进行到步骤813。在步骤813,客户端设备503可以基于与连接代理502相关联的验证的公钥来验证由连接代理502签名的数据的签名。类似于步骤811,客户端设备503可以将由连接代理502签名的数据的签名与和连接代理502相关联的公钥进行匹配。
在步骤814,如果由连接代理502签名的数据的签名未被验证,则客户端设备503可以确定连接代理502被污染(或否则不被使用)和/或可尝试识别另一个连接代理。例如,该签名可能不是由连接代理502作出的。此外,攻击者可能正试图重放来自与连接代理502相关联的较早连接的签名。在客户端设备503识别另一个连接代理之后,客户端设备503可以返回到步骤805以例如通过重复步骤805到步骤814中的一个或多个步骤来尝试验证另一个连接代理。如果在步骤814,由连接代理502签名的数据的签名被验证,则客户端设备可以进行到步骤815。
在一些实施例中,在图7B的步骤715处,服务器501可以将连接代理502的机器ID和/或有效日期和/或虚拟包括的机器包括在签名公钥中。服务器501可以将包括机器ID和/或有效日期的签名公钥发送到连接代理502(例如,在步骤716中)。连接代理502可以将签名公钥(例如,在步骤616中)发送到客户端设备503(例如,在步骤807中)。客户端设备503可以例如经由租约从服务器501单独地接收机器ID和/或有效日期(例如,在步骤718中)。客户端设备503可以基于从服务器501接收的信息来验证机器ID和/或有效日期。例如,如前所述,签名信息(例如,发送到客户端设备503的签名公钥)还可以指示与连接代理502相关联的虚拟机的机器ID和/或有效日期。客户端设备503可以使用机器ID和/或有效日期来验证服务器501最近验证了连接代理502。
在客户端设备503验证连接代理502之后,客户端设备503可以尝试连接到连接代理502以访问例如虚拟桌面或虚拟应用。在步骤815,客户端设备503可以经由客户端代理应用将连接请求发送到连接代理502。在步骤816,客户端设备503可以与连接代理502连接。
在一些实施例中,服务器501、连接代理502和/或客户端设备503可以使用例如证书代替公钥。例如,服务器501和连接代理502可以生成它们自己的密钥对。服务器501可以基于其公钥生成自签名的证书或由另一个证书管理机构(CA)签名的证书。连接代理502可以生成与连接代理502相关联的公钥相关联的证书,并且可以将证书签名请求发送到服务器501。服务器501可以例如在确定连接代理502未被污染之后对与连接代理502相关联的证书进行签名。服务器501可以将签名的证书发送到连接代理502。连接代理502可以将签名的证书发送到客户端设备503。客户端设备503可以从连接代理502接收由服务器501签名的证书。在一些实施例中,连接代理502可以发送整个证书链,该证书链包括属于连接代理502的证书、属于服务器501的证书以及可能的一个或多个附加的CA。
服务器501可以生成与服务器501相关联的证书,并且可以例如经由租约将该证书发送到客户端设备503。服务器501可以周期性地将证书发送到客户端设备503和/或可以基于来自客户端设备503的请求来发送证书。客户端设备503可以从服务器501接收与服务器501相关联的证书。在一些实施例中,服务器501可以周期性地发送证书链中曾用于对属于服务器501的证书进行签名的另一CA的证书。
客户端设备503可以生成随机数据并且可以将该数据发送到连接代理502。连接代理502可以使用其私钥对数据进行签名,并且可以将签名数据返回到客户端设备503。客户端设备503可以接收由连接代理502签名的数据。
客户端设备503可以验证与属于连接代理502的证书相关联的证书链,该证书链可以包括与服务器501相关联的证书以及可能的属于证书链中的CA的证书。如果证书链被验证,则客户端设备还可以例如基于与连接代理502相关联的验证的证书来验证由连接代理502签名的数据的签名。如果签名和证书链被验证,则客户端设备503可以与连接代理502连接。
尽管已经用对结构特征和/或方法动作专用的语言描述了本主题,但是应理解,所附权利要求书中定义的主题不必限于以上描述的特定特征或动作。相反,以上描述的具体特征和动作是作为以下权利要求的示例实现来描述的。
Claims (20)
1.一种方法,包括:
将计算设备上的连接代理和与所述连接代理相关联的公钥注册到一个或多个服务器;
由所述一个或多个服务器并且基于确定所述连接代理没有被一个或多个先前登录的用户污染来对与所述连接代理相关联的所述公钥进行签名;
由所述连接代理并且从所述一个或多个服务器接收与所述连接代理相关联的签名公钥;
由所述连接代理存储与所述连接代理相关联的所述签名公钥;
由所述连接代理对从客户端设备接收的数据进行签名;以及
由所述连接代理并且向所述客户端设备发送与所述连接代理相关联的所述签名公钥和签名数据。
2.根据权利要求1所述的方法,其中,确定所述连接代理没有被一个或多个先前登录的用户污染包括确定未授权软件应用没有被安装在所述连接代理上。
3.根据权利要求1所述的方法,还包括:
在注册所述连接代理和与所述连接代理相关联的所述公钥之前,由所述一个或多个服务器并且基于确定所述连接代理被污染来对所述连接代理进行重置映像。
4.根据权利要求1所述的方法,还包括:
由所述一个或多个服务器生成与所述一个或多个服务器相关联的公钥和私钥;以及
将与所述一个或多个服务器相关联的所述公钥和所述私钥存储在与所述一个或多个服务器相关联的数据库中。
5.根据权利要求1所述的方法,还包括:
在对从所述客户端设备接收的所述数据进行签名之后,从所述连接代理中移除与所述连接代理相关联的私钥。
6.根据权利要求5所述的方法,还包括:
在发送与所述连接代理相关联的所述签名公钥之后,从所述连接代理中移除与所述连接代理相关联的所述签名公钥和与所述连接代理相关联的所述公钥。
7.根据权利要求1所述的方法,还包括:
在发送与所述连接代理相关联的所述签名公钥和所述签名数据之后,将所述客户端设备连接到与所述连接代理相关联的虚拟桌面或虚拟应用中的一个或多个。
8.一种方法,包括:
由客户端设备并且从一个或多个服务器接收与所述一个或多个服务器相关联的公钥;
由所述客户端设备并且从计算设备上的连接代理接收信息,所述信息包括:
与所述连接代理相关联并且由与所述一个或多个服务器相关联的私钥签名的公钥;以及
由所述客户端设备生成并且由与所述连接代理相关联的私钥签名的数据;以及
由所述客户端设备确定与所述连接代理相关联的签名公钥的签名是否对应于与所述一个或多个服务器相关联的所述公钥。
9.根据权利要求8所述的方法,其中,接收与所述一个或多个服务器相关联的所述公钥包括由所述一个或多个服务器将连接租约发布到所述客户端设备。
10.根据权利要求9所述的方法,还包括:
基于确定与所述连接代理相关联的所述签名公钥的所述签名不对应于与所述一个或多个服务器相关联的所述公钥,由所述客户端设备连接到所述连接租约中的第二连接代理。
11.根据权利要求9所述的方法,还包括:
基于确定与所述连接代理相关联的所述签名公钥的所述签名对应于与所述一个或多个服务器相关联的所述公钥,由所述客户端设备确定签名数据的签名是否对应于与所述连接代理相关联的所述签名公钥。
12.根据权利要求11所述的方法,还包括:
基于确定所述签名数据的所述签名不对应于与所述连接代理相关联的所述签名公钥,由所述客户端设备连接到所述连接租约中的第二连接代理。
13.根据权利要求11所述的方法,还包括:
基于确定所述签名数据的所述签名对应于与所述连接代理相关联的所述签名公钥,由所述客户端设备连接到所述连接代理。
14.根据权利要求8所述的方法,还包括:
由所述客户端设备并且从所述一个或多个服务器接收与所述一个或多个服务器相关联的第二公钥;以及
由所述客户端设备并且基于与所述一个或多个服务器相关联的所述第二公钥来验证与所述连接代理相关联的所述签名公钥。
15.根据权利要求8所述的方法,其中,与所述连接代理相关联的所述签名公钥包括机器ID或有效日期中的一个或多个。
16.一种或多种非暂时性计算机可读介质,所述一种或多种非暂时性计算机可读介质存储计算机可读指令,所述计算机可读指令在被执行时使计算设备上的连接代理:
将所述连接代理和与所述连接代理相关联的公钥注册到一个或多个服务器;
从所述一个或多个服务器并且基于确定所述连接代理没有被一个或多个先前登录的用户污染来接收与所述连接代理相关联并且由所述一个或多个服务器签名的所述公钥;
存储与所述连接代理相关联的签名公钥;
对从客户端设备接收的数据进行签名;以及
将与所述连接代理相关联的所述签名公钥和签名数据发送到所述客户端设备。
17.根据权利要求16所述的一种或多种非暂时性计算机可读介质,其中,所述计算机可读指令在被执行时,还使所述计算设备上的所述连接代理:
在所述连接代理对从所述客户端设备接收的所述数据进行签名之后,从所述连接代理中移除与所述连接代理相关联的私钥。
18.根据权利要求17所述的一种或多种非暂时性计算机可读介质,其中,所述计算机可读指令在被执行时,还使所述计算设备上的所述连接代理:
在所述连接代理将与所述连接代理相关联的所述签名公钥发送到所述客户端设备之后,从所述连接代理中移除与所述连接代理相关联的所述签名公钥和与所述连接代理相关联的所述公钥。
19.根据权利要求16所述的一种或多种非暂时性计算机可读介质,其中,所述计算机可读指令在被执行时,还使所述计算设备上的所述连接代理:
从所述客户端设备并且基于确定与所述连接代理相关联的所述签名公钥的签名被验证,接收连接到所述连接代理的请求;以及
连接到所述客户端设备。
20.根据权利要求19所述的一种或多种非暂时性计算机可读介质,其中,确定与所述连接代理相关联的所述签名公钥的所述签名被验证包括确定所述签名数据的签名被验证。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/238,202 US11165575B2 (en) | 2019-01-02 | 2019-01-02 | Tracking tainted connection agents |
US16/238,202 | 2019-01-02 | ||
PCT/US2020/012055 WO2020142609A1 (en) | 2019-01-02 | 2020-01-02 | Tracking tainted connection agents |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113330435A true CN113330435A (zh) | 2021-08-31 |
Family
ID=69400640
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080010883.8A Pending CN113330435A (zh) | 2019-01-02 | 2020-01-02 | 跟踪被污染的连接代理 |
Country Status (7)
Country | Link |
---|---|
US (2) | US11165575B2 (zh) |
EP (1) | EP3906487A1 (zh) |
JP (1) | JP7134362B2 (zh) |
CN (1) | CN113330435A (zh) |
AU (1) | AU2020205090B2 (zh) |
CA (1) | CA3125698A1 (zh) |
WO (1) | WO2020142609A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11250140B2 (en) * | 2019-02-28 | 2022-02-15 | Sap Se | Cloud-based secure computation of the median |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105359486A (zh) * | 2013-05-03 | 2016-02-24 | 思杰系统有限公司 | 使用代理安全访问资源 |
US20170111446A1 (en) * | 2015-10-19 | 2017-04-20 | Citrix Systems, Inc. | Multi-Tenant Multi-Session Catalogs with Machine-Level Isolation |
US20180198620A1 (en) * | 2017-01-11 | 2018-07-12 | Raptor Engineering, LLC | Systems and methods for assuring data on leased computing resources |
CN108432180A (zh) * | 2015-11-13 | 2018-08-21 | 维萨国际服务协会 | 用于基于pki的认证的方法和系统 |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6002768A (en) * | 1996-05-07 | 1999-12-14 | International Computer Science Institute | Distributed registration and key distribution system and method |
US6233341B1 (en) * | 1998-05-19 | 2001-05-15 | Visto Corporation | System and method for installing and using a temporary certificate at a remote site |
US6898618B1 (en) * | 2000-05-09 | 2005-05-24 | Sun Microsystems, Inc. | Client-specified display services in a distributed computing environment |
KR100529550B1 (ko) * | 2001-10-18 | 2005-11-22 | 한국전자통신연구원 | 공개키 기반 구조 인증시스템에서 생체정보를 이용한인증서 권한 변경 방법 |
US8195933B2 (en) * | 2002-01-10 | 2012-06-05 | International Business Machines Corporation | Method and system for computing digital certificate trust paths using transitive closures |
EP1924022A3 (en) * | 2002-04-15 | 2008-07-30 | NTT DoCoMo Inc. | Signature schemes using bilinear mappings |
ATE315859T1 (de) * | 2002-09-17 | 2006-02-15 | Errikos Pitsos | Verfahren und vorrichtung zur bereitstellung einer liste von öffentlichen schlüsseln in einem public-key-system |
US20040103317A1 (en) * | 2002-11-22 | 2004-05-27 | Burns William D. | Method and apparatus for protecting secure credentials on an untrusted computer platform |
JP2005085102A (ja) * | 2003-09-10 | 2005-03-31 | Canon Inc | 保証システム |
JP4773123B2 (ja) * | 2004-03-31 | 2011-09-14 | 株式会社リコー | 通信装置、証明書転送装置、認証データ転送装置、証明書設定システム、認証データ設定システム、通信装置の制御方法、証明書設定方法、認証データ設定方法、プログラム、および記録媒体 |
US20060047951A1 (en) * | 2004-08-27 | 2006-03-02 | Michael Reilly | Continuing public key infrastructure operation while regenerating a new certification authority keypair and certificate |
US9392078B2 (en) * | 2006-06-23 | 2016-07-12 | Microsoft Technology Licensing, Llc | Remote network access via virtual machine |
US7870610B1 (en) * | 2007-03-16 | 2011-01-11 | The Board Of Directors Of The Leland Stanford Junior University | Detection of malicious programs |
JP2009010807A (ja) * | 2007-06-29 | 2009-01-15 | Fuji Xerox Co Ltd | 情報処理システム、セキュリティ診断プログラム、処理実行制御プログラム及び情報処理装置 |
US8176328B2 (en) * | 2008-09-17 | 2012-05-08 | Alcatel Lucent | Authentication of access points in wireless local area networks |
US9559842B2 (en) | 2008-09-30 | 2017-01-31 | Hewlett Packard Enterprise Development Lp | Trusted key management for virtualized platforms |
US8984628B2 (en) * | 2008-10-21 | 2015-03-17 | Lookout, Inc. | System and method for adverse mobile application identification |
EP2278514B1 (en) | 2009-07-16 | 2018-05-30 | Alcatel Lucent | System and method for providing secure virtual machines |
WO2011062251A1 (ja) * | 2009-11-18 | 2011-05-26 | 日本電気株式会社 | 通信システム、アプリケーションサーバ、サービスサーバ、認証方法及びコンピュータ・プログラム |
US8607054B2 (en) * | 2010-10-15 | 2013-12-10 | Microsoft Corporation | Remote access to hosted virtual machines by enterprise users |
US10068084B2 (en) * | 2011-06-27 | 2018-09-04 | General Electric Company | Method and system of location-aware certificate based authentication |
US8990898B2 (en) * | 2012-02-16 | 2015-03-24 | Citrix Systems, Inc. | Connection leasing for hosted services |
US9642005B2 (en) * | 2012-05-21 | 2017-05-02 | Nexiden, Inc. | Secure authentication of a user using a mobile device |
US9521548B2 (en) * | 2012-05-21 | 2016-12-13 | Nexiden, Inc. | Secure registration of a mobile device for use with a session |
US9939981B2 (en) * | 2013-09-12 | 2018-04-10 | Commvault Systems, Inc. | File manager integration with virtualization in an information management system with an enhanced storage manager, including user control and storage management of virtual machines |
EP3146747B1 (en) * | 2014-05-21 | 2020-07-01 | Visa International Service Association | Offline authentication |
CN104104688B (zh) * | 2014-07-30 | 2017-04-12 | 浙江工商大学 | 支持多授权租户的安全分布式网络重编程方法 |
US10346631B2 (en) * | 2014-09-30 | 2019-07-09 | Entit Software Llc | Metrics authorization based on a certificate |
US9712398B2 (en) * | 2015-01-29 | 2017-07-18 | Blackrock Financial Management, Inc. | Authenticating connections and program identity in a messaging system |
US10331882B2 (en) | 2016-08-24 | 2019-06-25 | Citrix Systems, Inc. | Tracking and managing virtual desktops using signed tokens |
US10362022B2 (en) * | 2017-04-13 | 2019-07-23 | Ubs Business Solutions Ag | System and method for facilitating multi-connection-based authentication |
CN109508560A (zh) * | 2018-11-20 | 2019-03-22 | 孟凡富 | 电子标签离线认证系统及方法 |
US11283834B2 (en) * | 2018-12-13 | 2022-03-22 | Sap Se | Client-side taint-protection using taint-aware javascript |
US11362943B2 (en) * | 2019-05-20 | 2022-06-14 | Citrix Systems, Inc. | System and method for validating virtual session requests |
-
2019
- 2019-01-02 US US16/238,202 patent/US11165575B2/en active Active
-
2020
- 2020-01-02 AU AU2020205090A patent/AU2020205090B2/en not_active Expired - Fee Related
- 2020-01-02 JP JP2021538788A patent/JP7134362B2/ja active Active
- 2020-01-02 CA CA3125698A patent/CA3125698A1/en not_active Abandoned
- 2020-01-02 EP EP20702936.4A patent/EP3906487A1/en not_active Withdrawn
- 2020-01-02 WO PCT/US2020/012055 patent/WO2020142609A1/en unknown
- 2020-01-02 CN CN202080010883.8A patent/CN113330435A/zh active Pending
-
2021
- 2021-09-30 US US17/490,380 patent/US20220021532A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105359486A (zh) * | 2013-05-03 | 2016-02-24 | 思杰系统有限公司 | 使用代理安全访问资源 |
US20170111446A1 (en) * | 2015-10-19 | 2017-04-20 | Citrix Systems, Inc. | Multi-Tenant Multi-Session Catalogs with Machine-Level Isolation |
CN108432180A (zh) * | 2015-11-13 | 2018-08-21 | 维萨国际服务协会 | 用于基于pki的认证的方法和系统 |
US20180198620A1 (en) * | 2017-01-11 | 2018-07-12 | Raptor Engineering, LLC | Systems and methods for assuring data on leased computing resources |
Also Published As
Publication number | Publication date |
---|---|
AU2020205090A1 (en) | 2021-08-19 |
WO2020142609A1 (en) | 2020-07-09 |
EP3906487A1 (en) | 2021-11-10 |
JP2022516290A (ja) | 2022-02-25 |
CA3125698A1 (en) | 2020-07-09 |
US20220021532A1 (en) | 2022-01-20 |
AU2020205090B2 (en) | 2022-10-20 |
US20200213112A1 (en) | 2020-07-02 |
JP7134362B2 (ja) | 2022-09-09 |
US11165575B2 (en) | 2021-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6782307B2 (ja) | ホストされたアプリケーションへの動的アクセス | |
US11627120B2 (en) | Dynamic crypto key management for mobility in a cloud environment | |
US10331882B2 (en) | Tracking and managing virtual desktops using signed tokens | |
AU2019229870B2 (en) | Instant virtual application launch | |
US20200076902A1 (en) | Accessing Resources in a Remote Access or Cloud-Based Network Environment | |
US11522847B2 (en) | Local mapped accounts in virtual desktops | |
US10721719B2 (en) | Optimizing caching of data in a network of nodes using a data mapping table by storing data requested at a cache location internal to a server node and updating the mapping table at a shared cache external to the server node | |
US11057358B2 (en) | Concealment of customer sensitive data in virtual computing arrangements | |
US11366883B2 (en) | Reflection based endpoint security test framework | |
US20220021532A1 (en) | Tracking Tainted Connection Agents | |
US11062049B2 (en) | Concealment of customer sensitive data in virtual computing arrangements | |
CN113366811A (zh) | 安全云计算 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210831 |