Method and apparatus for establishing a secure connection
View Patent ↗One embodiment of the present invention provides a system that establishes a secure connection with a peer. During operation, the system obtains an identity for the peer. Next, the system looks up the identity for the peer in a local store, which contains identities for trusted peers. If this lookup fails, the system asks a user if the peer can be trusted. If the user indicates that the peer can be trusted, the system establishes a secure connection with the peer.
1. A method for establishing a secure connection with a peer, comprising:
obtaining an identity for the peer, wherein a digital certificate represents the identity for the peer;
looking up the identity for the peer in a local store, which contains identities for trusted peers; and
when trust cannot be established based on the identity, asking a user if the peer can be trusted;
if the user indicates that the peer can be trusted,
causing a secure connection to be established with the peer, wherein establishing the secure connection with the peer involves:
starting with an unauthenticated connection with the peer;
importing the digital certificate for the peer into the local store;
if the digital certificate for the peer is a self-signed digital certificate, performing an out-of-band exchange to confirm the validity of the self-signed digital certificate, wherein the out-of-band exchange involves:
selecting words from a dictionary based on a secure hash algorithm (SHA) hash;
showing the words to the user; and
receiving an indication that the user has confirmed the words verbally; and
establishing the secure connection with the peer using the unauthenticated connection and the digital certificate for the peer; and
if the user indicates that the peer cannot be trusted, taking a remedial action.
2. The method of claim 1 , wherein obtaining the identity for the peer involves performing a service discovery operation to obtain the identity for the peer and also to obtain an unauthenticated connection with the peer.
3. The method of claim 1 , wherein the secure connection is a Secure Sockets Layer (SSL) connection or a Transport Layer Security (TLS) connection.
4. The method of claim 1 , wherein the local store is an operating system keychain.
5. A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for establishing a secure connection with a peer, the method comprising:
obtaining an identity for the peer, wherein a digital certificate represents the identity for the peer;
looking up the identity for the peer in a local store, which contains identities for trusted peers; and
when trust cannot be established based on the identity, asking a user if the peer can be trusted, and
if the user indicates that the peer can be trusted,
causing a secure connection to be established with the peer, wherein establishing the secure connection with the peer involves:
starting with an unauthenticated connection with the peer;
importing the digital certificate for the peer into the local store;
if the digital certificate for the peer is a self-signed digital certificate, performing an out-of-band exchange to confirm the validity of the self-signed digital certificate, wherein the out-of-band exchange involves:
selecting words from a dictionary based on a secure hash algorithm (SHA) hash;
showing the words to the user; and
receiving an indication that the user has confirmed the words verbally; and
establishing the secure connection with the peer using the unauthenticated connection and the digital certificate for the peer; and
if the user indicates that the peer cannot be trusted, taking a remedial action.
6. The computer-readable storage medium of claim 5 , wherein obtaining the identity for the peer involves performing a service discovery operation to obtain the identity for the peer and also to obtain an unauthenticated connection with the peer.
7. The computer-readable storage medium of claim 5 , wherein the secure connection is a Secure Sockets Layer (SSL) connection or a Transport Layer Security (TLS) connection.
8. The computer-readable storage medium of claim 5 , wherein the local store is an operating system keychain.
9. An apparatus for establishing a secure connection with a peer, comprising:
an identity-obtaining mechanism configured to obtain an identity for the peer, wherein the identity for the peer can be represented by a digital certificate for the peer;
a lookup mechanism configured to look up the identity for the peer in a local store, which contains identities for trusted peers, wherein a digital certificate represents the identity for the peer; and
when trust cannot be established based on the identity, a connection-establishing mechanism is configured to ask a user if the peer can be trusted;
if the user indicates that the peer can be trusted, the connection-establishing mechanism is configured to establish the secure connection with the peer by:
starting with an unauthenticated connection with the peer;
importing the digital certificate for the peer into the local store;
if the digital certificate for the peer is a self-signed digital certificate, performing an out-of-band exchange to confirm the validity of the self-signed digital certificate, wherein the out-of-band exchange involves:
selecting words from a dictionary based on a secure hash algorithm (SHA) hash;
showing the words to the user; and
receiving an indication that the user has confirmed the words verbally; and
establishing the secure connection with the peer using the unauthenticated connection and the digital certificate for the peer; and
if the user indicates that the peer cannot be trusted, the connection-establishing mechanism is configured to take a remedial action.
10. The apparatus of claim 9 , wherein the identity-obtaining mechanism is configured to perform a service discovery operation to obtain the identity for the peer and also to obtain an unauthenticated connection with the peer.
11. The apparatus of claim 9 , wherein the secure connection is a Secure Sockets Layer (SSL) connection or a Transport Layer Security (TLS) connection.
12. The apparatus of claim 9 , wherein the local store is an operating system keychain.
13. A function library embedded on a non-transitory computer-readable storage medium, wherein the function library includes a first function for establishing a secure connection with a peer, wherein the first function is configured to:
obtain an identity for the peer, wherein a digital certificate represents the identity for the peer;
look up the identity for the peer in a local store, which contains identities for trusted peers; and
when trust cannot be established based on the identity, to ask a user if the peer can be trusted, and
if the user indicates that the peer can be trusted, to cause a secure connection to be established with the peer, wherein when establishing the secure connection with the peer, the first function is configured to:
start with an unauthenticated connection with the peer;
import the digital certificate for the peer into the local store;
if the digital certificate for the peer is a self-signed digital certificate, perform an out-of-band exchange to confirm the validity of the self-signed digital certificate, wherein the out-of-band exchange involves:
selecting words from a dictionary based on a secure hash algorithm hash;
showing the words to the user; and
receiving an indication that the user has confirmed the words verbally; and
establish the secure connection with the peer using the unauthenticated connection and the digital certificate for the peer; and
if the user indicates that the peer cannot be trusted, the first function is configured to take remedial action.
14. The function library of claim 13 , wherein the function library includes a second function for creating a private/public key pair and a corresponding a digital certificate for a given node.
15. The function library of claim 13 , wherein the function library includes a third function for importing a digital certificate for a peer into a local store.
16. The function library of claim 13 , wherein while obtaining the identity for the peer, the first function is configured to perform a service discovery operation to obtain the identity for the peer and also to obtain an unauthenticated connection with the peer.