Этот баннер — требование Роскомнадзора для исполнения 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 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38566341&tid=2019665]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 171ms |

| 0 / 0 |
