Comments 7
Здравствуйте, а что насчёт подписи зашифрованного сообщения отправителем, чтобы получатель точно знал - от кого пришло? Я много думал над этим, но так и не пришел ни к какому решению.
P.s. все в условиях полностью децентрализованной архитектуры.
В сети Hidden Lake каждое сообщение подписывается закрытым ключом отправителя и далее шифруется открытым ключом получателя, с использованием гибридной схемы. В шифрованное сообщение вставляется публичный ключ отправителя, чтобы получатель успешно смог сразу проверить корректность полученной подписи. Более подробно на счёт данного протокола можно почитать здесь.
Если же речь про само доверие к публичному ключу, то здесь ситуация такая, что сеть HL предполагает F2F соединения, где каждый пользователь заранее выставляет свой список друзей (публичных ключей). Предполагается, что обмен ключами осуществляется либо лично, либо с использованием нескольких сервисов, как например описано тут.
Структура шифрованного сообщения, без её сокрытия и доказательства работы, выглядит следующим образом:
{
"pubk": "5ce9454a7fb51b47087821b4833bce2984cc730b832461919a0d063a7b66ea587f8c7a3e058a53119a84d2a9653a40285161de843a031ad064330ab942baf7f1a79400dd17f9ad5a77efa969c31704a6990a550cfe2eb0435aa77e3abaf5b2a0006944e2d129e2504e6edf2a17a8ba4376a1d19ed92320976e0b131d992429a32bea8f7f00c7b83acf5a0f3315fef483886efd10d77d1ad46e94d354",
"enck": "769692f8587e23cd184e8366487a400321cb5c5ca7561a3cb0f93efdcf8d0564bc6a47679ff2c0bc4ac50dacf92abad7dde6db7980153b2be5dbd5fce90f4e0836e3ffd5540842a4b25538b6f404fa51a38010df87f212c64549e819d5b2610acf0ceaf163018a74468c2bf0f190cbabdaef3dd4edc9175adebc3b69121b0971",
"salt": "d84fc309a060cf101d040bc76a40e532171cc03fa07c9cbba82f0fcd96d14de37c8ccac1435a95c1826c1df58d7ce1ba",
"hash": "8261038e2fcf3ea2338803d870f1ef7c802b0f52e7309bcf2dcf0d44721ee66f31618aad7cfb3d1669fe9f91b1959d95",
"sign": "9d1a39e112472d42f0ecaada7e503a43dfcbb4b696388b54ed95d96d76893cd5dbc0236e3e8025ff39aa83a15f6ac91455a81bdedb319037a755afd1c6eb321d87871ee1492dd1363b3643fca2ea26739bc16a94d1fd64bfadff32ffb764117800e17c8d4d651df9339785e8981341408f39cf2af88aee4225a1f1249bf3faaf62c08f106f91298f4ba865d71041a208"
}@894d44d364ba2d4f8d81117b1ff55a2fbaa09bfa08ad013c3893011325ab1a5cb72dfad8aac458d3c20782bbe155a016da08f0ca55baba514058a03dbf87ed5b7fc555b1d6832eeff65cdb2b21117951a98f81cef4f964e82d4a4617e7c84ca5e7c28aac830d68011a2f46173dabdffc1583c24198e9f995d45a1e42e0522862306c0941e2b17130933ee51b7a31f149bf89202d2ad114d3ecc5748df4006f68260a72841d2f404ec7ab7f2eddfd921c3c6e9714e535662157783ce9920dff54b8a286d1de91240825e5ccac511aa5a8ae39548ed08f9d8c01ee84663b6e5df0f7444a2f79090819f5e339938749441b06d4cd1327079124281a4f09d19169e89cdde52ef3592aa30d7cee84a81106d02e4bc32f3dc59d65deb791357d3bb1d7bf1f2de9f8b297ae574d490ff48feeebc932f408f19aebafb33ae5e0ef8bd700bc031b7adb955e5b8c135b628d846b6a79b5872c83dc46ce62ff6dca374afb8f5817abdf4084c944d4372b0df4f788ad770a9978f5ea064a93f4384721dfa6ab9a36c5f5144eb57670a151b6569f3b0f4037759abb3109a272036707535ab63d3790850ab1a7f5a87749e2588f9e70330134a01ce6a71f0b727fd5fabcae58d89bdacb5d5e3a4a24795201e056e833e0073a5fa76fbc93acc4b23601239c2153c26de94bf337a0684245901f0b5ae808cce7bba1f63a88d1c12f0486a519bf959e7a49122350bf76af3b554f3f260bb599698625ac8aaab08bd5647d9464a743f4fb689933fb6d5e5c4ad7c5546e8a405502a9b6126319480210e229edf322ffbfbc7837f59297f475aeae0ebac2016f50e87acbee870493477d6cca3c63ab3125c7dfd731ddc3d9995ad50eef16d3f67d58df75946004a0c81a5ed9a5e0f8fbb20c0b1575aea403124d3d8cea0f6828d4d277077e072ea80624c5156afeb31052d83e5281c0851d6125ca92e8985fee02e5c8efa6a5f31f833571f284168f917a9b98f2e704367f72f98f1b7276f1b5bb9048eb638ca77f29cc95c0831511a7873f64cc9dd434d4990f590368feefdbcb96e997631d4cab819741bca54da85fbcad9efdafe46735a46c26c8f789225ab046550b1a50c983b1b072be7c6af5df6f8ce03643265d2136469a26bb5fc76143b29151957484fc0d9f224c2f5dc9d87885b9b59af1e648531f5070fe1c613fe346cb0234b910ffee8afeffc3acd64c05a7abe379890cd4f53175c5be9c411a86f55dea3368f3b8bffb17b8c4481d1d75feabc8f94121092650f23d9b148eb1b82137be36d111f4455709ad0a688efb13b9fc57f794501c3e0d178c0b6ff0c35d5fb688
pubk - шифрованный публичный ключ отправителя,
enck - шифрованный сеансовый ключ пакета,
salt - шифрованный массив байт,
hash - шифрованный хеш сообщения,
sign - шифрованная подпись хеша,
после @ - шифрованное сообщение.
Чтобы успешно расшифровать сообщение - впервую очередь необходимо попытаться расшифровать сеансовый ключ (enck) своим приватным ключом. Если таковой успешно расшифровался, то можно будет расшифровать все остальные поля, а также сравнить хеш, подпись пакета.
Почему не запилить мессенджер аналог метамаска только для сообщений и с двойной - тройной подписью. Сетей куча. В том числе бесплатных. Свои ноды также поднять не проблема. Можно каждое сообщение рандомить в разные сети.
Или делаем смарт контракт, который по запросу выдает сессию с шифрование только для двух определенных клиентов. Вероятно можно вполне построить безопасный децентрализованный аналог впн для предприятий.
Или здесь будут какие то проблемы реализации?
Как рабочий PoC вполне сойдёт, но для реального использования непригодно. Ни ютубчик посмотреть, ни торрентов покачать. Ни даже сайты посёрфить нормально, так как с 30-секундным таймаутом современные сайты будут работать через боль и унижения, особенно всякие там SSRы и AJAXы будут страдать. И придётся или уменьшать таймауты и заспамливать чужой сервис запросами, или отказываться от него вообще. Вот и стоило оно того? Может сразу OpenConnect или OpenVPN поверх Cloak? Ну или хотя бы socks-прокси поверх ssh, его вроде не банят покачто, на нём весь Интернет держится. Анонимности не будет, но нам что важнее шашечки или ехать? А для секретной переписки есть и другие сервисы.
Статья просто крутейшая! Отлично преподнесла то, что крутилось в голове, но на реализацию не было времени, спасибо.
Вначале идет осуждение государства за его попытки контроля всего и вся. Было бы интересно услышать предложение автора, каким образом можно обеспечить безопасность этого государства иными методами. Утечки данных от самого государства - это другой вопрос, мне не интересный. Просто у автора, как и у любого либерала, государство всегда нечто плохое, подавляющее свободную личность, не дающее ему развернуться душой и прятать свои возможно гниленькие секретики, возможно опасные для отдельных личностей (пусть будет для меня)(педофилия, работорговля, мошенничество, попытки разрушить государственность). Каким образом государству защищать тех людей, которые не хотят сталкиваться с подобными людьми и у которых есть общественный договор с государством о его защите от тех, кто может в негативном плане повлиять на него? Воспитание не предлагать (хоть это и хорошая штука) - его легко выродить в тиранию и оно решает проблему лишь отчасти.
Я к тому, что любое государство так или иначе пытается контролировать свое состояние и пытается удерживать его с стабильном состоянии (я не про экономику).
Перефразируя, если автора статьи сделать руководителем государства, каким образом он будет защищать меня от указанных выше негативных деяний против меня и от плохих людей? Сразу скажу, если ответ будет "никак - у нас свободная страна", меня такой руководитель не устроит.
Анонимная P2P-сеть внутри централизованного HTTPS-сервера: вшиваем паразитный трафик всеми правдами и неправдами