Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! У меня есть сервер, клиент и класс для асинхронного шифрования данных. В классе есть три функции - создание ключей, шифрование с помощью открытого ключа, дешифрование с помощью закрытого ключа и парольной фразы. Передаются пакеты, содержащие команду, дополнительное сообщение и прикрепленный файл. Передача осуществляется следующим способом: 1) Клиент посылает серверу сообщение о том, что хочет передать данные; 2) Сервер создает ключи и отправляет открытый ключ клиенту; 3) Клиент шифрует пакет и посылает его серверу; 4) Сервер принимает шифрованный пакет и дешифрует его; 5) Сервер посылает ответ клиенту, что все норм. Сейчас я затормозился на дешифровании принятого пакета, но это не суть. Я использую сокеты от WinSock2.h. Там определена функция send, которая передаёт весь мой шифрованный пакет, помещенный в буфер. Мне сейчас говорят делать так: функция send вроде как передаёт кусками мой буфер, мне нужно, каким-то образом, не весь мой пакет шифровать, а по частям, те куски буфера которые сейчас будут передаваться, а на сервере это уже собирать. Описал вроде так как мне объяснили. Вопрос в том, реально ли это вообще сделать? Если такое существует - то прошу поделиться информацией в какую сторону мне идти. Как получить те куски буфера которые сейчас будут передаваться? Что вы думаете о моей реализации - правильна ли она? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2014, 12:44 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
La France, А ты не хочешь готовую библиотеку использовать ? Open SSL .. И весь твой трафик будет шифроваться и расшифровываться автоматом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2014, 12:53 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
La FranceСейчас я затормозился на дешифровании принятого пакета, но это не суть. Я использую сокеты от WinSock2.h. Там определена функция send, которая передаёт весь мой шифрованный пакет, помещенный в буфер. Мне сейчас говорят делать так: функция send вроде как передаёт кусками мой буфер, мне нужно, каким-то образом, не весь мой пакет шифровать, а по частям, те куски буфера которые сейчас будут передаваться, а на сервере это уже собирать. Описал вроде так как мне объяснили. Вопрос в том, реально ли это вообще сделать? Если такое существует - то прошу поделиться информацией в какую сторону мне идти. Как получить те куски буфера которые сейчас будут передаваться? Что вы думаете о моей реализации - правильна ли она? Я сейчас злой. Я не понимаю, как можно доверять написание программ людям, которые не могут сами сообразить вот такую простую хрень. Нанимают С++ программистов за 60 т.руб -- ну вот и результат. Так пусть лучше нифига не работает у них... Скажу одно -- La France -- тебе. Можешь поглядеть примеры использования OpenSSL. Я думаю, их можно найти. В TCP НЕТ пакетов. буфер никогда не посылается кусками. Нет буферов. TCP -- это поток. UDP -- если ты его используешь, надо зашифровать твой буфер-пакет, разбить его на части в соотв. с макс. размером пакета UDP, и переслать. На приёмной стороне -- собрать, расшифровать, и использовать. При этом если будет потерян хоть один пакет -- тебе придётся пересылать всё заново. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2014, 12:58 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
La France, твой код кто-то будет проверять или делать code review или сертифицировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2014, 13:10 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
MasterZivА ты не хочешь готовую библиотеку использовать ? Open SSL .. И весь твой трафик будет шифроваться и расшифровываться автоматом. Так я её и использую, только сокеты из WinSock2.h. А вы имеете ввиду использовать сокеты от openSSL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2014, 13:28 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Пакет я сам описываю, засовываю его в буфер, который шифрую и передаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2014, 13:30 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
maytonLa France, твой код кто-то будет проверять или делать code review или сертифицировать? Не думаю, просто как мне говорят на работе делать, так я и делаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2014, 13:33 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
La FrancemaytonLa France, твой код кто-то будет проверять или делать code review или сертифицировать? Не думаю, просто как мне говорят на работе делать, так я и делаю. Понимаешь брадт... всё что идёт с громким тегом крипто-, шифро- e.t.c. должно подвергаться жестокой проверке и сертификации. Несмотря на засилье крипто-API, которое само по себе достаточно надёжно и непробиваемо, его слабым можно сделать легко. Достаточно натворить профанаций в самом коде. И не обучить персонал и админов как правильно конфигурить твой софт. И все громкие названия типа OpenSSL e.t.c. не имеют никакого значения. На твоём уровне кодинга - без разницы вообще какой шифр брать. У тебя кст. ошибка уже на 1 шаге. Подумай над этим. Архитектурная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2014, 15:32 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
maytonНа твоём уровне кодинга - без разницы вообще какой шифр брать. У тебя кст. ошибка уже на 1 шаге. Подумай над этим. Архитектурная. Я составлял алгоритм обмена данными сам на основании прочитанной мной информации по библиотеке openSSL из этой статьи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2014, 15:45 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
La FrancemaytonНа твоём уровне кодинга - без разницы вообще какой шифр брать. У тебя кст. ошибка уже на 1 шаге. Подумай над этим. Архитектурная. Я составлял алгоритм обмена данными сам на основании прочитанной мной информации по библиотеке openSSL из этой статьи. Вот и отлично. Узнаешь о недостатках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2014, 15:53 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
maytonВот и отлично. Узнаешь о недостатках. О недостатках своего алгоритма? Какая ошибка на первом шаге? Где вообще можно почитать как это должно правильно организовываться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2014, 16:06 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
La FranceMasterZivА ты не хочешь готовую библиотеку использовать ? Open SSL .. И весь твой трафик будет шифроваться и расшифровываться автоматом. Так я её и использую, только сокеты из WinSock2.h. А вы имеете ввиду использовать сокеты от openSSL? Это не "сокеты от openSSL" это имплементация SSL протокола. Там все за тебя уже сделано и сотни раз проверено. Это то что нужно использовать в большинстве случаев. Особенно в случаях когда нет набитых шишек в шифрованной передаче данных. Trust me. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2014, 16:23 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
Тогда уж пункты 1 и 2 - одна и та же ошибка. За подробностями - к тов. Шнайдеру, если коротко то либо слишком поздно вообще про ключи для клиента речь зашла либо соединение на самом деле безопасное и тогда лишние ключи это излишество. А так да - курить Шнайдера и думать, до прочтения мысли о самопальных протоколах лучше отложить. По первому вопросу темы - см. RFC по TLS, пункт 6.2 особено. Вопрос для самоконтроля - как сервер планирует отличать клиента от злобного анонимуса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2014, 16:59 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
wstВопрос для самоконтроля - как сервер планирует отличать клиента от злобного анонимуса? У меня есть только вариант, что пересылаться смогут только пакеты описанные мной, если придёт какая-нибудь другая структура, с ней сервер работать не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 06:26 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
Нужно использовать библиотеку libevent-openssl. Если кто-нибудь знает хорошие статьи или где взять документацию на неё прошу поделиться. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 07:28 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
La France... 2) Сервер создает ключи и отправляет открытый ключ клиенту; ... При желании (с рабочей клиентской частью в руках) пишем свой прокси который прикидывается сервером для твоего клиента, дает ему свой открытый ключ, принимает расшифровывает, зашифровывает ключом полученным от твоего сервера и пересылает твоему серверу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 07:51 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
La FrancemaytonВот и отлично. Узнаешь о недостатках. О недостатках своего алгоритма? Какая ошибка на первом шаге? Где вообще можно почитать как это должно правильно организовываться? ошибка на первом шаге в самом существовании этого шага. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 09:40 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
Dima TLa France... 2) Сервер создает ключи и отправляет открытый ключ клиенту; ... При желании (с рабочей клиентской частью в руках) пишем свой прокси который прикидывается сервером для твоего клиента, дает ему свой открытый ключ, принимает расшифровывает, зашифровывает ключом полученным от твоего сервера и пересылает твоему серверу. Есть ещё другой сценарий, "чужой" посылает серверу запрос на получение ключа, получает ключь, и шлет серверу все, что ему вздумается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 09:52 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
MasterZivЕсть ещё другой сценарий, "чужой" посылает серверу запрос на получение ключа, получает ключь, и шлет серверу все, что ему вздумается. Так пусть присылает, "чужой" не знает структуру пакета, ну расшифрует сервер то, что ему пришлют, а преобразовать всё это дело в пакет не сможет - просто выдаст ошибку преобразования и все нормально будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 10:20 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
La FranceТак пусть присылает, "чужой" не знает структуру пакета ... Как узнать структуру пакета (при наличии рабочего клиента) я выше написал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 10:26 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
Dima T, Ясно. К серверу понятно как подключится "псевдоклиент", а как реальный клиент подключится к псевдосерверу, если клиент настроен на один адрес, а изменить этот адрес возможности нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 10:38 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
La Franceклиент настроен на один адрес, а изменить этот адрес возможности нет? DNS-имя перенаправляется элементарно. Задал в своем локальном DNSе что ProtectedService.Company.com имеет IP 127.0.0.1 и будет твоя прога соединяться на 127.0.0.1 вместо реального ProtectedService.Company.com Надеюсь неизменный IP зашивать не собираешься. Оно конечно надежно, только всем придется софт руками переставить когда он сменится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 10:48 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
Так пусть присылает, "чужой" не знает структуру пакета, Не знает — так узнает... ну расшифрует сервер то, что ему пришлют, а преобразовать всё это дело в пакет не сможет - просто выдаст ошибку преобразования и все нормально Ну гляди, тебе с этим жить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 10:50 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
Рабочий клиент на руках = полный доступ ко всем его структурам и алгоритмам. Что до адреса сервера - спрашиваем у гугля про man in the middle attack. Вывод - либо вообще забить на шифрование раз уж решили использовать защиту Неуловимого Джо, либо защищаться уже как положено, например с самого начала соединяться по TLS, требуя с клиента сертификат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 11:18 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
Dima TНадеюсь неизменный IP зашивать не собираешься. Оно конечно надежно, только всем придется софт руками переставить когда он сменится. Вообще-то так и планировал сделать) О проблеме смены адреса сервера думал, но дело до этого еще не дошло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 11:57 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
wstРабочий клиент на руках = полный доступ ко всем его структурам и алгоритмам. Не факт - код скрыть можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 12:18 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
La FrancewstРабочий клиент на руках = полный доступ ко всем его структурам и алгоритмам. Не факт - код скрыть можно. Был такой чувак. Звали его Керхгоффс. Он сформулировал несколько принципов разработки крипто-систем. Эти принципы вопринимаются если не как заповеди криптографа но хотя-бы как правила хорошего тона. Все озвучивать не буду. Почитаешь сам. Но обрати внимание на то что лучшие крипто-алгоритмы поставляются в виде открытого исходного кода . Их можно скачивать и изучать. Они оттестированы и стандартизированы. Секретными их делаеn ключ и только ключ. И коль уж ты начал делать что-то криптографическое (шифрующиее) то будь добр - ознакомься с этими принципами и почитай best practices. В противном случае - будешь выглядеть как маленький недотёпа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 12:31 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
La FranceDima TНадеюсь неизменный IP зашивать не собираешься. Оно конечно надежно, только всем придется софт руками переставить когда он сменится. Вообще-то так и планировал сделать) О проблеме смены адреса сервера думал, но дело до этого еще не дошло. Когда дойдет - может оказаться что поздно думать. Даже если не дойдет: при первом же DDoSе об этом пожалеешь. Не говоря уже о прочих жизненных ситуациях когда надо временно повисеть на другом IP. Зашивать IP не надо, а вот использовать стоит, т.к. с DNSом тоже не все гладко: без всяких вредителей он может упасть у твоего пользователя или в DNS его провайдера не окажется твоей записи (с доменами третьего уровня такое бывает), поэтому лучше так сделать: получаешь IP по DNS-имени, обращаешься по этому IP, при удачном соединении IP запоминаешь, если вначале получить IP по DNS-имени не удалось - используешь запомненный. Можешь добавить контроль смены IP и сообщать серверу что он поменялся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 12:46 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
maytonНо обрати внимание на то что лучшие крипто-алгоритмы поставляются в виде открытого исходного кода . Их можно скачивать и изучать. Они оттестированы и стандартизированы. Секретными их делаеn ключ и только ключ. Ну я это вроде как знал и скрывать алгоритм шифрования не собирался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 12:53 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
Dima T, Ну оставлять вшитым ip я точно не буду, просто у меня пока не было никаких идей как сделать это безопасно. Я об этой задачи всегда помню и оставляю возможность легко исправить это как появятся какие-либо варианты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 13:00 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
La FranceDima T, Ну оставлять вшитым ip я точно не буду, просто у меня пока не было никаких идей как сделать это безопасно. Я об этой задачи всегда помню и оставляю возможность легко исправить это как появятся какие-либо варианты. DDoS - самый дешевый способ нагадить конкуренту. Если твои конкуренты не ИТ-компании, то скорее всего им анализ работы твоего софта намного дороже будет стоить. В случае DDoS можно по быстрому перенаправить свое DNS-имя на сервер какой-нибудь конторы специализирующейся на защите от DDoSа и твой сервис будет хоть как-то работать. Если ты будешь работать только по IP, то перенаправить ничего не получится. Если с DDoS не сталкивался - почитай инет, это далеко не экзотика, а цены по карману даже уволенному сотруднику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 15:03 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
Dima TLa FranceDima T, Ну оставлять вшитым ip я точно не буду, просто у меня пока не было никаких идей как сделать это безопасно. Я об этой задачи всегда помню и оставляю возможность легко исправить это как появятся какие-либо варианты. DDoS - самый дешевый способ нагадить конкуренту. Если твои конкуренты не ИТ-компании, то скорее всего им анализ работы твоего софта намного дороже будет стоить. В случае DDoS можно по быстрому перенаправить свое DNS-имя на сервер какой-нибудь конторы специализирующейся на защите от DDoSа и твой сервис будет хоть как-то работать. Если ты будешь работать только по IP, то перенаправить ничего не получится. Если с DDoS не сталкивался - почитай инет, это далеко не экзотика, а цены по карману даже уволенному сотруднику. Кстати, никакое шифрование против DDOS-а не помогает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 15:19 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
Dima TНадеюсь неизменный IP зашивать не собираешься. Оно конечно надежно, только всем придется софт руками переставить когда он сменится. Неизменный IP просто чуть сложнее перенаправляется, но и только. NAT, роутер поставить с какой угодно сеткой никто не мешает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 15:27 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
[quot mayton]La FranceВсе озвучивать не буду. Почитаешь сам. Но обрати внимание на то что лучшие крипто-алгоритмы поставляются в виде открытого исходного кода . Их можно скачивать и изучать. Они оттестированы и стандартизированы. Секретными их делаеn ключ и только ключ. Поставлять в открытом виде совсем необязательно, просто Кирхгоф, раз его вспомнили, говорил, что надежность защиты не должна основываться на предположении, что "противник" не знает алгоритма или протокола. Только на незнании им ключей. Но из этого еще не следует, что информацию о протоколах надо открыто сообщать. Просто существующие давно открытые решения получается, что на практике уже неплохо протестированы и вылизаны. Тем не менее, иногда новые ошибки и в них находят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 15:34 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
Есть мнениеDima TНадеюсь неизменный IP зашивать не собираешься. Оно конечно надежно, только всем придется софт руками переставить когда он сменится. Неизменный IP просто чуть сложнее перенаправляется, но и только. NAT, роутер поставить с какой угодно сеткой никто не мешает. Согласен, элементарно сделать. Как-то сразу не догадался что можно с маршрутизацией пошаманить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2014, 15:43 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
MasterZivошибка на первом шаге в самом существовании этого шага. очень даже можно если посылается пакет с одноразовым ключом. ложные атаки на этом этапе рубятся еше на уровне железяки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2014, 20:46 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
Dima TЕсть мнениепропущено... Неизменный IP просто чуть сложнее перенаправляется, но и только. NAT, роутер поставить с какой угодно сеткой никто не мешает. Согласен, элементарно сделать. Как-то сразу не догадался что можно с маршрутизацией пошаманить. Это вопрос на уровне философии и основ криптографии. "Кто" или "что" будет тем самым дуплом через которое передеадут ключ. Нет гарантийной процедуры "рукопожатия". И пока этот вопрос не решён все крипто-протоколы несостоятельны и SSL/HTTPS можно считать безопасным лишь условно. При условии корректного и не взломанного сетевого стека. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2014, 21:19 |
|
||
|
Шифрование передаваемых данных
|
|||
|---|---|---|---|
|
#18+
Взаимная аутенификация на клиентском и серверном серверном сертификатах - и вопрос шифрации трафика можно считать закрытым. Другое дело, что проблему "нескольких логинов под одной учётной записью" это не решает. Исключая тривиальный случай. С другой стороны, не вижу ни малейшей проблемы: поднял две сессии - будь добр оплатить обе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2014, 16:47 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2019665]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 195ms |

| 0 / 0 |
