По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
В сегодняшней статье речь пойдет о проприетарном протоколе компании Cisco Systems - SCCP – (Skinny Client Control Protocol), который предназначен для построения корпоративных телефонных сетей на основе продуктов Cisco, таких как: IP-Телефоны серии 7900 Софт-фоны Cisco IP communicator Cisco Unified Communications Manager Cisco Unity Стоит заметить, что в телефонии существует ещё один протокол с абсолютно идентичной аббревиатурой – SCCP – Signalling Connection and Control Protocol, однако данный протокол относится к сигнализации ОКС-7, тогда как SCCP – (Skinny Client Control Protocol) работает в стеке TCP/IP. Протокол SCCP занимает то же самое место в VoIP что и SIP, H.323 и MGCP и выполняет те же самые функции. Однако, в отличие от всех перечисленных протоколов, имеет гораздо более простой синтаксис и требует меньше компьютерных ресурсов для обработки своих сообщений. Как и большинство VoIP протоколов SCCP предназначен для обмена сигнальными сообщениями между клиентом и сервером в процессе установления и завершения звонка. В процессе передачи речевых данных SCCP не участвует, для этих целей служит протокол RTP - (Real-Time Transport Protocol). Кроме того, стоит отметить, что в SCCP не используется RTСP - (Real-Time Transport Control Protocol), который передает диагностическую информацию о текущем соединении. Для этих целей в SCCP имеются собственные механизмы. Как уже было замечено, Протокол SCCP имеет очень простой синтаксис. По заголовку того или иного сообщения можно однозначно определить в каком статусе находится текущее соединение, что делает Протокол SCCP крайне удобным при траблшутинге. Для передачи сообщений SCCP используется TCP (Transmission Control Protocol) well-known порт 2000. Соединение по SCCP невозможно рассматривать без сервера (чаще всего CUCM). SCCP имеет большое множество сообщений и отправляет их на сервер по каждому поводу, ожидая руководства к дальнейшим действиям. Выглядит это примерно так: IP-Телефон: StationInit: Кто-то снял телефонную трубку Сервер: StationD: Включи зуммер Сервер: StationD: Выведи на дисплее сообщение “Введите номер”“ IP-Телефон: StationInit: Начинаю вызывать абонента, первая цифра его номера – “4” IP-Телефон: StationInit: Вторая цифра – “7” Каждое событие фиксируется вплоть до получения сервером сообщения о том, что телефонная трубка снова в исходном положении. Обратите внимание, что сообщения SCCP отправляются как в сторону клиента, так и сторону сервера, поэтому для определения источника сообщения используются идентификаторы. StationInit, если источником является клиент и StationIniD, если источником является сервер телефонии. Таким образом появляется возможность в мельчайших деталях отследить любой звонок, совершенный внутри корпоративной сети. Приведем пример некоторых сообщений SCCP: 0x0000 - Keep Alive Message – Отправляется от сервера к клиенту сразу после регистрации 0x0001 - Station Register Message – Запрос регистрации на сервере 0x0002 - Station IP Port Message – Отправляет клиент. Номер UDP порта для RTP сессии 0x0006 - Station Off Hook Message – Отправляет клиент. Снятие телефонной трубки 0x0099 - Station Display Text Message – Выводит на дисплей сообщение “Введите номер” 0x0082 - Station Start Tone Message – Включает зумер. 0x27 - Station Soft Key Event Message (new call/end call) – Если это начало вызова, то данное сообщение содержит первую цифру номера вызываемого абонента. Может также содержать промежуточные цифры номера, а также запрос на разрыв соединения (end call) 0x107 - Station Connection Statistics Request Message – Отправляется клиентом. Запрос диагностической информации (информации о задержках и потерях медиа-пакетов, джиттер-буфере, принятых и отправленных пакетах и т.д. ). Это тот самый механизм, который компенсирует отсутствие RTCP. Как видно из данного примера, MessageID каждого сообщения крайне точно описывает соответствующее ему событие, поэтому чтение трассировок SCCP обычно не составляет труда. Стоит также добавить, что некоторые компании, занимающиеся разработкой голосовых решений, такие как: Digium, SocketIP и Symbol Technologies, добавили поддержку протокола SCCP в свои продукты.
img
Так как технология VoIP базируется на технологии IP и использует Интернет, она так же наследует все её уязвимости. Последствия этих атак, умноженные на уязвимости, которые следуют из особенностей архитектуры сетей VoIP, заставляют задуматься о способах усиления защиты и тщательном анализе существующей сети IP . Более того, добавление любого нового сервиса, например, голосовой почты в недостаточно защищенную инфраструктуру может спровоцировать появление новых уязвимостей. Риски и уязвимости, наследованные из IP сетей. Плохой дизайн сети Неправильно спроектированная сеть может повлечь за собой большое количество проблем, связанных с использованием и обеспечением необходимой степени информационной безопасности в VoIP сетях. Межсетевые экраны, к примеру, являются уязвимым местом в сети, по причине того, что для правильного функционирования VoIP сети необходимо открывать дополнительные порты, и межсетевые экраны, не поддерживающие технологию VoIP, способны просто оставлять открытыми ранее используемые порты даже после завершения вызовов. Уязвимые IP АТС и шлюзы Если злоумышленник получает доступ к шлюзу или АТС, он так же получает доступ к захвату целых сессий (по сути – возможность прослушать вызов), узнать параметры вызова и сети. Таким образом, на безопасность АТС необходимо обратить наибольшее внимание. Убытки от таких вторжений могут достигать значительных сумм. Атаки с повторением пакетов Атака с повторением пакета может быть произведена в VoIP сети путем повторной передачи серии корректных пакетов, с целью того, что бы приёмное устройство произвело повторную обработку информации и передачу ответных пакетов, которые можно проанализировать для подмены пакетов (спуфинга) и получения доступа в сеть. К примеру, даже при условии зашифрованных данных, существует возможность повторения пакета с логином и паролем пользователем пользователя, и, таким образом, получения доступа в сеть. Риски и уязвимости, характерные для VoIP сетей Подмена и маскировка пакетов Использование подменных пакетов с неправильным IP-адресом источника могут использоваться для следующих целей: Перенаправление пакетов в другую сеть или систему Перехват трафика и атака «man-in-the-middle» (рисунок ниже) Маскировка под доверенное устройство - «Перенос ответственности» за атаку на другое устройство Фаззинг(Fuzzing) - Нагрузка системы пакетами с не полностью корректной информацией , что вызывает ошибки в работе системы при их обработке, например такие как задержки при работе, утечки информации и полный отказ системы Сканирование на предмет возможных уязвимостей - Сканирование портов может дать злоумышленнику начальные данные для проведения полноценной атаки, такие как модели операционных систем, типы используемых сервисов и приложений. При нахождении уязвимого сервиса злоумышленник может получить доступ к управлению всей сетью, и, как следствию, к возможности причинить большой ущерб. Низкая надежность по сравнению с традиционными сетям - Для достижения качественной связи, пакетам, содержащим голосовую и видео нагрузку присваивается высокий приоритет в механизмах качества обслуживания QoS (качества обслуживания). Однако, надежность VoIP и сетей передачи данных стремится к 99,9%, что ниже чем степени надежности в традиционных телефонных сетях, у которых данный параметр стремится к 99,999%. Конечно, разница не столь велика, однако за год эта разница выливается в дополнительные 8.7 часа, во время которых система не работает. Но необходимо понимать, что далеко не каждому предприятию это может повредить. Атаки DDoS(Distributed Denial of Service) - Атаки DoS и DDoS происходят когда злоумышленник посылает крайне большие объемы случайных сообщений на одно или несколько VoIP устройств из одного или нескольких мест (DoS и DDoS соответственно). Атака из нескольких мест используется с помощью «зомби» - скомпрометированные сервера и рабочие станции, которые автоматически посылают вредоносные запросы в соответствии с потребностями злоумышленника. Успешной такая атака считается в момент, когда количество запросов превышает вычислительную мощность объекта, в следствие чего происходит отказ в обслуживании для конечных пользователей. VoIP системы особенно уязвимы для таких атак, т.к они имеют высокий приоритет в технологии обеспечения качества обслуживания QoS, и для нарушения их работы требуется меньшее количество трафика нежели для обычных сетей передачи данных. Примером DoS атаки против именно VoIP сети может быть атака при множественной передачи сигналов отмены или установления вызова, которая так же имеет название SIP CANCEL DoS атака. CID спуфинг - Один из типов атак с подменой пакетов построен на манипуляциях с идентификатором звонящего (Caller ID или CID), который используется для идентификации звонящего до ответа. Злоумышленник может подменить этот идентификатор текстовой строкой или телефонным номером и может использоваться для осуществления различных действий, вредящих сети или владельцу предприятия. Кроме того, в VoIP сетях нет возможности скрыть этот идентификатор, т.к телефонные номера включены в заголовках пакетов в протоколе SIP. Это позволяет злоумышленнику со сниффером пакетов, например tcpdump узнать телефонные номера даже если они имеют параметр «private» у сервисного провайдера. Заключение - Использование IP-телефонии приносит огромное количество пользы для любой организации – решение на базе VoIP более масштабируемы, легко интегрируемы и их стоимость ниже классических решений. Однако, любая организация, внедрив VoIP решение должна быть в курсе возможных угроз и предпринимать всевозможные усилия для увеличения степени информационной безопасности в сети. Были перечислены лишь некоторые методы атак, но необходимо понимать, что часто используются комбинации атак и практически ежедневно разрабатываются новые атаки. Но понятно уже сейчас, что за данной технологией будущее и она вряд ли уступит пальму первенства другой технологии в обозримом будущем.
img
Универсальный уникальный идентификатор (UUID - Universally Unique Identifier) – это форма идентификатора, которую можно с уверенностью признать уникальной для большинства практических целей. Даже если два UUID были сгенерированы в двух различных средах двумя сторонами, они имеют ничтожные шансы на то, чтобы оказаться идентичными. Именно поэтому UUID считаются универсально уникальными. В этой статье мы с вами рассмотрим характеристики UUID, то, как работает их уникальность, и сценарии, для которых они могут упростить процесс идентификации ресурсов. Несмотря на то, что мы будем рассматривать UUID с точки зрения программного обеспечения, которое взаимодействует с записями базы данных, их также можно применять и в других ситуациях, где требуется децентрализованная генерация уникальных идентификаторов.  Что такое на самом деле универсальный уникальный идентификатор (UUID)? UUID – это просто значение, которое с уверенностью можно рассматривать как уникальное. Вероятность обнаружения двух одинаковых UUID настолько мала, что ее можно просто игнорировать. Вы можете встретить и другие термины для UUID, например, GUID (Globally Unique Identifier, - глобальный уникальный идентификатор) (такой вариант предпочитает Microsoft), однако смысл и свойства остаются теми же.  Истинный UUID – это уникальный идентификатор, который был сгенерирован и представлен в стандартизированном формате. Допустимые UUID определены в спецификации RFC 4122. Она описывает алгоритмы, которые можно использовать для генерации UUID, которые бы сохраняли свою уникальность в различных реализациях без участия основной выдающей стороны.  В RFC есть пять различных алгоритмов. У каждого из этих алгоритмов есть свой собственный механизм генерации значений. Ниже приведено краткое описание доступных «версий»: Версия 1 – Time-Based – объединяет метку времени, тактовую последовательность и значение, которое является характерным для генерирующего устройства (как правило, это MAC-адрес); таким образом создается выходное значение, которое является уникальным для этого хоста на определенный момент времени. Версия 2 – DCE Security – эта версия была создана как модификация Версии 1, которую можно использовать в среде распределенных вычислений (DCE - Distributed Computing Environment). Применяется не так часто.  Версия 3 – Name-Based (MD5) – MD5 хеширует «пространство имен» и «имя» для того, чтобы создать значение, которое будет уникальным для этого имени в пределах пространства имен. Попытка создать другой UUID с тем же пространством имен и тем же именем приведет к тому, что вы получите идентичный результат. Так что, этот метод дает воспроизводимые результаты.  Версия 4 – Random – большинство современных систем выбирают именно эту версию, поскольку здесь для получения выходного значения используется источник случайных и псевдослучайных чисел. Вероятность того, что будут созданы два одинаковых UUID, ничтожна мала.   Версия 5 – Name-Based (SHA-1) – эта версия в какой-то степени похожа на Версию 3, но здесь для хеширования пространства имен и имени используется более криптостойкий алгоритм SHA-1.  Хоть в RFC алгоритмы и обозначены как «версии», это ни в коем случае не значит, что всегда нужно использовать Версию 5, потому что она вроде бы самая новая. Выбор версии зависит от вашего варианта использования; зачастую выбирается Версия 4 из-за случайного характера генерации значений. Именно это делает ее идеальным вариантом для простых сценариев из разряда «дайте мне новый идентификатор».  Алгоритмы генерации на выходе дают 128-битное целое число без знака. Но при этом UUID чаще всего рассматривают как шестнадцатеричные строки. Также их можно хранить в виде двоичной последовательности из 16 символов. Ниже приведен пример UUID: 16763be4-6022-406e-a950-fcd5018633ca Значение записано с помощью пяти групп буквенно-числовых символов, разделенных дефисом. Последние не являются обязательными составляющими строки; их наличие связано с историческими тонкостями спецификации UUID. А еще они значительно облегчают зрительное восприятие идентификатора.  Варианты использования UUID В основном UUID используют для децентрализованного создания уникальных идентификаторов. Вы можете создать UUID где угодно и с уверенностью сказать, то он уникальный, независимо от того, был он создан на вашем сервере, в клиентском приложении или в вашей базе данных.  UUID упрощают определение и обеспечение идентичности объекта в изолированных средах. Согласно сложившейся практике, большинство приложений в качестве первичного ключа используют целочисленное поле с автоинкрементом. В таком случае, когда вы создаете новый объект, то вы не узнаете его идентификатор до тех пор, пока не добавите его в базу данных. С помощью UUID вы можете определить идентификатор в вашем приложении намного раньше.  Ниже приведен демонстрационный пример, написанный на PHP, который покажет разницу. Для начала давайте посмотрим на целочисленную систему: class BlogPost {    public function __construct(        public readonly ?int $Id,        public readonly string $Headline,        public readonly ?AuthorCollection $Authors=null) {} } #[POST("/posts")] function createBlogPost(HttpRequest $Request) : void {    $headline = $Request -> getField("Headline");    $blogPost = new BlogPost(null, $headline); } Мы должны инициализировать свойство  $Id как  null , поскольку мы не будем знать его фактический идентификатор до тех пор, пока не добавим его в базу данных. Это не самый идеальный вариант –  $Id не должен обнуляться, из-за этого экземпляры  BlogPost находятся в незавершенном состоянии.  Перейдем к UUID; это решит проблему: class BlogPost {    public function __construct(        public readonly string $Uuid,        public readonly string $Headline,        public readonly ?AuthorCollection $Authors=null) {} } #[POST("/posts")] function createBlogPost(HttpRequest $Request) : void {    $headline = $Request -> getField("Headline");    $blogPost = new BlogPost("16763be4-...", $headline); } Идентификаторы публикаций теперь можно создавать прямо в приложении, не думая о том, что они могут повториться. Это гарантирует, что экземпляры объекта всегда находятся в действительном состоянии и что ну нужно присваивать ID нулевое значение. Также эта модель упрощает обработку транзакционной логики; дочерние записи, которым нужна ссылка на родителя (например, взаимосвязи автора ( Author ) нашей публикации), могут быть добавлены немедленно, и не нужно обращаться к базе данных для того, чтобы получить идентификатор родителя.  В перспективе большую часть логики данного приложения-блога можно будет переместить на клиентскую сторону. Возможно, внешний интерфейс сможет поддерживать полностью автономное создание черновиков, по сути создавая экземпляры  BlogPost , которые будут временно сохраняться на устройстве пользователя. Теперь клиент может создавать UUID для публикации и, если ему нужно будет восстановить подключение к сети, передавать его на сервер. Если в обозримом будущем клиент получит копию черновика с сервера, то он сможет сравнить ее с любым сохранившимся локальным состоянием, так как он уже будет знать UUID.  С помощью UUID можно комбинировать данные из различных источников. Объединение таблиц базы данных и кэшей, которые используют целочисленные первичные ключи, может оказаться довольно трудоемким процессом, и, плюс ко всему, в процессе могут возникать ошибки. UUID обеспечивает уникальность идентификатора не только внутри таблиц, но и на уровне всего пространства. Это делает их более предпочтительным вариантом для дублируемых структур и данных, которые часто необходимо перемещать из одной системы хранения в другую. Нюансы, возникающие при встрече UUID с базами данных Преимущества UUID довольно привлекательны. Однако есть несколько подводных камней, о которых следует помнить при использовании UUID в реальных системах. Один из значительных факторов в пользу целочисленных идентификаторов – их легко масштабировать и оптимизировать. Механизмы управления базами данных могут с легкостью индексировать, сортировать и фильтровать список чисел, которые идут одно за другим. А вот про UUID такого сказать нельзя. Прежде всего, UUID в четыре раза больше, чем целое число (36 против 4 байтов); для больших наборов данных этот факт уже может быть существенным моментом. Такие значения намного сложнее сортировать и индексировать, особенно если речь идет о случайных UUID, которые являются самыми популярными. Их случайный характер говорит о том, что они не имеют естественного порядка. Если вы используете UUID в качестве первичного ключа, то это может навредить производительности при индексировании. Все эти проблемы могут усугубляться в хорошо нормализованной базе данных, которая активно использует внешние ключи. В таком случае у вас может оказаться большое количество реляционных таблиц, каждая из которых хранит ссылки на ваши 36-байтные UUID. В конечном счете, дополнительная память, которая необходима для выполнения операций объединения и сортировки, может негативно сказаться на производительность вашей системы.   У вас есть возможность немного сгладить нежелательные последствия, сохранив свои UUID в виде двоичных данных. Это значит, что вместо столбца  VARCHAR(36) у вас будет столбец  BINARY(16) . Некоторые базы данные, например, PostgreSQL, имеют встроенный тип данных  UUID ; другие, например, MySQL, имеют специальные функции, которые преобразовывают строку UUID в двоичную форму и наоборот. Такой подход, конечно, более эффективный, но не забывайте, что вам по-прежнему придется использовать дополнительные ресурсы для хранения и выборки данных.  Эффективной может оказаться стратегия, когда вы в качестве первичных ключей оставляете целые числа, но при этом добавляете дополнительное поле UUID для того, чтобы ваше приложение могло на него ссылаться. Реляционные таблицы ссылок могут использовать идентификаторы для повышения производительности, пока ваш код извлекает и вставляет объекты верхнего уровня с UUID. Здесь все зависит от вашей системы, ее масштаба и ваших приоритетов: если вам нужна децентрализованная генерация идентификаторов и простейшее слияние данных, то лучший вариант – это UUID, но вам следует помнить и об обратной стороне медали. Заключение UUID – это уникальные значения, которые можно использовать для децентрализованной генерации идентификаторов. Совпадение идентификаторов возможно, но вероятность такого события настолько мала, что ее можно не учитывать. Если бы вы генерировали один миллиард UUID в секунду в течении 100 лет, то вероятность обнаружить дубликат составила бы около 50% при условии наличия достаточной энтропии.  У вас есть возможность использовать UUID для установления идентичности независимо от вашей базы данных до того, как вы добавите объект в базу данных. Такой подход упрощает код прикладного уровня и не допускает того, что объекты в вашей системе будут идентифицированы неправильно. UUID также содействуют репликации данных, гарантируя уникальность вне зависимости от хранилища данных, устройства или среды, чего нельзя сказать о целочисленных ключах, которые действуют на уровне таблиц.  Несмотря на то, что UUID широко используются при разработке программного обеспечения, они не являются идеальным решением. Новички часто зацикливаются на возможности обнаружения совпадений, но это не должно быть вашим главным аргументом, если только ваша система не настолько чувствительна, что вам просто необходимо гарантировать уникальность идентификаторов.  Более очевидная проблема для большинства разработчиков заключается в хранении и извлечении сгенерированных UUID. Примитивное использование  VARCHAR(36) (или  VARCHAR(32) , если вы удалите дефисы) в долгосрочной перспективе может оказывать негативное влияние на ваше приложение, так как большая часть попыток оптимизировать индексацию базы данных будут неэффективными. Изучите встроенные средства обработки UUID в вашей системе управления базой данных для того, чтобы максимально улучшить производительность вашего программного решения. 
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59