Приватный интернет

В силу последних событий я надолго задумался о том, как же на самом деле можно избавиться от всех людей в погонах, или даже просто бородатых админов в растянутых свитерах, которые могут получить доступ ко всей нашей переписке.

Дело в том, что тема эта непростая, а обычные пользователи и не догадываются о том, что их постоянно слушают. Они никогда не поймут шифрования и электронных подписей. Новый виток безопасного обмена сообщений, а в дальнейшем и социальных, как бы это не звучало, сетей, должен быть очень простым и приятным. Для того, чтобы приобщиться к приватному интернету не должно требоваться ничего, кроме того, что уже есть у любого пользователя сетью. У него может не быть твиттера и жж, но у него обязательно есть хотя бы один ящик электронной почты. И хоть он совсем не защищен, мы, на первое время, воспользуемся им.
Хотя, я немного солгал. Ему понадобится программа. Именно та, которая будет шифровать и расшифровывать сообщения. Да, как не прискорбно, без неё никак. Браузеры не могут обеспечить безопасности для моей простой идеи. Хотя бы потому, что любой скрипт на веб-странице имеет полный доступ к расширениям, установленным в Firefox.
Но есть хороший момент — пользователи умеют ставить программы для своей операционной системы.

Итак, идея у меня проста:
1. В основе безопасности лежит криптография с открытым и закрытым ключами (асинхронная). Она известна с 70-х годов, очень сильна. Особенно, если использовать ключи размером больше 1024 бит. Один клиент кодирует сообщение открытым ключом второго, второй расшифровывает его своим закрытым ключом.

2. Открытые ключи хранятся на одном сайте. Да, лучше именно на одном, чтобы люди могли находить друг-друга без проблем. Для этого нужна хоть какая-то централизация. Можно привести в пример сервис хранения аватаров — gravatar.com.

3. Для защиты от подмены ключей на сайте всеми желающими поднимаются дополнительные сервера. Для проверки полученного от сервера ключа клиент делает dns-запрос на несколько независимых дополнительных серверов, с хэшем почтового адреса пользователя, получая crc32 ключа в качестве IP (запрашивает айпишник домена вида 31bb176e520a1757fe47fa4fbea59c17.example.com). Работать должно быстро. Тем более, что проверка ключа будет происходить только при получении нового ключа с сайта. А при наличии таких серверов в разных странах, подделать открытый ключ будет невозможно.

4. В качестве защиты от полного перехвата и подмены трафика у определённого клиента используется подключение по https с проверкой сертификата самим клиентом, путём сверки его с вшитым в программу.

Естественно, генерация собственных ключей, получение ключей пользователей и сверка их по dns будут максимально прозрачными для пользователя.

Остаётся только проблема хранения закрытых ключей:
Во-первых, как защитить эти ключи от троянов в системе? По-моему, только с помощью кодирования хранилища с паролем.
Во-вторых, как вернуть пользователю свой закрытый ключ при потере, заменить его на сайте, или перенести его на другое устройство?

UPDATE: Концепция была сильно пересмотрена.