Cryptographically addressed peer-to-peer network and node
AssigneeZeroTier, Inc.
InventorsAdam Ierymenko, Joseph Henry, Grant Limberg, Travis LaDuke
Life of this patent
Estimating the term…
Abstract
Techniques of this disclosure relate to improvements to a network of nodes, where each node may be associated with an instance of a client application. The techniques herein relate to determining a cryptographic identity of a node requesting to communicate with a target node, identifying a coordination node configured to facilitate transmission of encrypted packets between nodes. The techniques further relate to facilitating, by the coordination node, a communication pathway between the requesting node and the target node such that the two nodes are communicatively coupled and can communicate directly without approval or monitoring by the coordination node.
Claims20
A node comprising:
- one or more processors;
- and
- a memory storing processor-executable instructions that, when executed by the one or more processors, cause the one or more processors to perform operations comprising:
- receive first data from a user, the first data indicating initialization of a first instance of a client application, the first instance being device-agnostic and configured to communicatively couple the node to one or more second nodes in a network;
- determine, based at least in part on the first instance and the user, a static identity associated with the first instance of the client application, the static identity comprising a first public key and cryptographically secure private key;
- identify a target node of the one or more second nodes, the target node associated with a second instance of the client application and communicatively coupled to one or more third nodes in the network;
- identify a root server node associated with a third instance of the client application, the root server node communicatively coupled to the target node and to the one or more third nodes in the network, wherein
- the first instance, the second instance, and the third instance of the client application were provided by a service provider;
- encrypt, based on the cryptographically secure private key and a second public key associated with the target node, a packet comprising the static identity and a request to communicate with the target node;
- transmit the encrypted packet to the root server node;
- receive an indication from the root server node that the node has been communicatively coupled to the target node;
- and
- transmit a second encrypted packet directly to the target node.
A method comprising:
- receive first data indicating a first instance of a client application;
- determine an identity associated with the first instance, the identity comprising a private key;
- identify a target node communicatively coupled to one or more second nodes in a network, the target node associated with a second instance of the client application;
- identify a coordination node associated with the network;
- encrypt a first packet based at least in part on a public key associated with the target node and the private key;
- transmit a first encrypted packet to the coordination node, the first encrypted packet comprising a request to communicate with the target node;
- receive an indication that the first instance is communicatively coupled to the second instance;
- and
- transmit a second encrypted packet to the second instance.
A non-transitory computer-readable media storing processor-executable instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising:
- receive first data indicating a first instance of a client application;
- determine an identity associated with the first instance, the identity comprising a private key;
- identify a target node communicatively coupled to one or more second nodes in a network, the target node associated with a second instance of the client application;
- identify a coordination node associated with the network;
- encrypt a first packet based at least in part on a public key associated with the target node and the private key;
- transmit a first encrypted packet to the coordination node, the first encrypted packet comprising a request to communicate with the target node;
- receive an indication that the first instance is communicatively coupled to the second instance;
- and
- transmit a second encrypted packet to the second instance.
Dependencies are inferred from the claim text.