Method and Apparatus for Providing Security in a Radio Frequency Identification System
A part can receive a communication that originates externally of the part, that conforms to a predetermined communications protocol, and that contains payload information consistent with the protocol but subject to a security provision supplemental to the protocol. The part extracts the payload information from the security provision.
Latest SAVI TECHNOLOGY, INC. Patents:
- System and method for a data processing architecture
- SYSTEM AND METHOD FOR A DATA PROCESSING ARCHITECTURE
- Method and Apparatus Involving Global Positioning and Long-Range Wireless Link
- Method and apparatus involving global positioning and long-range wireless link using a tag
- Method and Apparatus for Tunneling Information in RFID Communications
This application claims the priority under 35 U.S.C. §119 of provisional application No. 60/951,334 filed Jul. 23, 2007, the disclosure of which is hereby incorporated herein by reference.
FIELD OF THE INVENTIONThis invention relates in general to radio frequency identification systems and, more particularly, to techniques for protecting information in radio frequency identification systems.
BACKGROUNDRadio frequency identification (RFID) systems are used in a variety of different applications. As one example, RFID systems are commonly used to track and monitor shipping containers or other objects. RFID tags are attached to the containers or other objects, and can exchange wireless communications with stationary interrogators. In order to provide end users with compatibility among components obtained from different manufacturers, an international industry standard for RFID communications has been developed and promulgated by the International Organization for standardization (ISO) in Geneva, Switzerland. This standard is commonly known as the art as the ISO 18000-7 standard.
Although the ISO 18000-7 standard been very beneficial, it offers little in the way of security for information. For example, the standard does not allow wireless messages to be encrypted, nor does it have any built-in extension mechanism that would permit the definition of proprietary messages within the protocol, such as proprietary messages with security provisions. Consequently, information transmitted in wireless messages under the ISO 18000-7 standard is fully visible to any entity that elects to receive the wireless messages. A third party may be able to emulate or interfere with ISO 18000-7 messages in various different ways. Consequently, while the ISO 18000-7 standard has been adequate and beneficial for its intended purposes, it has not been entirely satisfactory in all respects.
A better understanding of the present invention will be realized from the detailed description that follows, taken in conjunction with the accompanying drawings, in which:
The tag 16 is a mobile, battery-operated device, and can communicate in a wireless manner with each of the interrogators 12 and 13, in particular by exchanging radio frequency (RF) wireless signals 28. In the disclosed embodiment, all of the wireless signals 28 conform to an existing international industry standard known as ISO 18000-7. This international standard was promulgated by the International Organization for Standardization (ISO), headquartered in Geneva, Switzerland. Persons skilled in the art are familiar with the ISO 18000-7 standard. For brevity and clarity in the discussion that follows, the term “ISO” is used as a shorthand way to refer to the ISO 18000-7 standard, and should be understood to be a reference to the ISO 18000-7 standard, rather than a reference to the ISO organization itself.
The circuitry within the tag 16 includes a processor 41 that is coupled to a memory 42. The memory 42 in
The circuitry of the tag further includes a radio frequency (RF) receiver 46 that is coupled to the processor 41 and to an antenna 47. The processor 41 can receive wireless signals 28 through the antenna 47 and receiver 46. The tag also includes an RF transmitter 48 that is coupled to the processor 41 and to an antenna 49. The processor 41 can transmit wireless signals 28 through the transmitter 48 and the antenna 49.
The interrogator 13 is a portable, battery-operated, handheld device that can be manually operated by a user 24 who is an individual. The circuitry in the interrogator 13 includes a processor 56 that is coupled to a memory 57. The memory 57 is a diagrammatic representation of various different types of memory, including but not limited to ROM, RAM and flash memory. The memory 57 contains a program 58 that is executed by the processor 56, as well as data 59 that is used by the program 58. The interrogator 13 includes an RF transmitter 61 that is coupled to the processor 56 and to an antenna 62. The processor 56 can transmit wireless signals 28 through the transmitter 61 and the antenna 62. The interrogator also includes an RF receiver 63 that is coupled to the processor 56 and to an antenna 64. The processor 41 can receive wireless signals 28 through the antenna 64 and the receiver 63. The handheld interrogator 13 further includes a keypad 66 that is coupled to the processor 56. The user 24 can manually operate the keypad 66 in order to enter information into the interrogator 13.
The interrogator 12 includes a site manager 71 and a reader 72 that are operatively coupled at 73. In the disclosed embodiment, the coupling 73 between the site manager 71 and reader 72 is hardwired rather than wireless, and in particular is a network that may conform to a well-known network protocol known as the Ethernet protocol. Alternatively, however, the site manager 71 and reader 72 could be coupled in any other convenient manner, and could even communicate using wireless signals. Within a given site, such as a shipping hub, there may be a plurality of the readers 72 that are provided at spaced locations and that are all coupled to the site manager 71 through the network 73. However, for simplicity and clarity,
As explained earlier, the wireless signals 28 conform to the ISO 18000-7 industry standard, and the discussion below will focus to some extent on this industry standard. In the real world, the site manager 71 and reader 72 are separate and independent devices that are physically and functionally distinct. However, the ISO 18000-7 standard basically recognizes two general categories of devices, one of which is tags, and the other of which is interrogators. Therefore, for simplicity and clarity in the discussion that follows, the site manager 71 and the reader 72 are collectively referred to herein as an interrogator 12. In addition, and for simplicity and clarity, the reader 72 is considered herein to be essentially a pass-through device, which facilitates the exchange of ISO messages 28 between the site manager 71 and the tag 16, but without making substantive alterations to any of the messages traveling in either direction.
The reader 72 includes a circuit 76. An RF transmitter 81 is coupled to the circuit 76, and to an antenna 82. The circuit 76 can transmit wireless signals 28 through the transmitter 81 and the antenna 82. An RF receiver 83 is coupled to the circuit 76 and to an antenna 84. The circuit 76 can receive wireless signals 28 through the antenna 84 and the receiver 83.
The site manager 71 includes a processor 86 that is coupled to a memory 87. The memory 87 is a diagrammatic representation of various different types of memory, including but not limited to ROM, RAM and flash memory. The memory 87 stores a program 88 that is executed by the processor 86, and also stores data 89 that is used by the program 88.
The user 21 can interact with the site manager 71. For example, the site manager 71 may include a not-illustrated terminal, and the user 21 may be an individual who interacts with the site manager through that terminal. The network 18 is operatively coupled to a network port of the site manager 71. The network 18 may include one or more of the Internet, an intranet, some other type of computer network, or a combination of two more such networks. The users 22 and 23 can communicate with the site manager 71 through the network 18. The users 22 and 23 may, for example, be individuals who are using personal computers or other terminals that are coupled to the network 18. Alternatively, the users 22 and 23 may be automated systems that are operatively coupled to the network 18. For example, the user 22 could be a site manager that is similar to the site manager 71, but that is located in a different site at a physically remote location.
As evident from the foregoing discussion, the tag 16 and the interrogators 12 and 13 each include both hardware and software (where the software may include firmware). In the embodiment of
In this regard,
In more detail, with reference to
The computer program executed in the tag 16A includes an application program 111. The application program 111 maintains a database of ISO tables 116, and examples of two ISO tables are shown diagrammatically at 117 and 118. The application program 111 includes a segment of user memory 121, and maintains a tag manufacturer identification code 122 that uniquely identifies the company that manufactured the tag 16A. The application program 111 also maintains a tag model number 123 corresponding to the tag 16A, and a tag serial number 124 that is unique to the particular tag 16A. The application program 111 further maintains a user-assigned identification code 125 that can be set and/or read by an external user, such as one of the users 21-23.
In addition, the application program 111 maintains a routing code 126. For example, if the tag 16A happen to be mounted on a container that is being shipped from a manufacturer to a remote shipping hub, and then from the shipping hub to a customer, the routing code 126 may be a code that identifies the particular shipping route. The application program 111 also contains a firmware revision number 127 identifying the particular version of the software/firmware computer program that is currently installed in the tag 16A. Further, the application program 111 maintains a tag password 128. If password protection in the tag is enabled, and if one of the users 21-23 wishes to communicate with the tag, then the user will first need to supply the tag with the correct password.
As discussed above, the interrogator 12A and the tag 16A exchange wireless communications 28 that conform to the ISO 18000-7 industry standard.
Referring again to
The format 151 also includes a command code 154 to tell a receiving device what it is expected to do, a field 155 containing data and/or arguments for the command code 154, and an error checking field 156. The error checking field 156 typically contains a cyclic redundancy code (CRC) of a known type.
In regard to the command code shown at 154 in
In the discussion that follows, messages that are sent from the interrogator 12A to the tag 16A and that involve security fall generally within one of three different categories. First, even when a number of the tags are present, the interrogator 12A can select any one of the tags and send a message specifically to that one particular tag, and then expect a single response from that tag. This type of message is known as a Point-2-Point or “P2P” message.
In a second category of messages, the interrogator 12A can broadcast a single message to all of the security-enabled tags that are currently within the wireless transmission range of that particular interrogator. As one example, the interrogator can send one or more ISO “table query” broadcast messages to multiple tags, followed by an ISO collection query broadcast message. The interrogator then expects a single separate response from each individual tag. Messages in this category are referred to in this discussion as table query broadcast messages.
A third category of ISO messages is referred to as universal data block or “UDB” collection. In particular, the interrogator 12A can broadcast to multiple tags a common message that instructs each tag to formulate and send back a UDB data block. Each tag then prepares a UDB data block that has a predefined format, and that typically contains multiple items of data. For example, under the ISO 18000-7 standard, the UDB data block may include tag identification information (discussed in more detail later), and/or a routing code. Under proprietary extensions, various other data items could also be present. The various data elements in the UDB are typically each presented in the TLV format discussed above in association with
In
As still another example, a third-party device can emulate an interrogator and communicate with the tag 16A. The tag will not know that it is communicating with an imposter rather than an actual valid interrogator. If the tag currently has password protection disabled, the third party device will be able to read or write data present within the tag, possibly in support of a fraudulent purpose. Moreover, if a valid interrogator happens to send the tag 16A a message that includes the current password for the tag, a third-party device can receive the message and learn the password. Using the password, the third-party device will have full read and write access to the tag. Moreover, using the current password, the third-party device could even replace the current password with a new password, thereby preventing a valid interrogator from subsequently communicating with the tag.
In order to avoid these and various other similar problems, it would be desirable to have some level of security for wireless ISO messages 28 being exchanged between the interrogator 12A and the tag 16A, while still complying with the ISO 18000-7 standard. However, the ISO 18000-7 standard does not have any provision for security in the wireless messages 28, through the use of encryption or otherwise. Moreover, the ISO 18000-7 standard does not have any built-in extension mechanism that would permit the definition of proprietary messages within the protocol, such as proprietary messages with security provisions. In order to address this, one aspect of the present invention involves the provision of a high level of security for information exchanged between an interrogator and a tag, while still remaining fully compatible with the existing ISO 18000-7 standard. Moreover, this is structured so that it involves only a firmware upgrade in each interrogator and each tag, without any hardware change. Consequently, existing interrogators and tags can be relatively easily and cheaply upgraded, without the need to incur the expense of completely replacing them, or the hassle and expense of hardware alterations.
In more detail,
Conceptually, the security shim 201 is disposed between the application program 101 and the wireless messages 28 that are exchanged between the interrogator 12 and the tag 16. Similarly, the security shim 202 is conceptually disposed between the application program 111 and the wireless messages 28. If the application program 101 in the interrogator 12 wishes to securely transmit an ISO message to the application program 111 in the tag 16, the security shim 201 takes that ISO message, uses encryption and authentication techniques to add a level of security, and then sends a wireless message at 28 that contains the encrypted message with authentication information, while being fully compliant with ISO 18000-7. The security shim 202 in the tag then uses decryption to recover the original ISO message, and delivers that message to the application program 111. Similarly, if the application program 111 in the tag 16 has an ISO message to be securely transmitted to the application program 101 in the interrogator 12, the security shim 202 uses encryption to add a level of security, and then transmits a wireless message at 28 that contains the encrypted message but is fully ISO 18000-7 compliant. The security shim 201 in the interrogator then uses decryption to recover the ISO message, and delivers that message to the application program 101.
The security shims 201 and 202 are effectively transparent to the application programs 101 and 111. Moreover, even though the ISO messages exchanged at 28 in
Some of the information maintained by each of the security shims 201 and 202 will now be briefly identified. Then, an explanation will be provided as to how this information is used during system operation. Beginning with the security shim 202 in the tag 16, the security shim 202 maintains a security officer access control list 211. Whenever the tag is operational, the list 211 will include at least one security officer access control object 210 that in turn includes a digital certificate 212 known as the “root” certificate. The root certificate 212 contains a PKI public key 213. In the disclosed embodiment, the certificate 212 is a type of digital certificate conforming to an industry standard that is known as the X.509 standard, promulgated by the International Telecommunication Union (ITU) based in Geneva, Switzerland. Since this type of X.509 certificate is known in the art, it is not described here in detail.
In addition to the X.509 certificate 212, the access control object 210 includes tag access information 214 that defines the level of access that will be permitted to the tag 16 through use of the associated X.509 certificate. In a sense, the tag access information 214 can be viewed as a set of rules that govern access to the tag. In this regard, the security scheme implemented by security shims 201 and 202 recognizes four distinct levels of access to a tag, which are listed in Table 2.
In Table 2, the lowest level of access is that of an “operator”, who has only read-only access to information on the tag. The next higher level of access is that of an “administrator”, who has read-only access, and also read/write access. The next higher level is that of a “security officer”, who can take security-related actions in the tag that will be described later, such as creating cryptographic keysets, and installing and removing digital certificates (other than the root certificate 212). The highest level of access is that of the tag owner, who has the power to install and remove the access control object 210 containing the root certificate 212. This may, for example, be effected through the serial port 51, as indicated diagrammatically by a broken line 216. IN fact, the overall degree of security is enhanced where operators, administrators and security officers carry out secure communications in one manner (for example through wireless communications), while the access control object 210 containing the root certificate 212 is installed in a different manner (for example through the serial port 51).
The tag access information at 214 indicates the maximum levels of access that can be obtained with the associated digital certificate 212. In this regard, the tag access information 214 indicates whether the associated digital certificate can be used to create keysets for read-only access, and whether the associated certificate can be used to create keysets for read/write access. In the case of the root certificate 212, it will normally be permissible to create keysets for read-only access and keysets for read/write access. This does not mean that everyone obtaining access with keysets created under this certificate will necessarily enjoy full access. For example, as discussed above in regard to Table 2, a person using operator keysets created under this certificate will be limited to read-only access, even if the tag access information indicates that read/write access is permissible. On the other hand, if the tag access information 214 indicates that read/write access is not permitted, then it will not be possible to create keysets under the associated certificate that would provide read/write access.
It is possible for a security officer using a security officer keyset created under one certificate (such as the root certificate 212) to optionally install one or more additional access control objects in the list 211, for example as shown at 220. The tag access information for one of these other access control objects might indicate that creation of read-only keysets under the associated certificate 221 is permitted, but that creation of read/write keysets under that further certificate is prohibited. If a security officer is using a security officer keyset created under an existing certificate in an existing access control object, and installs a further access control object, the tag access rights for that further object must not exceed the tag access rights in the existing object under which the security officer keyset was created.
The security shim 202 also maintains a further list 226 that is a universal data block (UDB) recipient list. The list 226 may be empty, or may optionally contain one or more UDB access control objects. For example, reference numeral 227 designates a UDB access control object containing a digital certificate 225 of a UDB recipient. In the disclosed embodiment, the UDB certificate 225 is an X.509 certificate, and contains a PKI public key 228. The UDB access control object 227 further includes UDB access information 229. The list 226 may optionally include a second UDB access control object 231 containing a digital certificate 230 with a public key 232, and UDB access information 233. It would be possible to combine the lists 211 and 226 into a single list that contains both types of access control objects. But for clarity in this discussion, two separate lists 221 and 226 are shown and described. In a sense, the UDB access information 229 and the UDB access information 233 can each be viewed as a set of rules that govern access to UDB information, as discussed below.
When the tag 16 receives an ISO message asking that the tag formulate and return a UDB, the UDB access control objects in the list 226 identify the persons or entities who will be the ultimate recipients of the tag's UDB information. In response to the ISO message presenting the UDB request, the application program 111 in the tag 16 collects all of the UDB information that is present within the tag. The security shim 202 in the tag intercepts this UDB information from the application program 111, uses the UDB access control objects in the list 226 to identify UDB recipients, and prepares a respective separate block of UDB data for each UDB recipient identified by the UDB access control objects 227 and 231 in the list 226. The security shim 202 does not necessarily pass all of the UDB information on to each of the recipients identified by the respective access control objects in the list 226. Instead, the UDB access information 229 or 233 in each access control object defines which items of UDB information will be received by the associated recipient.
For example, assume that the UDB information provided by the application program 111 is a set of N data elements Data 1 through Data N. Data 1 might be tag identification information, Data 2 might be a routing code, and Data N might be some other type of data.
With reference to
Since the UDB access information 229 indicates that the associated recipient is entitled to receive each of data elements Data 1, Data 2 and Data N, then when the security shim 202 receives UDB information from the application program 111 (including data elements Data 1 through Data N),the security shim 202 will formulate a UDB block for that recipient which includes each of Data 1, Data 2 and Data N (and possibly other data elements between Data 2 and Data N). Further, since UDB protection status 241 indicates that Data 2 and Data N need to be protected, the security shim 202 would encrypt data elements Data 2 and Data N. More specifically, the security shim 202 would generate a random key, use the random key to separately encrypt each of Data 2 and Data N, and then encrypt the random key with that recipient's public key 228.
Similarly, since the UDB access information 233 for the other UDB access control object 231 indicates that the associated recipient is entitled to receive data element Data 1 but not data elements Data 2 and Data N, then when the security shim 202 receives UDB information from the application program 111, the security shim 202 will formulate a UDB block for that recipient which includes Data 1 (and possibly other data elements between Data 2 and Data N), but not data elements Data 2 and Data N. The UDB protection status information 241 indicates that data elements Data 2 and Data N need to be protected, but this recipient is not receiving those data elements. This recipient is receiving data element Data 1, but the UDB protection status information 241 indicates that data element Data 1 does not need to be protected. Therefore, data element Data 1 would not be encrypted.
As discussed earlier, the application program 111 maintains a database 116 of ISO 18000-7 tables, and examples of two of these tables are shown at 117 and 118. The security shim 202 maintains a database 249 of three virtual ISO tables, which are a P2P Request Table 251, a P2P Response Table 252, and a Broadcast Request Table 253. These are referred to as virtual tables, because the application program 111 of the tag is not aware they exist. There are standard ISO commands that can be used to access ISO tables in the database 116, and the security shim 201 can use these same standard ISO commands to access the virtual ISO tables 251-253, as discussed in more detail later.
The security techniques used by the security shims 201 and 202 involve both (1) a cryptographic technique used to encrypt and decrypt information, and (2) an authentication technique used to authenticate information received in wireless ISO messages 28. The security shims 201 and 202 are each capable of working with any of several different cryptographic techniques, and with any of several different authentication techniques. A combination of one particular encryption technique and one particular authentication technique is referred to herein as a “protection suite”. The security shim 202 maintains a list 258 of the protection suites with which it is compatible.
Referring again to
Still referring to
Table 3 is an expanded version of Table 1, showing examples of some ISO commands for which the read-only keyset 272 is used, and examples of other ISO commands for which the read/write keyset 273 is used. The commands in Table 3 are merely exemplary, because Table 3 does not show all ISO commands. Where the tag replies to any command in Table 3, the tag would use the tag response keyset 274.
As discussed earlier,
Turning now to the security shim 201 in the interrogator 12,
As discussed above, a protection suite is a combination of one particular encryption technique and one particular authentication technique. The security shim 201 includes a list 311 of protection suites with which it is compatible. This protection suite list 311 is conceptually similar to the protection suite list 258 discussed earlier in association with the security shim 202 and
The security shim 201 can generate and temporarily save a transient PKI public key 316 and a corresponding transient PKI private key 317, for a purpose discussed in more detail later. The security shim 201 also includes encrypted storage 326 that may be empty, but that will typically include one or more keyset tables, two examples of which are shown at 327 and 328. The keyset tables 327 and 328 are each similar to the keyset table 270 discussed above, which contains four keysets 271-274. For the purpose of this discussion, it is assumed that the keyset table 327 is for the tag 16 and is thus identical to the keyset table 270 in the tag 16, and that the keyset table 328 corresponds to a different tag and thus is not identical to the keyset table 270 in tag 16. However, there may be some commonality. For example, for reasons discussed later, the keyset tables 327 and 328 may each contain a read-only keyset that is identical to the read-only keyset 272 in the tag 16. In the disclosed embodiment, the encryption technique used for protecting the storage 326 is implemented with the Microsoft® Cryptographic API (CAPI) available on the Windows XP® and Windows CEO platforms (CE-CRYPTO). However, the encryption could alternatively be implemented using any other suitable encryption platform.
As mentioned above, the storage 326 is encrypted. In order to provide for restricted access to this encrypted storage 326, the security shim 201 maintains an access control section 336 that contains one or more access control blocks each corresponding to a respective different user. For example, the control section 336 contains an access control block 341 that has a user identification 342, a password 344, and an identification 343 of one or more keyset tables 327-328 that the specified user is authorized to use. Similarly, another access control block 346 has a user identification 347 that identifies a different user, a password 349 for that user, and an identification 348 of one or more keyset tables 327-328 that the user is authorized to use. When, for example, the user 342 provides the proper password 344 to the control section 336, each keyset table identified at 343 is obtained from encrypted storage 326, decrypted, and then made available for use by that user. Each user is permitted to freely change his or her password. Depending on the circumstances, and where appropriate, the security officer credentials 300 could also be maintained in protected storage, with access thereto controlled by the access control section 336.
As discussed earlier, the ISO 18000-7 standard does not have any provision for protecting ISO messages that are being transmitted. Moreover, this ISO standard does not have a built-in extension mechanism permitting the definition of new and proprietary messages that conform to the standard but that could also use encryption or some other security mechanism. Accordingly, the security shims 201 and 202 implement a unique technique that complies with the ISO 18000-7 standard but that provides strong security for ISO messages exchanged between the application program 101 in the interrogator and the application program 111 in the tag 16. According to this technique, the actual original ISO 18000-7 message is encrypted, then transmitted as a payload within at least one other ISO 18000-7 message that is not encrypted and that effectively serves as an envelope for the encrypted original message. This approach of embedding one ISO message within another is referred to herein as “tunneling” the encrypted message within the envelope message.
In more detail, and as discussed earlier, the ISO 18000-7 standard includes commands that permit the interrogator 12 of
As a practical matter, the encrypted and authenticated command will usually be too large to be sent as the payload of a single ISO message. This is due in part to the fact that, in the United States, the Federal Communications Commission limits RFID infrastructure transmissions to 25 msec out of any 100 msec time window, which effectively limits each message to a length of about 100 bytes. Other countries and local authorities may also impose constraints. Accordingly, since the encrypted and authenticated command will usually be too large to embed within a single ISO message, it will typically be broken into several fragments, and then the fragments will be sent separately to the table 251 or 253 in respective different enveloping messages that are each an ISO table write fragment command. When all of the fragments have been written into the virtual table 251 or 253, the security shim 202 will retrieve and reassemble the fragments, authenticate and decrypt the result in order to recover the original ISO command, and then deliver this ISO command to the application program 111.
Conversely, if the application program 111 in the tag 16 has an ISO message to send to the application program 101 in the interrogator 12, the security shim 202 can intercept this ISO message, add encryption and authentication, fragment the message, and put the fragments into the virtual table 252. The security shim 202 then notifies the security shim 201, and the security shim 201 retrieves these fragments from the virtual table 252 using successive ISO table read fragment commands. That is, the fragments are each transported as the payload of a respective envelope ISO message sent in response to an ISO table read fragment command. When the security shim 201 has retrieved all of the fragments from the table 252, it reassembles the fragments and then authenticates and decrypts the resultt, in order to recover the original ISO message. The security shim 201 then delivers the original ISO message to the application program 101. With reference to an earlier discussion herein of different categories of messages, the virtual tables 251 and 252 are used for P2P messages and responses, and the virtual table 253 is used for broadcast table query messages.
In this regard, if all of the ISO headers 402 were retained in the tunneled message, some of them would necessarily always be identical to their counterparts in the ISO headers of the envelope message. Accordingly, these headers are omitted from the tunneled message. At the receiving end, they are added back to the tunneled message by simply copying the counterparts from the envelope message. As shown in Table 4, these include well-known ISO headers such as packet options, tag manufacturer identification, tag serial number, and interrogator identification code. As another example, some of the ISO headers 402 of the tunneled message would not necessarily be identical to their counterparts in the envelope message, but can be omitted from the tunneled message, and then recreated at the receiving end by recomputing them. As shown in Table 4, these include the well-known ISO headers of packet length and CRC error checking.
One other ISO header of interest is the tag status header. This header is maintained without change in the tunneled message. In theory, the counterpart header in the envelope message could be identical. However, this status information in the header of the envelope message would then be publicly accessible to anyone within the transmission range of the tag. In order to avoid making this status information available to anyone other than the intended recipient(s), and as indicated in Table 4, the ISO tag status header in each envelope message is unconditionally set to indicate a positive status response from the tag, regardless of whether the tag status header in the tunneled message happens to be positive or negative. Consequently, other parties who may look at the envelope message will always see it reflecting a positive tag status, and will not know whether the actual tag response was positive or negative.
Referring again to
Next, a cryptographic information TLV 417 is concatenated to the encrypted information TLV 416. The cryptographic information TLV is not itself encrypted, but indicates how the information 416 was encrypted, including an identification of the particular protection suite used and the particular keyset used.
It is well known in the art how, under the ISO standard, several ISO table write fragment commands such as those shown at 436-439 in
To initiate the process, the security shim 201 of the interrogator 12 transmits to the tag 16 a not-illustrated ISO table update record command, which serves as a request for permission to update the table 251. The security shim 202 of the tag 16 then sends back an ISO message containing a value that is commonly referred to as an operation initiation token. This and other similar tokens are random values, which adds to the security of a given message exchange. The interrogator 12 then sends the ISO message 436 in order to put the fragment TLV Fl in the table 251, and the tag responds by transmitting an ISO message with an operation continuation token. The interrogator then transmits the ISO message 437, and receives back an ISO message with a further continuation token. The interrogator then transmits the ISO message 438, and receives back another ISO message with a continuation token. The interrogator then transmits the ISO message 439. The checksum in the authentication TLV 441 of the message 439 is computed by concatenating all messages that have been exchanged between the interrogator and the tag, beginning with the initial table update record message, and including all messages sent by the tag with continuation tokens, as well as the final message 439, except for the authentication portion of the final message 439. This authentication checksum is computed according to the authentication technique indicated in the protection suite identified by the cryptographic information TLV 421 (
When all of the ISO 18000-7 messages 436-439 have been received by the tag and are present in the table 252, the security shim 202 in tag 16 takes the sequence number from the authentication information 441 in the final message 439, and compares that sequence number to the sequence number currently stored in the table 279 for the interrogator 12. If the sequence number from the message 439 is less than or equal to the sequence number currently stored in the table 279, the security shim 202 flags an error. Otherwise, the security shim 202 replaces the sequence number in table 279 with the new sequence number from the authentication information in message 439. Then, the security shim 202 locally computes its own authentication checksum, and compares it to the authentication checksum received in the authentication information 441 of the message 439, in order to confirm that the checksums are identical. If the tag detects an error at any time during the exchange of messages, then the tag sends the interrogator an ISO 18000-7 error message of a known type. Upon receiving this error message, the security shim 201 in the interrogator 12 discontinues the transmission, and notifies the application program 101 about the error.
On the other hand, if the security shim 202 in the tag has not identified any errors, and if the authentication checksum is verified successfully, then the security shim 202 (1) reassembles the fragments F1, F2, and F3, (2) decrypts this reassembled information, and (3) replaces or recreates the missing ISO headers, in order to thereby end up with the original message that is shown in 401 at
In response to the command in the ISO message 401, the tag will send a response back to the interrogator. This response is handled in a manner that is only slightly different from the manner described above for the message 401. In particular, the application program 111 in the tag 16 formulates an ISO message containing its response. Then, in a manner similar to that shown in
In response to the token from the tag, the interrogator sends back an ISO message containing an ISO table get data command, and the tag responds with an operation initiation token that is a random value. The interrogator then sends an ISO table read fragment command to the tag, and the tag sends back an ISO message containing the first fragment and a further random token. The interrogator then requests the next fragment, and so forth. After the tag sends the last actual fragment, and in response to the next table read fragment request from the interrogator, the tag sends an ISO message that contains a sequence number and an authentication checksum. The authentication checksum is computed by concatenating all messages exchanged between the interrogator and tag, beginning with the message containing the initial token sent by the tag upon completing preparation of its response, and ending with the tag's final message containing the authentication checksum, except for the checksum itself. During the exchange of messages that transmit the tag's response to the interrogator, if the tag happens to detect any error, the tag sends the interrogator an ISO 18000-7 error message. The interrogator then discontinues the exchange, and notifies the application program 101 of the error.
When the interrogator receives the message with the tag's authentication checksum, the interrogator independently computes an authentication checksum, and compares it to the authentication checksum received from the tag, in order to verify that they are identical. If the tag's authentication checksum is verified successfully, then the security shim 201 in the interrogator reassembles the various fragments it retrieved, decrypts the result, and replaces or recreates the missing ISO headers, in order to thereby end up with the ISO message that was the tag's response. The security shim 201 then passes this ISO message to the application program 101 in the interrogator.
The foregoing explanation relates to an exchange that began when the interrogator 12 decided to send an ISO P2P message to a single specific tag 16. However, as discussed earlier, the interrogator 12 can also broadcast to a plurality of different tags an ISO 18000-7 broadcast table query message having embedded within it a protected broadcast table query. In particular, the embedded message is a table query directed to one of the ISO tables 117-118 that is present in each of the tags, and is sent in an envelope message that is a table query to the Broadcast Request Table 253. The original command is compressed, encrypted and fragmented in a manner similar to that shown in
More specifically, the ISO headers of the tunneled message include a packet options field, which in turn contains a communication type bit. When the security shim 201 intercepts the message prepared by the application program 101, this communication type bit will be a binary “0”, to indicate that the communication is a broadcast communication. But during the process of compressing the ISO headers, the security shim 201 in the interrogator generates a random bit that is referred to here as the collection query random bit “CQRB”. The security shim 201 saves the CQRB for later use, and also stores this bit in the communication type bit of the packet options field in the compressed ISO headers, in place of the binary “0” that the interrogator 12 put there.
The final message 449 contains authentication information 456, including a final sequence number, and an authentication checksum. The checksum is computed by concatenating all of the information in all of the messages 446-449, except for the checksum itself. The checksum is computed according to the message authentication algorithm of the protection suite identified in the cryptographic information TLV that is embedded within the fragment F1 in the first message 446, using the read-only keyset 272.
As each tag 16 is receiving the messages 446-449, the tag's security shim 202 monitors the ISO 18000-7 query collection command sequence numbers in those messages, using the table 279 (
In due course, and in a similar manner, the interrogator will transmit to all the tags a broadcast message containing a collection query command. When the security shim 202 in the tag passes this message on the tag's application program 111, the application program 111 will generate an ISO 18000-7 compliant reply message. The ISO headers of this message contain a tag status field, which in turn includes a “service bit” that represents tag's reply to the query. This ISO message is intercepted by the security shim 202 in the tag, and the security shim performs an exclusive or (XOR) between the service bit and the CQRB bit, and substitutes the result for the service bit. Then without further change or tunneling, the security shim 202 transmits the modified ISO message to the interrogator 12. Although this ISO message is not encrypted or tunneled, the true value of the service bit cannot be determined.
When the security shim 201 in the interrogator 12 receives this ISO message, it takes the modified service bit from the tag status field in the ISO headers, and carries out an exclusive or (XOR) between this modified service bit and the previously-saved CQRB bit, in order to thereby recover the original value of the service bit. The security shim substitutes this recovered original service bit for the modified service bit in the ISO headers of the message, and then passes the message on to the application program 101 in the interrogator.
As mentioned earlier, the ISO 18000-7 standard has provisions for the interrogator 12 to transmit to multiple tags a broadcast request for a universal data block (UDB), expecting that each tag will then prepare and return a UDB. In addition, the ISO 18000-7 standard has provisions for the interrogator 12 to transmit to one selected tag a P2P request for a UDB, and then only the selected tag will prepare and return a UDB. For the purpose of this discussion, it is assumed that, in the disclosed embodiment of
More specifically,
One of the UDB blocks 506 is shown in more detail in the upper portion of
In
Each UDB block 506 also includes several other fields 526-530. The fields 526 and 527 are type and length information for the TLV format of the entire UDB block 506. The field 528 is a recipient identification in TLV format. In the disclosed embodiment, the recipient identification is the “distinguished name” from the particular recipient's X.509 certificate 225 or 230 (
The lower portion of
The ISO message 501 of
The security shim 201 in the interrogator 12 will receive the message 501, and then pass it on without change to the application program 101, which will then forward it on to each of the intended recipients. For example, assume that the users 22 and 23 in
With reference to
After the tag owner installs the access control object 210 containing the root certificate 212, the next step in the commissioning procedure is for a security officer (for example the user 21) to authenticate himself to the tag, for the purpose of defining keysets 271-274 that will allow the security shims 201 and 202 to exchange protected information in the manner described above. The first task that the security officer must complete is to establish the security officer keyset 271, in a manner explained in more detail below. As this is carried out, the security shim 201 transmits information to the tag 16, using table write fragment commands that store information fragments in the P2P Request Table 251, and using table read fragment commands to read information fragments from the P2P Response Table 252, in a manner generally similar to that already described above. One difference is that, with reference to
In more detail,
Upon receiving this information, the security shim 202 in the tag compares the protection suite list 311 from the interrogator 12 to its own protection suite list 258, in order to determine whether or not there is at least one protection suite common to both lists (other than the NULL-NULL protection suite). If there is no common protection suite, then the security shim 202 terminates its participation in the transaction, as indicated at 577. Otherwise, the security shim 202 proceeds to block 578, where it checks to see if the digital certificate 301 from the security officer is valid. For example, the digital certificate 301 specifies a range of dates within which it is valid, and the security shim 202 can verify that the current date maintained in the tag using clock (
Otherwise, at block 581, the security shim 202 selects one protection suite that is common to both of the lists 311 and 258 (other than the NULL-NULL protection suite) The security shim 202 also generates a random number RT. Then, the security shim 202 uses the transient public key 316 received from the interrogator at 573 to encrypt both the random number RT and an identification of the selected protection suite. Then, at 582, this information is transmitted back to the security shim 201 in the interrogator 12. The transfer of this information is effected by putting the information in the P2P Response Table 252, and then notifying the security shim 201 in the interrogator, so that the security shim 201 can retrieve this information from the table 252 in the manner discussed earlier. The protection suite selected by the tag at block 581 is not yet in effect, and so all of the exchanges shown in
At block 583, the security shim 201 in the interrogator decrypts the information that it received at 582 from the security shim 202 in the tag. The security shim 201 then computes an authentication value HI, according to the authentication technique identified in the protection suite selected by the security shim 202 in the tag, and using the random key RT received from the security shim 202. In addition, the security shim 201 generates a further random number SALT. The security shim 201 concatenates the authentication value HI and the random number SALT, and signs the concatenated result with the private key 303 associated with the digital certificate 301. This signed information is then transmitted at 584 to the security shim 202 in the tag. Upon receiving this information, the security shim 202 uses the public key 302 that it received in the security officer's certificate 301, and verifies the signature in the information received at 584. If the signature is not valid, then the security shim 202 ends the transaction at 577.
Otherwise, the security shim 202 in the tag proceeds to block 587, where it locally computes its own authentication checksum HT, and then compares this to the authentication checksum HI from the interrogator, in order to verify they are identical. If they are different, then the security shim 202 terminates the transaction at 577. Otherwise, the security shim 202 proceeds to block 588, where it generates the security officer (SO) keyset 271. In this regard, the various messages received from the interrogator each include the interrogator identification code 103 (
When the interrogator's security shim 201 receives the message sent at 591, the it already has in hand all of the same information used by the tag's security shim 202 to generate the security officer keyset. Accordingly, at block 592, the interrogator's security shim 201 separately derives and saves the security officer keyset 271 in the same manner that this keyset was derived by the tag's security shim 202, in particular by concatenating the same information and then using the same PBKDF2 function. The security shim 201 in the interrogator then switches from use of the NULL-NULL protection suite to use of the protection suite selected by the tag at block 581. Thereafter, any further communications between the security officer and the tag will still be effected with tunneled messages routed through the P2P Request and Response Tables 251 and 252, but using the security officer keyset 271, and the protection suite selected at 581.
In this regard, the security officer can use the selected protection suite and the security officer keyset 271 to send the tag's security shim 202 a read-only keyset, which the security shim 202 stores at 272 for later use. As mentioned earlier, the security officer will normally provide this same read-only keyset to many different tags, so that broadcast messages sent to multiple tags can contain information encrypted with this keyset, and the various tags will each be able to decrypt the encrypted information.
The security officer can also use the security officer keyset 271 and the selected protection suite to instruct the tag's security shim 202 to generate a read/write keyset. The security shim 202 will then generate random numbers for use as the read/write keyset, store the read/write keyset at 273, and send the read/write keyset 273 back to the interrogator's security shim 201. Further, the security officer can use the security officer keyset 271 and the selected protection suite to instruct the tag's security shim 202 to generate a tag response keyset. The security shim 202 then generates random numbers for use as the tag response keyset, stores the tag response keyset at 274, and sends the tag response keyset to the interrogator's security shim 201.
Using the security officer keyset and the selected protection suite, the security officer can also instruct the tag's security shim 202 to invalidate all of the keysets that are currently stored in the table 270, including the security officer keyset 271. This is a two-step procedure. First, the security officer sends a message instructing the tag's security shim 202 to invalidate all of the local keysets stored in table 270. The security shim 202 then sends back a message containing a random number. The interrogator's security shim 201 then increments the random number by 1 modulo 296, and sends the result to the tag's security shim 202. The security shim 202 checks the incremented value and, if it is correct, the security shim 202 invalidates all of the keysets stored in the table 270.
Using the security officer keyset 271 and the selected protection suite, the security officer can optionally install additional access control objects in the tag. For example, the security officer can optionally install one or more additional security officer access control objects in the list 211, such as the certificate shown in broken lines at 220. In addition, the security officer can optionally install one or more UDB access control objects in the list 226, such as those shown in broken lines at 227 and 231. When the security officer installs an additional access control object 220 in the list 211, the tag access rights for that additional object cannot be greater than the tag access rights of the existing access control object that was used to create the security officer keyset being used by the security officer.
The security officer can view access control objects already installed on the tag, by sending a message that requests a list of the installed objects. In response, the tag will return a list containing the “subject name” field from the digital certificates in each of the access control objects currently installed in each of the lists 211 and 226 on the tag.
The security officer can use the security officer keyset 271 and the selected protection suite to optionally remove any of the access control objects that are already installed in either of the lists 211 and 226, except for the access control object 210 containing the root certificate 212. The procedure for removing an access control object is similar to that for invalidating the keysets in table 270. In particular, the security officer sends a request that a particular access control object be deleted, and the security shim 202 in the tag returns a random number. The security officer then increments the random number by 1 modulo 296, and returns the result. The tag's security shim 202 checks the incremented result and, if it is correct, the security shim deletes the specified access control object.
The tag 16 maintains a not-illustrated log of all attempts to authenticate to or access the tag, including not only successful attempts, but also unsuccessful attempts.
The site 701 has an interrogator 706, the site 702 has an interrogator 707, and the site 703 has an interrogator 708. The interrogators 706-708 are each identical to the interrogator 12 that was described earlier, but have been given different reference numerals in
The security officer 711 at the site 701 uses the interrogator 706 to validate to the tag 16, in the manner discussed above in association with
The security officer 711 then installs two additional security officer access control objects in the list 211. One of these is the access control object 220. If the tag receives a communication from the security officer 712 at site 702, the tag can use the certificate 221 in the object 220 to authenticate the security officer 712. The third access control certificate in the list 211 is not shown in
The security officer 711 may also optionally install one or more UDB access control objects in the list 226, for respective UDB recipients. For the purpose of the exemplary situation being discussed here, it is assumed that the security officer 711 installs the UDB access control object 227, and that the certificate 225 in this object indicates a UDB recipient 721 is to receive UDB information. Further, it is assumed that the security officer 711 installs the UDB access control object 231, and that the certificate 230 in this object indicates that a UDB recipient 722 is to receive UDB information. In this example, the UDB recipients 721 and 722 are each a person or entity that does not fall within any of the four security levels listed in Table 2.
The keysets in table 270 can remain in effect so long as the tag 16 remains at the site 701, unless local security policy specifies that they should be invalidated and replaced sooner. It is assumed for the sake of this discussion that the keysets in table 270 are permitted to remain in effect so long as the tag is at the site 701. While the tag 16 is at the site 701, persons with operator status or administrator status can interact with the tag 16. For example, a person with administrator status may install on the tag 16 a manifest (inventory) of the products that have been loaded into the associated container 704. Eventually, when the truck carrying the container 704 and tag 16 is ready to depart the site 701, the security officer 711 uses the security officer keyset 271 to instruct the tag 16 to invalidate all four of the keysets 271-274 that are stored in table 270. Alternatively, the departure gate from the site 701 could be a choke point having an interrogator or reader that automatically invalidates the keysets in table 270 on every tag departing the site 701.
The container 704 with tag 16 will then be transported by the truck to the shipping hub site 702. After the container 704 and tag 16 arrive at the site 702, the security officer 712 at that site will use the interrogator 707 to authenticate to the certificate 221 in the tag 16, using the technique described above in association with
Assume that, while the tag 16 is at the site 702, the tag receives through the interrogator 707 an ISO message that instructs the tag 16 to prepare and transmit UDB information. The tag 16 will then create and transmit a message of the type shown at 501 in
The UDB recipient 721 has a private key that corresponds to the public key 228 in the UDB certificate 225. The recipient 721 uses that private key to decrypt the random keys received at 524 and 545 in the UDB block 506 and associated authentication block 508 that are intended for the UDB recipient 721. The recipient 721 can use the authentication information to authenticate the received message, and can access the UDB data 516. In a similar manner, the UDB recipient 722 has a private key that corresponds to the public key 232 in the UDB certificate 230. The UDB recipient 722 uses that private key to decrypt the random keys received at 524 and 545 in the UDB block 506 and associated authentication block 508 that are intended for the recipient 722. The UDB recipient 722 can use the authentication information to authenticate the received message, and can access the UDB data 516.
In this manner, UDB recipient 721 can access the UDB data in the message 501 for which the recipient 721 is the intended recipient, but not UDB information intended for any other recipient, such as the UDB recipient 722. Similarly, the UDB recipient 722 can access the UDB data in the message 501 for which the recipient 722 is the intended recipient, but not UDB information intended for any other recipient, such as the UDB recipient 722. It should also be noted that, as the message 501 with encrypted UDB information is passing through the network 18 from site 702 to the UDB recipients 721 and 722, the message 501 may pass through computers or systems of third parties, but those third parties will not be able to access or view any of the encrypted UDB information that is present within the message.
After the container 704 with the tag 16 has been shifted from the original truck to a further truck at the site 702, and when the further truck is preparing to depart the site 702, the security officer 712 will instruct the tag 16 to invalidate all of the keysets that are stored on the tag in table 270. Alternatively, the departure gate from the site 702 could be a choke point having an interrogator or reader that automatically invalidates the keysets in table 270 on every tag departing the site 702.
Eventually, the further truck carrying the container 704 and the tag 16 will arrive at the customer's site 703. The security officer 713 at that site will use the interrogator 708 to authenticate to the third (not-illustrated) certificate in the list 211, in order to select a protection suite and establish a security officer keyset that the tag stores at 271. The security officer 713 will also establish all the additional keysets 272-274 for use at the site 703, and distribute these additional keysets to appropriate persons at site 703. After the container 704 has been unloaded, the tag 16 will be removed from the container. A person with administrator status may remove information from the tag that is viewed as sensitive or confidential, such as the manifest or inventory for the container 704. The security officer 713 will then instruct the tag to invalidate all the keysets stored in table 270. The security officer 713 may also remove one or more of the additional access control objects that are installed in the list 211 or in the list 226, except that the security officer 713 cannot remove the access control object 210 containing the root certificate 212. When the tag is eventually returned to the tag owner, the tag owner can remove and/or replace the access control object containing the root certificate 211.
The RFID system 10 of FIGS. 1 and 5-14 provides a high level of security for information exchanged between an interrogator and a tag, as well as information maintained in the tag, while remaining fully compatible with the existing ISO 18000-7 standard. Moreover, the security provisions are structured so that they can be implemented with just a firmware upgrade in existing interrogators and tags, without any hardware change. Consequently, many existing interrogators and tags can be relatively easily and cheaply upgraded, while avoiding the expense of completely replacing them, or the expense and logistical problems involved in implementing hardware alterations. Avoiding the need for extra hardware in tags also avoids the increased power consumption that would be associated with added hardware, and thus helps to avoid a reduction in the period of time that a tag can operate before its battery needs to be changed or recharged.
Although selected embodiments have been illustrated and described in detail, it should be understood that a variety of substitutions and alterations are possible without departing from the spirit and scope of the present invention, as defined by the claims that follow.
Claims
1. An apparatus comprising a part configured to receive a communication that originates externally of said part, that conforms to a predetermined communications protocol, and that contains payload information consistent with said protocol but subject to a security provision supplemental to said protocol, said part extracting said payload information from said security provision.
2. An apparatus according to claim 1, wherein said communication is a wireless communication.
3. An apparatus according to claim 2, wherein said communications protocol is ISO 18000-7.
4. An apparatus according to claim 1, wherein said part is a tag.
5. An apparatus according to claim 1, wherein said security provision includes said payload information being encrypted and authenticated.
6. An apparatus according to claim 1, wherein said security provision includes said payload information being encrypted.
7. An apparatus according to claim 6, including a data segment received by said part and including a type identifier, a length value, and a data field containing cryptographic information relating to said encrypted payload information.
8. An apparatus according to claim 1, wherein said security provision includes said payload information being authenticated.
9. An apparatus according to claim 1, including a data segment received by said part and including a type identifier, a length value, and a data field containing authentication information, said part carrying out an authentication operation as a function of said authentication information and said communication.
10. An apparatus according to claim 1,
- wherein said communication has a portion separate from said payload information containing a first command that is a command from said communications protocol; and
- wherein said payload information includes at least a portion of a further communication containing a second command that is a command from said communications protocol.
11. An apparatus according to claim 10, wherein said first and second commands are different.
12. An apparatus according to claim 10, wherein said first and second commands are the same.
13. An apparatus according to claim 10, wherein said part successively receives a plurality of communications, the payload information in each said communication being a respective fragment of said further communication.
14. An apparatus according to claim 10,
- wherein said part includes a memory containing a table; and
- wherein said part responds to said first command in said portion of said communication by storing said payload information in said table.
15. An apparatus according to claim 14, wherein said communication is a wireless communication, and said communications protocol is ISO 18000-7.
16. An apparatus according to claim 10,
- wherein said first command is one of a subset of commands of said communications protocol, said subset containing less than all of the commands of said communications protocol;
- wherein said part maintains a virtual object, said first command specifying said virtual object as a destination for said payload information; and
- wherein said part responds to said second command by transmitting a further communication for propagation away from said part externally thereof, said further communication including tag response information that is subject to a further security provision.
17. An apparatus according to claim 16,
- wherein said payload information includes a random bit having a randomly selected binary state;
- wherein said response information includes a response bit; and
- wherein said further security provision includes performing an exclusive or between said response bit and said random bit.
18. An apparatus according to claim 1,
- wherein said communication has a portion separate from said payload information containing one of first and second commands that are respective different commands from said communications protocol;
- wherein said payload information includes at least a portion of a further communication containing a third command that is a command from said communications protocol;
- wherein said part includes a memory containing first and second tables;
- wherein said part responds to said communication by storing said payload information in said first table if said portion of said communication contains said first command; and
- wherein said part responds to said communication by storing said payload information in said second table if said portion of said communication contains said second command.
19. An apparatus according to claim 18, wherein said third command is different from each of said first and second commands.
20. An apparatus according to claim 18, wherein said third command is the same as one of said first and second commands.
21. An apparatus according to claim 18, wherein said communication is a wireless communication, and said communications protocol is ISO 18000-7.
22. An apparatus according to claim 1,
- wherein said part includes a memory containing a table with further payload information stored therein;
- wherein said communication has a portion separate from said payload information that includes a selected command that is a command from said communications protocol; and
- wherein said part responds to said selected command by transmitting a further communication for propagation away from said part externally thereof, said further communication conforming to said communications protocol and containing said further payload information subject to a further security provision supplemental to said communications protocol.
23. An apparatus according to claim 22, wherein said further security provision includes said further payload information being encrypted.
24. An apparatus according to claim 22, wherein said further security provision includes said further payload information being authenticated.
25. An apparatus according to claim 22, wherein said communication is a wireless communication, and said communications protocol is ISO 18000-7.
26. An apparatus according to claim 1, wherein said protocol specifies a maximum length for said payload information.
Type: Application
Filed: Aug 31, 2013
Publication Date: Mar 5, 2015
Applicant: SAVI TECHNOLOGY, INC. (Alexandria, VA)
Inventors: Igor V. Balabine (Menlo Park, CA), Nikola Cargonja (San Carlos, CA), Allan M. Evans (Cupertino, CA), Liping Julia Zhu (San Jose, CA), Devendra Shiledar (Pleasanton, CA), Stephen Alan Stough (Reno, NV)
Application Number: 14/016,084
International Classification: H04L 29/06 (20060101); H04W 12/06 (20060101);