По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
@media screen and (max-width: 736px){ .video-container { position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden; } .video-container iframe { position: absolute; top:0; left: 0; width: 100%; height: 100%; }} Мы живем в мире, в котором побеждают быстрые и общительные. Если говорить о приложениях, то достичь двух этих целей можно через WebSocket. WebSocket часто называют высокопроизводительным протоколом передачи данных, и он необходим для создания канала связи между клиентом и сервером. Так что же это значит, и какую роль WebSocket играет в безопасности API? Обо всем этом поговорим в статье. Что такое WebSocket? Исходя из общепринятого названия, WebSocket – это дуплексный протокол, который часто используется в клиент-серверном канале связи. Он считается двунаправленным, т.е. передача данных выполняется от клиента к серверу и наоборот.  Соединение, установленное с помощью WebSocket, сохраняется до тех пор, пока его не прервет любой из участников. Если одна сторона разрывает соединение, то другая не сможет продолжить коммуникацию, поскольку соединение автоматически разрывается для обоих участников. Чтобы инициировать соединение, WebSocket нужна поддержка со стороны HTTP. Это основа современной разработки веб-приложений, с непрерывным потоком данных и несинхронизированным трафиком. Для чего нужен WebSocket и в каких случаях от него лучше отказаться? WebSocket – это необходимый инструмент для клиент-серверного взаимодействия. Поэтому важно четко понимать его возможности и варианты использования. WebSocket подходит, если вы: Разрабатываете веб-приложения реального времени Самый популярный вариант использования WebSocket – это разработка приложений реального времени с постоянным отображением данных на стороне клиента. Внутренний сервер постоянно отправляет эти данные, а WebSocket реализует их бесперебойную передачу или отправку через уже открытое соединение. Использование WebSocket ускоряет передачу данных и улучшает производительность приложения.  Реальным примером использования такой возможности WebSocket является сайт по торговле биткоинами. WebSocket помогает обрабатывать данные, которые внутренний сервер отправляет клиенту. Создаете чат-приложения Разработчики чат-приложений выбирают WebSocket для выполнения таких операций, как одноразовый обмен и публикация/трансляция сообщений. Для отправки/получения сообщений используется одно и то же WebSocket соединение, поэтому такая коммуникация считается простой и быстрой. Работаете над игровым приложением При разработке игрового приложения крайне важно, чтобы сервер постоянно получал данные, не запрашивая обновления пользовательского интерфейса. WebSocket позволяет достичь этой цели без вмешательства в интерфейс приложения. Теперь, когда стало ясно, для каких целей можно использовать WebSocket, стоит поговорить о том, когда стоит присмотреться к другим решениям. WebSocket – далеко не самый лучший вариант, когда вам нужно получить старые данные, либо же данные требуются только для разовой обработки. В таких случаях лучше ограничиться HTTP-протоколами. WebSocket или HTTP? Поскольку для связи между приложениями используется и HTTP, и WebSocket, люди часто путаются и не могут определиться. Ниже приведено подробное описание каждого из вариантов. Как уже говорилось, WebSocket является двунаправленным и фреймовым протоколом. HTTP – это, наоборот, однонаправленный протокол, работающий над TCP-протоколом. Протокол WebSocket поддерживает непрерывную передачу данных, поэтому часто используется в разработке приложений реального времени. HTTP не зависит от состояния и используется для создания RESTful-приложений.  Передача данных в WebSocket происходит в обе стороны, так что он считается довольно быстрым протоколом. HTTP проигрывает по скорости WebSocket, поскольку в этом протоколе соединение устанавливается с одной стороны. WebSocket использует унифицированное TCP-соединение. Пока один из участников не разорвет это соединение, оно будет активным. HTTP создает разные соединения для разных запросов. После выполнения запроса соединение разрывается автоматически.  Как устанавливается WebSocket-соединение Процесс начинается с «рукопожатия» (handshake), в котором используется новая схема ws или wss. Если проводить параллель, то это примерно то же, что HTTP и защищенный протокол HTTP (HTTPS). В этой схеме клиенты и серверы следуют стандартному протоколу подключения WebSocket. Установка WebSocket-соединения начинается с дополнения HTTP-запроса несколькими заголовками: Connection: Upgrade, Upgrade: WebSocket, Sec-WebSocket- Key и т.д..  Соединение устанавливается в следующие этапы: 1. Запрос Заголовок Connection: Upgrade указывает на WebSocket-рукопожатие, а в Sec-WebSocket-Key содержится случайное значение в кодировке Base64. Это значение произвольно генерируется во время каждого WebSocket-рукопожатия. Частью запроса также является и заголовок ключа. Все вышеперечисленные заголовки образуют GET HTTP-запрос. Он выглядит примерно так: GET ws://websocketexample.com:8181/ HTTP/1.1 Host: localhost:8181 Connection: Upgrade Pragma: no-cache Cache-Control: no-cache Upgrade: websocket Sec-WebSocket-Version: 13 Sec-WebSocket-Key: b6gjhT32u488lpuRwKaOWs== В Sec-WebSocket-Version отмечается версия WebSocket-протокола, которой может пользоваться клиент.  2.Ответ В заголовок ответа Sec-WebSocket-Accept попадает значение, отправленное в заголовке запроса Sec-WebSocket-Key. Ответ привязан к спецификации протокола и активно используется для устранения вводящей в заблуждение информации. Другими словами, такая структура улучшает безопасность API и блокирует некорректно настроенные сервера от создания ошибок при разработке приложения.  HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: rG8wsswmHTJ85lJgAE3M5RTmcCE= WebSocket-протокол Протокол WebSocket – это тип фреймового протокола, который включает в себя различные дискретные блоки с данными. Для корректного функционирования в нем развертывается информационная часть пакета, тип фрейма и длина полезной нагрузки. Чтобы понять принципы работы WebSocket, необходимо разобраться, из чего он состоит. Ключевые элементы перечислены ниже. Бит FIN – это основная часть WebSocket. Он генерируется автоматически при создании подключения. ‍Биты RSV1, RSV2, RSV3 – эти биты зарезервированы для дополнительных возможностей. ‍Opcode – это часть каждого фрейма; объясняет процесс интерпретации данных полезной нагрузки для отдельного фрейма. Примеры распространенных значений: 0x00, 0x0, 0x02, 0x0a, 0x08 и т.д. БитMask активируется, когда один бит задан как 1. Для всех данных полезной нагрузки в WebSocket используется случайный ключ, выбранный клиентом. Ключ маски в сочетании с данными полезной нагрузки помогает обмениваться этими данными через операцию XOR. Это очень важно для безопасности API приложения, поскольку маскирование предотвращает неправильную интерпретацию кэша и т.н. «отравленный кэш». Разберем эти ключевые элементы подробнее. Длина полезной нагрузки Используется для кодирования общей длины данных полезной нагрузки в WebSocket. Отображается, когда закодированная длина данных меньше 126 битов. Если длина данных больше 126 битов, то для описания длины полезной нагрузки используются дополнительные поля.  Ключ маски Каждый фрейм, который клиент отправляет на сервер, маскируется 32-битным значением. Отображается, когда бит маски равен 1. Если бит маски равен 0, то ключ маски также будет нулевым.  Данные полезной нагрузки Все случайные данные приложения и расширения считаются данными полезной нагрузки. Эти данные используются клиентом и серверами для согласования и в процессе первых рукопожатий. Заключение WebSocket – это обновленный, быстрый и простой протокол для установки постоянной клиент-серверной связи. WebSocket гарантирует неразрывность подключения и высокую безопасность данных, даже при непрерывной передаче данных. Использование WebSocket предельно упрощает разработку приложений в режиме реального времени. В ряде случаев WebSocket проявляет себя лучше, чем HTTP, поскольку поддерживает дуплексную связь (например: сайты фондовой биржи, онлайн-игры, приложения для биткоинов, службы обмена сообщениями). WebSocket стал настоящим кладезем полезных возможностей при разработке. Он улучшает безопасность API и поддерживает множество ресурсов (после подключения к внешним библиотекам). Попробуйте заменить свои обычные протоколы обмена данными на WebSocket и оцените его преимущества.
img
Есть два типа алгоритмов шифрования, которые используются для шифрования данных. Это симметричные и асимметричные алгоритмы. В этой статье мы подробно изучим функции и операции алгоритмов симметричного шифрования. Чтобы зашифровать текстовое сообщение, требуются как шифр, так и ключ. При симметричном шифровании ключ используется для шифрования сообщения открытого текста в зашифрованный текст, и тот же ключ используется для дешифрования зашифрованного текста обратно в открытый текст. Хотя алгоритмы симметричного шифрования обычно используются во многих системах, основным недостатком является то, что в случае потери или кражи секретного ключа зашифрованный текст может быть взломан. Если злоумышленник сможет получить ключ, он сможет расшифровать сообщение и просмотреть его содержимое. Поэтому чрезвычайно важно, чтобы ключ всегда был в безопасности. Симметричные алгоритмы используют длину ключа в диапазоне от 40 до 256 бит. Эти длины ключей намного короче, чем те, которые используются в асимметричных алгоритмах. Однако симметричные алгоритмы способны обеспечить лучшую производительность, например, при более быстром шифровании данных, по сравнению с асимметричными алгоритмами. Чтобы лучше понять, как работают симметричные алгоритмы, давайте представим, что есть два пользователя, Алиса и Сергей Алексеевич, которые хотят обеспечить конфиденциальность сообщений, которыми они обмениваются. Оба пользователя знают о Pre-Shared Key (PSK) или секретном ключе до обмена сообщениями. На следующем рисунке демонстрируется, что Алиса использует секретный ключ для шифрования текстового сообщения перед его отправкой Сергею Алексеевичу: После того, как сообщение будет зашифровано, Алиса отправит его Сергею Алексеевичу, который будет использовать тот же PSK или секретный ключ, чтобы расшифровать сообщение и получить исходное текстовое сообщение, как показано ниже: Тот же процесс повторяется всякий раз, когда Сергей Алексеевич хочет отправить сообщение Алисе. Тот же ключ, который используется для шифрования данных, используется для дешифрования сообщения. Симметричные алгоритмы Симметричные алгоритмы могут шифровать данные, используя либо блочный шифр, либо потоковый шифр. Блочный шифр берет блок фиксированной длины открытого текстового сообщения и выполняет процесс шифрования. Эти блоки обычно являются 64-битными или 128-битными блоками. На следующем рисунке представлен блочный шифр: В свою очередь, потоковый шифр будет шифровать либо один бит, либо один байт за раз. Вместо того, чтобы шифровать весь блок открытого текста, представьте, что с помощью потокового шифра размер блока уменьшается до одного бита или одного байта. На следующем рисунке представлен потоковый шифр: Считается, что потоковые шифры выполняют шифрование данных быстрее, чем блочные шифры, поскольку они непрерывно шифруют данные по одному биту или одному байту за раз. Ниже приводится список симметричных алгоритмов и их характеристики: Data Encryption Standard (DES): это очень старый алгоритм симметричного шифрования, который шифрует данные с использованием блоков размером 64 бита и размером ключа 54 бита. Triple Data Encryption Standard (3DES): это более новая версия DES. 3DES выполняет процесс шифрования трижды. Это означает, что первый раунд берет данные открытого текста и выполняет шифрование для создания зашифрованного текста. Он будет использовать зашифрованный текст в качестве входных данных и снова выполнит его шифрование, что является вторым этапом. Он возьмет новый зашифрованный текст из второго раунда и выполнит его шифрование, чтобы создать окончательный результат, который завершает третий раунд шифрования, отсюда и название тройной DES. 3DES использует ключи размером 112 бит и 168 бит. Advanced Encryption Standard (AES): широко используется во многих современных системах передачи данных и протоколах. AES использует ключи размером 128, 192 и 256 бит. Он выполняет шифрование данных в блоках фиксированного размера: 128, 192 и 256 бит. AES считается намного более безопасным, чем алгоритмы шифрования DES и 3DES. Безопасный сетевой протокол Secure Shell (SSH) версии 2 использует алгоритм AES с режимом счетчика (AES-CRT) в качестве предпочтительного алгоритма шифрования данных. Software-Optimized Encryption Algorithm (SEAL): это еще один симметричный алгоритм. SEAL - это алгоритм потокового шифрования, который использует размер ключа 160 бит. Rivest Cipher (RC): это серия наборов шифров, созданных Роном Ривестом, таких как RC2, RC3, RC4, RC5 и RC6. Наиболее распространенным является RC4, потоковый шифр, использующий размер ключа до 256 бит. Асимметричные алгоритмы шифрования Асимметричные алгоритмы выполняют шифрование данных с использованием двух разных ключей в виде пары ключей. Это означает, что один ключ используется для шифрования данных, а другой-для расшифровки сообщения. Если какой-либо ключ потерян или украден, сообщение не будет взломано или прочитано. На следующем рисунке показан пользователь Алиса, использующий ключ для шифрования текстового сообщения: Когда целевой хост, Сергея Алексеевича, получает сообщение от отправителя, он будет использовать другой ключ для расшифровки сообщения, как показано на следующем рисунке: Асимметричные алгоритмы используют пару ключей, известную как открытый (public) и закрытый (private) ключи. Открытый ключ предоставляется любому, кто хочет связаться с вами, отсюда и название открытый ключ. Закрытый ключ хранится у вас. Только пользователи пары ключей могут шифровать и расшифровывать данные. Никакие другие ключи не могут быть использованы для расшифровки сообщения, зашифрованного вашим закрытым ключом. Важное примечание! Асимметричное шифрование использует размер ключа от 512 до 4096 бит. Однако рекомендуется размер ключа в 1024 бита или больше. Чтобы лучше понять принцип работы этих открытых и закрытых ключей, давайте представим, что есть два пользователя, Сергей Алексеевич и Алиса, которые хотят зашифровать данные между собой, используя асимметричное шифрование. Для начала предположим, что Алиса хочет отправить сообщение Сергею Алексеевичу. Для этого Сергей Алексеевич должен создать пару, открытого и закрытого ключей и поделиться открытым ключом с Алисой следующим образом: Закрытый ключ хранится у Сергея Алексеевича, а Алиса получает только открытый ключ Сергея Алексеевича. Алиса будет использовать открытый ключ Сергея Алексеевича для шифрования любого сообщения, которое она хочет отправить Сергею Алексеевичу. Когда Сергей Алексеевич получит сообщение, то он будет использовать свой закрытый ключ, чтобы расшифровать сообщение и прочитать его содержимое. На следующем рисунке показано, как Алиса отправляет Сергею Алексеевичу зашифрованное сообщение: Как показано на предыдущем рисунке, Алиса использовала открытый ключ Сергея Алексеевича для шифрования сообщения. Если злоумышленник перехватит зашифрованный текст во время передачи, сообщение будет в безопасности, поскольку злоумышленник не имеет закрытого ключа Сергея Алексеевича. Ниже приведены некоторые сетевые протоколы, использующие асимметричные алгоритмы: SSH Secure Sockets Layer (SSL) Internet Key Exchange (IKE) Pretty Good Privacy (PGP) Ниже приведен список асимметричных алгоритмов и их функции: Diffie-Hellman (DH): DH не является алгоритмом шифрования данных, а скорее используется для безопасной доставки пар ключей по незащищенной сети, такой как Интернет. Проще говоря, он позволяет Сергею Алексеевичу и Алисе согласовывать ключ, который может использоваться для шифрования сообщений, отправляемых между ними. DH использует ключи размером 512 бит, 1024 бит, 2048 бит, 3072 бит и 4096 бит. Ниже приведен список различных групп DH и их соответствующих размеров ключей: группа DH 1: 768 бит, группа 2 DH: 1024 бит, группа 5 DH: 1536 бит, группа 14 DH: 2048 бит, группа 15 DH: 3072 бит, и группа 16 DH: 4096 бит. Digital Signature Standard (DSS): DSS - это асимметричный алгоритм, который используется для цифровых подписей. Алгоритм цифровой подписи (DSA) - это алгоритм с открытым ключом, который использует схему подписи ElGamal. Размеры ключей варьируются от 512 до 1024 бит. Rivest-Shamir-Adleman (RSA): этот алгоритм шифрования был создан Ron Rivest, Adi Shamir, и Leonard Adleman. Он был разработан как алгоритм асимметричного шифрования, который использует пары открытого и закрытого ключей между устройствами. RSA использует ключи размером от 512 до 2048 бит. EIGamal: EIGamal - еще один алгоритм асимметричного шифрования, который использует пару открытого и закрытого ключей для шифрования данных. Этот алгоритм основан на процессе согласования ключей DH. Примечательной особенностью использования этого алгоритма является то, что он принимает открытый текст (input) и преобразует его в зашифрованный текст (output), который вдвое превышает размер входного сообщения. Elliptical Curve (EC): EC используется с асимметричным шифрованием. EC использует кривые вместо чисел. Поскольку мобильные устройства, такие как смартфоны, не имеют высокопроизводительного процессора и объема памяти, как компьютер, EC использует ключи меньшего размера.
img
В этой статье рассмотрим, как управлять учетными записями пользователей и групп в Linux. Также посмотрим различные базы данных, в которых хранится информация о пользователях и группах и что такое теневые пароли. Изначально в Linux было 2 файла /etc/password и /etc/group. В первом файле хранилось: Имя_пользователя : пароль : uid : gid : сведения (поле предназначено для персональных данных) : домашняя_папка : командная оболочк(которая запускается при входе пользователя в систему) Во втором файле хранилось: имя_группы : пароль : gid : члены_группы У группы может быть пароль, но данную функцию очень редко, кто использует, в таком случае пароль будет запрашиваться при смене членства в группе. Данные файлы плохи тем, что у всех пользователей системы, по умолчанию, есть права на чтение. Такие права необходимы потому, что разные пользователи, разные демоны и сервисы обращаются к данным файлам, чтобы брать оттуда информацию. Соответственно в этих файлах хранился пароль пользователя, хотя и в зашифрованном виде, но с помощью различных методов криптографии подбора можно было воспользоваться данным паролем, потому что у всех пользователей был на эти файлы доступ. Поэтому был создан механизм теневых паролей. Были созданы вот такие 2 файла: /etc/shadow и /etc/gshadow. И к этим двум файлам имеет полный доступ только пользователь root. Следовательно, теперь в файлах passwd и group указываются не пароли, а специальные символы, говорящие что пароли были перенесены в файлы shadow и gshadow. В новом файле shadow хранится побольше информации о пароле пользователя. Это: Логин Пароль Время после смены пароля – это если пароль сбрасывался после времени установки системы Минимальный срок действия пароля - как часто можно менять пароль, если, например, стоит 5 дней, то пароль можно менять не чаще, чем раз в 5 дней. Максимальный срок действия пароля – максимальное количество дней, по прошествии которых обязательно необходимо сменить пароль. Срок предупреждения – за сколько дней до истечения пароля система предупредит о том, что необходимо сменить пароль. Время работы с истекшим паролем – это параметр позволяет указанное число дней работать с истекшим паролем. Срок для блокировки пароля – данный параметр отвечает за время жизни самого пароля, например, пароль будет работать 100 дней, после этого заблокируется. Соответственно данные параметры можно при необходимости задавать при создании учетной записи пользователя и паролей. Если провести аналогию с операционной системой Windows, то подобные параметры в Windows мы можем задавать через GPO (Group Policy Object - набор правил или настроек, в соответствии с которыми производится настройка рабочей среды в операционных системах Windows). Отличие заключается в том, что в Windows эти параметры выставляются в абсолютных величинах числом, а в операционной системе Linux, относительно даты 1 января 1970 года. Ну и соответственно gshadow имеет следующую структуру, разделенную символом :. Имя группы Пароль зашифрованный Администраторы, те учетные записи, которые могут менять пароль группы или добавлять другие аккаунты Члены групп Следовательно, пароли могут хранится и в тех, и в тех файлах, отличие в том, что у пользователей есть доступ на чтение к файлам passwd и group, а к shadow и gshadow только у пользователя root. Данный механизм называется механизмом теневых паролей, и он присутствует во всех современных Linux системах. Теперь, посмотрим, как это выглядит в операционной системе. Заходим в файл passwd любым текстовым редактором, например, nano, без повышения привилегий. Возьмем пользователя: list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin Логин - list, значок X говорит о том, что пароль хранится в теневом файле. Далее 38 – id пользователя, 38 - gid, прочая информация - Mailing List Manager, домашняя папка пользователя - /var/list и оболочка которая используется при входе - /usr/sbin/nologin. Можно увидеть, что вместо оболочки у пользователя указан nologin – это означает, что пользователь не может войти, используя стандартный экран входа, используя стандартные средства. На картинке можно найти пользователя siadmin. Можно также увидеть все остальные параметры этого пользователя. У него совпадает uid и gid, это связанно с тем , что при создании пользователя создается одноименная группа. Можно, конечно, при создании указать, что пользователь будет входить в другую группу и не создавать одноименную, но по умолчанию она создается. В конце строчки мы можем увидеть /bin/bash, которая запускается при входе в систему. Можно обратить внимания на uid и gid все реальные пользователи их имеют числом выше 1000. Все пользователи, у которых число ниже – это служебные пользователи или созданные автоматически. В некоторых дистрибутивах Linux нумерация реальных пользователей начинается с 500. Посмотрим файл с группами, вводим команду nano /etc/group Данная база очень простая. Указано наименование группы, знак X говорит, о том, что пароль хранится в теневой базе, идентификатор группы и список пользователей в данной группе. Единственный нюанс - если пользователь входит в свою же группу, то после знака двоеточие пользователь не отображается. Далее файлы /etc/shadow и /etc/gshadow, данные файлы не редактируются с помощью текстовых редакторов, а через специальные команды. Данные файлы — это просто хранилище информации. Эти утилиты будут рассмотрены в следующем уроке. Зайти в эти файлы могут только пользователи имеющие права root или с помощью команды повышающей привилегии sudo. sudo nano /etc/shadow Теперь мы видим в данном файле через двоеточие: Имя пользователя * или зашифрованный пароль Срок с последнего изменения пароля в днях Минимальный срок изменения пароля, если 0, то сменить пароль можно сразу 99999 - срок действия пароля, 7 - количество дней за которое до истечения пароля придет предупреждение Символ * говорит о том, что под данным пользователем нельзя зайти стандартным способом, обычно это применяется для служебных аккаунтов, т.е вход вообще заблокирован под данным аккаунтом. Вот так вот реализуется механизм теневых паролей.
ЛЕТНИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59