Архив метки: Программирование

Как создать действительно случайный и доказуемо безопасный пароль / Все про пароли



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

К счастью, есть возможность купить что-то недорогое, с достаточной энтропией набора вероятностей и способное генерировать 3 бита информации за раз. Без электричества и достаточно надежно, позволяя сотням миллионов долларов ежедневно менять владельцев, основываясь на непогрешимости этой случайности.



Бросание игральной кости позволяет получить случайное число от 1 до 6, которое даёт нам 2,58 бита информации.

Основоположник теории информации Клод Шеннон определил информацию, как снятую неопределенность. Точнее сказать, получение информации — необходимое условие для снятия неопределенности. Неопределенность возникает в ситуации выбора. Задача, которая решается в ходе снятия неопределенности — уменьшение количества рассматриваемых вариантов (уменьшение разнообразия), и в итоге выбор одного соответствующего ситуации варианта из числа возможных. Снятие неопределенности дает возможность принимать обоснованные решения и действовать. В этом управляющая роль информации.

Энтропия — мера неопределенности, выраженная в битах. Так же энтропию можно рассматривать как меру равномерности распределения случайной величины.



В действительности нет нецелых, поэтому мы всегда округляем до ближайшего бита. В этом случае нам нужно 3 бита для хранения числа от 1 до 6, но на самом деле мы можем хранить и от 0 и до 7:

000 - 0
001 - 1
010 - 2
011 - 3
100 - 4
101 - 5
110 - 6
111 - 7


Количество комбинаций 0 и 1 определяет, насколько большое число вы можете хранить с помощью определенного количества бит. Каждый раз, когда вы добавляете еще один бит, вы удваиваете количество комбинаций. Это достаточно просто: если вы добавите еще один бит к двоичному числу, у вас будут все комбинации, которые у вас были раньше дважды: с 0 слева от них и с 1.

По сути, переменная с n-ным количеством битов может иметь 2^n (2 в степени n) возможных значений. Поскольку байт состоит из 8 битов, то он может иметь 2^8 (256) возможных значений.

Размер переменной накладывает ограничения на количество информации, которую она может хранить — переменные, которые используют больше байтов, соответственно, могут хранить более широкий диапазон значений.

Компьютеры имеют ограниченное количество свободной памяти. Каждый раз, когда мы объявляем переменную, небольшая часть этой свободной памяти выделяется до тех пор, пока переменная существует. Поскольку современные компьютеры имеют много памяти, то в большинстве случаев – это не проблема, особенно когда в программе всего лишь несколько переменных. Тем не менее, для программ, которые требуют большого количества переменных (например, 100 000), разница между использованием 1-байтовых или 8-байтовых переменных может быть значительной.


Так видеоигра The Legend of Zelda, выпущенная в 1987 году была 8-битной и имела ограничение для значений переменных равное 255.

Я хотел бы, чтобы энтропия для подбора моего пароля была по крайне мере 128 бит. По большинству исследований, взлом 128-битного шифрования практически невозможен с использованием методов грубой силы менее чем за несколько миллиардов лет. Используя уравнение 2^n, мы можем хранить одно из 3.4*10³⁸ различных значений, используя 128 бит. Если бы вы могли протестировать 100 миллиардов возможных значений в секунду, все равно потребовались бы десятки триллионов лет, чтобы угадать правильный пароль. Я считаю это достаточно хорошо. 128-битный пароль почти наверняка не будет слабым звеном в цепочке вашей онлайн-безопасности.

Если каждый из наших кубиков вырабатывает 2,58 бита энтропии за один бросок, то подбрасывание пяти даст нам 12,9 бита. Если мы используем 5 игральных костей 10 раз, то мы получим 129 бит информации, а для тех кто не знает результатов создадим неопределенность или энтропию равную 129 битам.

Но как превратить эти результаты в безопасный, но запоминающийся пароль?

Я использую Diceware, который является словарем слов, индексированных с помощью результатов подбрасывания пяти игральных костей. Каждый раз, когда вы бросаете 5 кубиков (или один 5 раз), числа, которые получаются, соответствуют слову в списке. Например, если на 5 кубиках выпало 1-4-2-6-3, нужно перейти на страницу со всеми словами 14xxx и обнаружить, что 14263 соответвтует «blab». Сделайте это десять раз, и вы получите строку из десяти слов. Эти десять слов — потенциальный пароль.

Далее нам поможет мнемотехника — совокупность специальных приёмов и способов, облегчающих запоминание нужной информации и увеличивающих объём памяти путём образования ассоциаций (связей). Например, можно использовать «принцип сюжета» — сочинить рассказ (сюжет), в котором задействованы запоминаемые слова. Например, чтобы запомнить последовательность слов: «Слон, домик, телевизор», — придумываем: «Слон шёл к себе в домик смотреть телевизор». Возможно, вы будете чувствовать себя глупо, но это работает, и вы будете удивлены, как быстро вы можете запомнить вещи таким образом.



В PDF формате одна из версий словаря доступна по ссылке тут, а тут версия на русском языке.

Если все это кажется излишним, помните, что это пароль, за которым хранится вся ваша финансовая и онлайн-жизнь. Если считаете, что этого того стоит, спуститесь в магазин комиксов и купите кубики. Зайдите в комнату, где нет камер, телефонов или компьютеров, бросьте кубики и напишите соответствующие слова из словаря (я бы выбрал 15 слов, чтобы убрать несколько, которых бы не знал). Затем выберите десять слов и запомните их. Это ваш пароль. Храните запись в течение нескольких дней, пока не убедитесь, что запомнили пароль, который предложено использовать для входа в менеджер паролей.

Теперь вы знаете как получить пароль, который действительно и доказуемо случайный, который не контролировался или не генерировался для вас третьей стороной и который безопасно хранится в вашем уме. Вы можете использовать его в течение нескольких лет, и это единственный пароль, который вам нужно будет знать. Даже если кто-то знает, что вы использовали 10 слов, и знаете, какой словарь вы использовали, им все равно придется «пробиваться» через 129 изнурительных бит энтропии.

Снимите шапочку из фольги и продолжайте свою жизнь. Надевать её время от времени — это нормально.

Комментарий Cloud4Y


Ранее этот вопрос поднимался на Хабрахабре в постах «Ликбез по псевдослучайным генераторам» и «Практические рекомендации по выбору паролей по результатам взлома antichat.ru«.

Основные выводы полученные автором:

1. Не столь важно, каким образом программа генератор получает пароли, сколь — откуда берет начальные данные. Если не происходит никакого интерактива вообще, следует усомниться.
2. Человек едва ли может уследить за отсутствием статистически популярных комбинаций в пароле, что подтверждается подбором 31790 паролей из 41037 MD5 хешей за 8 часов.

В связи с этим метод описанный Charlie Hoey может быть полезным особенно при отсутствии двухфакторной аутентификации.

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

1 2 3 4 5 6
1 ~! # $% ^
2 & * ( ) — =
3 + [ ] { }
4:; » < >
5? / 0 1 2 3
6 4 5 6 7 8 9

Вставка буквы в случайном порядке добавит около 10 бит энтропии. Всё это, конечно, предполагает секретность кодовой фразы.

P.S.
Также рекомендую статью Charlie Hoey «A Eulogy for the Headphone Jack» (Хвала «джеку»), в которой он описывает то, как, не имея страховки, сэкономил 1000 долларов на проверке собственного здоровья, собрав аппарат ЭКГ и почему нам важно сохранить разъем для наушников и не потерять доступ к почти универсальному и свободному от лицензий порту ввода-вывода. 

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

Автор: Валерий Фетисов
Дата публикации: 2018-02-04T07:44:00.000+02:00

Создан портрет типичного ИТ-шника. Чем отличаются программисты на Java и .NET? Фото — CNews

Путем обобщения фотографий 2 тыс. программистов, компания DataArt создала портрет среднестатистического представителя этой профессии. Как оказалось, типичный айтишник не носит очки и не имеет растительности на лице.

Портрет типичного программиста

Консультационная компания DataArt показала, как выглядят среднестатистические программисты мужского и женского пола. Для этого сквозь специальной компьютерной алгоритм были пропущены фотографии 2 тыс. айтишников из восьми стран мира: Аргентины, Болгарии, Великобритании, Германии, Польши, США, Украины и России. Проанализировав их, алгоритм определил усредненные черты типичного разработчика.
Мужской портрет был составлен на основе анализа фотографии 1541 мужчины, женский — 512 женщин. Среднестатистический мужчина-айтишник получился светлокожим, круглолицым, с обычной короткой стрижкой. Очки, усы, борода, татуировки и пирсинг на лице на усредненном фото отсутствуют. Типичная женщина-программист так же имеет округлое белокожее лицо, она более улыбчива, чем ее коллега мужчина.
Определившись с портретом типичного айтишника вообще, специалисты DataArt решили выяснить, как выглядят разработчики, специализирующиеся на конкретных направлениях в программировании. Среднестатистический разработчик Java получился очень улыбчивым человеком, а типичный специалист по .NET на обобщенном фото носит довольно отчетливо заметные очки.

Технические особенности

Алгоритм для обобщения лиц был написан на C++ с применением фреймворков dlib и opencv. Работа с чертами лица проводилось по методике разработчика Сатьи Маллика (Satya Mallick). На каждом лице были выделены 68 ключевых точек, в число которых попали уголки глаз, бровей и губ, крылья носа и прочие. После этого алгоритм провел триангуляцию лиц, то есть разделил их на треугольные фрагменты в соответствии с ключевыми точками. Обобщение тона кожи и других цветов лица проводилось отдельно в каждом треугольнике.

Так выглядят среднестатистические программисты мужского и женского пола
Как поясняет автор проекта Андрей Сорокин, разработчикам пришлось решить вопрос с чрезмерным потреблением памяти в процессе обобщения изображений. Изначально оно превышало 4 ГБ, этот показатель удалось сократить до 100 МБ. Кроме того, анализ был затруднен плохим качеством некоторых фотографий и несовпадением ракурсов на них. Различие между портретами специалистов по Java, .NET и другим направлениям разработки удалось выявить с помощью спектрального анализа векторов, проведенных по различным чертам лица.

Средняя зарплата айтишника

Ранее CNews писал, какие зарплаты в среднем получают айтишники. Например, директор по ИТ в Москве и Московской области может получать до 600 тыс. руб. в месяц — если он имеет более 4 лет опыта работы, и трудоустроен в компании, где численность штата превышает 1000 человек. Для компаний численностью от 200 до 1000 человек зарплата ИТ-директора составляет порядка 250-350 тыс. руб.

Разработчики Java склонны чаще улыбаться
Системный администратор с опытом работы от четырех лет получает от 80 до 120 тыс. руб., если он работает в компании, штат которой насчитывает менее 200 человек. В компаниях с численностью сотрудников от 200 до 1000 человек системный администратор с таким же опытом получает 120-160 тыс. руб.
Разработчик с опытом работы более 4 лет в компаниях с численностью персонала до 200 человек получает 100-140 тыс. руб., в компаниях с количеством сотрудников от 200 до 1000 человек — 120-170 тыс. руб., а в компаниях со штатом свыше 1000 человек его зарплата составляет от 120 до 180 тыс. руб.

Так выглядят типичные разработчики .NET
В отечественной ИТ-отрасли не распространено трудоустройство по контракту — большинство специалистов предпочитает ставку, даже если она рассчитывается исходя из более низких расценок. Относительной популярностью контракты пользуются только в среде разработчиков. В 2017 г. трендовыми направлениями в найме айтишников были большие данные, распознавание голоса и развитие искусственного интеллекта. В 2018 г. отрасли понадобится руководители проектов, имеющие навыки развития продуктов, а также специалисты в сфере финтеха.

Автор: Валерий Фетисов
Дата публикации: 2018-02-02T07:26:00.004+02:00

7 смертных грехов программирования / Начинающему программисту

В любой работе встречаются свои трудности. Иногда их провоцирует сам работник, нарушая заповеди своей профессии. Но мало кто задумывается об этом. А вот пользователи сайта Quora составили личные списки грехов программирования.

Джон Парселл, создатель CaveOfProgramming.com

  1. Использовать «Пробел» вместо «Tab». Всегда, всегда используйте «Tab», а не «Пробел».
  2. Использовать «Tab» вместо «Пробела». Всегда, всегда используйте «Пробел», а не «Tab».
  3. Не использовать автоформатирование. Забудьте про весь мусор вроде табов и пробелов, используйте автоформатирование в своем коде и людям не придется видеть ваши странные скобки и отступы.
  4. Использовать интегрированную среду разработки (IDE) с ее автоформатированием и цветными клавишами. Все коды должны быть написаны в vi или Emacs, что подтверждает безупречность ваших навыков программирования.
  5. Не использовать IDE. Никто не хочет платить за время, которое вы тратите на набор текста, если это можно сделать в один клик, или за прокручивание вверх-вниз с помощью заумной комбинации клавиш из LISP.
  6. Не учить С и С++. Два этих языка жизненно необходимы любому программисту. Думаете, Java так же хорош? Отлично, создайте мне систему управления гоночными автомобилями в режиме реального времени на Java, и я вам поверю.
  7. Учить С и С++ в то время, которое вы могли бы использовать на что-то более современное, например, на Java. Признайте – все таблицы, написанные на С или С++, изживают себя в течение 5 лет. И в таком случае в программном обеспечении есть серьезные ошибки, которые Java просто не позволил бы вам совершить.

Рой Леман, разработчик ПО

  1. Сначала написать, потом подумать. Вы получили требования к товару, пробежались по ним, запустили свою любимую IDE и принялись за работу. Легко, не правда ли?
    Стоп! Вы уверены, что поняли требования до конца? Я не сомневаюсь в вашем умении читать. Но учли ли вы все пограничные случаи? Продумали, как будете тестировать систему? Набросали алгоритм, который собираетесь использовать? Завтра вы этого и не вспомните!
  2. Изобретать колесо. Итак, вам нужно создать шаблон проектирования Producer-Consumer. Вы знаете, как это сделать, еще с университетской скамьи… Легко, не правда ли?
    Стоп! Не важно, с каким языком вы работаете, уже существуют готовые шаблоны, или модули, или открытые исходники. Используйте их. Или по крайней мере изучите их перед тем, как создавать свои.
  3. Бояться прикасаться к коду. Итак, у вас есть задание добавить несколько функций к 20 000-линейному файлу (О, нет! За что?) Вы радостно беретесь за работу и вдруг замечаете огрехи в исходных функциях – нет пограничного случая или проверки на нулевой показатель. Это находится за пределами сферы вашей ответственности. Так? Стоп! Если вы видите небезопасный код – исправьте его. Вы еще хлебнете на этих ошибках, даже если код написан не вами!
  4. Быть безразличным к тому, чем занимается ваша компания. Вы программист, верно? Написание кодов – это здорово, вы не изучали маркетинг или продажи, с чего вам интересоваться тем, что не имеет к вам отношения?
    А следовало бы! Как можно создать продукт, не понимая, чем занимается компания? Как сделать так, чтобы продукт удовлетворял потребности клиента?
    Никак! Изучите дело, будьте в курсе всех вопросов компании, а не только тех, которые касаются непосредственно вас. Это важно! В какой-то момент это даже может повлиять на ваше повышение.
  1. Не следить за новыми трендами. Вы занимаетесь программированием уже 10 лет и подыскиваете работенку.
    Перед этим вы работали старшим разработчиком С++ в крупной корпорации – за многое отвечали и имеете отличные рекомендации. Вы вроде знаете, что такое DevOps, но на практике никогда не сталкивались с этими практиками и с С++14? На вашем предыдущем месте работы в ходу был С++98… Не так уж важно, не так ли?
    Нет, не так!
    Никто не похвалит вас за владение технологиями 15-летней давности!
    Если вы не учитесь в свободное время, чтобы соответствовать запросам работодателя, ваша кандидатура будет отвергнута!
  2. Не обладать коммуникативными навыками. Вы разработчик, к чему вам уметь общаться с людьми! Вам платят за умение общаться с компьютером, а не коллегами. Сиди себе, пиши качественные коды и добьешься успеха, верно?
    Не верно!
    Ваше неумение кратко и четко изложить суть дела вышестоящим – самая большая головная боль для менеджера.
    Очевидно, что это не единственный параметр, по которому вас оценивают, но все же – грамотное предоставление информации в дружественной манере повысит доверие со стороны коллег и вот тогда вы добьетесь успеха.
  3. Не иметь целей. Вам нравится ваша работа, вы прекрасно владеете технологиями Deep Learning. Передовые технологии, прекрасные коллеги… Вы могли бы работать так вечно.
    Но – вы не будете. Все когда-нибудь заканчивается, иногда резко и неожиданно. Если у вас не будет карьерных целей, вы можете оказаться на задворках, выполняя работу и получая зарплату, которые вас не достойны.
    Так что думайте наперед – где бы вы хотели оказаться через 10 лет? В какой роли вы себя видите?
    Научным работником? Разработчиком? Менеджером по продукции? Вице-президентом? Техническим директором? Исполнительным директором?
    Вам решать!

Нико Салминен, старший консультант

  1. Лень: Ну, кажется, код работает нормально. Нет необходимости писать комментарии или проводить автоматизированное тестирование.
  2. Похоть: Эй, а ведь этот новый срочный проект – отличная возможность опробовать новый крутой фреймворк, о котором все говорят!
  3. Зависть: Другая команда продвигается быстрее, чем мы. Лучше не помогать, если у них возникнут проблемы при интеграции с нашим кодом.
  4. Чревоугодие: Мне нужно выполнить итерацию ключей объекта. Мне совершенно необходимо импортировать 1,5-Мбайтную библиотеку для проведения этой операции.
  5. Гордыня: Прочтение этой книги по шаблонам проектирования сделало меня лучшим разработчиком, нежели коллеги! Я собираюсь использовать каждый шаблон, упомянутый в книге при работе над следующим проектом.
  6. Гнев: К черту все! Пускаю этот патч hotfix прямиком в производство!
  7. Алчность: Они что предлагают изменить код в моем репозитории? Отклонить! Это мой проект!

Усман Шаукат, более 8 лет опыта в сфере веб-разработки, PHP, Javascript, Node.Js

Вопрос касается программирования не как процесса разработки ПО в целом, так что мой ответ касается непосредственно фазы программирования:
  1. Программировать, не планируя. Самый страшный из всех грехов.
  2. Пытаться изобрести колесо. Если есть возможность, всегда используйте алгоритмы, предложенные в книгах и научных статьях (например, алгоритмы сортировки, поиска и т.д.), а не пишите собственные.
  3. Писать несистематизированные/некачественные коды и не придерживаться стандартов программирования.
  4. Считать, что тестирование – это не ваша забота. Я вас очень прошу, пожалуйста, тестируйте свои коды.
  5. Писать сложный код, когда с тем же успехом можно обойтись простым. Простые коды – это элегантно.
  6. Слепое копирование-вставка с сайтов вроде stackoverflow.com без ознакомления с пояснениями и комментариями.
  7. Последнее, и самое важное – совершенствуйтесь сами и осваивайте новый инструментарий. Никогда не бойтесь новшеств. Знакомьтесь с ними раньше всех. Это поможет вам оставаться востребованным.

Автор: Валерий Фетисов
Дата публикации: 2018-01-31T06:09:00.000+02:00

Семантическое версионирование 2.0

Восхитительное чувство, когда один раз взглянув на новую версию сторонней библиотеки ты понимаешь, можно ли её смело обновлять или нужно быть готовым к изменениям в собственном коде. В сухую нумерацию пакетов вносит осмысленность Семантическое версионирование. У семантического версионирования есть свой сайт и основные посылы я брал оттуда (ссылка в конце статьи).

Основная идея

Существует основной формат:

MAJOR.MINOR.PATCH

Формат включает в себя три неотрицательные цифры, которые увеличиваются в соответствии со следующими условиями.

MAJOR — увеличение версии говорит об обратно несовместимых изменениях API.
MINOR — увеличение версии говорит о добавлении новой функциональности при сохранении обратной совместимости.
PATCH — увеличение версии говорит об обратно совместимых фиксах.

Какую проблему решаем?

При большом количестве зависимостей в вашем проекте может встать вопрос о потребности в использовании новых версий разных библиотек. Если дать полную свободу в версионировании, то процесс превратится в настоящий ад, т.к. становится абсолютно не очевидно сломает ли всё, например, переход с версии 2.3.4 на версию 2.6.8. Идея не новая, но её формализация позволяет всем использовать и понимать версии одинаково.

Как решаем?

Основная идея была описана выше, а ниже некоторые, на мой взгляд, важные вещи из спецификации SemVer.

  • если какие-то изменения сделаны после релиза, то они попадут только в новый релиз;
  • публичный API для версии 0.х.х не должен рассматриваться как стабильный, это версия для начальной разработки;
  • версия 1.0.0 определяет публичный API;
  • если часть API помечена “устаревшей”, то инкрементируем минорную версию, в том числе она может в себя включать фиксы;
  • мажорная версия может включать в себя изменения характерные минорной версии и патчу;
  • версию можно дополнять указателями на предрелизные выпуски или сборками изменяющими метаданные, но идентификаторы версий только в ASCII.

Всегда ли это подходит?

Нет, не всегда. Если вы разрабатываете программу/веб приложение для конечного пользователя, а не библиотеку или http API, то скорее всего семантическое версионирование вам не нужно. Прежде всего, посмотрите на цели и статус вашего проекта, возможно он находится на поддержке, всё, что вы делаете, — исправляете ошибки, то есть “новая функциональность” не появляется, это значит, что первые две цифры будут вечно неизменными, тогда какой в этом смысл? С другой стороны, если взглянуть категорично, то так и должно быть, каждый раз закрывая пачку багов, вы обновляете PATCH версию, а при необходимости хот-фиксов просто расширяете её дополнительными идентификаторами.

Для кого это подходит?

Иногда, мы пишем библиотеки, иногда мы пишем модули от которых будет зависеть остальная часть системы, иногда мы пишем микросервисы с API которых будут взаимодействовать другие команды. Всё это отличные примеры того, где семантическое версионирование преобретает смысл. Семантическое версионирование — это язык, в трёх словах которого общаются независимые проекты.

Сайт семантического версионирования

Автор: Roman Brovko

CudaText: кроссплатформенный текстовый редактор для программистов с открытым исходным кодом

CudaText — кроссплатформенный текстовый редактор для программистов с открытым исходным кодом на базе Lazarus. Он имеет обширную поддержку большинства популярных языков программирования.

Я не могу назвать его одним из лучших редакторов с открытым исходным кодом, потому что он еще слишком молод. Я даже не могу назвать его альтернативой Notepad ++ для Linux, потому что он больше похож на легкую среду IDE, такую как Geany. Хотя интерфейс по умолчанию напоминает Eclipse IDE.

Лично я предпочитаю редактор Atom. Но никогда не стесняюсь попробовать новые приложения. Если вы думаете так же, возможно, вы могли бы попробовать CudaText.

Давайте посмотрим, что нам предлагает CudaText:

Читать

КАК ЗАЩИТИТЬСЯ ОТ СЛЕЖКИ И КРАЖИ ДАННЫХ С КОМПЬЮТЕРА.

Как защититься от слежки и кражи данных с компьютера.


Действия, которые стоит предпринять, чтобы вашими данными могли пользоваться только вы.

Windows шпионит за вами, отсылая в Microsoft телеметрию, а Google запоминает ваши поисковые запросы и анализирует содержимое писем, чтобы заваливать вас рекламой. Конечно, вы можете просто не обращать на это внимание. Но не только крупные корпорации интересуются вашими данными. Это могут быть простые мошенники и вымогатели. Даже ваши родственники или коллеги, открыв ваш ноутбук, могут увидеть что-то, не предназначенное для чужих глаз.

Чтобы уберечь свои файлы, пароли, переписку и прочие конфиденциальные сведения, нужно позаботиться о безопасности.



 Необязательно выполнять абсолютно все предписания, изложенные ниже. Но вы можете ознакомиться с ними и решить, что из этого может быть полезно вам.

Зашифруйте данные

Даже если ваша система защищена паролем, злоумышленник сможет легко сбросить его, загрузившись с внешнего диска, если вы оставите компьютер без присмотра. Сбрасывать пароль и не нужно — любой Live-дистрибутив Linux может легко прочитать и скопировать ваши данные. Поэтому нужно предпринять меры по шифрованию.

И Windows, и macOS, и Linux имеют встроенные средства для шифрования. Воспользуйтесь ими, и ваши документы будут недосягаемы для посторонних, даже если ваш ноутбук попадёт в чужие руки.

Как защититься от слежки и кражи данных с компьютера.




В Windows есть встроенный инструмент шифрования BitLocker. Откройте «Панель управления», зайдите в раздел «Система и безопасность» и выберите «Шифрование диска BitLocker».

Как защититься от слежки и кражи данных с компьютера.



В macOS шифрование данных можно осуществить с помощью FireVault. Зайдите в «Системные настройки», отыщите раздел «Защита и безопасность» и откройте вкладку FireVault.

Большинство дистрибутивов Linux, как правило, предлагают зашифровать ваш домашний раздел при установке системы. При форматировании раздела создаётся зашифрованная файловая система eCryptfs. Если вы пренебрегли этим при установке системы, позже можно зашифровать нужные разделы вручную с помощью Loop-AES или dm-crypt. Чтобы узнать, как это сделать, ознакомьтесь с инструкцией.

Более продвинутые функции шифрования может применять бесплатная кросс-платформенная утилита с открытым исходным кодом VeraCrypt. Помимо простого шифрования, она может создавать обманные разделы с маловажной информацией, которые могут отвлечь внимание взломщиков от действительно ценных данных.

Будьте осторожны с шифрованием. Если вы забудете пароль, восстановить данные не получится. Кроме того, позаботьтесь, чтобы ваш компьютер был защищён от случайных перепадов напряжения. Если в процессе работы с зашифрованным диском устройство внезапно выключится, данные могут быть потеряны. И не забывайте о бэкапах.

Используйте менеджеры паролей

Использовать в качестве паролей осмысленные фразы и запоминать их — это не самая лучшая идея. Пользуйтесь менеджерами паролей. Генерируйте каждый раз новые случайные пароли для любого создаваемого вами аккаунта.

Как защититься от слежки и кражи данных с компьютера.



Лучше используйте парольные менеджеры, хранящие свои базы локально. Отличный выбор — KeePass. Он обладает открытым исходным кодом, имеет клиенты для всех по