По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Привет! В предыдущей статье, посвященной основам WLAN, вы узнали о беспроводных клиентах, формирующих ассоциации с беспроводными точками доступа (AP) и передающих данные по Wi-Fi. В сегодняшней статье мы рассмотрим анатомию защищенного соединения в беспроводных сетях. Основы защищенного соединения в беспроводных сетях. Все клиенты и точки доступа, которые соответствуют стандарту 802.11, могут сосуществовать на одном канале. Однако не всем устройствам, поддерживающим стандарт 802.11, можно доверять. Нужно понимать, что данные передаются не как в проводной сети, то есть непосредственно от отправителя к получателю, а от приемника до ближайшей точки доступа, располагаемой в зоне досягаемости. Рассмотрим случай, изображенный на рисунке ниже. Беспроводной клиент соединяется с каким-либо удаленным объектом с использованием зашифрованного пароля. В сети так же присутствуют два не доверенных пользователя. Они находятся в пределах диапазона сигнала клиента и могут легко узнать пароль клиента, перехватив данные, отправленные по каналу. Особенности беспроводной связи позволяют легко перехватывать пересылаемые пакеты злоумышленниками. Если данные передаются по беспроводным каналам, как их можно защитить от перехвата и взлома? В стандарте 802.11 предусмотрены механизмы безопасности, которые используются для обеспечения доверия, конфиденциальности и целостности беспроводной сети. Далее более подробно разберем методы беспроводной безопасности. Аутентификация. Для того чтобы начать использовать беспроводную сеть для передачи данных, клиенты сначала должны обнаружить базовый набор услуг (BSS), а затем запросить разрешение на подключение. После чего клиенты должны пройти процедуру аутентификации. Зачем это делать? Предположим, что ваша беспроводная сеть позволяет подключиться к корпоративным ресурсам, располагающим конфиденциальной информацией. В этом случае доступ должен предоставляться только тем устройствам, которые считаются надежными и доверенными. Гостевым пользователям, если они вообще разрешены, разрешается подключиться к другой гостевой WLAN, где они могут получить доступ к не конфиденциальным или общедоступным ресурсам. Не доверенным клиентам, вообще рекомендуется запретить доступ. В конце концов, они не связаны с корпоративной сетью и, скорее всего, будут неизвестными устройствами, которые окажутся в пределах досягаемости вашей сети. Чтобы контролировать доступ, WLAN могут аутентифицировать клиентские устройства, прежде чем им будет разрешено подключение. Потенциальные клиенты должны идентифицировать себя, предоставив информацию учетных данных для точки доступа. На рисунке ниже показан основной процесс аутентификации клиента. Существует много методов аутентификации по «воздуху». Есть методы, которые требуют ввода только кодового слова, которое является общим для всех доверенных клиентов и AP. Кодовое слово хранится на клиентском устройстве и при необходимости передается непосредственно в точку доступа. Что произойдет, если устройство будет утеряно или похищено? Скорее всего, любой пользователь, владеющий данным устройством, сможет аутентифицироваться в сети. Другие, более строгие методы аутентификации требуют взаимодействия с корпоративной базой данных пользователей. В таких случаях конечный пользователь должен ввести действительное имя пользователя и пароль. В обычной жизни, при подключении к любой беспроводной сети, мы неявно доверяем ближайшей точке доступа проверку подлинности нашего устройства. Например, если вы на работе, используя устройство с беспроводной связью, найдете WI-Fi, скорее всего, подключитесь к ней без колебаний. Это утверждение верно для беспроводных сетей в аэропорту, торговом центре, или дома - вы думаете, что точка доступа, которая раздает SSID, будет принадлежать и управляться организацией, в которой вы находитесь. Но как вы можете быть уверены в этом? Как правило, единственная информация, которой вы владеете- это SSID транслируемый в эфир точкой доступа. Если SSID знаком, вы, скорее всего, подключитесь к ней. Возможно, ваше устройство настроено на автоматическое подключение к знакомому SSID, так что оно подключается автоматически. В любом случае, есть вероятность невольно подключиться к тому же SSID, даже если он рассылается злоумышленником. Некоторые атаки, организованные злоумышленником, осуществляются посредством подмены точки доступа. «Поддельная» точка доступа, аналогично настоящей, так же рассылает и принимает запросы, и затем осуществляет ассоциацию клиентов с АР. Как только клиент подключается к «поддельной» AP, злоумышленник может легко перехватить все данные передаваемые от клиента к центральному узлу. Подменная точка доступа может также отправлять поддельные фреймы управления, которые деактивируют подключенных клиентов, для нарушения нормального функционирования сети. Чтобы предотвратить этот тип атаки, называемой «man-in-the-middle», клиент должен сначала идентифицировать точку доступа, и только потом подключиться, используя логин и пароль (пройти аутентификацию). На рисунке ниже показан простой пример данного защищенного подключения. Также, клиент, получая пакеты управления, должен быть уверен, что они отправлены с проверенной и доверенной точки доступа. Конфиденциальность сообщений. Предположим, что клиент изображенный на рисунке 3, должен пройти аутентификацию перед подключением к беспроводной сети. Клиент должен идентифицировать точку доступа и её фреймы управления для подключения перед аутентификацией себя на устройстве. Отношения клиента с точкой доступа могли бы быть более доверительными, но передача данных по каналу все еще подвергается опасности быть перехваченной. Чтобы защитить конфиденциальность данных в беспроводной сети, данные должны быть зашифрованы. Это возможно кодированием полезной нагрузки данных в каждом фрейме, пересылаемым по WI-Fi, непосредственно перед отправкой, а затем декодирования ее по мере поступления. Идея заключается в использование единого метода шифрования/дешифрования как на передатчике, так и на приемнике, чтобы данные могли быть успешно зашифрованы и расшифрованы. В беспроводных сетях каждый WLAN может поддерживать только одну схему аутентификации и шифрования, поэтому все клиенты должны использовать один и тот же метод шифрования при подключении. Вы можете предположить, что наличие одного общего метода шифрования позволит любому клиенту сети перехватывать пакеты других клиентов. Это не так, потому что точка доступа при подключении к клиенту высылает специальный ключ шифрования. Это уникальный ключ, который может использовать только один клиент. Таким образом точка доступа рассылает каждому клиенту свой уникальный ключ. В идеале точка доступа и клиент- это те два устройства, которые имеют общие ключи шифрования для взаимодействия. Другие устройства не могут использовать чужой ключ для подключения. На рисунке ниже конфиденциальная информация о пароле клиента была зашифрована перед передачей. Только точка доступа может успешно расшифровать его перед отправкой в проводную сеть, в то время как другие беспроводные устройства не могут. Точка доступа также поддерживает «групповой ключ» (group key), когда ей необходимо отправить зашифрованные данные всем клиентам ячейки одновременно. Каждый из подключенных клиентов использует один и тот же групповой ключ для расшифровки данных. Целостность сообщения Шифрование данных позволяет скрыть содержимое от просмотра, при их пересылке по общедоступной или ненадежной сети. Предполагаемый получатель должен быть в состоянии расшифровать сообщение и восстановить исходное содержимое, но что, если кто-то сумел изменить содержимое по пути? Получатель не сможет определить, что исходные данные были изменены. Проверка целостности сообщений (MIC)- это инструмент безопасности, который позволяет защитить от подмены данных. MIC представляет собой способ добавления секретного штампа в зашифрованный кадр перед отправкой. Штамп содержит информацию о количестве битов передаваемых данных. При получении и расшифровке фрейма устройство сравнивает секретный шифр с количеством бит полученного сообщения. Если количество бит совпадает, то соответственно данные не были изменены или подменены. На рисунке ниже изображен процесс MIC. На рисунке показано, что клиент отправляет сообщение точке доступа через WLAN. Сообщение зашифровано, «741fcb64901d». Сам процесс MIC заключается в следующем: Исходные данные –«P@ssw0rd». Затем вычисляется секретный шифр MIC (штамп). После вычисления штампа происходит шифрование данных и MIC завершается. На стороне получателя следует расшифровка, вычисление MIC и сравнение штампов.
img
Если вы относительно новичок в программировании, то у вас наверняка могут возникнуть вопросы – с чего лучше начать, что следует изучить в первую очередь, что на самом деле означает «front-end разработка» и так далее? В этой статье я поделился семью вопросами, которые возникли у меня при первых попытках программировать примерно. И я постарался ответить на них как можно более подробно, чтобы помочь вам начать свое путешествие в мир программирования. Какой язык программирования я должен изучить в первую очередь? Как мне кажется, это не имеет такого большого значения! Конечно, есть языки, которые новичкам будет освоить легче, например, Python, Ruby или JavaScript. Но большинство языков программирования очень схожи, и их основные концепции очень похожи. В большинстве случаев синтаксис (ключевые слова, структура и семантика) языков различаются гораздо больше, чем основные понятия. Как только вы познакомитесь с основами любого языка программирования, вам будет намного проще освоить другой язык. Также очень вероятно, что язык, который вы изучите первым, не станет тем, который вы будете использовать в конечном итоге в работе. Например, я когда-то начинал с Python, баловался JavaScript и PHP, но сейчас для работы я использую Java. Конечно, вряд ли вы захотите начать с изучения какого-то непонятного и сложного языка, который мало где используется. Однако вы не ошибетесь, если начнете с популярного современного языка, такого как Python, Java, Ruby и JavaScript. Самое главное не в том, какой язык вы будете изучать первым, а в том, что вы собственно начинаете и постепенно улучшаете свои навыки со временем. Если вкратце, то сосредоточьтесь на освоении основных концепций программирования, а не на синтаксисе конкретного языка. Как классифицируются языки программирования? Хотя большинство языков программирования имеют много общего, существует множество способов их организации по различным категориям. Эти категории используются для группировки языков с определенной функцией или характерной чертой, несмотря на то, что два таких языка могут очень сильно отличаться друг от друга. Вот 5 самых полезных категорий языков программирования, о которых следует знать новичкам: компилируемые языки программирования; интерпретируемые языки программирования; языки программирования со статической типизацией; языки программирования с динамической типизацией; объектно-ориентированные языки программирования. Ниже приведено краткое описание каждой категории, а также краткий список языков для них. Компилируемые языки программирования Компилируемый язык – это язык, который использует компилятор для преобразования исходного кода (кода, который пишете вы сами) в форму, которую может понять компьютер (часто такую форму называют машинным кодом). Как правило, вывод компилятора сохраняется в одном или нескольких файлах, которые называют исполняемыми файлами. Исполняемые файлы могут быть упакованы для продажи или распространения в стандартных форматах, которые упрощают пользователям загрузку, установку или запуск программы. Важной характеристикой процесса компиляции является тот факт, что исходный код компилируется до того, как программа будет выполнена конечным пользователем. Иными словами, компиляция кода обычно происходит отдельно от выполнения программы. Популярные компилируемые языки: C C++ Java Rust Go Интерпретируемые языки программирования Интерпретируемый язык – это тот язык, который использует интерпретатор для преобразования исходного кода (кода, который пишете вы сами) в форму, которую может понять компьютер. Интерпретатор – это программа, которая берет какую-то часть исходного кода, написанного на определенном языке программирования, преобразует его в форму, понятную компьютеру, и сразу же выполняет его в режиме реального времени. Основное различие между компиляцией и интерпретацией состоит в том, что при интерпретации нет промежутка между преобразованием и выполнением кода – оба эти процесса происходят непосредственно во время выполнения программы, то есть «на лету». А при компиляции преобразование кода происходит до (иногда задолго до) выполнения программы. Популярные интерпретируемые языки: Python JavaScript Ruby Подробнее про компиляцию и интерпретацию можно прочесть в этой статье. Языки программирования со статической типизацией Статическая типизация означает, что типы данных переменных в языке программирования известны и устанавливаются во время компиляции программы. Кроме того, тип данных переменной во время компиляции или выполнения программы меняться не может. Например, каждый раз при создании переменной на языке со статической типизацией вам нужно явно указать тип данных этой переменной. Это может быть целое число, строка, логическая переменная и т.д. Этот процесс называется объявлением переменной. Как только вы объявляете тип данных переменной, она может хранить только этот тип данных на протяжении всего выполнения программы. Популярные языки со статической типизацией: C C++ Java Языки программирования с динамической типизацией Динамическая типизация означает, что типы данных переменных устанавливаются непосредственно во время выполнения программы, или времени выполнения. Типы данных переменных явно не указываются в исходном коде, и переменные могут быть на лету переопределены для хранения значений любого типа данных. Популярные языки с динамической типизацией: Python JavaScript Ruby Объектно-ориентированные языки программирования Объектно-ориентированное программирование (ООП) – это подход программирования, который позволяет программистам создавать некоторые «объекты» и в дальнейшем работать с ними. Объект здесь – это представление или модель чего-либо, что программист должен описать при помощи кода. Это, вероятно, звучит немного абстрактно, а все потому, что это так и есть. Практически все здесь можно смоделировать как «объект» в коде. Объекты часто представляют собой реальные вещи, такие как товары для продажи в магазине или покупатели, покупающие эти товары. Объекты также могут представлять и цифровые объекты, такие как веб-формы, и даже более абстрактные вещи, такие как конечные точки URL-адреса, сетевые сокеты и т.д. Объектно-ориентированно программирование обычно реализуется на языке с использованием классов. Вы можете представлять себе класс как шаблон (или модель) для типа создаваемого объекта. Класс содержит набор атрибутов (свойств и характеристик), определяющих каждый объект класса. Классы также содержат набор методов (функций), позволяющих выполнять какие-либо действия над конкретными объектами класса. Например, класс «Товар» может иметь следующие атрибуты: Артикул товара (уникальный идентификатор каждого товара) Наименование товара (описательное название для каждого товара) Тип товара Цена товара Скидка на товар Как уже было сказано, класс – это всего лишь шаблон для создания объектов. Процесс создания объекта с использованием класса в качестве шаблона называется созданием экземпляра. Вы можете создать сколько угодно объектов из одного и того же класса, и каждый созданный объект будет известен как экземпляр этого класса. Экземпляр обычно хранится в коде как обычная переменная, которую вы можете использовать по мере необходимости, взаимодействуя с его атрибутами и методами. Продолжая наш пример, вы можете создать несколько объектов типа «Товар» при помощи класса «Товар». Каждый товар будет иметь свой собственный набор значений атрибутов, таких как артикул, наименование, тип, цена и скидка. Представление структурированных наборов данных таким объектно-ориентированным способом, как правило, является интуитивно понятным способом для программистов при написании и организации своего кода. Скорее всего, это связано с тем, что люди обычно хорошо мыслят с точки зрения идентифицируемых сущностей, существующих в реальном мире. В чем разница между front-end, back-end и full-stack разработкой? Как разработчик-новичок, вы, наверняка, просматривали вакансии в сфере технологий и замечали, что очень часто употребляются термины «front-end», «back-end» и «full-stack». Эти термины обычно относятся к той части приложения, над который вы будете работать. Более того, они также подразумевают то, что вы будете работать над программным приложением, чаще всего мобильном или веб-приложением. «Front-end», или клиентская часть приложения, относится к тем частям приложении, с которыми пользователи (также известные как «клиенты») взаимодействуют напрямую. Для веб-приложения front-end – это набор веб-страниц (и функций), которые отображаются в браузере пользователя. Для мобильного приложения front-end - это набор экранов, с которыми пользователь взаимодействует через свое мобильное устройство. Задачи front-end разработки включают в себя проектирование взаимодействия с пользователем, создание пользовательского интерфейса, сетевое взаимодействие на стороне клиента, интеграцию и использование библиотек на стороне клиента, а также сбор/проверку/отправку пользовательского ввода. Как front-end разработчик, вы будете выполнять именно эти задачи, в основном, используя HTML для описания структуры веб-страницы, CSS для добавления стилей и JavaScript для добавления интерактивности. Серверная часть относится к тем частям приложения, которые работают, что называется за кадром, и не доступны непосредственно пользователю/клиенту. «Back-end», или серверная часть, обычно включает в себя веб-сервер, который обрабатывает HTTP-соединения, полученные от внешнего клиента (как правило, веб-браузера). Веб-сервер обрабатывает эти подключения и направляет их к внутреннему коду, который отвечает за логику, которая нужна для того, чтобы ответить клиенту. Эта часть серверной части называется маршрутизацией или API (интерфейс программирования приложений). Сам внутренний код представляет собой самостоятельную цельную базу кода, которая используется как единое целое. Однако в зависимости от архитектуры приложения этот код может работать как набор функций без сервера, работающих в облачном сервисе, а не как самостоятельная кодовая база. Внутренний код проверяет пользовательский ввод, применяет бизнес-логику, взаимодействует с хранилищем данных, таким как база данных, и формирует ответ, который отправляется обратно внешнему клиенту. Теперь, когда мы выяснили, что такое front-end и back-end, то понять, что такое full-stack, или полностековая, разработка будет намного легче! Full-stack просто-напросто включает в себя как front-end, так и back-end. Понятие «full-stack» (полный стек) происходит от понятия «stack» (стек), который является сокращенной формой «software stack» (программный стек). Программный стек – это набор инструментов, сред, языков программирования и операционных систем, которые используются для поддержки приложения. Какие программные стеки самые популярные? Теперь, когда мы выяснили, что такое программный стек, мы можем кратко обсудить некоторые популярные варианты, из которых вы потом можете выбрать. LAMP-стек (Linux, Apache, MySQL, PHP) LAMP-стек - это проверенный временем стек, который является отраслевым стандартом back-end стека, в основе которого лежит операционная система Linux. Кроме того, используется веб-сервер Apache для обработки веб-запросов и направления их в кодовую базу PHP. Данные хранятся в базе данных MySQL – бесплатной реляционной базе данных с открытым исходным кодом. Этот стек хорошо подходит для относительно стандартизированных веб-сайтов, содержащих контент, таких как блоги. Вы могли заметить, что я не упомянул интерфейсные инструменты в качестве части данного стека. Это означает лишь то, что LAMP-стек – это back-end стек. MEAN-стек (MongoDB, Express.js, Angular.js, Node.js) MEAN-стек – это более современный стек, который использует для хранения данных неструктурированную базу данных MongoDB. Используется Express.js в качестве back-end каркаса веб-приложения и Angular.js для front-end. И наконец, Node.js используется для запуска JavaScript на серверной части. Основное преимущество MEAN-стека – это то, что все компоненты изначально предназначены для работы с языком программирования JavaScript через JSON (нотация объектов JavaScript). Обратите внимание, что компоненты данного стека ориентированы как на front-end (Angular.js), так и на back-end (MongoDB, Express.js, Node.js), поэтому MEAN-стек можно считать полным стеком. MERN-стек (MongoDB, Express.js, React.js, Node.js) Как вы можете заметить, MERN-стек очень похож на MEAN-стек. Отличие только в том, что он использует библиотеку React.js в качестве front-end, вместо Angular.js. Этот стек хорошо подходит для разработчиков, которым нравится React за его гибкий и интуитивно понятный стиль создания пользовательских интерфейсов. Известные фреймворки Я хотел бы воспользоваться моментом и рассказать вам о двух популярных back-end фреймворках (не стеках), которые вы могли бы включить или заменить для определенных компонентов стеков, описанных выше. SpringBoot – это java-феймворк (с технической точки зрения это частный случай более широкой среды Spring), который отлично подходит для back-end разработки Java-кода для мобильных и веб-приложений. Если вы новичок в Java, то я настоятельно рекомендую вам с ним ознакомиться. Django – это Python-фреймворк, специально созданный для использования с языком программирования Pyhton. Если вы любите создавать приложения именно на Pyhton, то вам определенно стоит обратить на него внимание. Как разработчики вместе работают над одним кодом, не находясь в разных местах? Когда я только начал программировать, я открыл текстовый редактор Python на своем локальном компьютере и создал один файл, в которой вместил весь код своего проекта. Однако, я быстро понял, что такой файл плохо управляем, поэтому я разделил его на несколько файлов Pyhton .py (или, как их называют, модулей). Когда я программировал вместе с коллегами, то они обычно сидели позади меня, пока я писал код, или я сидел позади них. А если нам нужно было обменяться фрагментами кода или файлами, то мы просто отправляли их друг другу по электронной почте. Прошли годы, прежде чем я узнал, что разработчики успешно могут сотрудничать, а часто это происходит и вовсе удаленно. Ключом к успешной совместной работе над программным кодом является использование системы контроля версий (VCS – Version Control System). VCS – это инструмент, отслеживающий изменения, которые несколько разработчиков постепенно вносят в файл кода, и позволяющий разработчикам эффективно работать вместе над одним и тем же набором файлов. Системы контроля версий создают репозиторий, в котором хранятся данные, необходимые для воссоздания любой версии файлов кода в том виде, в каком они находились в определенные моменты времени. Это и называется контролем версий. Системы контроля версий – это универсальные инструменты, поскольку они выполняют несколько полезных функций, помогающих командам разработчиков: отслеживание внесенных в файл кода изменений; возможность легко делиться изменениями с другими разработчиками и получать доступ к изменениям, внесенным другими; простые способы объединения изменений кода, внесенных несколькими разработчиками или командами; полное резервное копирование кода проекта по мере его развития с течением времени, а также эффективное восстановление любой предыдущей версии кода; легкое управление конфликтными обращениями к коду, возникающими в одних и тех же строках одних и тех же файлов; различные другие инструменты для улучшения совместной работы и эффективности команды. Есть множество вариантов систем контроля версий. Вы, наверняка слышали об одной из них – GitHub. На самом деле сам по себе GitHub – это не система контроля версий. GitHub – это компания, которая предоставляет онлайн-хостинг для проектов, использующих систему контроля версий. GitHub получил свое название от конкретной системы контроля версий, которую он использует – Git. Первая версия Git появилась в 2005 году и со временем превратилась в самую известную и популярную систему контроля версий в мире. На сегодняшний день Git используется подавляющим большинством команд разработчиков. Это важный инструмент, который стоит изучить, если вы планируете занимать программированием на профессиональном уровне. Имеет ли значение, какую операционную систему я использую? Когда дело доходит до обучения программированию новичка, то я бы ответил на этот вопрос также, как и на первый. Я считаю, что не так важно какая у вас операционная система, важнее то, что вы можете начать учиться уже сейчас с тем, что вы имеете. Но при этом я ощущаю, что мой ответ будет интерпретирован как отговорка, если я на этом остановлюсь. Давайте предположим, что вы пытаетесь принять решение о том, какую ОС вам лучше выбрать для программирования. Принимая во внимание тот факт, что есть множество субъективных причин, по которым люди выбирают ту или иную ОС, на мой взгляд, очень полезной может оказаться операционная система, которая может обеспечить доступ к качественному терминалу командной строки. Именно по этой причине я предпочитаю по возможности для разработки использовать Unix-подобные операционные системы, такие как Linux или MacOS. Полное раскрытие, например, я разрабатываю в основном на MacOS. Я обосную это тем, что важным навыком программирования является рабата с командной строкой (во многом похожа на использование Git). Полнофункциональная и интуитивно понятная командная строка является основной частью разработки программного обеспечения. На мой взгляд, в Linux и MacOS встроены лучшие современные командные строки, нежели в Windows. Какой текстовый редактор или IDE следует использовать? Текстовые редакторы и IDE (интегрированные схемы разработки) сильно изменились за последние годы, и разработчики выявляют фаворитов по многим причинам. Одна из причин – определенный редактор или среда разработки были созданы специально под какой-то язык программирования или какую-то инфраструктуру. Другая причина – ваша компания использует определенный редактор, и это будет именно тот, который вы выучили и используете. Лично я понял, что я выбирал, отталкиваясь именно от последней причины. Если вы в основном работаете с интерпретируемыми языками с динамической типизацией, такими как Python, JavaScript, Ruby или PHP, то я рекомендую вам начать с такого графического редактора, как Sublime Text или Visual Studio Code. Это два самых популярных текстовых редактора. Они предоставляют множество функций и настроек, которые облегчат вашу жизнь как разработчика. Если вы работаете с Java, то я рекомендую вам Eclipse или IntelliJ IDEA. Они предлагают множество функций, которые были созданы специально для работы с Java. И наконец, независимо от того, какой редактор вы выберите для своей основной работы, я рекомендую немного изучить Vim. Vim – это текстовый редактор, предназначенный для использования непосредственно в терминале командной строки. Конечно, в данном случае нужно чуть больше времени для того, чтобы к нему привыкнуть, потому что там нужно использовать команды клавиатуры Vim для взаимодействия с вашими файлами вместо того, чтобы наводить и щелкать мышкой. Но, по моему опыту, оно определенно того стоит. Даже если вы изучите только основные команды, они вам все равно очень помогут, если вдруг получится так, что вы просматриваете терминал без графического интерфейса, а вам нужно проверить или изменить некоторые файлы. Я настоятельно рекомендую встроенную программу Vimtutor, которая загружается автоматически при установке Vim. Он перебирает основные команды непосредственно в вашем терминале командной строки. Заключение В этой статье мы рассмотрели семь вопросов, которые обычно задают начинающие программисты. Мы охватили довольно много тем, начиная с вопросов о выборе языка программирования, о стеках разработки программного обеспечения и заканчивая вопросами об операционных системах и текстовых редакторах.
img
Что такое персональные данные Персональные данные - это любая информация, относящаяся к идентифицированному или идентифицируемому физическому лицу. Различные фрагменты информации, собранные вместе, и приводящие к идентификации конкретного лица, также представляют собой персональные данные. Трудно точно сказать, какая именно информация о человеке входит в такое понятие персональных данных (ПДн). Обращаясь к законодательству разных стран в области хранения и обработки ПДн, нельзя найти точного определения что является персональными данными. Но можно точно сказать, если по совокупности личной информации мы можем определить конкретного человека, мы имеем дело с персональными данными. Под такое определение попадает множество личных данных, которые как по отдельности, так и в совокупности, могут указать на конкретного человека. Таким образом персональными данными являются: Имя, отчество и фамилия Номер стационарного или мобильного телефона Место рождения и дата рождения Домашний адрес Адрес электронной почты (name.surname@company.com) Паспортные данные IP адрес и cookie-файлы Информация о болезнях Фото и видео файлы Аккаунты в социальных сетях ИНН Это лишь малая часть личной информации, по которой можно точно определить нужного человека. Несанкционированная, неосторожная и не имеющая должной зашиты обработка персональных данных может причинить большой вред физическим лицам и компаниям. Целью защиты персональных данных является не просто защита персональных данных человека, а защита основных прав и свобод людей, связанных с этими данными. Надежно защищая персональные данные, можно гарантировать, что права и свободы человека не нарушаются. Например, неправильная обработка персональных данных может привести к ситуации, когда человек упускает возможность трудоустройства или, что еще хуже, теряет текущую работу. Несоблюдение правил защиты персональных данных может привести к еще более жестким ситуациям, когда можно снять все деньги с банковского счета человека или даже создать опасную для жизни ситуацию, манипулируя медицинской информацией. Исходя из этого можно сказать, что любая компания, собирающая подобную информацию, должна обеспечить надежную защиту для хранения и обработки персональных данных. В России законодательной основой защиты ПДн является федеральный закон №152-ФЗ "О персональных данных". В это законе говорится, что любая организация, физическое или юридическое лицо, которое осуществляет обработку персональных данных является оператором персональных данных и несёт уголовную, административную и гражданскую ответственность за нарушение требований хранения и обработки персональных данных. В Европе защита персональных данных регулируется "Общим регламентом по защите персональных данных" (GDPR). За обработку и сохранность данных согласно GDPR отвечает контроллер данных. За нарушение норм GDPR предусмотрены штрафы в размерах до $20 млн. или до 4% оборота компании. Категории персональных данных Для определения методов и способов защиты персональных данных их можно разделить на несколько категорий: Особо охраняемы данные. К этой категории относятся данные, раскрытие которых может повлиять на конфиденциальность личности и в результате привести к дискриминации. Исчерпывающего перечня таких данных не существует, однако, данные, относящиеся к следующей информации, стали широко рассматриваться как конфиденциальные: политические взгляды, религиозные взгляды, физическое и ментальное здоровье, сексуальная ориентация, расовая и этническая принадлежность, генетические данные и т.п. Биометрические данные. К таким данных относят физиологические или поведенческие признаки физического лица. Такие данные позволяют однозначно идентифицировать человека. Можно отнести к таким ПДн отпечатки пальцев, изображение человеческого лица, сетчатку глаза, запись голоса. Общие данные. Все данные, относящиеся к человеку, которые он сам разместил в открытом доступе или же прямо или косвенно к нему относящиеся. К таким данным можно отнести страницу в социальных сетях или список редакции журнала. Обезличенные или не относящиеся к остальным категориям данные. Для разных категорий данных требуется обеспечение разной степени защиты. Особо охраняемы данные требуют максимальной защиты, так как нарушение требований защиты или утечка персональных данных может привести к значительному ущербу для субъекта персональных данных. Обезличенные же данные требуют лишь минимальной защиты, так как это не приведет к негативным последствиям для субъекта ПДн при утечки персональных данных. Способы хранения персональных данных Любая организация, которая хранит или обрабатывает любую персональную информацию пользователей и использует ее в личных целях является оператором ПДн и должен надежно их защищать, чтобы соответствовать законодательству нашей страны. Для работы организации необходимые данные клиентов должны быть доступны для многих сотрудников с нескольких устройств, поэтому должны быть обеспеченна легкая доступность и возможность легкого доступа. Решением этой проблемы может послужить локальное хранилище или различные облачные решения. Для защиты персональных данных согласно закону №152-ФЗ "О персональных данных" выделяется несколько технических мер, например шифрование. Существует три основных подхода для хранения шифрованных совместно используемых персональных данных: Локальное хранение зашифрованных данных. В этом случае данные шифруются и уже зашифрованные данные сохраняются на локальных серверах. Облачное хранилище с шифрованием на стороне сервера и при передаче. Шифрование данных осуществляет поставщик облачного хранилища, который шифрует и хранит персональные данные пользователей, а также соответствующий ключ шифрования и расшифровки в безопасном месте. По вашему запросу провайдер может расшифровать данные по вашему запросу. Такие услуги предлагают практически все облачные провайдеры, такие как Яндекс, Google, Dropbox, Microsoft и другие. Облачное хранилище с сквозным шифрованием. В этом случае данные шифруются на вашей стороне, а хранение осуществляется на облаке. Преимущество такого способа хранения в том, что вы единственный, кто обладает ключом для расшифровки данных и никто другой, даже поставщик облачных услуг. Для того понять преимущества и недостатки каждого решения для хранения и шифрования проведем риск-анализ и выясним актуальности и вероятность успеха некоторых атак, направленных на кражу и повторное использование персональных данных пользователей. Локальное хранение зашифрованных данных Способ локально хранения является достаточно простым и безопасным только в том случае, если сервер, хранящий ПДн и ключ для расшифрования достаточно защищен. Однако реализовать высокий уровень защиты для небольших и средних организаций достаточно проблематично, так как хранение персональных данных не основная их деятельность. Даже наличие достаточной технической защиты и использование безопасных программ обычно недостаточно. Профессиональные целенаправленные атаки могут полностью обойти все средства защиты используя фишинг и социальную инженерию. Это может произойти, например, если сотрудник компании откроет безобидное вложение ил пройдет по ссылке в письме, которая была подделана злоумышленником. Далее вредоносное программное обеспечение, установленное на любую машину, получает доступ к локальной сети и, использовав уязвимости некоторых программных компонентов, получает доступ к конфиденциальным файлам, в которых может храниться ключ для расшифровки базы ПДн. Кроме того, вредоносные программы могут считывать нажатия клавиш, когда вы вводите пароль для расшифровки вашей базы данных. Даже компании, которые вкладывают значительные средства в безопасность данных подвержены таким угрозам. Облачное хранилище с шифрование на стороне сервера Оператор персональных данных доверяет шифрование ПДн клиентов провайдеру облачного хранилища, передавая данные в облако по защищенному каналу. Провайдер шифрует данные и сохраняет их вместе с ключом шифрования и расшифровки в безопасном месте. Всякий раз, когда оператору ПДн необходимы данные, поставщик облачных услуг расшифровывает их и отправляет расшифрованные данные по к оператору ПДн по защищенному каналу. Для внешнего злоумышленника получение доступа к серверу провайдера, на котором хранятся зашифрованные данные, может быть технически более сложным, чем при использовании локального сервера. Это объясняется тем, что хранение данных является их основной деятельностью, поэтому провайдеры облачных хранилищ более подготовлены к таким атакам и используют более комплексную защиту. Тем не менее, вероятность успешной атаки вероятна даже в этом случае. Реальная разница заключается в мотивации злоумышленника. Если он знает, что поставщик хранит ключ дешифровки данных или незашифрованные данные, то злоумышленник может быть гораздо более мотивированным, при нападении на него. Наконец, внутренние злоумышленники включают самого облачного провайдера, а также его сотрудников, которые могут легко получить ключ для расшифровки данных. Хотя у поставщика облачных услуг нет стимула пользоваться файлами и базами данных клиентов из-за потенциальных юридических последствий и потери репутации, однако несправедливо уволенный или финансово мотивированный сотрудник может это осуществить. Облачное хранилище с шифрование на стороне клиента Данный способ хранения ПДн сочетает в себе преимущества локального хранения и облачного хранения с шифрование на стороне провайдера. Только оператор ПДн знает ключ для расшифровки, но данные безопасно хранятся у поставщика. Даже в случае, если злоумышленник каким-то образом получит копию зашифрованной базы данных с ПДн клиентов, то он не извлечет никакой личной информации. Практическую пользу от таких данных злоумышленник получит только в случае их успешного расшифрования, а для этого требуется ключ дешифровки. Если размер ключа равен 256 бит и является полностью случайным, вероятность того, что злоумышленник угадает ключ ничтожно мала. Таким образом, можно с уверенностью сказать, что ни один злоумышленник не имеет шанса угадать ключ. До тех пор, пока данные не могут быть расшифрованы, они не представляют ценности и не принесут ущерба субъектам ПДн. Однако, если ваш ключ расшифровки генерируется не случайно или совпадает с вашим паролем, злоумышленник может подобрать нужный ключ и расшифровать базы с персональными данными. Так же, алгоритм шифрования, используемый оператором ПДн или провайдером облачного хранилища, может быть уязвим для некоторых атак. Например, злоумышленник может использовать конструктивные недостатки схемы шифрования. Этого довольно маловероятно, если используются рекомендуемые и стандартизированные алгоритмы шифрования. Еще однин способ взлома схемы шифрования заключается в использовании недостатков реализации в некоторых программных компонентах, использующихся в схеме шифрования. Недостатки реализации неизбежны до тех пор. Для лучшей реализации защиты персональных данных необходимо оператору ПДн и провайдеру облачных услуг использовать рекомендуемые средства криптографической защиты информации (СКЗИ), а также регулярно обновлять программные компоненты. Таким образом, проанализировав каждый способ хранения можно сделать выводы о возможных угрозах, уязвимостях и путях утечки персональных данных в выбранном способе хранения. В приведенной ниже таблицы приведены в соответствие способы хранения и вероятности утечки ПДн, что позволяет сделать выбор наилучшего способа хранения базы персональных данных. Таблица Актуальность и вероятность успеха атаки на ПДн Угрозы Провайдер (или сотрудники) Злоумышленник Актуальность Вероятность успешной атаки Актуальность Вероятность успешной атаки Локальное хранение Низкая Низкая Умеренная Большая Облачное хранение с шифрованием на сервере Умеренная Значительная Значительная Умеренная Облачное хранение с сквозным шифрование Низкая Низкая Умеренная Умеренная Исходя из данных таблицы, можно сделать вывод о том, что облачное хранилище со сквозным шифрованием обладает наибольшей степенью защиты и наименьшей вероятностью утечки данных. Это происходит главным образом потому, что провайдер не имеет доступа к ключам для расшифрования данных, и поэтому злоумышленник не так сильно замотивирован. Даже если он получит доступ к данным, они не буду иметь ценности в зашифрованном виде. Еще одна причина для использование облачного хранилища вместо локального повышенная безопасность. Поставщик облачных услуг имеет гораздо более защищенную от угроз сервера. Это улучшает доступность и целостность персональных данных, что является главными принципами информационной безопасности. Категории угроз Под угрозой персональных данных можно считать случаи, при которых возникает вероятность потери или раскрытия личной информации субъекта персональных данных. Угрозой является лицо или организация, которые стремятся получить, изменить данные или другие активы ИС (информационной системы) незаконно, без разрешения владельца и часто без ведома владельца. Уязвимостью является возможность для угроз получить доступ к индивидуальным или организационным активам. Например, когда человек покупает что-то в интернете, он предоставляет данные кредитной карты, когда эти данные передаются через Интернет, они уязвимы для угроз. Защитная мера - это некоторая мера, которую отдельные лица или организации принимают для предотвращения угрозы неправомерного получения актива. Наконец, целью угрозы является актив, который желателен для угрозы. Угроза безопасности - это вызов конфиденциальности, целостности и доступности информационных систем, возникающих от одного из трех источников: Человеческих ошибок Компьютерных преступлений Стихийных бедствий Человеческие ошибки включают неумышленные и случайные действия, представляющие угрозу ИСПДн, вызванные работниками организации. Действия сотрудников в выполнении процедур или их отсутствие могут привести к отказу в обслуживании. Например, сотрудники могут непреднамеренно отключить веб-сервер или шлюзовой корпоративный маршрутизатор, запустив интенсивное вычислительное приложение. Неосведомленность или халатность сотрудников организации или компании может поставить под угрозу конфиденциальность данных и безопасность компонентов сети организации. Открыв фишинговое электронное сообщение или заразив корпоративный компьютер, сервер вредоносным программным обеспечением со своего личного телефона, ноутбука или просто скопировав конфиденциальную информацию на свое устройство, чтобы доделать работу дома. Фишинг одна самых популярных атак, от которой практически невозможно защитить пользователей интернета. Так же никто не может быть уверен, что сотрудник не совершит ошибку и не отправит секретную или конфиденциальную информацию по ошибочному адресу. Описанные ситуации представляют серьезную угрозу безопасности данных. К категории компьютерных преступлений относятся действия сотрудников и бывших сотрудников, которые умышленно уничтожают данные или другие компоненты системы. Умышленные же действия сотрудники преднамеренно совершают для получения доступа к секретной информации или нанесения ущерба компании. Злоумышленники или компании-конкуренты могут за материальное вознаграждение получать от сотрудников компании важную и конфиденциальную информацию. В своем большинстве это опытные сотрудники, которые могут легко уничтожить следы своих преступлений. Выявление таких сотрудников очень непростая задача. Также угрозу безопасности данных компании представляют уволенные сотрудники, которые при увольнении могут забрать всю информацию, к которой имеют доступ. В категории компьютерных преступлений угроза безопасности данных обусловлена действиями физических лиц, террористических организаций, иностранных спецслужб и криминальных формирований, реализующие ситуации в которых создаются условия, представляющие угрозу безопасности персональных данных. Также к категории компьютерных преступлений можно отнести действия злоумышленников, которые взламывают систему, авторов вирусов и червей, которые заражают компьютерные системы, а также аппаратные и программные закладки. Атаки типа "отказ в обслуживании" могут быть осуществлены злоумышленниками. Злоумышленник может перегрузить веб-сервер, например, миллионами поддельных запросов, которые перегрузят сервер так, что он не сможет обслуживать реальные запросы. Природные явления и катастрофы включают пожары, наводнения, ураганы, землетрясения, цунами, лавины и другие природные явления. Проблемы этой категории включают в себя не только первоначальную потерю доступности, но и потери, возникающие в результате действий по устранению первоначальной проблемы. Большинство угроз реализуемых с применением программных средств, осуществляются при несанкционированном или случайном доступе, в процессе которого происходит полное нарушение конфиденциальности, целостности и доступности персональных данных, т. е. копирование, изменение, уничтожение или несанкционированное распространение. Такие угрозы включают в себя: Угрозы внедрения вредоносного программного обеспечения. Угрозы такого типа широко распространены. Реализуются при посещении непроверенных ресурсов без подтвержденного сертификата или при подключении по незащищенному протоколу связи, а также в случае использования неофициального (пиратского) программного обеспечения. Угрозы утечки с серверов оператора ПДн. Такие угрозы обусловлены халатностью и нежеланием операторов персональных данных обеспечить необходимые меры по защите доступа к персональным данным хранящихся на серверах, а также каналов передачи. Невыполнение минимальных рекомендаций для защиты персональных данных приводит к утечкам и несанкционированному распространению информации. Осуществляемые методами социальной инженерии угрозы. Актуальный вид угроз от которого нет надежных способов защиты. Действия злоумышленника направлены на получение от пользователей или сотрудников конфиденциальной информации или доступа к интересующим его информационным системам, хранящих персональные данные. Вероятность реализации угроз данного типа увеличивается при недостаточных мерах защиты персональных данных, а также публикации личной информации в открытых источниках. Угрозы проникновения в операционную среду устройства с использованием прикладных программ или средств операционной системы подразделяются на: Угрозы непосредственного доступа. Доступ к серверу или базе данных, оставленному без присмотра и без соответствующей защиты и содержащей персональные данные, злоумышленник может осуществить непосредственно. Угрозы удаленного доступа. Доступ к серверу или базе данных злоумышленник может получить посредством взлома систем защиты, либо используя по умолчанию установленные данные для авторизации. Угрозы нештатных режимов работы программных средств за счет преднамеренных изменений служебных данных, игнорирования, предусмотренных в штатных условиях ограничений на состав и характеристики обрабатываемой информации, модифицирования самих данных. Использования нелицензионного или скомпрометированного программного обеспечения создает риск реализации угроз данного типа.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59