Куда мне обратиться, чтобы научиться писать код, который должен был быть очень, очень безопасным, но ДЕЙСТВИТЕЛЬНО предоставляет внешние сервисы (работающие на стандартной ОС Windows или Linux) - PullRequest
0 голосов
/ 16 декабря 2010

Куда мне обратиться, чтобы научиться писать код, который должен был быть очень, очень безопасным и который предоставляет внешние сервисы (работающие на стандартной ОС Windows или Linux). Знание того, какие услуги могут и не могут быть безопасно предоставлены, будет частью проблемы. Обратите внимание, что я не ищу любимый выбор между Linux и Windows, так как выбор вряд ли будет моим в любом конкретном случае. Однако уровень безопасности должен быть военным.

Я почти чувствую себя неловко, называя это, например, но как мне узнать, могу ли я использовать, скажем, WCF, в такой обстановке.

Ответы [ 3 ]

2 голосов
/ 16 декабря 2010

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

В основном, каждый слой модели OSI должен быть принят во внимание. Такие вещи, как предотвращение захвата потока данных (или его перенаправления) между конечными точками ( квантовая криптография ).

На более высоких уровнях у вас есть такие вещи, как

  1. Физическая безопасность устройств (если возможно, все конечные точки).
  2. Укрепление ОС (например, закрытие портов, отключение неиспользуемых служб, использование Kerberos, VPN-туннели и использование белых списков машин, которым разрешено подключаться и т. Д.);
  3. Шифрование данных в состоянии покоя (шифрование файлов), при передаче (SSL) и в памяти (шифрование столбцов / таблиц).
  4. Обеспечение и обеспечение надлежащей аутентификации и авторизации на каждом уровне (в приложении, в SQL и т. Д.).
  5. Журнал ВСЕ. Как минимум, он должен ответить «кто / что / когда / где / как»
  6. Наряду с ведением журнала активно следите за ним. ака: обнаружение вторжения.

Затем мы можем перейти к другим вещам, таким как просмотр других векторов атак, таких как SQL инъекция, xss, внутренние / недовольные сотрудники и т. Д.

И как только вы сделаете все это, будьте готовы, когда хакер уходит со всем, что он хочет, просто с помощью социальной инженерии.

Короче говоря, лучший способ защиты любого приложения, связанного с компьютером, - это слушать дух Фокса Малдера и доверять никому. Другой мой любимый подход: это паранойя, только если они не преследуют тебя.

1 голос
/ 21 декабря 2011

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

Но военного уровняне значит многоВаш клиент будет (и должен ) точно определить стандарты, которые необходимо соблюдать.Например, программное обеспечение для критических [гражданских] воздушных судов должно следовать как-то вроде DO-178C (или его предшественник, DO-178B).Различные отрасли имеют разные стандарты, аналогичные этим.(как у железной дороги, так и у медицинской промышленности есть свои собственные стандарты, которые могут отличаться в Северной Америке от европейских).

Если ваша система (и клиент) менее требовательны (то есть нет миллиардов долларов или сотен жизней, которым угрожают ошибки) вы можете подумать о настройке вашего компилятора или использовании какого-либо другого инструмента.Например, GCC можно настраивать с помощью плагинов или MELT расширений.

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

0 голосов
/ 16 декабря 2010

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

Например, для обучения в .NET (Microsoft) требуется базовая- Нажмите учебник (я предлагаю Pro C # и платформу .NET 4.0).После этого поиск по .NET Framework Reference на MSDN даст вам остальное.

Если вы ищете ссылку на WCF, я предлагаю (MCTS Exam 70-503, Microsoft .NET Framework 3.5 Windows Communication Foundation) иMSDN.

Просто помните, что ни одна технология не достигнет того, что вы ищете.Например: WCF смешивается с WF (Windows Workflow Foundation), а также с SQL Data Services и Entity Framework.Воздействие множества технологий определенно расширит ваше зрение.

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

WCF - зверь в этом отношении.Вот некоторые преимущества перед некоторыми другими средствами связи:

Сообщения (данные), передаваемые между конечными точками, могут быть защищены с помощью защиты на уровне сообщений (шифрование).Выбранный транспортный канал также может быть защищен на уровне протокола с помощью безопасности транспортного уровня (шифрование).

Конечные точки сами могут авторизовать и выдавать себя за клиентов (безопасность на уровне клиента).Вы можете реализовать сквозную трассировку службы, мониторинг работоспособности и счетчики производительности, ведение журнала сообщений, а также прямую и обратную совместимость с новыми / более старыми клиентами (путем постепенного снижения формата сообщения, представленного в WCF).Если вы решили сделать это, вы даже можете реализовать маршрутизацию как отказоустойчивую для своего канала связи.WCF также поддерживает транзакции (ACID), параллелизм, а также регулирование для каждого экземпляра, обеспечивая максимальную гибкость при написании безопасного / надежного кода военного уровня.

В ретроспективе безопасность и гибкость WCF поражают.Аналогичная технология (если не та же самая) - это спецификация WS-Security.Он является частью спецификаций WS- * для веб-служб и имеет дело с Xml-подписью и Xml-шифрованием для обеспечения безопасного канала связи между двумя конечными точками.

Однако недостатки WS- * заключаются в том, что он являетсяспособ средства связи.WCF может облегчить двустороннее общение.Клиент может отправить запрос на сервер, но также сервер может отправлять запросы клиенту.WS- * диктует, что клиент может только отправлять и получать ответы на сервер, но не наоборот.

Я не разработчик WCF, поэтому я подумал, что основные моменты могут спровоцировать вас на проведение собственных исследований.«Есть сотни способов убить животное, и ни один из них не ошибается ...»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...