Поделиться через


Заметки о безопасности

Обсуждение Follow-on О моделирование угроз

Майкл Говард (Michael Howard)

Мая 2009 выпуске журнала MSDN Magazine содержит статьи, под названием «Обсуждение A О угроз Моделирование»определяющая номер звонящего диалог между Paige neophyte дурной безопасности и Майкл злоумышленник немного jaded безопасности. В этом месяце я расскажу вверх диалога которой она была прервана.

Сцены Я

Малая кухни, рядом с coffeepot.

Paige: Последний раз мы выполнены предпринятое хорошо взгляд на мой модель угроз, но сказал бы охватывают некоторые вопросы разработки криптографии и безопасности на более позднюю дату. Ну Добро пожаловать, позже.

Майкл: Пожалуйста заставить кофе сначала?

Не Ожидание ответа, Майкл pours себе большой кофе.

Paige: Аварийного что.

Майкл: Напомните такое приложение.

Paige: Это продукт, который позволяет пользователям хранить данные на наши серверы. Вот небольшой фрагмент кода клиента, помещает битов серверу первоначальных для этого пользователя. Этот код можно загружать файлы от пользователя наши серверной через веб-сервера и файлы хранятся в файловой системе вместе с метаданными файла, хранящиеся в SQL Server для быстрого поиска. Мы может хранить миллиарды файлы со временем. Два основных средах являются к домену компьютеров и домену Интернет компьютеров.

Майкл: Ну вы не ослышались, я помню сейчас. Так много кода, поэтому немного времени. ТЕПЕРЬ давайте вернемся к модели угроз для просмотра, какая часть мы беспокоит. У вас есть DFD--диаграммы потока данных?

Два пройти для поддержки Paige. Она входит в систему с своей смарт-карты и загружает средство моделирования угроз SDL.

Paige: Здесь это.

Майкл выглядит по схеме.

Майкл: Диаграммы уровня 1, подходит? Это один уровень подробные, чем схеме контекст?

Paige: Yup. Мы также имеют схему уровня 2, но я не думаю нам нужно перейти, глубоко просто еще.

Майкл: Вы правы, это идеальная. При необходимости более высокая точность как мы это проходят может рассмотрим схему уровня 2.

Paige: Кстати мы не вызываем их DFDs больше.

Майкл: Er ОК! Что они вызываются, затем?

Paige: Диаграммы приложения.

Майкл: Любые колонку вообще, я s'pose. Мы будем использовать цветные карандаши Далее. ОК, чтобы на диаграмме. Поэтому пользователь делает запрос клиентского приложения для отправки или загрузки файлов с сервера или сервера повторяется, что данные в файловой системе на обратной стороне завершить, вместе с некоторые метаданные о файлах, которая хранится в SQL Server?

Paige: Это один из использования;на самом деле вероятно основной сценарий. Конечно администратор необходимо настроить, Настройка и отслеживать приложения;Это средство администрирования выполняет.

Майкл: Давайте затем сосредоточиться на, основные сценарии.

Сцены II

Майкл которой intently на диаграмме приложения.

Майкл: Начнем с рассмотрения каждого элемента в основной сценарий; мы будем буквам всех угроз STRIDE.

Paige: ШАГ? Напомните еще раз.

Майкл: Подмена данных изменение, отказ, раскрытие информации, отказ В обслуживании Повышение прав доступа.

Майкл быстро запускает письма на листе бумаги.

Майкл: Взгляните на этот список:

Paige: Не все эти средства моделирования угроз?

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

Paige: Разумеется его получить, но не указана что-нибудь? Все эти потоки данных между различными элементами приложения?

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

Paige: Мы сделали?

Майкл: Да. Просмотрите модель угроз.

Paige выглядит через средство моделирования угроз SDL

Paige: Ну видно, что где мы обсудили исправить фальсификации с помощью SSL/TLS и угрозы раскрытия информации данных потока между процессами клиентом и сервером, справа?

Майкл: Хорошо! Так вот вопрос для вас. Данные, которые перемещается от пользователя на сервере и на файловой системе сервера — то конфиденциальные данные?

Paige: Запрос, последний раз. Да, он может быть.

Майкл: Uh Ну.

Paige: Что? Данные шифруются с помощью SSL/TLS, так что мы хорошо, справа?

Майкл: Вообще. SSL/TLS смягчает угрозы раскрытия информации для данных, как проходит между двух процессы--процесс клиента 2.0 и 3.0 серверного процесса. Но после данных оставляет, защиты туннеля, данные в незашифрованном виде, и вы пишете данных в незашифрованном виде в файловой системе.

Paige: Разумеется но такое риска?

Майкл: Расскажи!

Paige: Я не понимаю.

Майкл sighs.

Майкл: Предположим, что клиент приложения является сотрудник акции компании. Давайте быть более точным: Сотрудник является CFO акции компании и он использует приложение для сохранения электронной таблицы, отображающий финансовых данных текущего квартала, данные, не является общим и не будет общей до завершения квартала, когда компания объявляет ее доходов. Предположим, хакеру разбивает на системы, получает данные и использует продать или купить акций компании. Это может быть торговыми внутренних.

Paige: Uh Ну.

Майкл: Uh — Ну, действительно. Это серьезная. CFO не имеет соответствующих элементов управления на это конфиденциальные данные, может быть нарушение нормативы SOX.

Paige: Вы сказали: "может"лота.

Майкл: Можно поспорить, я сделал. Я выглядят как адвокат вам? Таким образом на мой вопрос исходного. Это такой ситуации нечто заботиться о?

Paige: Ну, не действительно. Думаю, что наши условия состояние нашей службы ultra-sensitive данных не следует использовать. Но мы воспроизведении. Предположим, сказать, «Да, мы волнует этот сценарий.» Что теперь?

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

Paige: Что вы пытаетесь сказать, является данных содержится в хранилище данных, 5.0, в файловой системе на сервере, является причиной раскрытия информации и нам требуется снизить эту угрозу. Является ЛИ справа?

Майкл: Вы плашечных. Как, устранить ее?

Paige: Списки ACL.

Майкл: Почему списки управления доступом?

Paige: Мы может ограничить доступ к только допустимых пользователей данные.

Майкл: Так как серверное приложение чтения и записи данных?

Paige: Ну Предположим процесс выполняется как уникальное удостоверение. Мы будем вызвать FooID. Нам удалось применить ACL к файлы, позволяет также FooID как допустимый пользователейдоступ к файлам.

Майкл: Не работает;Это не безопасности.

Paige: Почему не?

Майкл: Если я злоумышленник я может нарушить безопасность процесса сервера, выполняющихся как FooID и запустите Мой вредоносный код на этом сервере. Готово, мой код работает как FooID, а владельцем данных!

Выглядит dejected Paige.

Paige: Humph.

Майкл: Необходимо использовать шифрование.

Paige: Конечно! Сервер будет только чтения и записи зашифрованный BLOB-объекты, а если злоумышленник компрометирующей сервера, он по-прежнему не удается получить данные только он может нарушить шифрования.

Paige perks.

Майкл: Теперь выполним действительно запускается. Мы затронуты некоторые проблемы, шифрования последнего, особенно, как они относятся к разделам.

Paige: Что такое?

Майкл: ОК, как вы собираетесь шифрования данных?

Paige: Пользователь вводит пароль в клиентское приложение и клиентское приложение шифрует данные с паролем и отправляет зашифрованный BLOB-объект по каналу связи сервера. Сервер записывает метаданные SQL Server и затем записывает зашифрованный blob в файловой системе сервера.

Майкл: Что такое в метаданных

Paige: Идентификатор владельца, размер файла, имя файла, время его записи файловой системы и время последнего считывания. Что вида материалы. Известно, что эта информация хранится в файловой системе слишком, но способ быстрее, выполните поиск в нечто предназначенный для хранения такого рода данных: База данных SQL Server.

Майкл: Хорошо я рад, не хранит данные, хранящиеся в файле!

Paige: Почему?

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

Paige: Поэтому?

В голосовой громкими, но не довольно shouting Майкл отвечает.

Майкл: Поскольку означает серверного приложения необходимо знать ключ расшифровки, который означает, что вам в всевозможные игры действительно ужасной управления ключами. Если это вообще возможно необходимо оставаться вне этой бизнес! Существуют способы сделать это чисто с помощью несколько ключей, но я не требуется объяснить, прямо сейчас. Если когда-нибудь! Если действительно нужно понять это, чтение на как Microsoft выполняет шифрование файлов с помощью шифрованной файловой системы или EFS.

Paige: Мы может использовать EFS?

Майкл: Возможно. Это зависит от ваших клиентов. Поддерживают какие платформы на клиенте?

Paige: Мы будем поставлять в конце года в Windows и затем пару месяцев позже на Linux.

Майкл: Не Solaris?

Paige: Что такое Solaris?

Майкл sniggers и игнорирует ответ Paige.

Майкл: Нельзя использовать EFS, поскольку она требует учетные записи Windows. Поэтому необходимо шифрование данных, различные технологии. Он бы быть хорошо, если можно использовать EFS или даже API защиты данных, известные как DPAPI, поскольку и использовать же базовой технологии шифрования и можно легко шифрования и расшифровки данных с помощью ключей, производным от пароля пользователя. Ну хорошо. Давайте посмотрим, что мы можем сделать.

Paige: Мы используем библиотеки шифрования?

Майкл: Конечно же мы можем. На самом деле, полезно гораздо лучше чем что-нибудь слышали другие день.

Paige: Что?

Майкл: Кто-то запрос мне было бы OK, чтобы создать свой собственный алгоритм шифрования.

Paige: Нет, справа сказал?

Майкл: Само собой я сказал нет. Что можно ожидать мне сказать? Также сделанные он довольно ясно это полный нарушение политики SDL, и он должен не даже копию возможность использования доморощенными шифрования.

Paige: Так что мы делать?

Майкл: Так как клиентский код C#, может использовать пространство имен System.Security.Cryptography .NET. Она доступна в моно, что можно вызвать с Linux. Еще не и его попытка, но может сделать экспериментом. Бы также необходимо общаться с юристов убедитесь, что не проблемы лицензирования.

Paige: Какие проблемы лицензирования?

Майкл: Это код независимых производителей. Кто знает, какие says.Paige лицензии: ОК, поэтому мы шифрования данных с паролем пользователя отправить BLOB-объект...

Майкл: Но. Не. Nyet. Nada. Nope. Не используйте пароль пользователя в качестве ключа шифрования;Наследуйте пароль ключа шифрования. Пароли – способ слишком легко подобрать.

Paige: Как один "наследовать"ключ?

Улыбки Майкл.

Майкл: С помощью функции формирования ключа.

Paige: Mr. Smarty. Вам удалось немного более точное

Майкл: Что. Передать ключ в функции, например Rfc2898DeriveBytes в .NET наряду с расширяющего значения. Соли — просто уникальный номер, труднее выполнять некоторые атаки. Это число итераций, обычно в десятки, если не сотни тысяч. Функция принимает пароль и munges его тысячи раз с расширяющего значения. Это часто называется "растяжение пароль". В конце операции, которая обычно занимает меньше, чем второй, вы получаете некоторые байтов и использовать этих байтов как ключи. Ключа с наследованием не только упрощает трудно угадать ключа, он также затрудняет подключить высокоскоростной атаки подбора пароля, поскольку злоумышленник имеет слишком проходят число итераций. Поэтому если злоумышленник обычно удается проверить 1 000 000 паролей в секунду с число итераций 100 000, он это уменьшен до 10 в секунду! Здорово, правда?

Paige: Очень здорово. Так мы использовать этот ключ для шифрования данных, используя, скажем, расширенный стандарт шифрования?

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

Алексей другой злоумышленник безопасности проходит по muttering.

Алексей: Мастера безопасности всегда требуется перейти глубину в шифрования и т.п. Но злоумышленники слабой ссылки.

Майкл: Алексей справа, люди безопасности стремятся глубоко быстро внимательно ознакомьтесь с содержанием. И я совести как заряжена, но требуется извлечь это из способа.

Paige: Er OK. Что-нибудь еще?

Майкл: А также есть клейкие проблемы forgetting свои пароли пользователей. Я бы дать пользователям возможность архивации свой пароль клюшки USB или что-нибудь и сделать их помнить, что у нас нет пароля и, если они забыли нет возможности мы переноса данных обратно из недоставленных!

Paige: Мы сделать?

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

Paige: Сделать сейчас. Спасибо.

Майкл Говард (Michael Howard) является руководителем программы старший безопасности корпорации Майкрософт, основное внимание уделяется улучшения безопасности процесса и рекомендации. Он является соавтором пяти книг безопасности, включая "Записи безопасного кода для Windows Vista"«Безопасность цикла разработки»«Запись защищенный код»и «19 Deadly Sins программного обеспечения безопасности.»