The present disclosure relates generally to wireless systems, and more particularly connectivity of Internet-of-Things (“IoT”) devices.
Internet-enabled devices and internet connectivity are becoming more and more ubiquitous. As connectivity spreads to more and more devices and the applications of that connectivity increase, the security of information and the communication of that information becomes increasingly important. The internet is no longer confined to personal computers or laptops. Rather, it follows users around in their pocket, in their car, and is present in every corner of their lives. The Internet of Things (IoT) introduces new security challenges as the points of access for malicious software and those seeking private information increases with the presence of ever more devices.
Wireless standards, such as Bluetooth®, Bluetooth Low Energy (BLE), Zigbee®, and WiFi have defined authentication and encryption protocols with strong security performance. However standards-based IoT products may still be vulnerable to security attacks. Many standards use a shared secret as an authentication credential, but a lack of a display or an input/output interface (as IoT technology expands away from merely being present on handsets) creates difficulties in the setup, update, and verification of authentication credentials such as a password or a secret key. Manufactures may use a present or default password or key in IoT devices; users often never change it.
IoT chip 120 may use an embedded certificate which, coupled with a set of protocols for issuing the certificate, allows the IoT chip to identify itself and validate secure communication and control. Embedded certificates may be issued during manufacturing or programming. In other embodiments, certificates may be issued online by chip vendors or other third parties which may be enabled by chip vendors. The set of protocols may include initialization, introduction, authentication, and removal protocols. These protocols may build, prove, and manage trust relationships between devices, such as IoT chip 120 and counter party 150.
For two-certificate chains, a second certificate 222 may be added to certificate 212. Second certificate 222 may include second chip vendor information 224, including the chip vendor ID 225 and the chip vendor public key 226. Second certificate 222 may also include certificate authority information 227, including the certificate authority's ID 228 and the certificate authority's public key 229. The IDs and the public keys chip vendor and the certificate authority may be converted to a hash and stored in a hash block 230. Finally, hash block 230 and the certificate authority's private key (not shown) may be used to generate and store an encrypted result 231.
Unshared public content 250 of embedded certificate 200 may include the chip vendor's public key 252 as well as public keys of other chip vendors 254 and certificate authorities 256. The number of public keys may be determined by the size of the storage into which embedded certificate 200 is saved. Public keys for chip vendors that are not the chip vendor of chip vendor public key 252 and certificate authorities may be obtained online.
Embedded certificate 200 may include private content 280, including a private key for the chip. In such embodiments, security protocols may need to be implemented to protect private content.
Information contained in embedded certificate 200 may be fixed (not alterable). In various embodiments, information of embedded certificate may be stored in on-time programmable (OTP) registers or in protected internal memory, such as flash. Embedded certificate 200 may be issued to an IoT chip online at a time after manufacturing, for low-cost manufacturing and optional use of certificate-based security functions, by the chip vendor's server or by a device maker's server assisted by the chip vendor. If the embedded certificate is issued by the chip vendor's server, the device firmware may be verified to ensure that it is not compromised to prevent a certificate from being issued to a malicious device using a genuine IoT chip.
An embedded certificate may be verified by a counter party with or without internet connectivity.
High-level process 300 may be referred to as a certificate-based security protocol and may be started with an IoT chip validating device firmware to prevent a certificate from being used by a compromised device. The certificate-based security protocol may require frequent updates to the certificate from a server due to short expiration times of previously issued certificates. In this embodiment, it may be more difficult to compromise a device with an issued certificate.
The certificate-based security protocol may provide strong authentication based on a chip-specific ID. It may remove the requirement to setup, input, and verify shared secrets as authentication credentials. And, finally, it may provide better ease-of-use for IoT devices.
High-level process 300 begins with the counter party running a TLS handshake in step 310.
The TLS handshake 400 of
As stated above, the TLS handshake 400 may verify the IoT chip's certificate according to a method 505 of
After the TLS handshake is completed and an encrypted connection is created, the IoT chip may be authenticated to the counter party. For example, the IoT chip demonstrates that it owns the private key corresponding to the claimed unique chip ID. However, the counter party has not been authenticated to the IoT chip. In instances where the counter party does not have the IoT chip's ID in its access control list (ACL), meaning that it has not had a trust relationship with the IoT device (or IoT chip), an initialization process may be executed to set up the trust relationship.
If the IoT device's ID is in the counter party's ACL in step 607, initialization process 600 is no longer required and the protocol may proceed to the authentication protocol in step 608 (discussed in more detail in
The counter party device may then send an Initialization Request, comprising the counter party's ID or certificate, to the IoT device in step 612. If the IoT device's ACL is not empty in step 613 and the counter party's ID is not in the IoT device's ACL but in a pending ACL, the IoT device may respond to the Initialization Request with an Introduction Challenge with a nonce in step 614. The counter party may then calculate a hash value of the nonce with the manufacturer's low-entropy key (stored in the pending ACL with the counter party's ID) in step 616. The counter party may then send an Introduction Response with the hash in step 618. The IoT device may then calculate the same hash and ensure the two hashes (from the counter party and from the IoT device) match in step 620.
If the two hashes match or if the IoT device's ACL is empty in step 613, initialization process 600 determines if the counter party sent a certificate in the Initialization Request in step 619. If the counter party sent a certificate in the Initialization Request, the IoT device validates the certificate in step 620 and sends an Initialization Challenge with an encrypted nonce in step 622. In one embodiment, the encrypted none of step 622 is derived from the counter party's public key. The counter party may decrypt the nonce with its private key in step 624 and sends an Initialization Response with the decrypted nonce in step 626. If the counter party's nonce and the IoT device's nonce match in step 627, the IoT device may decide to trust the counter party in step 628. The IoT device may then save the counter party's ID and public key in its ACL in step 630 and send an Initialization End message in step 632. The counter party may save the IoT device's ID and the counter party's public key to its ACL in step 634.
If the counter party did not send a certificate in the Initialization Request in step 619, the IoT device sends a secret Initialization Request in step 636 and the counter party sends a secret Initialization Request response with a high-entropy secret and a low-entropy password in step 638. The IoT device then saves the counter party's ID to its ACL in step 640 and sends back an Initialization End message in step 642. The counter party then saves the IoT device's ID and the high-entropy secret to its ACL in step 644. In one embodiment, the high-entropy secret that is saved to the counter party's ACL may be encrypted using a user-generated key.
From steps 634 and 644, wherein the counter party saves the IoT device's ID to its ACL (as well as the counter party's public key in step 634), initialization process determines if the initialization protocol has been successful in step 645. If it has, the counter party requests that the IoT device change to a high-entropy shared secret in step 648 and the entire authentication process (of which the Initialization process 600 is part) is complete in step 650. The IoT device and the counter party may then communicate over a hardware encryption connection based on a shared secret or over the TLS connection, which may not be supported by hardware. If the initialization protocol has not been successful in step 645 the IoT device may send back and Initialization Reject message and communication between the IoT device and the counter party may be terminated.
If, in step 607 of Initialization Process 600 the IoT device's ID is in the counter party's ACL, the authorization protocol may be started in step 608.
Authentication protocol 700 begins with the IoT device pairing with the counter party in step 702. The counter party may then begin the TLS handshake in step 704 and create an encrypted TLS connection with the IoT device in step 706. The counter party may then send an Authentication Request with the counter party's ID to the IoT device in step 708. The counter party may check the IoT device's ID with a web server or online database of the manufacturer of the device containing the IoT device to ensure that the device is actually made by the manufacturer and not compromised in step 710. Step 710 may be deferred until the counter party has internet connectivity. In another embodiment, the counter party may request a user to verify a chip ID that may be printed on the device containing the IoT device is identical to the ID that is presented in the IoT devices certificate in step 712. If they are identical, the authentication process may continue.
The counter party may then send an Authentication Request message to the IoT device in step 714. If the counter party's ID is not in the IoT device's ACL in step 715, the IoT device may send an Authentication Reject message and terminate communication with the counter party in step 716.
If the counter party's ID is in the IoT device's ACL in step 715 and if the counter party sent a certificate in the Authentication Request in step 717, the IoT device may validate the certificate in 718. The IoT device may then send an Authentication Challenge with a nonce encrypted using the counter party's public key in step 720. The counter party may then decrypt the nonce from the IoT device using the private key and sends back the nonce in the Authentication Response in step 722. If the counter party nonce is the same as the IoT device nonce in step 723, the IoT device may send an Authentication Complete message in step 724. If the counter party nonce is not the same as the IoT device nonce in step 723, the IoT device may send an Authentication Reject message and terminate communication with the counter party in step 716.
If the counter party's ID is in the IoT device's ACL in step 715 and if the counter party did not send a certificate in the Authentication Request in step 717, the IoT device may reply with an Authentication Challenge comprising a nonce in step 726. The counter party may calculate the hash of the nonce with the counter party's high-entropy secret in step 728 and send back the hash in an Authentication Response in step 730. The IoT device may then calculate the same hash using the counter party's high-entropy secret is stored in the IoT device's ACL with the counter party's ID in step 732. If the hash from the counter party and the hash calculated by the IoT device are the same in step 733, the IoT device may send back an Authentication Complete message in step 724. If they do not match, the IoT device may send back an Authentication Reject message in step and terminate communication with the counter party in step 716.
Once the authentication process of
Once the entire authentication process of
As counter party may introduce other counter parties to the IoT device, so can counter parties remove other counter parties or themselves from the IoT device's ACL. In one embodiment, the to-be-removed counter party must provide approval according to a removal process.
If the counter party is attempting to remove another (second) counter party from the IoT devices ACL in step 903, the IOT device may optionally request that the counter party demonstrate agreement by the second counter party in step 910. The counter party may then calculate a hash of the nonce with the second counter party's low-entropy password in step 912 and send the hash to the IoT device in a Removal Response in step 914. The IoT device may then calculate the same hash in step 916. If the hashes calculated by the first counter party and the IoT device do not match in step 917, the IoT device does not sever the TLS connection with the second counter party in step 918. If the hashes calculated by the first counter party and the IoT device do match in step 917, The IoT device removes the second counter party ID from its ACL in step 920, sends a Removal Complete message in step 922, and severs the TLS connection with the second counter party in step 924.
Embedded certificates may be programmed directly into an IoT chip during the chip manufacturing and test process. As stated above, the embedded certificate may be stored in OTP registers or in a protected internal memory. In another embodiment, an embedded certificate may be issued to an IoT chip after the IoT chip has been built into a device that uses the above described protocol. In this embodiment, the embedded certificate may be issued from an online source. The issuance of an embedded certificate after the device is fully (or partially) assembled may provide a number of benefits. The lack of chip-specific information or secrets in IoT chips may allow the final device to be assembled at low-cost factories that do not satisfy more robust security requirements. This may lower total manufacturing costs. IoT chips without embedded certificates, but with chip-specific secrets may be prevented from being put to malicious ends by putting them into devices that are not trustworthy. Finally, chips without specific embedded certificates may be used across a wide variety of products with different security requirements, and the security requirements may be implemented post-production.
Device firmware may be stored in a memory (similar to memory 124) or may be located inside the IoT chip in the IoT chip's memory. The device firmware may be programmed with the IoT firmware in the factory during production and test. In one embodiment, every IoT chip may be flashed (programmed) with the same firmware image without any chip-specific secrets. In this embodiment, if the IoT chip does not have an embedded certificate (one was not provided by the chip vendor or manufacturer), the device firmware may trigger the IoT device to request a certificate from an online source. The device firmware may ensure internet connectivity between the IoT chip and the device maker's server. The certificate may be issued from an online source after the device firmware is confirmed as valid.
In another embodiment, a device maker may desire that the chip vendor allow itself to issue certificates.
Step 1102 of
After the IoT chip has the necessary information from the chip vendor's server, the device maker may issue a certificate over TLS after verifying the device firmware is valid. An embodiment for the issuance of a certificate over TLS is illustrated as method 1103 of
In one embodiment, the IoT chip may check the device firmware validity before providing certificate-based service or before transmitting any data. In this embodiment, the IoT chip firmware may randomly generate a piece of test code based on the controllable device firmware test code received from the device maker's server when it issued the certificate in step 1142. The IoT chip may send the code to the device firmware with a short dead line that covers code executing time only. The test code may then sample some firmware code words and send the hashed results back to the IoT chip. The firmware code words match the test results, which is also receive from the device maker's server when it issues the certificate in step 1142, the device is determined to be non-malicious and the IoT chip may continue networking service.
In this embodiment, when a malicious device attempts to defeat the test code and obtains a certificate by fooling the server, the malicious device must analyze the test code and generate a correct answer by studying a copy of the device firmware. The test code is randomly generated with random code words which may include a mixture of useless instructions (such as ADDSUB/MULTIPLY) and useful instructions. The effort to generate the correct answer is defeated by assigning a short timeout value to a timer. This short timeout covers the time required to run the test code and send back the result and does not leave overhead for the malicious device to complete the analysis of the test code and produce the correct answer. A significant amount of time is required by the malicious device to de-assemble and understand the randomly generated binary code. This amount of time is greater than the time provided.
In another embodiment, an expiration time may be added in the issued certificates, which may require the procedure of
In various embodiments, the embedded certificate of
The above-described solution may be built into firmware of existing Bluetooth ® and BLE and WIFI chips, or built into specific hardware for Bluetooth®, BLE, Zigbee®, and WIFI chips. Building the solution into an IoT system-on-chip (SOC) may follow the architecture described below.
Shared and public content, such as shared public content 210 of
Private content, such as private content 280 of
The secret key for firmware signature verification that is part of the private content may include a public key or a secret symmetric key from the firmware author. In this embodiment, the firmware author may be an entity other than the chip vendor. The implementation, storage, and access of the secret key may correspond to the implementation, storage, and access of the private key above.
The application of the above embedded certificate and authorization protocols may be implemented for a Bluetooth® lock with strong security. The Bluetooth lock may use a fixed PIN and have a built-in certificate. The Bluetooth lock may not have an input/output/display device. A unique ID may be printed on the lock itself. The lock may be controlled by a handset with a Bluetooth-compliant chip that does not support a built-in certificate. The Bluetooth® handset may run an application (“app”) that is provided by the lock manufacturer. It is assumed for this implementation that neither the lock nor the app is compromised, though the app's running environment may not be secure. That is, the app's data may be read and viewed by other devices.
The goals of the lock are to prevent potential eavesdroppers from opening the lock, while allowing multiple authorized users to open the lock. An unauthorized user running the same app on an authorized user's handset should not be able to open the lock. The lock should be easy to use and protect a naïve user from a malicious lock.
The handset's device storage may be read by other devices, so the app ID and the app key may be encrypted using a secret not stored on the handset in one embodiment. As the user was required to enter the app password to run the app, the app does not know if the entered password is correct or incorrect. Therefore, the low-entropy password may protect secret data because a brute-force attack must be verified with a real and time-consuming method. Such a method is easily identified by the lock.
The Bluetooth handset may pair with the lock in step 1212 with weak authentication (due to the fixed PIN). The lock then drops any incoming data from the handset except TLS messages in step 1214 so that authentication is not interrupted by spurious data. The app may then follow a TLS protocol similar to that described above in
After the lock verifies the lock's certificate, the app may display the lock ID in the certificate for the user in step 1218 for the user to verify if it is identical to the ID printed on the lock. If the lock ID in the certificate is not identical to the ID printed on the lock in step 1221, the app may discontinue communication with the lock in step 1220. If the lock ID in the certificate is identify to the ID printed on the lock in step 1221, the app may complete the TLS handshake with an encrypted channel to the lock in step 1222 and check stored data on the IoT device for a verified lock ID in step 1222_2.
At this point the lock may accept only three commands from the app: initialize, introduction_followup, and authenticate. This is because the lock has been authenticated to the app, but the app has not been authenticated to the lock.
The app checks that the lock ID has been verified by reading the stored data on the handset in step 1223. If the lock ID has been verified, the lock is identified as such as the lock may receive additional commands from the app in step 1224. If the stored data on the handset does not indicate that the lock is verified, it is determined if the lock is a new lock in step 1225. If the lock is not new, the app may contact the manufacturer's web server or online database to validate the lock ID in step 1226. If the lock is a new lock in step 1225 the app may ask the user to enter a lock-specific password in step 1228 and then issue an initialization command in step 1230. The initialization command may serve to make the app the initial master of the lock. If there is no existing master, the lock may accept the command and ask the app for its app key and password in step 1232. The lock may save the app ID, the hashed app key, and the hashed lock-specific password to a memory location in step 1234.
The embodiments described herein may be used with various wireless communication protocols and paradigms including, but not limited to: Bluetooth®, Bluetooth Low Energy (BLE), Zigbee®, and WiFi. The embodiments of the various steps and processes described herein are not tied to a particular communication protocol and can be used as well with other protocols, as would be appreciated by one of ordinary skill in the art having the benefit of this disclosure.
In the above description, numerous details are set forth. It will be apparent, however, to one of ordinary skill in the art having the benefit of this disclosure, that embodiments of the present invention may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the description.
Some portions of the detailed description are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as “encrypting,” “decrypting,” “storing,” “providing,” “deriving,” “obtaining,” “receiving,” “authenticating,” “deleting,” “executing,” “requesting,” “communicating,” “initializing,” or the like, refer to the actions and processes of a computing system, or similar electronic computing device, that manipulates and transforms data represented as physical (e.g., electronic) quantities within the computing system's registers and memories into other data similarly represented as physical quantities within the computing system memories or registers or other such information storage, transmission or display devices.
The words “example” or “exemplary” are used herein to mean serving as an example, instance or illustration. Any aspect or design described herein as “example’ or “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the words “example” or “exemplary” is intended to present concepts in a concrete fashion. As used in this application, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or.” That is, unless specified otherwise, or clear from context, “X includes A or B” is intended to mean any of the natural inclusive permutations. That is, if X includes A; X includes B; or X includes both A and B, then “X includes A or B” is satisfied under any of the foregoing instances. In addition, the articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more” unless specified otherwise or clear from context to be directed to a singular form. Moreover, use of the term “an embodiment” or “one embodiment” or “an implementation” or “one implementation” throughout is not intended to mean the same embodiment or implementation unless described as such.
Specific commands ore messages referenced in relation to the above-described protocol are intended to be illustrative only. One of ordinary skill in the art would understand that commands of different specific wording but similar function may be used and still fall within the ambit of the above description.
Embodiments described herein may also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a non-transitory computer-readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, flash memory, or any type of media suitable for storing electronic instructions. The term “computer-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database and/or associated caches and servers) that store one or more sets of instructions. The term “computer-readable medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that causes the machine to perform any one or more of the methodologies of the present embodiments. The term “computer-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, magnetic media, any medium that is capable of storing a set of instructions for execution by the machine and that causes the machine to perform any one or more of the methodologies of the present embodiments.
The algorithms and displays presented or referenced herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the present embodiments are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the embodiments as described herein.
The above description sets forth numerous specific details such as examples of specific systems, components, methods and so forth, in order to provide a good understanding of several embodiments of the present invention. It will be apparent to one skilled in the art, however, that at least some embodiments of the present invention may be practiced without these specific details. In other instances, well-known components or methods are not described in detail or are presented in simple block diagram format in order to avoid unnecessarily obscuring the present invention. Thus, the specific details set forth above are merely exemplary. Particular implementations may vary from these exemplary details and still be contemplated to be within the scope of the present invention.
It is to be understood that the above description is intended to be illustrative and not restrictive. Many other embodiments will be apparent to those of skill in the art upon reading and understanding the above description. The scope of the invention should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.
This patent application claims the benefit of U.S. Provisional Patent Application No. 62/437,877, filed Dec. 22, 2016, which is incorporated by reference herein in its entirety.
Number | Date | Country | |
---|---|---|---|
62437877 | Dec 2016 | US |