Publish your project for free and start receiving offers from freelance contractors in serveral minutes after publication!

Защита Программы через клиент-сервер (ретрансляция кода)

closed without completion



Общее для всех вариантов:

# код моего защищаемого приложения Visual Basic

# код клиент-сервера:

  > язык С++  (иное... только с вашей аргументацией: безопасность для кода, стабильность, функционал и тп)

  > Visual Studio Community 2015 или 17 (только, и без вариантов)

  > короткие фразы-комментарии описывающие суть процедур и алгоритмику работы - обязательны

# протокол:

  > бинарный

  > уровень защиты: безопасное соединение с шифрованием трафика

  > должен поддерживаться большинством интернет-хостингов и желательно в бесплатном пакете

# код защищаемого приложения (тест-код предоставляется мной)

  > управляет конечным Приложением через его API (тест-код предоставляется мной)

# серверная часть

  >код защищаемой программы полностью размещен на сервере

  > авторизация по логин-пароль

  > только отвечает и только на известные заранее запросы (любое внешнее управление и тп = отключено)

# клиентская часть

  > управляет конечным Приложением через его API

  > поддержка х32 и х64 

  > не несет в себе защищаемого кода и является "ретранслятором" кода от приложения расположенного на сервере

Приемка работы:

  => выкладываем на хостинг - серверную часть и мой тест-код,

  => подключаюсь, логин-пароль,

  => жму на кнопку в клиенте "старт"

  => конечное приложение должно выполнить операцию из моего тест-файла на сервере

  => скрин-шот участка кода для проверки наличия и качества комментариев описания к коду

========================================


-=Вариант "Примитив" (не более 20$)=-

- реализовать на практике шаблонное решение "из учебника" для моего тест-кода

формат работы:

- минимум предварительных обсуждений:

- мне нужно "Описание Вашего Решения":

      > строго по пунктам 1,2,3... в одно-два предложения в пункте

      > формат: функциональность (что может) -> аргументация (зачем требуется)

      > и отдельными пунктами: средства обеспечения защиты моего кода -> аргументация (зачем требуется)

- мои юридические права на ваш исходный код - полные, кроме вашего авторства в заголовке исх кода

- формат работы:

      > согласовываем параметры моего тест-файла

      > передаю вам тест-файл

      > приемка работы

срок выполнения: "от согласования тест файла -и- до приемки": в течении 1 рабочего дня


-=Вариант Базовый=-  "Ваше Готовое(!) Решение" (цена ваша + согласовываем)

- мне нужно "Описание Вашего Решения":

      > строго по пунктам 1,2,3... в одно-два предложения в пункте

      > формат: функциональность (что может) -> аргументация (зачем требуется)

      > и отдельными пунктами: средства обеспечения защиты моего кода -> аргументация (зачем требуется)

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

- срок выполнения: свободный, до 1 месяца -  на весь проект от согласования до реализации


-=Вариант "Сотрудничество"=- (цена определяется блоками)

(!) это обсуждается только после успешного варианта "Примитив" (даже если вы уже имеете "Готовое Решение")

- наличие "Ваше Готовое Решение" = не_обязательно

- наличие ваших Примеров работ в требуемой мне тематике - обязательно

- наличие "Описания Ваших базовых предложений функционала" - обязательно

- обсуждаем и терпеливо согласовываем подробно, с что мне максимально требуется и ваши аргументации

- распределяем работу по время-блок-цена




  • Anton Kravtsov
    Complain | 17 June at 13:37 |

    1. Солидное описание 🙂 Вам нужен аналог RPC, что ли?

    2. Чем вызвано ограничение местоположения Москвой? Нужна будет личная встреча?

  • ntr ntr — project author
    Complain | 17 June at 14:57 |

    2) Москва - это мое месторасположение, видимо я не так понял при оформлении заявки. Ни каких Ограничений на местоположения исполнителя нет.


    1) да аналог RPC, 

    - с учетом современных реалий 

    - с упором для целей защиты передаваемого кода


    у меня нет должной компетенции в этих вопросах. ни когда не имел отношения к клиент-север. абсолютно.  Я смотрел коды примеров программ - но это все за пределами моих знаний.

    Именно  этим обусловлен вариант "Примитив" - суть которого реализовать для меня на практике общеизвестное решение "из учебника". Предполагается что у Исполнителя код "из учебника" клиент-сервера - уже есть. 

    И суть работы "Примитив" сводится: 

    - только к практической реализации.

    а) мне нужны комменты в коде (коротко что зачем) 

           предполагается что комменты уже существуют в типовом примере "из учебника"

    б) мне нужно указать "простыми словами" каким образом в этом решении обеспечивается защита передаваемого кода моей программы и где "слабые места"

           предполагается что Исполнителю нужно на основе имеющегося у него описания "из учебника" и собственных знаний сформулировать перечень пунктов 1,2,3 описывающие что обеспечивает защиту передаваемого кода.










  • Anton Kravtsov
    Complain | 17 June at 23:41 |

    Ок, значит, RPC. На эту тему, по-моему, достаточно библиотек, часть которых упомянута в Википедии. Насколько я понял, к каждой из них можно прикрутить SSL - вот и получим защищённое соединение (по-моему, самое популярное решение в наши дни).

    Однако в постановке задачи у Вас есть нюансы.

    код моего защищаемого приложения Visual Basic

    ...


    поддерживаться большинством интернет-хостингов и желательно в бесплатном пакете

    Не знаю, как далеко шагнул Visual Basic, но раньше с его помощью можно было ваять программы только для Windows, что (с учётом второго пункта) существенно сужает варианты хостинга (одновременно увеличивая его стоимость, но то дело житейское), не говоря уже о том, что бесплатный хостинг для Windows - редкая дичь на нашей планете 🙂 Разве что упасть кому-то на хвост...

    протокол:

      > бинарный

    Для этого случая подойдёт, напр., Ice (если не смущает лицензия GNU GPL), в котором поддержка защищённых соединений реализуется через плагин IceSSL.

    Если годится, то могу для Вас наваять демо в Visual Studio Community 2017 (C++, STL), однако прежде нужно что-то придумать с хостингом...

    Кстати, может Вам будет интереснее другое решение, которое позволить избежать Windows-хостинга: клиент и "сервер" (с Вашей программой, может работать на Вашем компьютере) будут устанавливать соединение как "неравноценный peer-to-peer", обращаясь для координации к третьему серверу (он и будет работать на хостинге).

    Алгоритм взаимодействия будет такой:

    1. Сервер с программой обращается к координатору (нужен хостинг), сообщая как с ним связаться, и оставляя "координаты для связи" (IP-адрес и порт).

    2. Клиент обращается к координатору и получает список доступных серверов с программой (их может быть несколько).

    3. Клиент стучится напрямую к серверу с программой...

  • ntr ntr — project author
    Complain | 18 June at 10:13 |

    Резюмируя:

    - я должен получить понимание про безопасность Ice GNU GPL в простой форме доступной мне для понимания, как некомпетентного в этом вопросе

    - Клиент---ХостКоординатор---Сервер = Ок. я так и думал, что так все и делают.

    - VB программа это сейчас, но можно её и на любом JS\C++ и тп. Конечное приложение управляется через публичные точки входа в её dll. Сама программа под Windows и... есть её вариант под Aple


    Итог: мне важно знать где в цепочке "точки" риска и потенциального считывания передаваемых команд. 

    Сейчас не требуется их решать, но знать о них я должен.

    Зная о них я могу принять решение о применении Ice GNU GPL


    ==подробнее============================================================

    -=про RPC вариант & Ice GNU GPL=-

    у меня есть сомнение-непонимание следующее:

    (мне нужно понять нижеследующее, чтобы отбросить как ненужное все иные варианты)

    (1)

    Вопрос: какие мощности потребуются на сервере для обслуживания скажем 100...500 одновременных подключений? 

    прим: 

    Моя текущая программа выполняет только управление и сама не выполняет ни каких расчетов или обработок. Те ресурсы тратятся только на работу процедур API управления. Примерно выходит 1-2 API-команды за 5 секунд.  

    С решением через RPC - где предел, когда придется решать проблемы мощности сервера?

    (2)

    Вопрос: в каких точках может быть осуществлен перехват кода передаваемых API процедур?

    прим: я имею ввиду всю цепочку сервер->RPC->клиент->RAMобласть->Конечное приложение.

    - с сервером где лежит серверная часть в целом понятно = это дорого

    - обслуживающий персонал сервера = это не предсказуемо

    обе проблемы решаются (обфускацией и иными приемами -не о них сейчас)

    - внешние управление серверной частью = отключено (и это одно из требований)

    с серверной стороной риски в целом мне понятны

    а вот дальше.... опять у меня есть непонимание

    - GNU GPL = да код открытый, это плохо без вариантов. Однако и в общеизвестном коде "из учебника" - тоже код открыт...

    Вопрос: 

    - что открыто у Ice - сам протокол связи или только точки подключения к нему? 

    - Если шифруется трафик по безопасному каналу - это защитит Ice?

    упрощаем вопрос: 

    На сколько сложно имея Ice GNU GPL внедрится в Ice и понять логику передаваемого кода API-управления? насколько Ice GNU GPL - безопасен?

    далее...

    на выходе из Клиента получаем ретрансляцию API процедур в конечное приложение.  Как обстоит ситуация в этой "точке"? Ice GNU GPL - упрощает ситуацию для взлома или все аналогично иным RPC?

    в итоге уперлись в перехват API-команд уже внутри Windows

    ....Есть решения этой проблемы?.... (!) это не требуется сейчас - это "на вырост"


    -=Треугольник: Клиент---ХостингКоординатор---Сервер=-

    это хорошо. это правильно. 

    тут обсуждать не о чем. 

    я полагал его типовым общераспространенным решением.


    -=VB или...=-

    сейчас программа на VB, но её можно переписать:

    - под JS (легко) = но, не понимаю рисков безопасности 

    - даже под С++ = но, я знаком базово с ним

    да... по сути на любом языке. Конечное приложение управляется через публичные точки входа в её dll. Сама программа под Windows и... есть её вариант под Aple.

    я пока думаю над вариантом... пока это VB.

    =====================================================================


    Резюмируя:

    - я должен получить понимание про безопасность Ice GNU GPL в простой форме доступной мне для понимания, как некомпетентного в этом вопросе

    - Клиент---ХостКоординатор---Сервер = Ок. я так и думал, что так все и делают.

    - VB программа это сейчас, но можно её и на любом JS\C++ и тп


    Итог: мне важно знать где в цепочке "точки" риска и потенциального считывания передаваемых команд. 

    Сейчас не требуется их решать, но знать о них я должен.

    Зная о них я могу принять решение о применении Ice GNU GPL



  • ntr ntr — project author
    Complain | 18 June at 10:28 |

    добавление....

    про Ice GNU GPL и про заданные мной текущие вопросы - можно обсудить здесь. Оно не только мне будет полезно, но думаю и многим. 

    Если нужна конкретика про что за конечное приложение как и что уже с "Именами и Явками" предлагаю вариант:

    - даю свой "мусорный" е-маил сроком на 1 день, через него уже прямой


  • ntr ntr — project author
    Complain | 18 June at 13:27 |

    добавление...

    Ice GNU GPL

    потенциально может возникнуть проблема Эмулятора Клиента (особенно если код открытый и тп)

    - эта проблема мне известна

    - сейчас она не стоит на повестке дня

    тем не менее ...

    если риск использования Ice GNU GPL = максимальный для Эмулятора

    то Ice GNU GPL:

    - подойдет сегодня = как вар "Примитив" (и то под вопросом...)

    - от него придется отказываться завтра - и мне не выгодно "Сотрудничество"


    поэтому вопрос Ice GNU GPL + КлиентЭмулятор = Важный.

    и предложения по Вектору Решения в будущем мне нужно знать сейчас, - до принятия решения по Ice GNU GPL

  • Anton Kravtsov
    Complain | 18 June at 16:15 |

    мне важно знать где в цепочке "точки" риска и потенциального считывания передаваемых команд. 

    Популярное изложение SSL есть, напр., в Википедии. Библиотека Ice/IceSSL работает поверх этого протокола.

    Вопрос: какие мощности потребуются на сервере для обслуживания скажем 100...500 одновременных подключений? 

    Ограничений в Ice по поводу кол-ва соединений я не нашёл. Для уверенности надо будет проверять опытным путём, но 500 соединений - это мелкая нагрузка при современных технологиях...

    И мне пока не ясно, какие данные будут передаваться: это числа, строки, массивы (насколько большие?), изображения, видео/аудио-поток? Насколько частые будут вызовы от клиентов: раз в секунду, раз в минуту или реже?

    Вопрос: в каких точках может быть осуществлен перехват кода передаваемых API процедур?

    При RPC код выполняемых процедур не передаётся клиенту - он получает только результат выполнения... ну, или я не понял Ваш вопрос 🙂

    GNU GPL = да код открытый, это плохо без вариантов.

    Закрытый код - не гарантия повышенной безопасности...

    Да и безопасность в данном случае базируется на SSL.

    На сколько сложно имея Ice GNU GPL внедрится в Ice и понять логику передаваемого кода API-управления?

    Это Вы про эмулятор клиента? Т.е. может ли кто-то подключиться к серверу, написав свой клиент?

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

  • ntr ntr — project author
    Complain | 18 June at 19:15 |

    читайте ниже.... при первом открытии без авторизации не было кнопки ответить и нажал на общую кнопку в самом низу

  • ntr ntr — project author
    Complain | 17 June at 15:18 |

    дополнение....

    предполагается вслед за вариантом "Примитив" - постепенный апгрейд решения с учетом моих "не типовых" требований. Например (почти сразу): потребуется реализовать механизм ОДНОРАЗОВОЙ пары клиент-сервер в один сеанс подключения. те ни какие "старые" версии клиента не работают с новым подключением. новый клиент и тд. Я не уверен в актуальности этого и поэтому не стал включать в нужное мне здесь-и-сейчас решение. Тем не менее... думаю там есть над чем еще будет работать.


    в варианте "Базовый"-Ваше Решение

    это по сути покупка кода вашей программы (либо только программы, если есть гибкость настройки вход-выход) которая вами уже создана с учетом требуемой мне задачи. Имеет весь адекватный функционал решения и тд и тп.


  • ntr ntr — project author
    Complain | 18 June at 19:01 |

    1) -=про внедрится Ice GNU GPL для прочтения передаваемого кода=-

    - имел ввиду любой вариант (я же не понимаю как все это функционирует)

    - как частный случай - Эмулятор Клиента

    функционал пароль\логин должен быть безусловно.

    но опять же я совершенно не понимаю где на клиенте на сервере и пт - это вне пределов моих знаний

    а что касается Эмулятора Клиента - защита от него это не текущая задача и постепенно я разбираюсь что к чему.

    Тем не менее мне кажется что защита Пароль\Логин - не работает как защита от Эмулятора - тк нет ни каких проблем заплатить 10...20 руб за подключение легальное и дальше можно будет делать все что угодно.

    Так что Пароль\Логин - да нужно, но это не защита, а метод сбора-индентификации источника "уже произошедшей угрозы".


    поэтому то и вопрос:

    насколько Проще написать Эмулятор Клиента в случае если клиент-сервер использует Ice GNU GPL = Открытый исходный код?

    у меня (без компетенций) складывается опасения (из общих пониманий) - что при наличии открытого кода Ice GNU GPL - написать Эмулятор будет простейшей задачей... - или я не прав?

    +

    к тому же меня беспокоит связь Клиент-Конечное приложение - тк что-то мне подсказывает, что считать что обе программы передают друг другу - не особая проблема через теже WinAPI утииты. Или это проблема?....

    вот тут то мне и не нравится любой открытый исходный код.... а Ice GNU GPL только усугбляет положение.

    но

     опять же я совершенно не компетентен в этих вопросах и возможно мои опасения избыточны.

    что касается Ice GNU GPL - мне нужно только одно понять = да\нет = ухудшает или одинаково будет с любыми иными.


    SSL - защитит только до точки входа в Клиента, те грубо на пути по IP маршруту

    а вот после входа в компьютер в Клиента... там выходит все будет прозрачно абсолютно. или нет?


    код который передается и управляет конечным приложением 

    есть последовательное обращение по Объектной иерархии

    Объект(Приложение).Объект.Объект (парам1, парам2) 

    и через эти строки и управляется все внутри приложения от открытия документа в Приложении до любых действий с ним

    например:

    - запуск самого приложения будет через CreateObject (ХПриложение) 

    - создать документ будет: ХПриложение.НовДокСоздать (имя) итд

    - в тяжелых случаях передается следующее ХПриложение.Выполнить(строковая_переменая_тхт_кода)

    - Считывание из приложения тож самое ХПриложение.Объект(парам)


    все...

    больше ни чего в приложение не передается.


    возможно я сильно назвал это API (хотя что же это если не API)



  • Anton Kravtsov
    Complain | 18 June at 20:44 |

    Тем не менее мне кажется что защита Пароль\Логин - не работает как защита от Эмулятора - тк нет ни каких проблем заплатить 10...20 руб за подключение легальное и дальше можно будет делать все что угодно.

    В таких случаях применяют блокировки пароля/логина.

    насколько Проще написать Эмулятор Клиента в случае если клиент-сервер использует Ice GNU GPL = Открытый исходный код?

    Да, можно упрощенно считать, что открытый код библиотеки коммуникации облегчает создание эмулятора клиента.

    В общем-то, библиотека Ice нужна прежде всего для упрощения кода программы (короче выглядит, быстрее написать, легче отладить - дешевле в создании и обслуживании). Ничего не мешает изобрести велосипед и общаться без прикладных прослоек через SSL-соединение.

    В любом случае потенциальный злоумышленник будет использовать сниффер и при надлежащем усердии все сетевые пакеты разберёт по байтикам.

    Будет этим заниматься кто-то или нет, зависит от экономической целесообразности.

    И если Вы настолько озабочены безопасностью, то Вам нужно программно-аппаратное решение: программа-клиент поставляется с бронированным компьютером, который самоуничтожается при попытке его вскрытия 🙂

  • ntr ntr — project author
    Complain | 18 June at 21:04 |

    Я понял ваши аргументы про Ice GNU GPL

    (мои страхи - от моей не компетенции. разберусь по мере продвижения)

    Я согласен с вашим предложением:

    - Ice GNU GPL + SSL 

    - Пароль\Логин

    - треугольник Клиент-ХостКонтролер-Сервер


    Бюджет варианта "Примитив" 


    день-два-три мне нужно на подготовку exe_тест-файла под ваши требования.


    затем я отпишусь здесь что тест-файл готов.

    после вашего ответа:

    - резервирую деньги в "сейфе"

    - договариваемся о дне тест-приемки

    - публикую здесь "мусорный емаил" (через него реальный)


    и закрываем проект.

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

    но это уже иная история


    ----------------------------


    Что от меня требуется для подготовки моего exe_тест-файла?

    Есть какие то нюансы?




  • Anton Kravtsov
    Complain | 18 June at 21:27 |

    Что от меня требуется для подготовки моего exe_тест-файла?

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

    Соответственно от Вас нужен интерфейс функций, которые надо вызывать в DLL (желательно на C++).

    Сервер-координатор нам на данном этапе не нужен - клиент будет соединяться сразу с сервером по заданным адресу и порту.

  • ntr ntr — project author
    Complain | 18 June at 22:04 |

    на сколько (в денежном выражении) усложняется вопрос если делать решение через Сервер-Контролер?

  • Anton Kravtsov
    Complain | 18 June at 22:16 |

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

    На ~50% возрастает трудоёмкость. Точнее пока не могу оценить.

    Я отправил Вам приватное сообщение - можно продолжить общение там...

  • ntr ntr — project author
    Complain | 18 June at 19:08 |

    Конечное приложение управляется моей программой не через WinAPI

    а как обычной dll/exe со встроенными внутри неё расшареными Процедурами.

  • ntr ntr — project author
    Complain | 18 June at 19:18 |

    ах да... вот еще что 

    Конечное приложение это скажем Ворд, Ексель и тп

    Я и мой код не имеет отношения к Конечному приложению совершенно

  • Add

Client
ntr ntr
Russia Russia
Project published
17 June at 01:54
109 views