Distributed secure anonymous conferencing

A communications manager of an enterprise receives an add-conference request to host a conference by the enterprise from an organizer client, wherein the conference to enable an anonymous user that does not have enterprise credentials to join the conference. The communications manager sends an add-conference response to the organizer client indicating that the conference is organized.

BACKGROUND

An enterprise network allows an organization's members to collaborate and share data. Enterprise users may conduct conferences, such as Audio/Video (A/V) conferencing, instant messaging, and data sharing conferences, while connected to their enterprise network. However, people without enterprise credentials cannot participate in such conferences hosted by the enterprise network.

SUMMARY

Embodiments of the invention are directed to distributed secure anonymous conferences. Embodiments herein provide a mechanism by which anonymous conferences hosted by an enterprise are organized. An anonymous conference includes a conference having at least one anonymous user. Anonymous users include conference attendees without enterprise credentials that may join a conference hosted by the enterprise.

DETAILED DESCRIPTION

The detailed description provided below in connection with the appended drawings is intended as a description of the present examples and is not intended to represent the only forms in which the present examples may be constructed or utilized. The description sets forth the functions of the examples and the sequence of steps for constructing and operating the examples. However, the same or equivalent functions and sequences may be accomplished by different examples.

FIG. 1shows an enterprise100in accordance with an embodiment of the invention. Enterprise100includes various computing resources that may be associated with an organization, such as a corporation, educational institution, government agency, non-profit group, etc. Enterprise100includes a communications manager109that provides mechanisms by which anonymous conferences can be organized and mechanisms by which anonymous users can be allowed to securely join conferences hosted by enterprise100. In one embodiment, communications manager109includes Microsoft® Office Communications Server (OCS). In one embodiment, communications manager109may be implemented using computer readable instructions executed by one or more computing devices, such as servers. An example computing device for use as a client, a server, etc., in enterprise100is discussed below in conjunction withFIG. 7.

FIG. 1also shows an enterprise user107that may connect to enterprise100via an internal client106. An enterprise user152may also connect to enterprise100via external client150using another network, such as the Internet (e.g., using a home computer over an Internet Service Provider (ISP) connection). An anonymous user132may connect to a conference hosted by enterprise100via external client130. In an alternative embodiment, an anonymous user may join a conference from an internal client. For example, a user visiting from Company A (i.e., an anonymous user) may use their own laptop computer to connect to a wireless access point at Company B (i.e., enterprise100) to join a conference hosted by Company B.

Embodiments of communications manager109allow enterprise users to securely conduct A/V conferencing, instant messaging, and data sharing conferences while being connected to their internal enterprise network or from the Internet without a Virtual Private Network (VPN). These enterprise users can organize and/or join conferences using their enterprise credentials. Enterprise credentials include means to access the enterprise network such as username/password, a smartcard, and the like.

In addition, communications manager109also enables anonymous conferencing. Anonymous conferencing is a scenario where enterprise users invite people from outside the organization to take part in a meeting. For example, a sales team might want to conduct a live online product demo to people outside the company. “Anonymous users” is a term for people outside the company that lack any established enterprise credentials. Using embodiments herein, such anonymous users have the ability to participate in the meeting not just as attendees but also as presenters in the meeting. These anonymous users need to securely participate in a meeting hosted within the enterprise network of the meeting organizer and typically connect from the Internet. In embodiments herein, the organizer provides anonymous users with a conference identifier (ID) and a conference key (e.g., a cryptographically secure string of data) to authenticate and authorize the anonymous users admission to a conference.

As used herein, a conference may include any communication between two or more people. Examples include A/V conferencing, Instant Messaging (IM), and the like. It will be appreciated that A/V conferencing includes audio only conferences, conferences with audio and video, or a mix of audio and video where some conference attendees have audio only while other attendees have audio and video.

Turning toFIG. 2, another embodiment of enterprise100is shown. In one embodiment, the architecture inFIG. 2includes the Microsoft® Office Communications Server 2007 Enterprise Edition. InFIG. 2, enterprise100includes one or more edge servers202. Edge server202handles traffic across the enterprise firewall (such as Session Initiation Protocol (SIP) traffic) to establish and validate connections. In one embodiment, edge server202does not authenticate users (authentication may be conducted by director204or a Front End (FE) server, such as FE211).

Edge server202is connected to director204. Director204is the first authentication server within enterprise100and acts as a line of defense in safeguarding internal servers from attacks, such as by anonymous user132.

Director204is connected to a load balancer208for communications manager109. InFIG. 2, communications from internal clients to communications manager109are also routed through load balancer208. In one embodiment, load balancer208is a hardware IP load balancer.

In the embodiment ofFIG. 2, communications manager109may be implemented using one or more Front End (FE) servers in an FE pool210, one or more conferencing servers216, and a database218. While inFIG. 2, FE pool210includes FE servers211and212, it will be appreciated that FE pool210may include alternative number of FE servers. FE pool210provides IM, presence, and conferencing services. FE pool210is connected to a database (DB)218that stores user and conferencing related information. DB218may reside on a separate physical machine or reside with one or more FEs in pool210. In other embodiments, communications manager109may include additional FE pools that have their own associated databases and conferencing servers.

FEs in pool210are also connected to one or more conferencing servers216(also referred to as a Multipoint Control Unit (MCU)) that are used in conducting a conference. Conferencing server216is responsible for managing one or more media types, such as IM conferencing, telephony conferencing, web conferencing for conference data collaboration (e.g., sharing a Microsoft PowerPoint® presentation), and A/V conferencing.

Turning toFIG. 3, a flowchart300shows operations of organizing an anonymous conference in accordance with an embodiment of the invention. In one embodiment, at least a portion of flowchart300may be implemented by computer readable instructions executable by one or more computing devices. Starting with operation302, a conference organizer client receives a request to setup a conference from an organizer. The organizer of a conference is typically an enterprise user (i.e., has enterprise credentials). The organizer client may connect to enterprise100from inside or outside the enterprise network.

Continuing to operation304, in response to the conference request from the organizer, the organizer client obtains a public encryption key from the communications manager. The communications manager retains the corresponding private key. Next, in operation306, the organizer client generates a conference key and encrypts the conference key with the public encryption key received from the communications manager in operation304. In one embodiment, the conference key is a cryptographically secure string of data that an anonymous user will use to join a conference.

Continuing to operation308, the organizer client sends an add conference request to the communications manager. The add conference request includes the encrypted conference key. Next, in operation310, the communications manager decrypts the conference key and stores the conference key. The conference key will be used to verify an anonymous user when an anonymous user requests to join a conference.

Proceeding to operation312, the organizer client receives an add conference response from the communications manager. The add conference response confirms that the conference key has been received and the requested conference has been setup.

Next, in operation314, the organizer (i.e., the human enterprise user) sends the conference key to one or more anonymous users that are to join the conference. It will be appreciated that the same conference key is sent to each anonymous user. The conference key may be distributed to the anonymous users as desired by the organizer. For example, the conference key may be sent to an anonymous user in a secure email, such as by encrypting the email message. In another example, the conference key may be sent in the clear to an anonymous user over a secured connection. In yet another example, the organizer may call an anonymous user and tell the anonymous user the conference key over a telephone.

Turning toFIG. 4, a flow diagram400shows operations of organizing an anonymous conference in accordance with an embodiment of the invention. Flow diagram400will be discussed in relation to the embodiment of enterprise100shown inFIG. 2. In one embodiment, at least a portion of flow diagram400may be implemented by computer readable instructions executable by one or more computing devices.

Organizer client402receives a request from a conference organizer (i.e., an enterprise user) to setup a conference. Organizer client402sends a getEncryptionKey request (GET_EK)410to edge server202which in turn sends the request to director204which in turn sends the request to communications manager109. Load balancer208assigns the request to one of the FE servers in pool210. InFIG. 4, request410is assigned to FE211. Alternatively, when organizer client402is inside the enterprise network, the getEncryptionKey request (GET_EK)410and other communications discussed below may be sent from organizer client402to FE pool210without passing through edge server202and/or director204.

FE211sends a getEncryptionKey response (GET_EK_RES)411back to organizer client402. Response411includes the public encryption key that organizer client will use to encrypt the conference key. FE211retains the private encryption key corresponding to the public encryption key. In one embodiment, FE211uses an RSA algorithm to generate the public/private key pair.

In one embodiment, FE211may include opaque data in getEncryptionKey response (GET_EK_RES)411. To support highly-available conferencing, communications manager109may contain multiple FEs behind load balancer208. As such, it is possible for the add conference request to terminate on a different server from the one that handled the get encryption key request. When FEs do not share the same private encryption key (which is a typical deployment scenario) this can be problematic because the server receiving the add conference request has no way of decrypting the conference key using the private key configured on another FE.

To solve this problem, the get encryption key response may also contain a server identifier. The server identifier must be reflected back to the FE servers in an add conference request along with the encrypted conference key. In one embodiment, the server identifier includes a piece of “opaque” data. Opaque data is data placed in a data structure that the system defines and that has an intentionally hidden internal structure. Recipients such as the organizer's client make no assumptions regarding the contents of this opaque data and simply pass this information back to the system at a later stage. This opaque data contains information about the FE that provided the public encryption key. When an add conference request is received at a different FE, it verifies that the target FE is a member of the pool, and forwards the request to that FE.

Once organizer client402receives the public encryption key, organizer client402may perform various operations. In operation412, organizer client402saves the server identifier, such as opaque data, received in the getEncryptionKeyresponse (GET_EK_RES)411. In operation414, organizer client generates a conference key and encrypts the conference key using the public encryption key received from FE211. In operation416, organizer client402creates an addConference request (ADD_CONF)418that includes the encrypted conference key. In one embodiment, request418may also include the server identifier (e.g., opaque data). Organizer client402may include other conference data in request418such as a conference identifier, conference restrictions (e.g., identify which attendees may be PowerPoint presenters), make the conference re-occurring (e.g., every two weeks), and the like.

The addConference request (ADD_CONF)418is sent to FE pool210via edge server202and director204. Since FE pool210is behind load balancer208, in this example, the add conference request418is sent to FE212. FE212reads the server identifier, as shown by operation420. Next, in operation422, FE212verifies that the specified FE (i.e., FE211) belongs to FE pool210and routes the add conference request418to the correct FE (i.e., FE211). If the specified FE is not in FE pool210, then addConference request418is returned as failed. Organizer client402may attempt to request another encryption key from a valid FE and re-send the addConference request.

As shown by operation424, FE211decrypts the conference key and stores the conference key and any other conference data. In one embodiment, the conference key and other data are saved in database218. FE211then sends an addConference response (ADD_CONF_RES)426back to organizer client402. As shown inFIG. 4, response426is sent back to FE212(the server that was originally assigned addConference request418) and then to director204and edge server202to organizer client402. Response426confirms that the conference has been organized and is ready for attendees to join at the scheduled time.

Turning toFIG. 5, a flowchart500shows operations of an anonymous user joining an anonymous conference in accordance with an embodiment of the invention. In one embodiment, at least a portion of flowchart500may be implemented by computer readable instructions executable by one or more computing devices. Starting with operation502, an anonymous user requests to join a conference. The anonymous user's join request includes the conference key. The join request may also include other information such as a conference identifier, an identity for the anonymous user, and the like.

Proceeding to operation504, enterprise100verifies the anonymous user has the correct conference key, such as by using an authentication server. In one embodiment, the conference key received from the anonymous user client is compared to a conference key stored at communications manager109to determine if the conference keys match. Anonymous user client602may send the conference key using various security measures such as a secure channel, hashing, and the like. Next, in operation506, once the anonymous user is verified, the anonymous user is added to the conference.

It will be appreciated that the operations in flowcharts400and600may occur at various temporal distances. For example, an organizer may setup a conference ahead of time (via flowchart400), but the anonymous user may not actual join the conference until days or weeks later (via flowchart600). In another example, an organizer may need to add an anonymous user to a conference that will begin in minutes or that is already occurring. In this example, the operations of flowcharts400and600may occur very close together in time.

Turning toFIG. 6, a flow diagram600shows operations of an anonymous user joining an anonymous conference in accordance with an embodiment of the invention. Flow diagram600will be discussed in relation to the embodiment of enterprise100shown inFIG. 2. In one embodiment, at least a portion of flow diagram600may be implemented by computer readable instructions executable by one or more computing devices.

An anonymous user uses anonymous user client602to send a joinConference request (JOIN_CONF)604to communications manager109. Request604is received by edge server202which passes request604to director204. InFIG. 6, anonymous user client602is connected from outside the enterprise network. In another embodiment, an anonymous user may connect to enterprise100using an enterprise network access point (e.g., anonymous user from company A connects their laptop to wireless access point in a conference room at company B). In this embodiment, anonymous user joinConference request604may be sent to director204without passing through edge server202.

Request604may include a conference ID, a hash of the conference key, and an anonymous user identity. The conference key is hashed as a security measure for sending the conference key to enterprise100. In one embodiment, hashing mechanisms used by the Digest authentication algorithm may be used.

When director204receives joinConference request604, director204may perform various operations. In operation606, director204retrieves the conference key hash, conference ID, and anonymous user identity from joinConference request604. In operation608, director204locates the FE server pool that hosts the conference for the organizer. Since director204does not have access to the database that stores the conference key, director204must locate the correct FE pool. InFIG. 6, the correct FE pool is pool210.

Next, in operation610, director204issues an HTTP request called getConferenceKeyHash request (GET_KEY_HASH)612to the located FE pool to obtain a hash of the conference key stored in the pool's database. InFIG. 2, database218stores the conference keys for FE pool210. InFIG. 6, FE211responds to request612, but it will be understood that any FE in FE pool210could have responded to request612as assigned by load balancer208. In one embodiment, an HTTP-based mechanism is used for obtaining the hash from the FE pool, instead of a SIP-based mechanism, to ensure that an attack of the HTTP channel by a malicious anonymous user does not interfere with existing SIP-based traffic in enterprise100. It will be appreciated that any alternate mechanism such as Remote Procedure Call may be used in place of HTTP for obtaining the hash from the FE pool.

When FE211receives getConferenceKeyHash request612, FE211verifies that the anonymous user identity, included in request612, has not been used in the conference already (discussed further below), as shown by operation614. Next, in operation616, FE211retrieves the appropriate conference key from database218and computes the hash of the conference key. FE211then sends the hashed conference key to director204in a getConferenceKeyHash response (GET_KEY_HASH_RES)618.

Director204then compares the hashed conference key received from anonymous user client602to the hashed conference key received from FE211to determine if the anonymous user possesses the correct conference key, as shown by operation620. Director204sends a joinConference response (JOIN_CONF_RES)622to anonymous user client602via edge server202. Response622indicates whether the anonymous user is admitted to the conference because the hashed conference key matches or denied admission to the conference. In other embodiments, the conference key may be passed using other secure means (e.g., the conference key may be sent in the clear in a secure channel between client602and FE211).

It will be appreciated that director204only handles a hash of the conference key and does not see the conference key in the clear from the anonymous user client602or from FE211. In this way, only the endpoints of the joinConference communication see the actual conference key. Thus, if an attacker was running a trace on director204(or any other intermediary server), the attacker sees only a hash of the conference key and not the actual conference key.

Authenticating a user establishes a security association on both the server and the client. This security association can be referenced in subsequent requests to prevent being challenged again. For enterprise users, this security association can be used to route arbitrary requests, including those destined to other conferences, through the infrastructure. However, anonymous users are not provided this luxury. To provide such a safeguard, the authenticating server (e.g., director204or a front end server) stamps the security association with the conference identifier for the conference that the anonymous user was successfully authenticated for and ensures that all subsequent requests from this anonymous user are only for this conference. Any request from this anonymous user that does not target this conference is rejected.

In one embodiment, all anonymous users present an arbitrary identity (e.g., a username) and a single hashed conference key to join a conference with the joinConference request. Enterprise users on the other hand use their established identities with distinct credentials to join a conference. The conferencing infrastructure permits the same user to join a conference a certain number of times after which the oldest connected endpoint is removed from the conference. This design exists to protect the infrastructure from abuse and is easy to enforce for enterprise users since they have distinct verifiable identities but is hard to do for anonymous users since they all present the same credentials (i.e., the same conference key) for a particular conference with unverifiable arbitrary identities. This allows for the possibility that a malicious anonymous user can impersonate an existing anonymous user in the conference and exceed that user's connection limit thus resulting in that user being removed from the conference.

To prevent this threat, communications manager109ensures that the anonymous user identity being presented by the anonymous user is not already being used in the conference. If only one anonymous user is allowed to use a particular identity, it prevents another anonymous user from using the same identity thus mitigating the threat. In one embodiment, if the identity from an anonymous user is already in use by another user in the conference, then the anonymous user is not allowed to join the conference. The anonymous user may re-attempt to join the conference with a different anonymous user identity. There is a small race condition when two anonymous users present the same identity but guidelines for creating anonymous identities can clearly indicate that they have to be cryptographically unpredictable identities with low probability for collision so the race condition is minimized.

Embodiments of the invention allow a person without enterprise credentials to securely join a conference hosted by the enterprise. An anonymous conference is organized and a conference key is provided to anonymous users. When joining a conference, an anonymous user presents the conference key for verification. Thus, a person from outside an organization may participate in the conference without the burden of setting up enterprise credentials for that person. Also, the enterprise maintains security and typical server logging when hosting the conference.

FIG. 7and the following discussion provide a brief, general description of a suitable computing environment to implement embodiments of the invention. The operating environment ofFIG. 7is only one example of a suitable operating environment and is not intended to suggest any limitation as to the scope of use or functionality of the operating environment. Other well known computing devices, environments, and/or configurations that may be suitable for use with embodiments described herein include, but are not limited to, personal computers, server computers, hand-held or laptop devices, mobile devices (such as mobile phones, Personal Digital Assistants (PDAs), media players, and the like), multiprocessor systems, consumer electronics, mini computers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.

FIG. 7shows an example of a computing device700for implementing one or more embodiments of the invention. Various devices of enterprise100may be implemented using variations of computing device700, such as a client, edge server202, director204, an FE in FE pool210, conferencing server216, database218, and the like. In one configuration, computing device700includes at least one processing unit702and memory704. Depending on the exact configuration and type of computing device, memory704may be volatile (such as RAM), non-volatile (such as ROM, flash memory, etc.) or some combination of the two. This configuration is illustrated inFIG. 7by dashed line706.

In other embodiments, device700may include additional features and/or functionality. For example, device700may also include additional storage (e.g., removable and/or non-removable) including, but not limited to, magnetic storage, optical storage, and the like. Such additional storage is illustrated inFIG. 7by storage708. In one embodiment, computer readable instructions to implement embodiments of the invention may be in storage708. Storage708may also store other computer readable instructions to implement an operating system, an application program, and the like.

Device700may also include communication connection(s)712that allow device700to communicate with other devices. Communication connection(s)712may include, but is not limited to, a modem, a Network Interface Card (NIC), an integrated network interface, a radio frequency transmitter/receiver, an infrared port, a USB connection, or other interfaces for connecting computing device700to other computing devices. Communication connection(s)712may include a wired connection or a wireless connection. Communication connection(s)712may transmit and/or receive communication media.

The term “computer readable media” may include communication media. Communication media typically embodies computer readable instructions or other data in a “modulated data signal” such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency, infrared, Near Field Communication (NFC), and other wireless media.

Device700may include input device(s)714such as keyboard, mouse, pen, voice input device, touch input device, infrared cameras, video input devices, and/or any other input device. Output device(s)716such as one or more displays, speakers, printers, and/or any other output device may also be included in device700. Input device(s)714and output device(s)716may be connected to device700via a wired connection, wireless connection, or any combination thereof. In one embodiment, an input device or an output device from another computing device may be used as input device(s)714or output device(s)716for computing device700.

In the description and claims, the term “coupled” and its derivatives may be used. “Coupled” may mean that two or more elements are in contact (physically, electrically, magnetically, optically, etc.). “Coupled” may also mean two or more elements are not in contact with each other, but still cooperate or interact with each other (for example, communicatively coupled).

Those skilled in the art will realize that storage devices utilized to store computer readable instructions may be distributed across a network. For example, a computing device730accessible via network720may store computer readable instructions to implement one or more embodiments of the invention. Computing device700may access computing device730and download a part or all of the computer readable instructions for execution. Alternatively, computing device700may download pieces of the computer readable instructions, as needed, or some instructions may be executed at computing device700and some at computing device730. Those skilled in the art will also realize that all or a portion of the computer readable instructions may be carried out by a dedicated circuit, such as a Digital Signal Processor (DSP), programmable logic array, and the like.

Various operations of embodiments of the present invention are described herein. In one embodiment, one or more of the operations described may constitute computer readable instructions stored on one or more computer readable media, which if executed by a computing device, will cause the computing device to perform the operations described. The order in which some or all of the operations are described should not be construed as to imply that these operations are necessarily order dependent. Alternative ordering will be appreciated by one skilled in the art having the benefit of this description. Further, it will be understood that not all operations are necessarily present in each embodiment of the invention.

The above description of embodiments of the invention, including what is described in the Abstract, is not intended to be exhaustive or to limit the embodiments to the precise forms disclosed. While specific embodiments and examples of the invention are described herein for illustrative purposes, various equivalent modifications are possible, as those skilled in the relevant art will recognize in light of the above detailed description. The terms used in the following claims should not be construed to limit the invention to the specific embodiments disclosed in the specification. Rather, the following claims are to be construed in accordance with established doctrines of claim interpretation.