A method of generating, distributing, and storing keys to authenticate identity, the method comprising the steps of: receiving, at a server (1750, 1850, 2050), a registration request from a first peer (1701, 1801, 1901, 2001, 2101, 2201); transmitting, in response to the receipt of the registration request, registration data from the server (1750, 1850, 2050) to the first peer (1701, 1801, 1901, 2001, 2101, 2201), the registration data comprising a client registration code (1703, 1803, 2103); receiving a registration key (1707, 1807, 1907, 2107, 2207) and a server key (1705, 1805, 1905, 2005, 2105, 2205), at the server (1750, 1850, 2050), wherein the registration key (1707, 1807, 1907, 2107, 2207) and the server key (1705, 1805, 1905, 2005, 2105, 2205) are generated by the first peer (1701, 1801, 1901, 2001, 2101, 2201); generating, at the server (1750, 1850, 2050), a sender code (1754, 1954, 2054, 2254), a recipient code (1752, 1952, 2052, 2252), a distribution code (1756, 1956, 2056, 2256, 2356, 2456), and a peer list (1958, 2258), the peer list (1958, 2258) comprising the recipient code (1752, 1952, 2052, 2252) and the distribution code (1756, 1956, 2056, 2256, 2356, 2456); generating a distribution key (1753, 1953, 2053, 2253, 2353, 2453), the distribution key (1753, 1953, 2053, 2253, 2353, 2453) being based on the recipient code (1752, 1952, 2052, 2252), the server key (1705, 1805, 1905, 2005, 2105, 2205), and the sender code (1754, 1954, 2054, 2254); storing, at a database (1757, 1957, 2057, 2257, 2457) associated with the server (1750, 1850, 2050), the registration key (1707, 1807, 1907, 2107, 2207), the distribution key (1753, 1953, 2053, 2253, 2353, 2453), and the peer list (1958, 2258); transmitting, from the server (1750, 1850, 2050), the distribution key (1753, 1953, 2053, 2253, 2353, 2453) and the distribution code (1756, 1956, 2056, 2256, 2356, 2456) to a second peer (1775, 1975, 2075, 2275, 2375, 2475); receiving, at the server (1750, 1850, 2050), the distribution code (1756, 1956, 2056, 2256, 2356, 2456) and a deposit key (1777, 1977, 2377) from the second peer (1775, 1975, 2075, 2275, 2375, 2475); and storing, in the peer list (1958, 2258) at the database (1757, 1957, 2057, 2257, 2457) associated with the server (1750, 1850, 2050), the distribution code (1756, 1956, 2056, 2256, 2356, 2456) and the deposit key (1777, 1977, 2377) received from the second peer (1775, 1975, 2075, 2275, 2375, 2475). receiving, at a server (1750, 1850, 2050), a registration request from a first peer (1701, 1801, 1901, 2001, 2101, 2201); transmitting, in response to the receipt of the registration request, registration data from the server (1750, 1850, 2050) to the first peer (1701, 1801, 1901, 2001, 2101, 2201), the registration data comprising a client registration code (1703, 1803, 2103); receiving a registration key (1707, 1807, 1907, 2107, 2207) and a server key (1705, 1805, 1905, 2005, 2105, 2205), at the server (1750, 1850, 2050), wherein the registration key (1707, 1807, 1907, 2107, 2207) and the server key (1705, 1805, 1905, 2005, 2105, 2205) are generated by the first peer (1701, 1801, 1901, 2001, 2101, 2201); generating, at the server (1750, 1850, 2050), a sender code (1754, 1954, 2054, 2254), a recipient code (1752, 1952, 2052, 2252), a distribution code (1756, 1956, 2056, 2256, 2356, 2456), and a peer list (1958, 2258), the peer list (1958, 2258) comprising the recipient code (1752, 1952, 2052, 2252) and the distribution code (1756, 1956, 2056, 2256, 2356, 2456); generating a distribution key (1753, 1953, 2053, 2253, 2353, 2453), the distribution key (1753, 1953, 2053, 2253, 2353, 2453) being based on the recipient code (1752, 1952, 2052, 2252), the server key (1705, 1805, 1905, 2005, 2105, 2205), and the sender code (1754, 1954, 2054, 2254); storing, at a database (1757, 1957, 2057, 2257, 2457) associated with the server (1750, 1850, 2050), the registration key (1707, 1807, 1907, 2107, 2207), the distribution key (1753, 1953, 2053, 2253, 2353, 2453), and the peer list (1958, 2258); transmitting, from the server (1750, 1850, 2050), the distribution key (1753, 1953, 2053, 2253, 2353, 2453) and the distribution code (1756, 1956, 2056, 2256, 2356, 2456) to a second peer (1775, 1975, 2075, 2275, 2375, 2475); receiving, at the server (1750, 1850, 2050), the distribution code (1756, 1956, 2056, 2256, 2356, 2456) and a deposit key (1777, 1977, 2377) from the second peer (1775, 1975, 2075, 2275, 2375, 2475); and storing, in the peer list (1958, 2258) at the database (1757, 1957, 2057, 2257, 2457) associated with the server (1750, 1850, 2050), the distribution code (1756, 1956, 2056, 2256, 2356, 2456) and the deposit key (1777, 1977, 2377) received from the second peer (1775, 1975, 2075, 2275, 2375, 2475).