Сквозное шифрование в любой социальной сети
Нужно сделать плагин к браузеру который бы привязывался к полю с сообщениями собеседника и к полю отправки сообщения. В окне самого плагина так же два поля, но уже в расшифрованном виде. То есть в окне плагина вы пишите текст, он автоматически шифруется ключом и отправляться собеседнику, зашифрованный текст от собеседника автоматически парситься, расшифровывается вашим ключом и выводиться в окно плагина.
По сути можно организовать сквозное шифрование вообще на любом сайте который позволяет обмениваться сообщениями.
Осталось обменяться ключом шифрования.
1. Есть сайты ( например onetimesecret.com
https://ca.onetimesecret.com/secret/3fp99e87g5g3b2kb9sb3hywibn5hobxib6pac909gr8ss7xsxskphekyr48tx1
) которые позволяют оставить публичное сообщение по ссылке, которое уничтожиться после первого открытия. Таким образом можно оставить ключ шифрования в таком сообщении и отправить собеседнику ссылку. Естественно нужно доверять этому сайту, быть уверенным что он не ведет логи и не отправит из по запросу.
2. А что бы быть уверенным что админ сайта через который вы общаетесь не прочитает сообщение со ссылкой и не создаст для вашего собеседника поддельную ссылку со своим ключом, то есть не организует атаку типа "человек посредине" ссылка должна быть опубликована в общедоступном месте. Тогда проверить что ссылка действительно не поддельная можно зайдя на эту страницу через любую другую сеть без авторизации. И в целом все равно есть вероятность атаки человек посредине.
Конечно можно обменяться ключами через другой ресурс, например мессенджер, например матрикс, но ему тоже придется доверять. Лучшим вариантом является ЛИЧНАЯ встреча.
Возможно асимметричное шифрование было бы более удобным особенно в плане автоматического обмена ключами, но их можно будет расшифровать в будущем например на квантовых компьютерах, а так же придется сверять отпечатки...
Наилучший вариант (самый долгий) в создании комбинированного способа обмена ключами:
1. Вы шифруете свой основной симметричный ключ А с помощью симметричного ключа B и публикуете его в любом доступном месте
2. Плагин генерирует отпечаток вашего асимметричного ключа который можно опубликовать заранее, так что бы ваш собеседник и все вокруг его увидели.
3. Плагин автоматически устанавливает асимметричное между вами и собеседником, образуя защищенный канал.
4. Вы сверяете отпечатки ключа и опубликованные ранее.
5. Через этот канал можно передать ссылку на сайт временных сообщений которая содержит симметричный ключ B. После этого у вашего собеседника есть все что бы использовать ключ А для общения с вами
В целом чем больше каналов обмена ключами вы задействуете тем сложнее атакующему будет собрать все части.
Для симметричного шифрования можно использовать стандартные:
AES-256-GCM
ChaCha20-Poly1305
Пишите свои размышления в комментарии
п.с. Возможно я пишу слишком много негатива. Потому этот пост в практичном русле без критики.
п.п.с Время проведенное в одиночестве очень плодородно на новые идеи Показать больше
Нужно сделать плагин к браузеру который бы привязывался к полю с сообщениями собеседника и к полю отправки сообщения. В окне самого плагина так же два поля, но уже в расшифрованном виде. То есть в окне плагина вы пишите текст, он автоматически шифруется ключом и отправляться собеседнику, зашифрованный текст от собеседника автоматически парситься, расшифровывается вашим ключом и выводиться в окно плагина.
По сути можно организовать сквозное шифрование вообще на любом сайте который позволяет обмениваться сообщениями.
Осталось обменяться ключом шифрования.
1. Есть сайты ( например onetimesecret.com
https://ca.onetimesecret.com/secret/3fp99e87g5g3b2kb9sb3hywibn5hobxib6pac909gr8ss7xsxskphekyr48tx1
) которые позволяют оставить публичное сообщение по ссылке, которое уничтожиться после первого открытия. Таким образом можно оставить ключ шифрования в таком сообщении и отправить собеседнику ссылку. Естественно нужно доверять этому сайту, быть уверенным что он не ведет логи и не отправит из по запросу.
2. А что бы быть уверенным что админ сайта через который вы общаетесь не прочитает сообщение со ссылкой и не создаст для вашего собеседника поддельную ссылку со своим ключом, то есть не организует атаку типа "человек посредине" ссылка должна быть опубликована в общедоступном месте. Тогда проверить что ссылка действительно не поддельная можно зайдя на эту страницу через любую другую сеть без авторизации. И в целом все равно есть вероятность атаки человек посредине.
Конечно можно обменяться ключами через другой ресурс, например мессенджер, например матрикс, но ему тоже придется доверять. Лучшим вариантом является ЛИЧНАЯ встреча.
Возможно асимметричное шифрование было бы более удобным особенно в плане автоматического обмена ключами, но их можно будет расшифровать в будущем например на квантовых компьютерах, а так же придется сверять отпечатки...
Наилучший вариант (самый долгий) в создании комбинированного способа обмена ключами:
1. Вы шифруете свой основной симметричный ключ А с помощью симметричного ключа B и публикуете его в любом доступном месте
2. Плагин генерирует отпечаток вашего асимметричного ключа который можно опубликовать заранее, так что бы ваш собеседник и все вокруг его увидели.
3. Плагин автоматически устанавливает асимметричное между вами и собеседником, образуя защищенный канал.
4. Вы сверяете отпечатки ключа и опубликованные ранее.
5. Через этот канал можно передать ссылку на сайт временных сообщений которая содержит симметричный ключ B. После этого у вашего собеседника есть все что бы использовать ключ А для общения с вами
В целом чем больше каналов обмена ключами вы задействуете тем сложнее атакующему будет собрать все части.
Для симметричного шифрования можно использовать стандартные:
AES-256-GCM
ChaCha20-Poly1305
Пишите свои размышления в комментарии
п.с. Возможно я пишу слишком много негатива. Потому этот пост в практичном русле без критики.
п.п.с Время проведенное в одиночестве очень плодородно на новые идеи Показать больше
Комментарии (3)