FreePBX 13 пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ
Слишком длинный поисковый запрос.
По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Поскольку многие люди и устройства подключаются к Интернету, и мы все обмениваемся данными, конфиденциальность является серьезной проблемой для всех. Представьте себе, что вы отправляете конфиденциальный файл другу через Интернет, но вас беспокоит, не перехватывает ли злоумышленник ваши сообщения и не просматривает ли он их. Для обеспечения безопасности ваших данных используется криптография, гарантирующая, что доступ к данным имеет только уполномоченное лицо. С помощью криптографии мы можем шифровать наши сообщения, чтобы сохранить их в тайне от несанкционированных сторон, таких как злоумышленники. Даже если злоумышленник сможет перехватить наши зашифрованные данные, он не сможет просмотреть содержимое зашифрованного сообщения.
В этой статье вы узнаете о различных стандартах и алгоритмах шифрования и о том, как они используются для обеспечения конфиденциальности данных в сети. Кроме того, вы узнаете о методах, которые злоумышленники используют для получения секретного ключа и дешифрования. Кроме того, вы узнаете о различных методах хеширования, которые используются для проверки целостности данных. Затем вы изучите как симметричные, так и асимметричные алгоритмы, а также инфраструктуру открытых ключей (Public Key Infrastructure - PKI).
Понимание необходимости криптографии
В мире информационной безопасности конфиденциальность данных - очень актуальная тема. Все обеспокоены тем, как используются их данные и какие меры безопасности используются для защиты их данных в системах и сетях. В компьютерном мире криптография применяется для защиты наших данных от посторонних лиц.
Что такое криптография? Это методы кодирования чувствительной информации с помощью математических алгоритмов, которые затрудняют понимание результата другими людьми, кроме тех, кто уполномочен.
Криптография уже много лет используется различными военными организациями для защиты их связи. Сегодня, в эпоху цифровых технологий, мы используем криптографию, чтобы защитить коммуникации между источником и получателем.
Чтобы лучше понять, представьте, что вы создаете документ на своем компьютере. Если кто-либо получит доступ к документу, он сможет прочитать его содержимое, и для этого документа нет никакого уровня конфиденциальности. Для защиты данных может применяться процесс шифрования для преобразования данных в формат, доступный для чтения только вам и тем, кто имеет соответствующие полномочия. Это означает, что, если злоумышленник получит зашифрованный файл, то не сможет прочитать фактическое содержимое файла, но увидит зашифрованное сообщение.
Любые данные (сообщения), которые не зашифрованы, называются открытым текстом. Если кто-то получит доступ к открытому тексту, он сможет прочитать его содержимое. Чтобы зашифровать сообщение, открытый текст обрабатывается специальным алгоритмом, который преобразует сообщение с открытым текстом в нечитаемый формат. Этот алгоритм называется шифром. Шифр также использует ключ для выполнения процесса шифрования, чтобы преобразовать сообщение в зашифрованный текст. Зашифрованный текст - это зашифрованный формат открытого текста, который не может прочитать никто, кроме тех, кто имеет к нему доступ.
Ключ используется в процессе шифрования, поскольку он добавляет дополнительный уровень безопасности к зашифрованному тексту. Без ключа злоумышленник не сможет выполнить криптоанализ, который представляет собой метод, используемый для дешифровки, взлома или шифрования данных.
На следующем рисунке показан процесс криптографии:
Шифрование данных и криптография играют важную роль в современном мире. Мы используем криптографию для защиты данных в состоянии покоя и данных в движении (при передаче). Данные в состоянии покоя - это терминология, используемая для описания данных, которые хранятся на носителе без доступа приложения или пользователя, в то время как данные в движении - это данные, которые передаются от источника к месту назначения, например, по сети.
Существует множество технологий шифрования, таких как Microsoft BitLocker, Apple FileVault и Linux Unified Key Setup (LUKS), которые встроены в их собственные операционные системы. Эти собственные технологии шифрования позволяют пользователю создать логический зашифрованный контейнер хранения в своей операционной системе. Пользователи могут помещать файлы в контейнер и шифровать их, блокируя контейнер. Этот метод позволяет пользователям защитить свои данные в состоянии покоя от любых злоумышленников, которые могут поставить под угрозу компьютер жертвы.
Существует множество безопасных и небезопасных сетевых протоколов, которые передают ваши данные по сети. Небезопасные сетевые протоколы не шифруют ваши данные и передают их в виде открытого текста. Если злоумышленник сможет перехватить сетевые пакеты, злоумышленник сможет увидеть все ваши сообщения в виде открытого текста.
В следующем рисунке показан захват пакета, содержащего трафик Telnet внутри Wireshark:
Представьте, что вы являетесь злоумышленником. Вы можете использовать такой инструмент, как Wireshark, для повторной сборки всех пакетов, показанных на предыдущем рисунке, между исходным и конечным хостами. Это позволит вам увидеть весь сетевой диалог между источником (192.168.0.2) и получателем (192.168.0.1) следующим образом:
Как показано на предыдущем скриншоте, мы можем видеть диалог между клиентом и сервером Telnet. Содержимое, красного цвета, - это то, что отправляется от клиента на сервер, в то время как содержимое, синего цвета, - это то, что отправляется с сервера обратно клиенту. Wireshark имеет функцию отслеживания потока пакетов и представления информации в виде преобразования для нас в удобочитаемом формате. На скриншоте обратите внимание, что мы можем видеть логин и пароль пользователя для входа, который отправляется по сети с помощью Telnet.
Элементы криптографии
Многие думают, что криптография используется для шифрования данных в компьютерном мире. Это утверждение верно, но криптография также имеет дополнительные ключевые преимущества для защиты данных, такие как:
Конфиденциальность
Целостность
Аутентификация источника
Невозможность отказа от отвественности
Конфиденциальность определяется как сохранение чего-либо, например, объекта или данных, в тайне от посторонних лиц. В вычислительном мире этого можно достичь с помощью алгоритмов шифрования данных, просто зашифровав текстовое сообщение с помощью шифра и ключа. Если неавторизованное лицо или злоумышленник получает зашифрованные данные (зашифрованный текст) без ключа, то он не сможет расшифровать зашифрованное сообщение.
Конфиденциальность позволяет нам отправлять защищенные сообщения (данные) между источником и получателем без необходимости беспокоиться о том, перехватывает ли кто-то наши логины и пароли во время их передачи по сети. Шифрование данных позволяет нам защитить наши данные от различных типов атак, таких как Man in the Middle (MiTM). Как только данные будут зашифрованы, злоумышленник не сможет просматривать содержимое фактических данных.
Целостность играет жизненно важную роль в области информационной безопасности. Это помогает нам определить, изменяются ли данные или нет, когда они передаются от источника к месту назначения. В эпоху цифровых технологий пользователи всегда отправляют сообщения определенного типа между одним устройством и другим. Даже операционная система на хост-устройствах всегда обменивается информацией в сети. Представьте, что вы отправляете сообщение другу через мессенджер на вашем смартфоне. Как ваш друг узнает, что сообщение не было изменено неавторизованным лицом в процессе передачи? Это серьезная проблема, и, к счастью, существует метод, известный как хеширование, который позволяет устройству проверять целостность входящего сообщения (данных) от источника.
Аутентификация - это процесс подтверждения вашей личности в системе. Без аутентификации любой человек сможет получить доступ к устройству и выполнять любые действия без какой-либо ответственности. В криптографии аутентификация используется для того, чтобы помочь нам проверить и подтвердить источник или отправителя сообщения, что называется аутентификацией источника. Сообщение может быть подписано цифровой подписью с помощью цифрового сертификата, принадлежащего отправителю. Когда адресат получает сообщение, получатель может использовать информацию, содержащуюся в цифровом сертификате источника, для проверки подлинности сообщения. Другими словами, чтобы определить, действительно ли сообщение исходило от отправителя, а не от злоумышленника.
Невозможность отказа от ответственности (Non-repudiation) используется для предотвращения отрицания пользователем того, что он выполнили какое-либо действие. Типичный пример: представьте, что во время обеда вы посещаете местную кофейню, чтобы выпить напиток. В кассе вы создаете заказ, производите оплату и получаете счет с заказанными вами товарами. Вся информация о транзакции, которую вы только что завершили, печатается в квитанции (счете), такая как время и дата, количество и тип товаров, имя кассира и местонахождение отделения. Эта информация также записывается в базе данных кофейни, поэтому вы не сможете отрицать свое посещение и покупку в этом магазине.
Теперь немного обсудим характеристики различных типов шифров, которые используются в алгоритмах шифрования данных.
Шифр подстановки
В каждом типе алгоритма шифрования (шифра) используется секретный ключ, обеспечивающий конфиденциальность сообщения. В шифре подстановки секретный ключ - это смещение буквы в исходном сообщении. Это означает, что количество букв в текстовом сообщении не изменяется после того, как оно проходит через шифр и становится зашифрованным текстом.
Чтобы лучше понять, как работает шифр подстановки, давайте взглянем на очень известный шифр, шифр Цезаря, который существует уже довольно давно. Его методы шифрования просто сдвигают букву алфавита. Шифрование с использованием ключа k = 3. Буква «Е» «сдвигается» на три буквы вперёд и становится буквой «З». Твёрдый знак, перемещенный на три буквы вперёд, становится буквой «Э», и так далее:
Исходный алфавит: АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
Шифрованный: ГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВ
Оригинальный текст:
Съешь же ещё этих мягких французских булок, да выпей чаю.
Шифрованный текст получается путем замены каждой буквы оригинального текста соответствующей буквой шифрованного алфавита:
Фэзыя йз зьи ахлш пвёнлш чугрщцкфнлш дцосн, жг еютзм ъгб.
Поэтому, если злоумышленник перехватит зашифрованный текст во время передачи по сети, не зная секретного ключа, то сообщение останется в безопасности.
Перестановочный шифр
Другой тип шифра - перестановочный шифр. Этот шифр не сдвигает ни одной буквы сообщения. Он просто переставляет буквы в каждом слове. Один тип перестановочного шифра известен как столбчатый шифр транспонирования. Этот шифр сохраняет одни и те же буквы каждого слова на месте, но создает столбец фиксированного размера. Рассмотрим простой текст hello world, и давайте применим технику простого столбчатого преобразования, как показано ниже
Символы простого текста располагаются горизонтально, а зашифрованный текст создается в вертикальном формате: holewdlolr. Теперь получатель должен использовать ту же таблицу, чтобы расшифровать зашифрованный текст в обычный текст.
Другой разновидностью перестановочного шифра является шифр рельсового ограждения. Этот шифр записывает выходные данные в зигзагообразном формате. Например, результат записывается по диагонали, начиная слева направо. Используя наш пример предложения, thequickbrownfoxjumpsoverthelazydog (без пробелов), еще раз в качестве нашего открытого текста и ключа в виде трех рельсов, мы получим следующий результат в данном типе шифрования:
На предыдущем рисунке, показано, как слова написаны по диагонали. Чтобы создать зашифрованный текст, сообщение читается от верхней строки до последней строки. Это создаст следующий зашифрованный текст:
tubnjsrldhqikrwfxupoeteayoecoomvhzg
И снова, если злоумышленник перехватит зашифрованный текст, сообщение останется в безопасности до тех пор, пока злоумышленник не узнает (получит) секретный ключ.
Git Flow - это специальная система ветвления для Git. Она помогает команде лучше контролировать и добавлять различные версии проекта. Узнайте, как ее использовать!
Что такое Git Flow
Git Flow - это один из множества стилей рабочих процессов Git - набор моделей ветвления для Git. Это огромный фреймворк для крупных проектов, который можно использовать для нужд вашей команды. Git Flow описывает цикл выпуска проекта и добавляет определенные роли в различные ветви. Он определяет, когда и как ветки взаимодействуют друг с другом. В этой модели существует два типа веток: Master и Develop. Develop - это интеграционная ветка для функций. Master хранит историю официального релиза. Этот дизайн ветвления был опубликован Винсентом Дриссеном в 2009 году и с тех пор стал очень популярным.
Основные ветви
Основная ветвь (Master branch) хранит официальную историю релизов. Она содержит сокращенную версию вашего проекта и является основой модели ветвления с бесконечным сроком жизни.
Ветвь разработки (Develop branch) является интеграционной ветвью для функций. Она содержит полную историю вашего проекта и также имеет бесконечный срок жизни. Когда код в этой ветви становится стабильным и готовым к релизу, изменения сливаются в основную ветвь и помечаются номером релиза.
Поддерживающие ветви
Ветви функций (Feature branches) создаются для каждой новой функции. Их родительская ветвь — ветвь разработки. Функции никогда не должны взаимодействовать напрямую с основной ветвью.
Ветвь релиза (Release branch) создается, когда достаточно функций для релиза. Она позволяет одной команде работать над текущим релизом, пока другая команда продолжает работать над функциями для следующего релиза. Родительская ветвь релиза также — ветвь разработки. В этой ветви происходит непрерывная доставка.
Ветви исправлений (Hotfix branches) являются ветвями для обслуживания. Они создаются для быстрого исправления ошибок в продакшн-релизе. Эти ветви позволяют команде исправлять ошибки без прерывания рабочего процесса или ожидания следующего релиза. Их родительская ветвь — основная ветвь. Ветви исправлений — единственные ветви, которые можно создавать непосредственно от основной ветви. Вы можете автоматизировать создание ветвей исправлений: как только появляется ошибка, ветвь исправлений автоматически создается.
Почему стоит использовать Git Flow
Git Flow упрощает параллельную разработку, поскольку изолирует новую разработку от выпущенного проекта. Вы можете работать с любой версией проекта. Новая разработка осуществляется в ветвях функций и сливается обратно, когда разработчик удовлетворен кодом.
Ваша команда сможет лучше сотрудничать и тратить меньше времени на управление версиями проекта, если использует простую и понятную стратегию ветвления, такую как Git Flow.
Вы всегда можете зафиксировать изменения и создать новую ветвь функции, когда нужно прервать свою работу. Вы можете вернуться к своей функции в любое время.
Ветви исправлений позволяют вашей команде вносить экстренные изменения. Вам не нужно беспокоиться о том, что вы случайно объедините новую разработку одновременно.
Проблемы, которые решает Git Flow
Плохое качество кода
Недовольные клиенты
Удержание знаний
Менталитет "Не моя проблема"
Бессмысленная работа
Как реализовать Git Flow
Существует множество приложений, поддерживающих модель ветвления Git Flow и имеющих специфические настройки для Git Flow (например, SourceTree, SmartGit или GitKraken). Выберите подходящее приложение для вашей операционной системы, чтобы инициализировать Git Flow.
Настройте проект, следуя этим шагам:
Начните использовать git-flow, клонируя существующий git-репозиторий.
Создайте пустую ветвь разработки, чтобы дополнить основную ветвь master. Отправьте её на сервер.
Разработка новых функций начинается с ветви разработки. Каждая функция находится в своей собственной ветви. Отправляйте ветви функций в git-репозиторий для резервного копирования.
Слейте ветвь функции обратно в ветвь разработки, когда функция завершена.
Создайте ветвь релиза, когда функции готовы к релизу. Родительская ветвь — это ветвь разработки.
Слейте ветвь релиза в основную ветвь и пометьте её номером версии. После этого слейте её обратно в ветвь разработки, чтобы сохранить прогресс с момента релиза. Ветвь релиза будет удалена.
Если нужно внести критические изменения, создайте ветвь исправлений. Форкните ветвь непосредственно от основной ветви. Когда изменения завершены, слейте ветвь исправлений в обе ветви — основную и ветвь разработки (или текущую ветвь релиза). Пометьте основную ветвь обновленным номером версии.
Распространенные ошибки при использовании Git Flow
Не все члены команды используют Git Flow. Важно, чтобы вся команда понимала и использовала один и тот же рабочий процесс для гладкого развития проекта.
Git Flow настроен для конкретного продукта. Эта настройка может быть слишком сложной для нового разработчика.
У команды слишком много функций, и они не успевают завершить их до релиза. Разработка уходит от продакшн-среды.
Привет! В этой статье мы рассмотрим Partitions и Calling Search Space (CSS) в Cisco Unified Communications Manager (CUCM) , которые являются частью механизма Class of Control и применяются при разграничении доступов.
/p>
Partitions можно рассматривать как набор маршрутов, паттернов, номеров DN, каждый из которых может принадлежать к определенным разделам. CSS же представляет собой упорядоченный список Partitions. Чтобы совершить вызов Partition вызываемой стороны должен принадлежать CSS вызывающей стороны.
При попытке выполнить вызов CUCM просматривает CSS вызывающей стороны и проверяет, принадлежит ли вызываемая сторона Partition’у в CSS. Если это так, вызов направляется в Translation Pattern. Если нет, то вызов отклоняется или Translation Pattern игнорируется. Подробнее про маршрутизацию и Translation Pattern’ы можно прочить в наших статьях.
Можно назначить разные CSS IP-телефонам, номерам DN, переадресации всех вызовов (Call Forwarding All – CFA), переадресации без ответа (Call Forwarding No Answer - CFNA), переадресации вызовов в случае занятости (Call Forwarding Busy - CFB), шлюзов и паттернам Translation Pattern.
Разделы и CSS облегчают маршрутизацию вызовов, поскольку они делят план маршрутизации на логические подмножества на основе организации, местоположения и/или типа вызова.
Чтобы лучше понять, как все это работает, рассмотрим пример.
Пример использования Partitions и CSS
Этот пример иллюстрирует, как можно разграничить маршрутизацию звонка между пользователями в пределах организации.
Допустим, у нас имеется три группы пользователей:
Стажеры (могут звонить только на внутренние номера)
Работники (могут звонить на внутренние номера и совершать междугородние звонки)
Руководство (могут звонить на внутренние номера, совершать междугородние и международные звонки)
Для каждого направления необходимо иметь Partition:
Внутренние номера –Partition_1
Междугородние звонки – Partition_2
Международные звонки – Partition_3
Эти разделы отражают все возможные направления звонков. Все телефоны (номера DN) мы поместим в раздел Partition_1 (внутренние номера).
На шлюзе сконфигурировано два паттерна Route Patterns:
Все звонки кроме международных (поместим в раздел Partition_2)
Международные звонки (поместим в раздел Partition_3)
На основании этих ограничений создаем три CSS:
CSS1 содержит разделы: Partition_1
CSS2 содержит разделы: Partition_1, Partition_2
CSS3 содержит разделы: Partition_1, Partition_2, Partition_3
Настраиваем телефоны:
На телефонах стажеров указываем CSS1
На телефонах работников указываем CSS2
На телефонах руководства указываем CSS3
Теперь совершим тестовые звонки с заданными настройками.
Тест 1: Звонок с телефона стажера
Набран внутренний номер:
Вызываемый абонент: Partition_1
Разделы CSS вызывающего абонента: Partition_1
Результат: Вызов выполнится (раздел Partition_1 включен в CSS)
Набран междугородний номер:
Вызываемый абонент: Partition_2
Разделы CSS вызывающего абонента: Partition_1
Результат: Вызов не выполнится (раздел Partition_2 не включен в CSS)
Набран международный номер:
Вызываемый абонент: Partition_3
Разделы CSS вызывающего абонента: Partition_1
Результат: Вызов не выполнится (раздел Partition_3 не включен в CSS)
Тест 2: Звонок с телефона работника
Набран внутренний номер:
Вызываемый абонент: Partition_1
Разделы CSS вызывающего абонента: Partition_1, Partition_2
Результат: Вызов выполнится (раздел Partition_1 включен в CSS)
Набран междугородний номер:
Вызываемый абонент: Partition_2
Разделы CSS вызывающего абонента: Partition_1, Partition_2
Результат: Вызов выполнится (раздел Partition_2 включен в CSS)
Набран международный номер:
Вызываемый абонент: Partition_3
Разделы CSS вызывающего абонента: Partition_1, Partition_2
Результат: Вызов не выполнится (раздел Partition_3 не включен в CSS)
Тест 3: Звонок с телефона руководства
Набран внутренний номер:
Вызываемый абонент: Partition_1
Разделы CSS вызывающего абонента: Partition_1, Partition_2, Partition_3
Результат: Вызов выполнится (раздел Partition_1 включен в CSS)
Набран междугородний номер:
Вызываемый абонент: Partition_2
Разделы CSS вызывающего абонента: Partition_1, Partition_2, Partition_3
Результат: Вызов выполнится (раздел Partition_2 включен в CSS)
Набран международный номер:
Вызываемый абонент: Partition_3
Разделы CSS вызывающего абонента: Partition_1, Partition_2, Partition_3
Результат: Вызов выполнится (раздел Partition_3 включен в CSS)
Таким образом, получается, что вызовы совершать можно, только если раздел Partition вызываемого абонента находится в CSS вызывающего.
Настройка
Начнем с настройки Partitions. В Cisco Call Manager Administration переходим во вкладку Call Routing → Class of Control → Partition и нажимаем Add New. Здесь в поле Name указываем название для раздела и нажимаем Save.
Теперь перейдем к созданию CSS. Для этого выберем вкладку Call Routing → Class of Control → Calling Search Space. Тут указываем имя в поле Name, из поля Available Partitions перенесем в поле Selected Partitions разделы, которые должен содержать CSS. Перенос осуществляется при помощи стрелочек. После чего нажимаем кнопку Save для сохранения.
После того как мы создали CSS и Partitions на наших серверах, применим их к устройствам. Рассмотрим это на примере настройки телефона. Для этого выбираем телефон, который мы хотим настроить во вкладке Device → Phone. В его настройках выбираем желаемую линию и нажимаем на нее, например Line [1] . В открывшемся окне в строке Route Partition в выпадающем списке выбираем раздел для этой линии. После этого нажимаем Save и возвращаемся назад.
Теперь нам осталось применить к телефону CSS. Здесь, в настройках телефона в поле Device Information находим строчку Calling Search Space и в выпадающем меню выбираем созданный ранее CSS. Затем сохраняем и применяем настройки.
Аналогично мы можем настраивать Partitions и CSS на других устройствах, паттернах и номерах.
