<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>USB Киллер</title><author><name>USB Киллер</name></author><id>https://teletype.in/atom/usbkiller</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/usbkiller?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@usbkiller?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=usbkiller"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/usbkiller?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-04-05T16:05:20.142Z</updated><entry><id>usbkiller:q2ozr1Rmh</id><link rel="alternate" type="text/html" href="https://teletype.in/@usbkiller/q2ozr1Rmh?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=usbkiller"></link><title>Ловушки безопасности Ruby и как их избежать</title><published>2021-01-26T09:37:13.484Z</published><updated>2021-01-26T09:37:13.484Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/72/76/727616cb-e19e-4f6a-8d74-4e42b7b35ed6.jpeg"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/81/46/8146ad63-a88f-4f25-b5c9-d91a3cc8c24c.jpeg&quot;&gt;Источник: t.me/USBKiller</summary><content type="html">
  &lt;p&gt;Источник: t.me/USBKiller&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/81/46/8146ad63-a88f-4f25-b5c9-d91a3cc8c24c.jpeg&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Ruby – универсальный язык, сочетающий в себе простоту синтаксиса и мощные функции. Благодаря популярности фреймворка Rails, Ruby входит в десятку лучших современных языков. Однако с таким комьюнити разработчиков существует множество распространенных ошибок, ведущих к серьезным последствиям.&lt;/p&gt;
  &lt;h3&gt;Острые ножи&lt;/h3&gt;
  &lt;p&gt;С момента создания Ruby обрел репутацию языка программирования, который обладает ориентированными на счастье разработчиков функциями. Тем не менее он имеет особенность в виде «острых ножей» в своем ящике функций, и только вопрос времени, когда от них кто-то серьезно пострадает.&lt;/p&gt;
  &lt;p&gt;«Острые ножи» – это все доступное в Ruby метапрограммирование, и тот нюанс, что все открыто для изменения/переопределения в любой момент. Дальше станет понятнее. Рассмотрим ошибки и их решения.&lt;/p&gt;
  &lt;h3&gt;Небезопасная десериализация&lt;/h3&gt;
  &lt;p&gt;Выполнять все, что пользователь собирался отправлять – плохая мысль. А вот сериализация/десериализация пользовательского ввода не кажется такой уж плохой идеей, т. к. никакой код при этом не выполняется.&lt;/p&gt;
  &lt;p&gt;Небезопасная десериализация входит в первую десятку &lt;a href=&quot;https://owasp.org/www-project-top-ten/&quot; target=&quot;_blank&quot;&gt;OWASP Top Ten&lt;/a&gt; чеклиста для веб-безопасности.&lt;/p&gt;
  &lt;p&gt;Основанная на Psych встроенная библиотека YAML Ruby поддерживает сериализацию пользовательских типов данных в YAML и обратно:&lt;/p&gt;
  &lt;pre&gt;        # serialize.rb
require &amp;#x27;yaml&amp;#x27;
require &amp;#x27;set&amp;#x27;

s = Set.new([1, 2, 3])
File.open(&amp;#x27;set.yml&amp;#x27;, &amp;#x27;w&amp;#x27;) do |file|
  YAML.dump(s, file)
end
&lt;/pre&gt;
  &lt;pre&gt;--- !ruby/object:Set
hash:
  1: true
  2: true
  3: true 
&lt;/pre&gt;
  &lt;p&gt;Десериализация этого YAML возвращает исходный тип данных:&lt;/p&gt;
  &lt;pre&gt;# deserialize.rb
require &amp;#x27;yaml&amp;#x27;
require &amp;#x27;set&amp;#x27;

file = File.read(&amp;#x27;set.yml&amp;#x27;)
s = YAML.load(file)
p s    
$ ruby deserialize.rb

#&amp;lt;Set: {1, 2, 3}&amp;gt;    
&lt;/pre&gt;
  &lt;p&gt;Как вы можете видеть, строка&lt;code&gt;-- !ruby/object: Set&lt;/code&gt; описывает, как повторно создавать экземпляры объектов из их текстовых представлений. Это открывает множество векторов атаки, которые могут перерасти в &lt;a href=&quot;https://ru.bmstu.wiki/RCE_(Remote_Code_Execution)&quot; target=&quot;_blank&quot;&gt;RCE&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Решение&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;Решение заключается в использовании безопасной загрузки. Используйте функцию &lt;code&gt;YAML::safe_load&lt;/code&gt; вместо &lt;code&gt;YAML::load&lt;/code&gt;. Она полностью блокирует загрузку пользовательских классов:&lt;/p&gt;
  &lt;pre&gt;        # deserialize.rb
require &amp;#x27;yaml&amp;#x27;
require &amp;#x27;set&amp;#x27;

file = File.read(&amp;#x27;set.yml&amp;#x27;)
s = YAML.safe_load(file)
p s
&lt;/pre&gt;
  &lt;pre&gt;$ ruby deserialize.rb

/usr/ruby/2.7.0/psych/class_loader.rb:97:in &amp;#x60;find&amp;#x27;:
Tried to load unspecified class: Set (Psych::DisallowedClass) 
&lt;/pre&gt;
  &lt;p&gt;Стандартные типы вроде хэшей и массивов все еще могут быть сериализованы в документы YAML и десериализованы из них, как и раньше.&lt;/p&gt;
  &lt;pre&gt;---
hash:
  1: true
  2: true
  3: true
     
$ ruby deserialize.rb

{&amp;quot;hash&amp;quot;=&amp;gt;{1=&amp;gt;true, 2=&amp;gt;true, 3=&amp;gt;true}} 
&lt;/pre&gt;
  &lt;h3&gt;IO hijacking&lt;/h3&gt;
  &lt;p&gt;Если вашему приложению необходимо читать или записывать пользовательские файлы с диска или делать запросы через API к пользовательским URL-адресам, вы можете написать следующий код:&lt;/p&gt;
  &lt;pre&gt;        # test.rb
puts &amp;#x27;Enter file path:&amp;#x27;
path = gets.chomp
puts &amp;#x27;File contents:&amp;#x27;
open(path, &amp;#x27;r&amp;#x27;) do |file|
  until file.eof? do
    puts file.gets
  end
end 
&lt;/pre&gt;
  &lt;p&gt;У пользователя запрашивается имя файла, а потом его содержимое выводится построчно. Здесь есть ошибка.&lt;/p&gt;
  &lt;p&gt;Функция &lt;code&gt;Kernel::open&lt;/code&gt; из приведенного выше фрагмента кода имеет еще одну дополнительную функцию, которая используется для порождения процессов. Посмотрите, что происходит, когда вы передаете начинающиеся с символа конвейера ( | ) входные данные:&lt;/p&gt;
  &lt;pre&gt;$ ruby test.rb

Enter file path:
|date
File contents:
Sun Nov 15 22:03:33 IST 2020 
&lt;/pre&gt;
  &lt;p&gt;Она выполняет команду date и передает выходные данные обратно Ruby. Злоумышленник будет выполнять команды гораздо более разрушительные, чем в этом коде. В нашем примере базовое RCE – удаленный пользователь, выполняющий код на сервере с полными привилегиями, доступными вашему веб-приложению.&lt;/p&gt;
  &lt;p&gt;Никогда не запускайте код от ненадежного источника, такого как пользователь, но если все-таки придется – ограничьте доступ к выбранным ресурсам.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Решение&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;Никогда не используйте &lt;code&gt;Kernel::open&lt;/code&gt;! Альтернативой является &lt;code&gt;File::open&lt;/code&gt;, &lt;code&gt;URL::open&lt;/code&gt; или &lt;code&gt;IO::open&lt;/code&gt;, в зависимости от контекста. Попробуем еще раз, на этот раз с &lt;code&gt;File::open&lt;/code&gt; вместо &lt;code&gt;Kernel::open&lt;/code&gt;. Такой вариант гораздо более безопасен, поскольку он не дает доступа к shell:&lt;/p&gt;
  &lt;pre&gt;# test.rb
puts &amp;#x27;Enter file path:&amp;#x27;
path = gets.chomp
puts &amp;#x27;File contents:&amp;#x27;
File.open(path, &amp;#x27;r&amp;#x27;) do |file|
  until file.eof? do
    puts file.gets
  end
end
    
&lt;/pre&gt;
  &lt;pre&gt;$ ruby test.rb

Enter file path: 
|date
File contents:
Traceback (most recent call last):
 2: from test.rb:4:in &amp;#x60;&amp;lt;main&amp;gt;&amp;#x27;
 1: from test.rb:4:in &amp;#x60;open&amp;#x27;
test.rb:4:in &amp;#x60;initialize&amp;#x27;: No such file or directory @ rb_sysopen - |date (Errno::ENOENT) 
&lt;/pre&gt;
  &lt;h3&gt;SQL injection&lt;/h3&gt;
  &lt;p&gt;Инъекция происходит, когда пользовательский ввод из фронтенда без проверок и очистки применяется непосредственно в SQL-запросе на бекенде.&lt;/p&gt;
  &lt;p&gt;Допустим, у вас есть столбец users, в котором выполняется поиск по введенному в форму имени. Вот, как бы это выглядело в Ruby:&lt;/p&gt;
  &lt;pre&gt;User.where(&amp;quot;name = &amp;#x27;#{name}&amp;#x27;&amp;quot;) 
&lt;/pre&gt;
  &lt;p&gt;Это небезопасно. Рассмотрим следующий ввод от злоумышленника:&lt;/p&gt;
  &lt;pre&gt;name = &amp;quot; &amp;#x27; OR &amp;#x27;1&amp;#x27; = &amp;#x27;1&amp;quot; # Ввод от злоумышленника 
&lt;/pre&gt;
  &lt;p&gt;Запрос ложный, как видно в первой строке и крашится из-за вредоносного кода, как показано во второй строке. WHERE всегда true и возвращает каждого пользователя из таблицы:&lt;/p&gt;
  &lt;pre&gt;SELECT * FROM users WHERE name = &amp;#x27;&amp;lt;name&amp;gt;&amp;#x27;         -- &amp;lt;name&amp;gt; ложный запрос
SELECT * FROM users WHERE name = &amp;#x27; &amp;#x27; OR &amp;#x27;1&amp;#x27; = &amp;#x27;1&amp;#x27; -- все сломалось 
&lt;/pre&gt;
  &lt;p&gt;&lt;strong&gt;Решение&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;Используйте один из следующих двух способов:&lt;/p&gt;
  &lt;pre&gt;User.where([&amp;quot;name = ?&amp;quot;, name])
User.where({ name: name }) 
&lt;/pre&gt;
  &lt;p&gt;Оба подхода предназначены для очистки значения перед генерацией запроса и поэтому невосприимчивы для этой атаки.&lt;/p&gt;
  &lt;h3&gt;Автоинкремент ID&lt;/h3&gt;
  &lt;p&gt;Когда вы создаете модель Rails, автоматически создается id – автоинкрементное целочисленное поле. По большей части этого достаточно. Целочисленные идентификаторы имеют преимущество: поскольку они постоянно увеличиваются, нет никаких шансов на коллизию. Что произойдет, если пострадает безопасность:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Масштабирование может стать сложнее. Если множество серверов работают независимо друг от друга, вполне вероятно, что они могут назначить один и тот же ID разным ресурсам.&lt;/li&gt;
    &lt;li&gt;Станет возможным определить, сколько у вас объектов. Можно зарегистрироваться и увидеть собственный идентификатор, чтобы узнать количество клиентов и даже оценить бизнес-показатели.&lt;/li&gt;
    &lt;li&gt;Можно будет перебирать и красть данные. Злоумышленник сможет вывести весь список и получить все ограниченные ресурсы.&lt;/li&gt;
    &lt;li&gt;Возможна утечка конфиденциальной информации. Незарегистрированные ресурсы, видимые только держателям ссылок, сломались бы из-за целочисленных ID.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;&lt;strong&gt;Решение&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;Используйте UUID. С Rails сделать это будет очень просто. После несложного изменения все ваши модели будут использовать UUID в качестве первичных ключей:&lt;/p&gt;
  &lt;pre&gt;# config/application.rb 
config.generators do |g|
  g.orm :active_record, primary_key_type: :uuid
end 
&lt;/pre&gt;
  &lt;p&gt;Если вы все-таки хотите использовать целые числа, берите большие, выбранные случайным образом. Посмотрим на структуру URL-адресов ролика из YouTube. Так выглядит его URL-адрес:&lt;/p&gt;
  &lt;pre&gt;https://www.youtube.com/watch?v=dQw4w9WgXcQ
&lt;/pre&gt;
  &lt;p&gt;Идентификатор видео – это случайное число между &lt;code&gt;$0$ и $64^{11}$&lt;/code&gt; (более 73 квинтиллионов чисел), закодированное в Base64. Не совсем UUID, но и не целочисленное поле с автоинкрементом.&lt;/p&gt;
  &lt;h3&gt;Инструменты в помощь&lt;/h3&gt;
  &lt;p&gt;Ключевой вывод из описанных выше примеров – никогда не доверять юзеру. Данные пользователя не должны быть напрямую сериализованы/десериализованы, оценены или обработаны. В качестве дополнительных мер предосторожности подойдет специальный софт.&lt;/p&gt;
  &lt;h3&gt;Статические анализаторы кода&lt;/h3&gt;
  &lt;p&gt;Инструменты анализа кода, такие как линтеры и сканеры уязвимостей, могут найти множество просчетов до того, как те начнут эксплуатироваться. &lt;a href=&quot;https://rubocop.org/&quot; target=&quot;_blank&quot;&gt;RuboCop&lt;/a&gt; уведомит вас о &lt;a href=&quot;https://docs.rubocop.org/rubocop/1.3/cops_security.html&quot; target=&quot;_blank&quot;&gt;проблемах безопасности&lt;/a&gt;, вроде небезопасной десериализации или IO hijacking, а также предложит варианты исправления.&lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;https://brakemanscanner.org/&quot; target=&quot;_blank&quot;&gt;Brakeman&lt;/a&gt; – сканер уязвимостей, который может найти SQL-инъекцию среди других ошибок безопасности. Оба инструмента являются бесплатными и поставляются с открытыми исходными текстами.&lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;https://deepsource.io/&quot; target=&quot;_blank&quot;&gt;DeepSource&lt;/a&gt; – комплексное ПО, способное сканировать код, на каждом коммите, анализировать результаты работы линтеров/анализаторов и автоматически устранять множество проблем.&lt;/p&gt;
  &lt;p&gt;Для большинства языков программирования это решение имеет собственные пользовательские анализаторы, которые постоянно совершенствуются и обновляются. А еще оно элементарно устанавливается – нужно всего лишь добавить &lt;strong&gt;.deepsource.toml&lt;/strong&gt; файл в корень репозитория и DeepSource готов:&lt;/p&gt;
  &lt;pre&gt;        version = 1

[[analyzers]]
name = &amp;quot;ruby&amp;quot;
enabled = true

[[transformers]]
name = &amp;quot;rubocop&amp;quot;
enabled = true 
&lt;/pre&gt;
  &lt;h3&gt;Заключение&lt;/h3&gt;
  &lt;p&gt;Проблемы с безопасностью – самые опасные и дорогостоящие. Будьте предельно внимательны и учитывайте все вышесказанное в своих проектах.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;a href=&quot;https://t.me/USBKiller&quot; target=&quot;_blank&quot;&gt;ПОДПИСАТЬСЯ - USBKiller&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;

</content></entry><entry><id>usbkiller:X4wHBU9hf</id><link rel="alternate" type="text/html" href="https://teletype.in/@usbkiller/X4wHBU9hf?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=usbkiller"></link><title>Оттачиваем свои хакерские навыки в игре от Google</title><published>2021-01-24T15:08:20.848Z</published><updated>2021-01-24T15:08:20.848Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/6d/33/6d334247-d6cf-4065-b215-d3e65c9f1687.jpeg"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/96/bb/96bba66c-686d-47ae-adb3-2666151f7554.jpeg&quot;&gt;Источник: t.me/USBKille</summary><content type="html">
  &lt;p&gt;Источник: t.me/USBKille&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/96/bb/96bba66c-686d-47ae-adb3-2666151f7554.jpeg&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B8%D0%BD%D0%B3&quot; target=&quot;_blank&quot;&gt;XSS&lt;/a&gt; — это довольно распространенная уязвимость в безопасности веб-сайтов. Абрревиатура расшифровывается как Cross Site Scripting (межсайтовый скриптинг).&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://sun9-52.userapi.com/impg/Jd6KfyJ8cpXMZCUUIzDhranNh4XRC17k-YV3EQ/xGxroYpJtOA.jpg?size=632x332&amp;quality=96&amp;proxy=1&amp;sign=0ed2e2ea2d22122c92afdd52c80d1aff&amp;type=album&quot; width=&quot;632&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Распространенный сценарий эксплуатации на уязвимых сайтах — добавление вредоносного (обычно JavaScript) кода в HTML-страницу, которая демонстрируется пользователям. Как только этот код будет запущен браузером жертвы, он может повлиять на поведение или внешний вид страницы, украсть конфиденциальные данные или совершить какие-либо действия от имени пользователя.&lt;/p&gt;
  &lt;p&gt;Типичный запрос для XSS-атаки выглядит примерно следующим образом:&lt;/p&gt;
  &lt;pre&gt;https://example.com/demo/2?query=&amp;lt;script&amp;gt;alert(&amp;#x27;hello&amp;#x27;)&amp;lt;/script&amp;gt;
&lt;/pre&gt;
  &lt;p&gt;Если веб-сайт &lt;em&gt;example.com&lt;/em&gt; не защищен от XSS, то при переходе по этой ссылке пользователь увидит всплывающее окно с надписью “hello”.&lt;/p&gt;
  &lt;p&gt;Бывают активные и пассивные XSS-уязвимости. Активная уязвимость внедряется в базу данных на сервере либо в серверный код, вследствие чего потенциальными жертвами становятся все пользователи сайта. Пример пассивной же уязвимости вы можете видеть выше. Для того, чтобы стать её жертвой, пользователь должен перейти по ссылке, содержащей JavaScript-код.&lt;/p&gt;
  &lt;p&gt;С помощью XSS злоумышленники могут украсть cookie, данные из пользовательских форм, а также совершать более изощренные атаки, комбинируя XSS и &lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0&quot; target=&quot;_blank&quot;&gt;CSRF&lt;/a&gt;, и даже проводить DDoS.&lt;/p&gt;
  &lt;h3&gt;В чем суть игры?&lt;/h3&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://sun9-75.userapi.com/impg/5S0dkMu8VgXqEkaOgLpL0rtYrLDQvFejX3zQFw/danVpbsMxyg.jpg?size=807x427&amp;quality=96&amp;sign=44988e7b4cbf445e9327327ef40cf51b&amp;type=album&quot; width=&quot;807&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Суть &lt;a href=&quot;https://xss-game.appspot.com/&quot; target=&quot;_blank&quot;&gt;XSS Game&lt;/a&gt; заключается в проведении 6 различных вариантов XSS-атак в “эмуляторе браузера”, который встроен в страницу.&lt;/p&gt;
  &lt;p&gt;К каждому из видов уязвимости дается небольшое введение, а если с решением задачи возникают трудности, то можно воспользоваться несколькими (тремя-четырьмя) подсказками. И хотя некоторые из них построены на игре слов, обычно после второй-третьей из них додуматься до решения становится уже несложно. В крайнем случае всегда можно изучить код участвующего сервера и HTML-шаблонов.&lt;/p&gt;
  &lt;blockquote&gt;После успешного прохождения всех шести уровней участника просят оценить интересность и сложность игры, после чего предоставляют ссылку на &lt;a href=&quot;https://www.google.com/about/appsecurity/learning/xss/index.html&quot; target=&quot;_blank&quot;&gt;учебник по уязвимостям&lt;/a&gt; от Google.&lt;/blockquote&gt;
  &lt;p&gt;Игра затягивает уже с первого уровня и будет хорошим способом отточить свои навыки в эксплуатации XSS-уязвимостей.&lt;/p&gt;
  &lt;p&gt;&lt;br /&gt;&lt;u&gt;&lt;a href=&quot;https://t.me/USBKiller&quot; target=&quot;_blank&quot;&gt;ПОДПИСАТЬСЯ - USBKiller&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;

</content></entry><entry><id>usbkiller:LD1iMIYUZ</id><link rel="alternate" type="text/html" href="https://teletype.in/@usbkiller/LD1iMIYUZ?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=usbkiller"></link><title>Hack Bluetooth - Принцип работы</title><published>2021-01-21T14:15:59.597Z</published><updated>2021-01-21T14:15:59.597Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/62/db/62dbcc6b-9598-462f-bf16-12d258a292a9.jpeg"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/77/8b/778b0225-2c78-4202-b1d7-59d1e6cb19a2.jpeg&quot;&gt;Источник: t.me/USBKiller

</summary><content type="html">
  &lt;p&gt;Источник: t.me/USBKiller&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/77/8b/778b0225-2c78-4202-b1d7-59d1e6cb19a2.jpeg&quot; width=&quot;1456&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Ubertooth One.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://sun9-36.userapi.com/impg/pGw47bNbhcosIDcKsXjkh-ArvaoGJLHTWWxZQw/QM02nGoK_eE.jpg?size=648x440&amp;quality=96&amp;proxy=1&amp;sign=c4cd4ee8c216f12bbd2cb87bc73efd6d&quot; width=&quot;648&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Подробное описание этой игрушки можно найти &lt;a href=&quot;https://protey.net/threads/besprovodnaja-issledovatelskaja-platforma-ubertooth-one.9/&quot; target=&quot;_blank&quot;&gt;тут&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Итак, по порядку, рассмотрим что такое Bluetooth, и как он работает.&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Технология Bluetooth - это технология беспроводной связи малого радиуса действия, которая заменяет кабели, соединяющие электронные устройства, позволяя человеку разговаривать по телефону через гарнитуру, использовать беспроводную мышь и синхронизировать информацию с мобильного телефона на ПК, используя одно и то же ядро. система.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;Радиочастотный приемопередатчик Bluetooth (или физический уровень) работает в нелицензируемом диапазоне ISM с центральной частотой 2,4 гигагерца (тот же диапазон частот, который используется микроволнами и Wi-Fi). В базовой системе используется приемопередатчик со скачкообразной перестройкой частоты для борьбы с помехами и замираниями.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://sun9-46.userapi.com/impg/XR-l8yvUSCvKatTzSxLzoZIw08FIxS-wJB2Rfg/t9jgPxyERPQ.jpg?size=807x241&amp;quality=96&amp;sign=f887b7966c82604431087fea56debb2b&quot; width=&quot;807&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Для управления устройствами Bluetooth используется радиочастотная топология, известная как «звездообразная топология». Группа устройств, синхронизированных таким образом, образует пикосеть, которая может содержать одно ведущее устройство и до семи активных ведомых устройств с дополнительными ведомыми устройствами, которые не участвуют активно в сети. (Данное устройство также может быть частью одной или нескольких пикосетей, либо в качестве ведущего, либо в качестве ведомого.)&lt;/p&gt;
  &lt;p&gt;В пикосети физический радиоканал совместно используется группой устройств, которые синхронизированы с общими часами и шаблоном скачкообразной перестройки частоты, при этом ведущее устройство обеспечивает ссылки для синхронизации.&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Пикосеть - является фундаментальной формой коммуникации в технологии Bluetooth. Пикосеть является сетью категории “Ad Hoc”. Пикосеть может содержать до 7 активных ведомых устройств. Кроме того, в окрестности (зоне уверенного приема) ведущего устройства могут находиться неактивные (так называемые «припаркованные») ведомые устройства, которые также синхронизированы на общие часы и общую последовательность смены частот, но не могут обмениваться данными до тех пор, пока ведущее устройство не активирует их.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;Не лишним будет и рассказать что такое PAN:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Personal Area Network, PAN - это сеть, построенная «вокруг» человека. PAN представляет собой компьютерную сеть, которая используется для передачи данных между устройствами, такими как компьютеры, телефоны, планшеты и т.д.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://sun9-17.userapi.com/impg/XTbPd5Wj1O6keR6c-l9INZq7ZdrSGRyQUiAQZw/WcTuFxjc0y0.jpg?size=601x276&amp;quality=96&amp;proxy=1&amp;sign=8419259254ec2d1d78890cf062805f45&quot; width=&quot;601&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Персональные сети могут использоваться как для информационного взаимодействия отдельных устройств между собой &lt;em&gt;(интерперсональная коммуникация)&lt;/em&gt;, так и для соединения их с сетями более высокого уровня, например, глобальной сети Интернет (восходящая линия связи), где одно &amp;quot;первичное&amp;quot; устройство берет на себя роль интернет-маршрутизатора.&lt;/p&gt;
  &lt;p&gt;Беспроводная персональная сеть (WPAN) является маломощной PAN, которая организуется на небольшом расстоянии с использованием беспроводных сетевых технологий, таких как:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;INSTEON&lt;/li&gt;
    &lt;li&gt;IrDA&lt;/li&gt;
    &lt;li&gt;Wireless USB&lt;/li&gt;
    &lt;li&gt;Bluetooth&lt;/li&gt;
    &lt;li&gt;Z-Wave&lt;/li&gt;
    &lt;li&gt;ZigBee&lt;/li&gt;
    &lt;li&gt;Body Area Network&lt;/li&gt;
    &lt;li&gt;Piconet&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;Идём далее, от скучной теории к интересной практике.&lt;/p&gt;
  &lt;p&gt;Допустим, главным устройством является ваш мобильный телефон. Все остальные устройства в вашей пикосети называются подчиненными. Это может быть гарнитура, GPS-приемник, MP3-плеер, автомобильная стереосистема и т. д.&lt;/p&gt;
  &lt;p&gt;Устройства в пикосети используют определенный шаблон скачкообразной перестройки частоты, который алгоритмически определяется ведущим устройством. Базовый шаблон скачкообразной перестройки - это псевдослучайное упорядочение 79 частот в диапазоне ISM.&lt;/p&gt;
  &lt;p&gt;Шаблон скачкообразной перестройки может быть адаптирован для исключения части частот, которые используются мешающими устройствами. Техника адаптивного переключения улучшает сосуществование технологии Bluetooth со статическими (без переключения) системами ISM, такими как сети Wi-Fi, когда они расположены поблизости от пикосети.&lt;/p&gt;
  &lt;p&gt;Радиосвязь Bluetooth осуществляется в ISM-диапазоне (Industry, Science and Medicine), который используется в различных бытовых приборах и беспроводных сетях (свободный от лицензирования диапазон 2,4—2,4835 ГГц). Именно для этого в Bluetooth применяется метод расширения спектра со скачкообразной перестройкой частоты (Frequency Hopping Spread Spectrum, FHSS).&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://sun9-29.userapi.com/impg/DBAQINxVulRX4W-0ibAWM8Zw5QvgLKAkYb73Ig/K9DBIW70kvc.jpg?size=807x378&amp;quality=96&amp;sign=7ca98a836c8c008d0a537ad1d6b89d3d&quot; width=&quot;807&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Согласно алгоритму FHSS, в Bluetooth несущая частота сигнала скачкообразно меняется 1600 раз в секунду (всего выделяется 79 рабочих частот шириной в 1 МГц).&lt;/p&gt;
  &lt;p&gt;Физический канал (или беспроводная связь) подразделяется на единицы времени, известные как слоты. Данные передаются между устройствами с поддержкой Bluetooth в пакетах, которые размещаются в этих слотах. Скачкообразная перестройка частоты происходит между передачей или приемом пакетов, поэтому пакеты, составляющие одну передачу, могут отправляться на разных частотах в диапазоне ISM.&lt;/p&gt;
  &lt;p&gt;Физический канал также используется как транспорт для одного или нескольких логических каналов, которые поддерживают синхронный и асинхронный трафик, а также широковещательный трафик.&lt;/p&gt;
  &lt;p&gt;Каждый тип линка имеет определенное использование. Например, синхронный трафик используется для передачи аудиоданных в режиме громкой связи, в то время как асинхронный трафик может нести другие формы данных, которые могут выдерживать большую изменчивость сроков доставки, например печать файла или синхронизацию вашего календаря между телефоном и компьютером.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://sun9-60.userapi.com/impg/_ljZva0ofH18tIpld1r_AAft10VEAaV9wqWCHQ/XRqbpKZWLao.jpg?size=433x214&amp;quality=96&amp;proxy=1&amp;sign=01bcfb01f1ba861481f58999101a0674&quot; width=&quot;433&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Одна из сложностей, часто связанных с беспроводной технологией - это процесс подключения беспроводных устройств. Пользователи привыкли к процессу подключения проводных устройств, вставляя один конец кабеля в одно устройство, а другой конец в дополнительное устройство.&lt;/p&gt;
  &lt;p&gt;Технология Bluetooth использует принципы «запроса» и «сканирования запросов». Сканирующие устройства прослушивают на известных частотах устройства, которые активно опрашивают. Когда запрос получен, сканирующее устройство отправляет ответ с информацией, необходимой запрашивающему устройству, чтобы определить и отобразить природу устройства, которое распознало его сигнал.&lt;/p&gt;
  &lt;p&gt;Допустим, вы хотите по беспроводной сети распечатать изображение со своего мобильного телефона на ближайшем принтере. В этом случае вы переходите к изображению на своем телефоне и выбираете печать в качестве варианта отправки этого изображения. Телефон начнет поиск устройств поблизости.&lt;/p&gt;
  &lt;p&gt;Принтер (сканирующее устройство) ответит на запрос и, в результате, появится в телефоне как доступное печатающее устройство. Ответив, принтер готов принять соединение. Когда вы выбираете беспроводной принтер Bluetooth, процесс печати начинается с установления соединений на последовательно более высоких уровнях стека протоколов Bluetooth, которые в данном случае управляют функцией печати.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://sun9-36.userapi.com/impg/Qm11YEIMVcoYmcHS_wq3RynShC2rRO9JpGyKyw/0eIGnIg7vaI.jpg?size=600x394&amp;quality=96&amp;proxy=1&amp;sign=08353d8bd8a7cbafc3d87e5da3804549&quot; width=&quot;600&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Как и в любой другой успешной технологии, вся эта сложность происходит без осознания пользователем чего-либо, кроме задачи, которую он пытается выполнить, например, подключения устройств и разговоров по громкой связи или прослушивания высококачественной стерео музыки в беспроводных наушниках.&lt;/p&gt;
  &lt;p&gt;&lt;br /&gt;&lt;u&gt;&lt;a href=&quot;https://t.me/USBKiller&quot; target=&quot;_blank&quot;&gt;ПОДПИСАТЬСЯ - USBKiller&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;

</content></entry><entry><id>usbkiller:RqT7GL5us</id><link rel="alternate" type="text/html" href="https://teletype.in/@usbkiller/RqT7GL5us?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=usbkiller"></link><title>Вытаскиваем переписку WhatsApp из смартфона без root</title><published>2021-01-20T15:41:27.684Z</published><updated>2021-01-20T15:41:27.684Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/91/9f/919f0779-aca1-4a83-ac22-0f377de98fb1.jpeg"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/39/74/3974c642-440c-4118-b1a0-035eee2ca250.jpeg&quot;&gt;Источник: t.me/USBKiller
</summary><content type="html">
  &lt;p&gt;Источник: t.me/USBKiller&lt;br /&gt;&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/39/74/3974c642-440c-4118-b1a0-035eee2ca250.jpeg&quot; width=&quot;1200&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;strong&gt;Вся информация на канале предоставлена исключительно в ознакомительных/образовательных целях.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;h3&gt;Подготовка&lt;/h3&gt;
  &lt;p&gt;Работать можно на Windows 7/8/10, Linux или MacOS.&lt;/p&gt;
  &lt;p&gt;1) Для начала, нужно &lt;strong&gt;&lt;a href=&quot;https://www.java.com/ru/download/&quot; target=&quot;_blank&quot;&gt;скачать и установить Java&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;2) Затем нужно &lt;strong&gt;установить (на ПК) ADB (Android Debug Bridge) Drivers&lt;/strong&gt;. Вы можете скачать установщик &lt;a href=&quot;https://adb.clockworkmod.com/&quot; target=&quot;_blank&quot;&gt;отсюда (КЛИК)&lt;/a&gt; или воспользоваться &lt;a href=&quot;https://4pda.ru/forum/index.php?showtopic=383300&amp;st=11700#entry101430710&quot; target=&quot;_blank&quot;&gt;информацией с 4pda&lt;/a&gt;. Установка этих драйверов не должна вызвать затруднений, поэтому идем дальше.&lt;/p&gt;
  &lt;p&gt;3) &lt;strong&gt;Теперь включаем на смартфоне функцию &amp;quot;Отладка по USB&amp;quot;&lt;/strong&gt;. Обычно её можно найти по следующему пути: Настройки - &amp;gt; Параметры разработчика - &amp;gt; &amp;gt; (Отладка) USB-отладка&amp;gt;&amp;gt;&lt;/p&gt;
  &lt;p&gt;Если у вас нет пункта &amp;quot;Параметры разработчика&amp;quot;, перейдите в раздел: Настройки -&amp;gt; О телефоне/устройстве и нажмите много раз нажимайте на строку, где указан номер сборки. О том, что вы стали разработчиком уведомит специальная надпись.&lt;/p&gt;
  &lt;p&gt;4) &lt;strong&gt;Подключаем смартфон к ПК&lt;/strong&gt; по USB кабелю.&lt;/p&gt;
  &lt;p&gt;5) &lt;a href=&quot;https://github.com/EliteAndroidApps/WhatsApp-Key-DB-Extractor&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Переходим на github (ТЫК)&lt;/strong&gt;&lt;/a&gt;, скачиваем архив и распаковываем его.&lt;/p&gt;
  &lt;p&gt;6) В папке с распакованными файлами запускаем &lt;strong&gt;WhatsAppKeyDBExtract.bat&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;7) Если на телефоне будут появляться предупреждения, жмем везде Ок&lt;/p&gt;
  &lt;p&gt;На ПК будет отображаться примерно следующее:&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://sun9-13.userapi.com/impg/7y4ng4WYA279ZMBJvHC8er9mo42S8vNsMI95KQ/oXXP73fpQ7c.jpg?size=807x398&amp;quality=96&amp;sign=2dab2db4f8a408894582dc9c8311635e&amp;type=album&quot; width=&quot;807&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://sun9-6.userapi.com/impg/Thh-0scLPdHBQ-R2fIqDAxsUtbyHAlK_emZo9Q/l0KnQ_29X8A.jpg?size=807x320&amp;quality=96&amp;sign=3df88cd2111c6d5e07ad98f1327babb5&amp;type=album&quot; width=&quot;807&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;После появления надписи: &amp;quot;Now unlock your device and confirm the backup operation&amp;quot;, - вы должны ввести пароль, который затем вас попросят ввести и в консоли на ПК.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://sun9-69.userapi.com/impg/Y4E2KrOsHD9aEj67tgIXY_Aq7THKwjLJ7qrIpg/mjCHmoMP3OI.jpg?size=807x73&amp;quality=96&amp;sign=371b61dfcdbd80266afdabd5c80966c3&amp;type=album&quot; width=&quot;807&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;После этого начнётся процесс извлечения необходимых файлов. Они будут находится в папке &lt;strong&gt;&amp;quot;extracted&amp;quot; &lt;/strong&gt;и дальше мы будем работать именно с ними&lt;/p&gt;
  &lt;p&gt;8) Далее нам понадобится &lt;strong&gt;WhatsApp Viewer&lt;/strong&gt;. Скачать его можете &lt;a href=&quot;https://github.com/andreas-mausch/whatsapp-viewer/releases&quot; target=&quot;_blank&quot;&gt;с github&lt;/a&gt; или. Распаковываем архив, там будет один exe. Запускаем его&lt;/p&gt;
  &lt;p&gt;9) Жмем File&amp;gt;Open, появится такое окно&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://sun9-8.userapi.com/impg/tS61rwoF0FdPhJdg7MQj9leSI3sraEqmcqF_Gw/9uO4he-hrEs.jpg?size=807x213&amp;quality=96&amp;sign=d7b699825d96cd3695141341f759c956&amp;type=album&quot; width=&quot;807&quot; /&gt;
  &lt;/figure&gt;
  &lt;ul&gt;
    &lt;li&gt;В строке File вы должны указать извлечённый файл msgstore (он находится в папке extracted).&lt;/li&gt;
    &lt;li&gt;В строке Account name указывается основной адрес электронной почты учетной записи Google на вашем телефоне. Также можно попробовать оставить это поле пустым, но работает не всегда&lt;/li&gt;
    &lt;li&gt;В строке wa.db соответственно выбираем файл wa.db всё из той же папки extracted&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;Если что вы всегда можете навести мышку на знаки вопроса справа от строк.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Осталось нажать &amp;quot;Ок&amp;quot; и всё, мы имеем полную копию всех переписок&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;&lt;u&gt;&lt;a href=&quot;https://t.me/USBKiller&quot; target=&quot;_blank&quot;&gt;ПОДПИСАТЬСЯ - USBKiller&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;

</content></entry><entry><id>usbkiller:gbX28lJz7</id><link rel="alternate" type="text/html" href="https://teletype.in/@usbkiller/gbX28lJz7?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=usbkiller"></link><title>ARP сканирование локальной сети Linux</title><published>2021-01-20T07:00:38.363Z</published><updated>2021-01-20T07:00:38.363Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/56/00/5600c619-9bbb-4540-9c7a-58d41495b2ed.jpeg"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/3b/ce/3bce586b-0e5f-4c6c-a498-0c378948328f.jpeg&quot;&gt;Источник: t.me/USBKiller
</summary><content type="html">
  &lt;p&gt;Источник: t.me/USBKiller&lt;br /&gt;&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/3b/ce/3bce586b-0e5f-4c6c-a498-0c378948328f.jpeg&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Самый надежный способ обнаружить все подключенные к сети Linux устройства, в том числе и скрытые - это ARP сканирование локальной сети. В этой статье мы рассмотрим как его выполнить и какие утилиты для этого нужны.&lt;/p&gt;
  &lt;h3&gt;Как выполнить ARP сканирование локальной сети?&lt;/h3&gt;
  &lt;p&gt;Как вы знаете, у всех компьютеров в сети есть IP адреса. Никогда не задавались вопросом, как сеть определяет, какому компьютеру принадлежит тот или иной адрес? Ведь сети бывают разные, проводные, беспроводные, ppp и т д. И в каждой из этих сетей аппаратный адрес компьютера имеет свой формат, зависящий от конструктивных особенностей сети, а IP адреса одни и те же.&lt;/p&gt;
  &lt;p&gt;Все очень просто. Для преобразования физических адресов, в ip адреса используется протокол ARP (Address Resolution Protocol), так и расшифровывается - протокол разрешения адресов. Когда компьютеру нужно обратиться к другому компьютеру в локальной сети, он отправляет специальный запрос в котором буквально спрашивает &amp;quot;У кого IP адрес 192.168.1.4&amp;quot;, компьютер с таким ip адресом отправляет ответ &amp;quot;У меня, я 11:22:33:44:55&amp;quot;, в ответе он передает свой физический адрес в этой сети. Дальше этот адрес заносится в специальную таблицу... но это уже тонкости реализации и они выходят за рамки нашей статьи. Сегодня мы поговорим как самому выполнить ARP сканирование локальной сети linux и найти все подключенные устройства.&lt;/p&gt;
  &lt;p&gt;Формат сообщений ARP - простой. Сообщение содержит либо запрос с IP адресом, либо ответ. Размер сообщения зависит от используемого сетевого протокола IPv4 или IPv6, типа оборудования сети и т д. Типы и размеры адресов определяются в заголовке сообщения. Заголовок завершается кодом сообщения. Код 1 для запроса и 2 для ответа.&lt;/p&gt;
  &lt;p&gt;Тело сообщения состоит из четырех адресов, аппаратные и сетевые адреса отправителя и получателя.&lt;/p&gt;
  &lt;p&gt;Если в вашей сети есть устройства, которые не отвечают на любые запросы, такие как Ping, HTTP, HTTPS и т д, то их можно найти послав ARP запрос. Это могут быть различные фаерволы и маршрутизаторы, в том числе маршрутизаторы компании Cisco, такое поведение заложено их протоколом. В таком случае ARP сканирование сети Linux будет единственным способом найти такое устройство.&lt;/p&gt;
  &lt;h3&gt;Утилита ARP Scan&lt;/h3&gt;
  &lt;p&gt;ARP Scan или еще называемый MAC Scanner - это очень быстрый инструмент для сканирования локальной сети Linux с помощью ARP. Утилита показывает все IPv4 адреса устройств в вашей сети. Поскольку ARP не использует маршрутизацию, то такой вид сканирования работает только в локальной сети.&lt;/p&gt;
  &lt;p&gt;ARP Scan находит все активные устройства, даже если у них включен брандмауэр. Компьютеры не могут скрыться от ARP также как они скрываются от ping. Но ARP сканирование не подходит для поиска компьютеров за пределами локальной сети, в таких ситуациях используйте ping сканирование.&lt;/p&gt;
  &lt;h3&gt;Установка ARP Scan&lt;/h3&gt;
  &lt;p&gt;Этот arp сканер сети доступен для следующих операционных систем:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Debian, поставляется по умолчанию;&lt;/li&gt;
    &lt;li&gt;Ubuntu, можно установить с репозитория Universe;&lt;/li&gt;
    &lt;li&gt;Fedora, официальные репозитории начиная с версии 6;&lt;/li&gt;
    &lt;li&gt;RedHat - доступна начиная с версии 5;&lt;/li&gt;
    &lt;li&gt;Gentoo, официальные репозитории;&lt;/li&gt;
    &lt;li&gt;ArchLinux - официальные репозитории Pacman.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;Для установки в Ubuntu выполните:&lt;/p&gt;
  &lt;p&gt;&lt;code&gt; sudo apt install arp-scan&lt;/code&gt;&lt;/p&gt;
  &lt;h3&gt;Сканирование сети&lt;/h3&gt;
  &lt;p&gt;ARP Scan позволяет находить активные компьютеры как в проводных сетях ethernet, так и в беспроводных Wifi сетях. Также есть возможность работать с Token Ring и FDDI. Не поддерживаются последовательные соединения PPP и SLIP, поскольку в них не используется ARP. Программу нужно запускать с правами суперпользователя.&lt;/p&gt;
  &lt;p&gt;Но сначала надо узнать сетевой интерфейс, который используется для подключения к сети. Для этого можно воспользоваться программой ip:&lt;/p&gt;
  &lt;p&gt;&lt;code&gt;ip addr list&lt;/code&gt;&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://sun9-46.userapi.com/impg/CQRKWTMzjSMRTcIZQ04EJBGf8XCiv4C2RJtXEw/zc65BTpQz00.jpg?size=807x454&amp;quality=96&amp;sign=c9e3aad028eaab8a43a5925857c52b8f&amp;type=album&quot; width=&quot;807&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;В данном случае, это &lt;strong&gt;enp24s0&lt;/strong&gt;. Самый простой способ выполнить ARP сканирование и обнаружить все подключенные к локальной сети компьютеры - запустить программу со следующими параметрами:&lt;/p&gt;
  &lt;p&gt;&lt;code&gt; sudo arp-scan --interface=enp24s0 --localnet&lt;/code&gt;&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://sun9-21.userapi.com/impg/dxyAiLCY26Zid0hCtn8prHcUZFzgHO5Dp_QEeg/FMgEK2yxAPA.jpg?size=807x454&amp;quality=96&amp;sign=beb8d93ecf30d88157bf4c8430051513&amp;type=album&quot; width=&quot;807&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Здесь параметр &lt;strong&gt;--interface&lt;/strong&gt;, задает интерфейс для сканирования, а &lt;strong&gt;--localnet&lt;/strong&gt;, говорит, что нужно использовать все возможные IP адреса для текущей сети.&lt;/p&gt;
  &lt;p&gt;Первый параметр можно опустить, тогда программа будет искать все узлы для интерфейса с меньшим номером в системе. В нашем примере имя интерфейса - enp24s0.&lt;/p&gt;
  &lt;p&gt;Вместо параметра --localnet, можно указать маску сети:&lt;/p&gt;
  &lt;p&gt;&lt;code&gt; sudo arp-scan --interface=enp24s0 10.0.1.0/24&lt;/code&gt;&lt;/p&gt;
  &lt;p&gt;ARP сканирование можно использовать, даже если у вашего интерфейса нет IP адреса. Тогда в качестве исходящего адреса будет использован 0.0.0.0. Правда, на такие запросы могут ответить не все системы. Тогда ARP сканер сети не так эффективен.&lt;/p&gt;
  &lt;h3&gt;ARP спуфинг и ARP прокси&lt;/h3&gt;
  &lt;p&gt;Поскольку в ARP нет поддержки аутентификации, ARP ответ на запрос может отправить любая машина, даже не та которой он был адресован. Иногда такое поведение используется в архитектуре сети - ARP прокси или маршрутизатор предает свой IP адрес вместо адреса запрашиваемой машины. Но также может использоваться для перехвата данных, отправляемых компьютером. Хакер может использовать ARP чтобы выполнить атаку &amp;quot;Человек посередине&amp;quot; или &amp;quot;Отказ в обслуживании&amp;quot; на других пользователей сети. Для защиты от таких атак существует специальное программное обеспечение.&lt;/p&gt;
  &lt;h3&gt;Выводы&lt;/h3&gt;
  &lt;p&gt;ARP Scan это простой, но очень мощный инструмент, с помощью которого можно выполнять сканирование ip адресов в локальной сети linux. Те, кто знаком с Cisco маршрутизаторами и коммутаторами, знают что найти такие устройства можно только с помощью ARP. Это полезный инструмент, возможно, когда-то вам он пригодится.&lt;/p&gt;
  &lt;p&gt;&lt;br /&gt;&lt;u&gt;&lt;a href=&quot;https://t.me/USBKiller&quot; target=&quot;_blank&quot;&gt;ПОДПИСАТЬСЯ - USBKiller&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;

</content></entry><entry><id>usbkiller:HX7Qswx0</id><link rel="alternate" type="text/html" href="https://teletype.in/@usbkiller/HX7Qswx0?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=usbkiller"></link><title>Дырявые диски. Эксплуатируем уязвимости в сетевых хранилищах Synology</title><published>2020-02-28T17:46:01.727Z</published><updated>2020-02-28T17:46:01.727Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/18/17/1817b789-24a4-41cd-9f05-a4f2b4bf0293.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/6e/9d/6e9d9d71-fe5b-4a1d-9b11-ee1b8b85a7e7.jpeg&quot;&gt;Источник: t.me/USBKiller</summary><content type="html">
  &lt;p&gt;Источник: t.me/USBKiller&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/6e/9d/6e9d9d71-fe5b-4a1d-9b11-ee1b8b85a7e7.jpeg&quot; width=&quot;1600&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;strong&gt;Содержание статьи&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;Шифрование в сетевых накопителях (NAS)&lt;br /&gt;Шифрование в Synology&lt;br /&gt;Управление ключами шифрования в Synology DSM&lt;br /&gt;Как делать правильно&lt;br /&gt;Эксплуатация уязвимостей&lt;br /&gt;Статьи по теме&lt;br /&gt;Заключение&lt;/em&gt;&lt;/p&gt;
  &lt;h3&gt;Шифрование в сетевых накопителях (NAS)&lt;/h3&gt;
  &lt;p&gt;Конкуренция среди производителей сетевых хранилищ для домашних пользователей и офисов огромна. Здесь и модели Western Digital, привлекающие нулевой или отрицательной ценой (NAS со встроенным диском стоит дешевле такого же диска отдельно), и признанные гранды QNAP и Synology, которые берут мощной программной частью и длительной поддержкой, и выступающие с переменным успехом Asustor и Drobo, и даже экзотические для нас Terra Master и Thecus. В большинстве моделей этих производителей предусмотрено шифрование, позволяющее защитить пользовательские данные.&lt;/p&gt;
  &lt;h3&gt;Шифрование в Synology&lt;/h3&gt;
  &lt;p&gt;Все без исключения сетевые накопители Synology используют один и тот же алгоритм шифрования AES с длиной ключа 256 бит. Выбор этого алгоритма шифрования вполне логичен: большинство современных наборов микросхем поддерживает аппаратное ускорение AES или хотя бы набор инструкций, использующихся именно в этом алгоритме. Тем не менее реальная безопасность зашифрованных таким образом данных разительно отличается в зависимости от реализации.&lt;/p&gt;
  &lt;p&gt;Практически во всех NAS, в которых вообще есть возможность зашифровать данные, используется либо защита всего накопителя целиком (аппаратное шифрование SED — Self-Encrypting Disk — на уровне контроллера SATA), либо шифрование тома, расположенного как на одном диске, так и на массиве RAID. В части моделей (например, QNAP) можно активировать оба способа — и это позволяет избежать некоторых очевидных атак.&lt;/p&gt;
  &lt;p&gt;В моделях Synology, предназначенных для серверных стоек, также можно активировать аппаратное шифрование SED. Однако большинство домашних и офисных моделей такой возможности лишены. Вместо этого Synology предлагает использовать шифрование файлов на уровне отдельных сетевых папок.&lt;/p&gt;
  &lt;p&gt;Шифрование реализовано средствами стандартной для Linux файловой системы eCryptFS, о которой можно почитать, например, &lt;a href=&quot;https://ru.wikipedia.org/wiki/ECryptfs&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt; или &lt;a href=&quot;https://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/ecryptfs&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;. В сравнении с методами шифрования, основанными на защите целых томов, у такого пофайлового шифрования есть и достоинства, и недостатки.&lt;/p&gt;
  &lt;p&gt;В достоинства мы запишем следующее:&lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;Поскольку шифруются отдельные сетевые папки, не имеет абсолютно никакого значения, на каком из внутренних физических или логических накопителей они расположены.&lt;/li&gt;
    &lt;li&gt;Каждый пользователь может зашифровать свою папку своим собственным паролем. Таким образом обеспечивается защита между отдельными пользователями.&lt;/li&gt;
    &lt;li&gt;Стандартная реализация шифрования позволяет просто скопировать зашифрованную папку, к примеру на другой накопитель, — и данные останутся надежно зашифрованными. При этом смонтировать и расшифровать такую папку легко получится стандартными же средствами на любом компьютере с Linux.&lt;/li&gt;
    &lt;li&gt;Шифруются как сами данные, так и имена папок и файлов.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p&gt;Если у пофайлового шифрования столько достоинств, почему все остальные производители предпочитают шифровать целые тома? К сожалению, недостатки eCryptFS способны серьезно ограничить шифрование или даже сделать его невозможным.&lt;/p&gt;
  &lt;p&gt;Основное и самое неприятное ограничение eCryptFS — на длину имен файлов. В имени файла в зашифрованной папке не может быть больше 143 символов ANSI или 47 символов иероглифической записи.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/62c5db2f597fa8ab05034.png&quot; width=&quot;840&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Следующее ограничение напрямую касается безопасности зашифрованных данных, и оно более чем серьезно. В рамках реализации eCryptFS разработчики Synology не предусмотрели такой простой вещи, как разделение ключей шифрования данных MEK (Media Encryption Key) и ключей шифрования ключа KEK (Key Encryption Key). В результате тот пароль, который пользователь задает при создании зашифрованной папки, и служит тем самым ключом шифрования данных — MEK. Не говоря даже о том, что энтропия заданного домашним пользователем или офисным работником пароля, как правило, существенно меньше 256 бит, что позволяет создать очень быструю и эффективную атаку.&lt;/p&gt;
  &lt;p&gt;Кроме того, в этой реализации пользователь не может сменить ключ шифрования без полной перешифровки сессионных ключей всех до единого файлов. Перешифровка же типичной сетевой папки с несколькими десятками тысяч файлов может занять несколько часов (в зависимости от модели устройства и скорости диска), так что, можно сказать, изменение ключа шифрования нерационально.&lt;/p&gt;
  &lt;p&gt;Хорошо, об ограничениях поговорили. А что насчет уязвимостей? Они есть, и их больше одной. Но прежде чем говорить об уязвимостях, рассмотрим механизм управления ключами, реализованный в Synology.&lt;/p&gt;
  &lt;p&gt; &lt;/p&gt;
  &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;h3&gt;Управление ключами шифрования в Synology DSM&lt;/h3&gt;
  &lt;p&gt;Все сетевые хранилища Synology работают под управлением операционной системы Disk Station Manager (DSM), практически все модели компании (по крайней мере, те из них, которые были выпущены в последние пять-шесть лет) — под управлением унифицированной сборки. Обновления выходят практически одновременно для всех моделей. На сегодня актуальны сборки DSM 6.2.&lt;/p&gt;
  &lt;p&gt;Для управления ключами в DSM 6.2 используется утилита Key Manager, основная задача которой — сохранить ключи и обеспечить возможность автоматического монтирования зашифрованных томов после загрузки устройства.&lt;/p&gt;
  &lt;p&gt;После создания зашифрованной сетевой папки ключ (файл с расширением .key, представляющий собой пароль в «обертке», — практически обфускация) автоматически сохраняется на компьютер пользователя. Этот ключ можно сохранить (например, в зашифрованном архиве), а можно удалить — если пользователь уверен, что никогда не забудет пароль шифрования.&lt;/p&gt;
  &lt;p&gt;А вот дальше есть варианты. Пользователь может выбрать один из трех способов управления ключами.&lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;Полностью ручное управление. На устройстве Synology пароль не сохраняется (помним при этом, что файл с ключом был автоматически сохранен на компьютер пользователя). При включении NAS или перезагрузке DSM зашифрованные тома автоматически размонтируются. Для их монтирования нужно зайти в администраторский веб-интерфейс, открыть раздел сетевых папок и вручную смонтировать все нужные зашифрованные папки. Для продвинутых пользователей существует неофициальный и недокументированный вариант с удаленным монтированием через SSH, но, полагаю, большинству домашних и офисных пользователей об этом неизвестно.&lt;/li&gt;
    &lt;li&gt;Двоичный ключ шифрования (machine key в терминах DSM) сохраняется на устройстве Synology. Зачем это может понадобиться пользователю? Да просто чтобы избежать описанных в первом пункте шагов для монтирования зашифрованного тома! Достаточно поставить галочку в пункте mount on boot, и DSM автоматически подмонтирует зашифрованную папку при загрузке. Профит! О безопасности, правда, можно забыть: если и ключ шифрования, и сами данные хранятся на одном и том же устройстве, то расшифровка тривиальна.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/e364aa27ba0630511a1c8.png&quot; width=&quot;995&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;3. Наконец, реверанс в сторону безопасности: ключ шифрования сохраняется не на самом устройстве, а на внешнем USB-накопителе. Более того, ключ шифрования MEK, сохраненный на внешнем USB-накопителе, можно зашифровать своим собственным паролем (KEK) — и это важный момент. Тем не менее и для ключей шифрования, сохраненных на USB-накопителе, опция mount on boot по-прежнему доступна. Значит, при ее активации пароль шифрования ключа (KEK), введенный пользователем, сохраняется на устройстве Synology. Отметим и этот момент.&lt;/p&gt;
  &lt;p&gt;Что произойдет, если вставить USB-накопитель с ключом уже после загрузки, когда зашифрованная папка не смонтирована? Автоматически не смонтируется, будет предложен выбор из трех вариантов аутентификации.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/73393352585f1e1e07e7e.png&quot; width=&quot;879&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Как DSM получает двоичный ключ шифрования для алгоритма AES из пароля пользователя? Можно было бы ожидать, что пароль шифрования, указанный пользователем, «заворачивается» очередным ключом wrapping key, а он играет роль ключа KEK, который должен защитить ключ шифрования данных MEK.&lt;/p&gt;
  &lt;p&gt;На самом же деле в DSM (уточню: в тех версиях DSM, которые работают на потребительских моделях Synology, предназначенных для дома и офиса) не используется ничего подобного. Данные шифруются паролем, который устанавливает пользователь. А вот сам пароль шифруется одной-единственной фразой — аналогом печально известного default_password, использующегося при шифровании по методу FDE в Android.&lt;/p&gt;
  &lt;p&gt;Что это нам дает? Во-первых, если пароль шифрования сетевой папки нам известен, расшифровать ее содержимое мы можем на абсолютно любом компьютере с Linux, просто вытащив диск из сетевого накопителя. Сложности, связанные с монтированием RAID-массива, мы оставим в стороне — в конце концов, такие программы существуют даже для Windows.&lt;/p&gt;
  &lt;p&gt;Во-вторых, если пользователь сохранил ключ во встроенной утилите Key Manager (а это делают гораздо чаще, чем ты думаешь, ведь монтирование зашифрованных папок в DSM — занятие небыстрое и не самое удобное), то такой сохраненный ключ тоже шифруется все тем же wrapping key — теперь мы можем не только расшифровать данные, но и увидеть сам пароль, который вводил пользователь!&lt;/p&gt;
  &lt;p&gt;Если ключ шифрования сохраняется на встроенном накопителе, пароль wrapping passphrase сменить нельзя. Этот пароль один и тот же на всех накопителях Synology.&lt;/p&gt;
  &lt;p&gt;Что получается в результате? При использовании встроенной в DSM утилиты Key Manager уровень защиты данных строго равен нулю: и сами данные, и ключ шифрования MEK хранятся на жестком диске, а ключ KEK фиксированный и нам известен. Извлекаем диск, читаем или расшифровываем данные, заодно узнаем оригинальный пароль, который ввел пользователь.&lt;/p&gt;
  &lt;p&gt; &lt;/p&gt;
  &lt;h3&gt;Как делать правильно&lt;/h3&gt;
  &lt;p&gt;Для лучшего понимания всей глубины проблемы сравним механизм шифрования DSM с тем, что используют компьютеры с Windows. Для защиты данных в Windows используется широко известный и подробно документированный механизм BitLocker, которым можно зашифровать системный раздел. Ключ шифрования данных MEK сохраняется в составе контейнера; при этом ключ MEK будет зашифрован ключом KEK, который генерирует защищенный модуль TPM2.0. Извлечь оттуда этот ключ практически невозможно, проще устроить лобовую атаку пароля учетной записи Windows.&lt;/p&gt;
  &lt;p&gt;Таким образом, если мы вытащим из компьютера зашифрованный BitLocker диск, то расшифровать его не удастся даже в том случае, когда используется защита самого начального уровня — BitLocker Device Protection. Для расшифровки потребуется, чтобы диск был установлен в тот самый компьютер с тем самым аппаратным модулем TPM2.0, и понадобится пароль от учетной записи пользователя. Просто TPM2.0 или просто пароля от учетной записи для расшифровки раздела недостаточно.&lt;/p&gt;
  &lt;p&gt;Если все так плохо, то в чем вообще смысл включать шифрование и использовать встроенный Key Manager? Причин несколько.&lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;Peace of mind. Чувство защищенности и спокойный сон очень важны для здоровья. О том, что чувство безопасности ложное, можно никогда и не узнать. Примерно этой же цели (и с тем же результатом) служат театры безопасности, устроенные в некоторых странах органами охраны правопорядка на входе в аэропорт или на железнодорожный вокзал.&lt;/li&gt;
    &lt;li&gt;Безопасная продажа или утилизация работоспособного накопителя. Допустим, в далеком 2014 году ты приобрел NAS с двумя гигантскими дисками аж по 3 Тбайт каждый. В 2019 году этот объем уже не впечатляет, и ты решил заменить их на два диска по 8 Тбайт. Что делать со старыми дисками? В первую очередь — уничтожить данные. Это можно сделать, полностью переписав содержимое накопителя — займет несколько часов. Но той же цели можно добиться проще и быстрее, просто удалив ключи шифрования из Key Manager. Теперь зашифрованные данные просто цифровой шум, а диск достаточно заново инициализировать.&lt;/li&gt;
    &lt;li&gt;Наконец, ты можешь сохранить ключ не на встроенный, а на внешний USB-накопитель — и вот тогда Key Manager предложит тебе ввести свой собственный пароль для защиты ключа. Теперь для расшифровки дисков потребуется USB-накопитель с ключом шифрования, а твой пароль, которым защищен ключ шифрования, будет сохранен на внутреннем накопителе в Synology.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p&gt;Итак, выполнение любого из перечисленных ниже условий делает зашифрованные данные уязвимыми.&lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;Пользователь добавляет ключ в Key Manager, сохраняя его на встроенном накопителе. Положение переключателя mount on boot в данном случае значения не имеет.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/8184c874ddc13c133e702.png&quot; width=&quot;586&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;2. Пользователь сохраняет ключ на внешнем USB-накопителе, и у тебя есть доступ к этому накопителю.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/6b8497fb6e079ab8b7e9b.png&quot; width=&quot;618&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;3. Ключ шифрования автоматически сохраняется на компьютер пользователя при создании зашифрованной сетевой папки. Если тебе доступен этот ключ, проблемы с расшифровкой данных не будет. Имя файла по умолчанию — .key.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/d1bc5ada572a8232922e4.png&quot; width=&quot;460&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;4. Наконец, если тебе удалось узнать пароль шифрования, то расшифровка данных тривиальна.&lt;/p&gt;
  &lt;h3&gt;Эксплуатация уязвимостей&lt;/h3&gt;
  &lt;p&gt;Итак, подытожим описанное выше. В Synology DSM используется стандартная криптографическая файловая система eCryptFS, при этом шифрование SED на уровне SATA домашними и офисными устройствами не используется. Ключи шифрования могут сохраняться на встроенный или внешний накопитель. В первом случае ключ шифрования защищается фиксированным паролем; во втором пароль задает пользователь, но этот пароль сохраняется на встроенном накопителе (по крайней мере, если включена опция mount on boot).&lt;/p&gt;
  &lt;p&gt;Уязвимость 1: отсутствие шифрования SED, а также шифрования на уровне тома позволяет извлечь диск и изменить пароль от административной учетной записи владельца устройства, просто отредактировав файл &lt;code&gt;/etc/passwd&lt;/code&gt;.&lt;/p&gt;
  &lt;p&gt;Уязвимость 2: если пользователь сохранил ключ шифрования в DSM Key Manager, его можно извлечь и использовать для расшифровки зашифрованных данных. Кроме того, из сохраненного ключа шифрования легко разворачивается и оригинальный пароль, который вводил пользователь при создании зашифрованной сетевой папки.&lt;/p&gt;
  &lt;p&gt;Уязвимость 3: все устройства Synology используют фиксированный пароль для шифрования ключа шифрования.&lt;/p&gt;
  &lt;p&gt;Следующая команда отобразит оригинальный пароль, который вводил пользователь при создании зашифрованной папки:&lt;/p&gt;
  &lt;pre&gt;printf &amp;quot;%s&amp;quot; &amp;quot;\$1\$5YN01o9y&amp;quot; | ecryptfs-unwrap-passphrase keyfile.key -
&lt;/pre&gt;
  &lt;p&gt;Здесь $1$5YN01o9y — тот самый фиксированный ключ wrapping passphrase, а keyfile.key — зашифрованный ключ шифрования данных MEK.&lt;/p&gt;
  &lt;p&gt;Узнав пароль, можно смонтировать зашифрованную папку на любом компьютере с Linux. То же самое можно сделать и одной командой при помощи файла с ключом шифрования:&lt;/p&gt;
  &lt;pre&gt;mount -t ecryptfs -o key=passphrase,ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_passthrough=no,ecryptfs_enable_filename_crypto=yes,passwd=$(printf &amp;quot;%s&amp;quot; &amp;quot;\$1\$5YN01o9y&amp;quot; | ecryptfs-unwrap-passphrase /path/to/keyfile.key -) /path/to/encrypted/folder /path/to/mountpoint
&lt;/pre&gt;
  &lt;p&gt;Пути &lt;code&gt;/path/to/keyfile.key&lt;/code&gt;, &lt;code&gt;/path/to/encrypted/folder&lt;/code&gt; и &lt;code&gt;/path/to/mountpoint&lt;/code&gt; нужно заменить на фактически используемые. Физически зашифрованное содержимое сетевых папок DSM сохраняет в следующей коннотации:&lt;/p&gt;
  &lt;pre&gt;/Volume&amp;lt;N&amp;gt;/@&amp;lt;name_of_encrypted_share@
&lt;/pre&gt;
  &lt;p&gt;В примере выше путь будет таким:&lt;/p&gt;
  &lt;pre&gt;/Volume1/@Encrypted_Share@
&lt;/pre&gt;
  &lt;p&gt; &lt;/p&gt;
  &lt;h3&gt;Статьи по теме&lt;/h3&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://robertcastle.com/2012/10/howto-recover-synology-encrypted-folders-in-linux/&quot; target=&quot;_blank&quot;&gt;How To Recover Synology encrypted folders in Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://unix.stackexchange.com/questions/178160/how-to-decrypt-ecryptfs-file-with-private-key-instead-of-passphrase&quot; target=&quot;_blank&quot;&gt;How to decrypt ecryptfs file with private key instead of passphrase&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.synology-forum.de/showthread.html?76648-Verschl%C3%BCsselten-Ordner-automatisch-einbinden-%28Skript%29&amp;p=633034&amp;viewfull=1#post633034&quot; target=&quot;_blank&quot;&gt;Automatically mounting encrypted folders (на немецком)&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.synology-forum.de/showthread.html?48569-Script-Verschl%C3%BCsselten-Ordner-via-Keyfile-%28-key%29-entschl%C3%BCsseln&amp;p=387288&amp;viewfull=1#post387288&quot; target=&quot;_blank&quot;&gt;Script: Decrypt encrypted folders via keyfile (.key) (на немецком)&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;Если пользователь сохранил ключ на внешнем USB-накопителе, DSM запросит пароль для шифрования этого ключа.&lt;/p&gt;
  &lt;p&gt;Если пользователь настроил сетевую папку таким образом, чтобы она автоматически подключалась после загрузки устройства, то этот пароль сохраняется на внутреннем накопителе. Пароль можно извлечь и использовать для доступа к данным.&lt;/p&gt;
  &lt;p&gt;Наконец, если пользователь вообще не сохранил ключ шифрования в Key Manager, то данные в относительной безопасности. «Относительной» потому, что средняя энтропия пользовательских паролей значительно ниже энтропии 256-битного ключа шифрования AES. Атаки на пароли именно этого типа существуют давно, отлично оптимизированы и работают чрезвычайно быстро (в отличие, например, от атак на ключи BitLocker или документы, созданные в Microsoft Office 2016, — при прочих равных такие атаки работают значительно медленнее). Никто не отменял и человеческий фактор, который также может использоваться для взлома таких паролей.&lt;/p&gt;
  &lt;p&gt; &lt;/p&gt;
  &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;h3&gt;Заключение&lt;/h3&gt;
  &lt;p&gt;Данные расшифрованы, все пропало? Реальная безопасность «непробиваемого» шифрования в Synology оказалась ниже ожидаемой из-за того, что аппаратных механизмов обеспечения безопасности нет. Для обеспечения безопасности ключей шифрования в iOS используется Secure Enclave, в Windows — TPM2.0, в устройствах с Android — TrustZone. В домашних и офисных моделях Synology не используется ничего из вышеперечисленного, хотя даже в SoC Realtek RTD1296, на которой основаны младшие модели Synology DS118, DS218Play и DS218, поддержка ARM TrustZone есть. Роль аппаратного модуля безопасности выполняет фиксированная фраза $1$5YN01o9y — аналог default_password в старых версиях Android.&lt;/p&gt;
  &lt;p&gt;Выбор средств защиты данных всегда компромисс между удобством и безопасностью. И если в Windows, Android и iOS мы получаем стойкую защиту зашифрованных файлов, которую &lt;a href=&quot;https://blog.elcomsoft.com/2019/11/ios-device-acquisition-with-checkra1n-jailbreak/&quot; target=&quot;_blank&quot;&gt;не удалось пробить&lt;/a&gt; даже эксплуатации уязвимости на уровне загрузчика, то у пользователей Synology выбор простой: или относительно безопасно, но неудобно (сетевые папки монтировать каждый раз вручную, через веб-интерфейс, вводя каждый раз более или менее стойкий пароль шифрования), или удобно, но с нулевым уровнем безопасности. Компромиссным решением будет хранение ключа шифрования на подключаемой к устройству флешке, которую можно вставлять во время загрузки и извлекать из накопителя после ее завершения.&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;https://t.me/USBKiller&quot; target=&quot;_blank&quot;&gt;ПОДПИСАТЬСЯ - USBKiller&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>usbkiller:IkWIjO8n</id><link rel="alternate" type="text/html" href="https://teletype.in/@usbkiller/IkWIjO8n?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=usbkiller"></link><title>Шифруйся грамотно! Изучаем перспективные мессенджеры для приватной переписки</title><published>2020-02-20T17:48:45.403Z</published><updated>2020-02-20T17:48:45.403Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/bd/20/bd2004e6-cc3a-481a-9173-cf05bceaf580.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/21/d4/21d42757-598b-460c-b1b1-fa566f1ca28a.jpeg&quot;&gt;Источник: t.me/USBKiller</summary><content type="html">
  &lt;p&gt;Источник: t.me/USBKiller&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/21/d4/21d42757-598b-460c-b1b1-fa566f1ca28a.jpeg&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;strong&gt;Содержание статьи&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;Критерии оценки&lt;br /&gt;Wickr&lt;br /&gt;Tox (Antox)&lt;br /&gt;Jami&lt;br /&gt;Chat.Onion&lt;br /&gt;Firechat&lt;br /&gt;Адамант&lt;br /&gt;Cyphr&lt;br /&gt;Silence&lt;br /&gt;Итоги&lt;/em&gt;&lt;/p&gt;
  &lt;h3&gt;Критерии оценки&lt;/h3&gt;
  &lt;p&gt;Здесь мало что изменилось по сравнению с предыдущим исследованием. Я убрала проверку на блокирование скриншотов (это все равно слишком легко обойти), но добавила пункты о возможности использования одной учетной записи сразу на нескольких устройствах и проверку на то, могут ли передаваться сообщения каким-либо способом, кроме как в интернете.&lt;/p&gt;
  &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;FOSS&lt;/strong&gt; — доступен ли исходный код по свободной лицензии, как разработчики взаимодействуют с сообществом, принимают ли патчи.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Степень централизации&lt;/strong&gt; — требуется ли наличие центрального сервера, который можно заблокировать, используется ли сеть серверов, или каждый клиент является одновременно и сервером (P2P).&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Возможность анонимной регистрации и использования&lt;/strong&gt; — есть ли привязка к телефону, и используются ли иные методы «жесткой аутентификации».&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Наличие End-to-End Encryption (E2EE)&lt;/strong&gt; — некоторые мессенджеры имеют такую функцию по умолчанию, в других ее можно включить, но попадаются и те, где сквозного шифрования просто нет.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Синхронизация End-to-End encrypted чатов&lt;/strong&gt; — наличие этой функции сильно упрощает жизнь, но технически реализовать ее непросто, и встречается она редко.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Необходимость проверки отпечатков E2EE (в том числе в групповых чатах)&lt;/strong&gt; — не все мессенджеры имеют функцию проверки отпечатков, некоторые не предлагают делать это открыто. Групповые чаты без проверки отпечатков собеседников перестают быть приватными.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Групповые E2EE-чаты&lt;/strong&gt; — интересная функция, которая позволяет шифровать переписку между несколькими пользователями.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Возможность добавления устройств&lt;/strong&gt; — использовать одну и ту же учетную запись на разных устройствах бывает не просто удобно, а необходимо.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Защита социального графа&lt;/strong&gt; — важно, собирает ли мессенджер информацию о контактах пользователя и другие данные.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Альтернативные способы передачи данных&lt;/strong&gt; — проверка возможности передавать сообщения каким-либо способом, кроме как через интернет.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt; &lt;/p&gt;
  &lt;h3&gt;Wickr&lt;/h3&gt;
  &lt;p&gt;&lt;a href=&quot;https://wickr.com/&quot; target=&quot;_blank&quot;&gt;Официальный сайт&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Лицензия:&lt;/strong&gt; проприетарный клиент, открытый протокол (&lt;a href=&quot;https://github.com/WickrInc&quot; target=&quot;_blank&quot;&gt;исходники&lt;/a&gt;)&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Централизация:&lt;/strong&gt; централизованный&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Анонимность:&lt;/strong&gt; регистрация доступна без номера телефона, но при желании можно его добавить&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;E2EE:&lt;/strong&gt; есть, по умолчанию&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Синхронизация E2EE:&lt;/strong&gt; нет, при входе в учетную запись с другого девайса предыдущая переписка не сохранилась&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Проверка отпечатков:&lt;/strong&gt; можно отправить собеседнику короткое видео со своим лицом, чтобы он мог убедиться, что ты — это ты, но никакого уведомления об этом нет. И эта функция в программе спрятана слишком глубоко&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Возможность добавления устройств:&lt;/strong&gt; есть&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Групповые E2EE-чаты:&lt;/strong&gt; есть&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Уведомление о проверке E2EE:&lt;/strong&gt; уведомлений нет, возможность есть&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Защита социального графа:&lt;/strong&gt; приложению можно разрешить доступ к списку контактов (делать это, конечно, не стоит)&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Альтернативные способы передачи данных:&lt;/strong&gt; нет&lt;/p&gt;
  &lt;p&gt;Мессенджер, основанный на блокчейне, — по уверениям разработчиков, анонимный на 100%. Переписка осуществляется через серверы, но все сообщения удаляются как с них, так и с компьютеров, смартфонов и других девайсов, при этом пользователь может сам настроить продолжительность хранения истории сообщений.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/b23839aca38e852b2d9d2.png&quot; width=&quot;400&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Вся передаваемая информация может шифроваться с использованием стандартов (AES-256, ECDH-521, RSA-4096 TLD). Ради пущей безопасности для каждого нового сообщения формируется свой ключ. Вся переписка пользователей обезличена — сообщения не содержат имен отправителя, получателя и геометок.&lt;/p&gt;
  &lt;p&gt;На сайте разработчика доступны три версии: me, ent и pro, однако бесплатно для личного использования можно скачать только первую из них. Ent и pro платные и имеют расширенный набор функций.&lt;/p&gt;
  &lt;p&gt;Интересно, что этот мессенджер используется в некоторых государственных и правительственных учреждениях. Хорошо это или плохо, сказать сложно.&lt;/p&gt;
  &lt;h3&gt;Tox (Antox)&lt;/h3&gt;
  &lt;p&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=chat.tox.antox&quot; target=&quot;_blank&quot;&gt;Antox в Google Play&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Лицензия:&lt;/strong&gt; GPLv3 (&lt;a href=&quot;https://github.com/Antox/Antox&quot; target=&quot;_blank&quot;&gt;исходники&lt;/a&gt;)&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Централизация:&lt;/strong&gt; децентрализованный&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Анонимность:&lt;/strong&gt; да&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;E2EE:&lt;/strong&gt; есть, по умолчанию&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Синхронизация E2EE:&lt;/strong&gt; нет&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Проверка отпечатков:&lt;/strong&gt; чтобы начать диалог, необходимо или ввести идентификатор собеседника, или считать его QR-код&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Возможность добавления устройств:&lt;/strong&gt; можно импортировать профиль c одного смартфона на другой&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Групповые E2EE-чаты:&lt;/strong&gt; есть&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Уведомление о проверке E2EE:&lt;/strong&gt; в групповой чат может добавиться любой пользователь, который знает его ID, без предварительной проверки отпечатков&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Защита социального графа:&lt;/strong&gt; есть&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Альтернативные способы передачи данных:&lt;/strong&gt; нет&lt;/p&gt;
  &lt;p&gt;Этот мессенджер создала группа независимых разработчиков, ратующих за безопасность и приватность переписки. Программа опенсорсная, все сообщения передаются со сквозным шифрованием, отключить которое не получится никак. Интерфейс мессенджера простой и понятный, что меня очень порадовало.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/a5272716ff31e330d5f3d.png&quot; width=&quot;400&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/1922eb2f2066bb22fce1f.png&quot; width=&quot;400&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;ToxВ основе Antox лежит протокол Tox, который обеспечивает голосовую и видеосвязь, возможность отправлять мгновенные сообщения и передавать файлы, режим конференции с несколькими участниками, а также другие фичи, присущие практически каждому современному мессенджеру. А главное — в нем отсутствует реклама.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/67639c75a3daf5796b3ff.png&quot; width=&quot;400&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Antox&lt;br /&gt;&lt;br /&gt;  &lt;/p&gt;
  &lt;p&gt;Для каждой ОС разработчики придумали свое клиентское приложение. Программы qTox и μTox — это десктопные версии, Antox — мобильная версия для Android, а Antidote предназначен для пользователей iOS. Я рассмотрела только Antox, оценить преимущества и недостатки реализаций мессенджера для других платформ ты можешь самостоятельно.&lt;/p&gt;
  &lt;p&gt; &lt;/p&gt;
  &lt;h3&gt;Jami&lt;/h3&gt;
  &lt;p&gt;&lt;a href=&quot;https://jami.net/&quot; target=&quot;_blank&quot;&gt;Официальный сайт&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Лицензия:&lt;/strong&gt; GPLv3 (&lt;a href=&quot;https://github.com/savoirfairelinux/ring-client-gnome&quot; target=&quot;_blank&quot;&gt;исходники десктопной версии&lt;/a&gt;, &lt;a href=&quot;https://github.com/savoirfairelinux/ring-client-android&quot; target=&quot;_blank&quot;&gt;исходники клиента для Android&lt;/a&gt;)&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Централизация:&lt;/strong&gt; децентрализованный&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Анонимность:&lt;/strong&gt; да&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;E2EE:&lt;/strong&gt; есть, по умолчанию&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Синхронизация E2EE:&lt;/strong&gt; нет — переписки, предшествовавшие моменту входа в аккаунт с нового устройства, не синхронизировались&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Проверка отпечатков:&lt;/strong&gt; чтобы добавить контакт, можно отсканировать QR-код, но можно найти контакт по нику или по идентификатору телефона. Под идентификатором телефона подразумевается последовательность из сорока символов, которая служит идентификатором пользователя. Можно также поделиться своими контактными данными через любой другой мессенджер, почту или передать их по Bluetooth&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Возможность добавления устройств:&lt;/strong&gt; к одному устройству с помощью генерируемого пин-кода можно привязать несколько аккаунтов&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Групповые E2EE-чаты:&lt;/strong&gt; нет&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Защита социального графа:&lt;/strong&gt; есть&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Альтернативные способы передачи данных:&lt;/strong&gt; нет&lt;/p&gt;
  &lt;p&gt;Jami — это полностью опенсорсный мессенджер, код которого публикуется по лицензии GPLv3. Программа выросла из проекта &lt;a href=&quot;https://www.voip-info.org/sflphone/&quot; target=&quot;_blank&quot;&gt;SFLphone&lt;/a&gt;.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/1045351301017e7da63f9.png&quot; width=&quot;400&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Раньше эта программа называлась Ring, но за время написания статьи ее успели переименовать в Jami. Возможно, разработчики сделали это, чтобы избежать путаницы с &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.ringid.ringmessenger&quot; target=&quot;_blank&quot;&gt;другим мессенджером&lt;/a&gt; под таким же названием, который не попал в мой список.&lt;/p&gt;
  &lt;p&gt;Как и любой другой мессенджер, Jami поддерживает отправку текстовых сообщений, безопасные и надежные аудио- и видеозвонки, а также передачу документов и файлов.&lt;/p&gt;
  &lt;p&gt;Для установки соединения между пользователями применяются распределенные хеш-таблицы. Все ключи шифрования и идентификации остаются в пределах смартфона пользователя. Серверы не используются, то есть пользователи образуют одноранговую сеть, что очень хорошо с точки зрения безопасности.&lt;/p&gt;
  &lt;p&gt; &lt;/p&gt;
  &lt;h3&gt;Chat.Onion&lt;/h3&gt;
  &lt;p&gt;&lt;a href=&quot;https://onionapps.github.io/Chat.onion/&quot; target=&quot;_blank&quot;&gt;Страница с описанием&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Лицензия:&lt;/strong&gt; исходники открыты, без лицензии&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Централизация:&lt;/strong&gt; децентрализованный&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Анонимность:&lt;/strong&gt; да, пользователю сразу присваивается идентификатор&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;E2EE:&lt;/strong&gt; да, по умолчанию&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Синхронизация E2EE:&lt;/strong&gt; нет&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Проверка отпечатков:&lt;/strong&gt; чтобы добавить собеседника, необходимо отсканировать его QR-код и дать ему отсканировать свой&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Возможность добавления устройств:&lt;/strong&gt; существует версия только для смартфонов, функцию входа в существующую учетную запись обнаружить не удалось&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Групповые E2EE-чаты:&lt;/strong&gt; нет&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Защита социального графа:&lt;/strong&gt; есть&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Альтернативные способы передачи данных:&lt;/strong&gt; нет&lt;/p&gt;
  &lt;p&gt;Этот мессенджер основан на onion-маршрутизации, которая используется в браузере Tor. Она позволяет скрыть IP-адрес пользователя, метаданные и любую другую идентифицирующую информацию. Для этого каждое сообщение передается между несколькими прокси-серверами в рандомном порядке, прежде чем достигнет адресата. Анонимность обеспечивается благодаря тому, что каждый сервер «знает», только откуда пришло сообщение и куда его надо отправить дальше.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/795f827ba1359bc5eb4bd.png&quot; width=&quot;400&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Каждому пользователю присваивается ID, состоящий из 16 символов, но для упрощения жизни можно просто отсканировать QR-код собеседника.&lt;/p&gt;
  &lt;p&gt;Само приложение порадовало своим минимализмом, как и сайт разработчиков.&lt;/p&gt;
  &lt;p&gt; &lt;/p&gt;
  &lt;h3&gt;Firechat&lt;/h3&gt;
  &lt;p&gt;&lt;a href=&quot;https://www.opengarden.com/firechat/&quot; target=&quot;_blank&quot;&gt;Официальный сайт&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Лицензия:&lt;/strong&gt; проприетарный&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Централизация:&lt;/strong&gt; децентрализованный&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Анонимность:&lt;/strong&gt; и да и нет. Свои данные вроде номера телефона указывать не надо, но вот примерное местоположение пользователя можно определить&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;E2EE:&lt;/strong&gt; есть&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Синхронизация E2EE:&lt;/strong&gt; при выходе из приложения можно импортировать ключи, чтобы иметь возможность затем дешифровать сообщения&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Проверка отпечатков:&lt;/strong&gt; можно ограничить возможность пересылки зашифрованных сообщений — они будут отправляться только тем пользователям, чьи отпечатки верифицированы&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Возможность добавления устройств:&lt;/strong&gt; есть&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Групповые E2EE-чаты:&lt;/strong&gt; есть&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Защита социального графа:&lt;/strong&gt; вроде бы есть, но то, что в «общую комнату» по умолчанию объединяются пользователи, находящиеся на небольшом расстоянии друг от друга, не очень-то сочетается с безопасностью&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Альтернативные способы передачи данных:&lt;/strong&gt; по Bluetooth и Wi-Fi&lt;/p&gt;
  &lt;p&gt;Проприетарный мессенджер, созданный в компании Open Garden. Работает весьма необычным способом: объединяет всех пользователей мессенджера, находящихся на расстоянии 200 шагов друг от друга, в одну сеть посредством Bluetooth или Wi-Fi. Обычное подключение к интернету ему не требуется.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/80b2e6af7fa39447f884d.png&quot; width=&quot;400&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/c22c18afd33cb94063a3d.png&quot; width=&quot;400&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Сложно сказать, как соотносится с безопасностью такой режим работы. Возможно, если очень постараться, получится определить личности пользователей, например методами социальной инженерии. Ну и для общения с приятелем, живущим в другой стране, этот мессенджер никак не подходит.&lt;/p&gt;
  &lt;p&gt;Интерфейс приложения крайне неочевидный, особенно если учесть необычный способ коммуникации. И ситуаций, когда подобная программа может пригодиться, не так много, разве что координация митингов и забастовок. Но если такое приложение создано и его разработка продолжается, значит, спрос есть.&lt;/p&gt;
  &lt;p&gt; &lt;/p&gt;
  &lt;h3&gt;Адамант&lt;/h3&gt;
  &lt;p&gt;&lt;a href=&quot;https://adamant.im/ru/&quot; target=&quot;_blank&quot;&gt;Официальный сайт&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Лицензия:&lt;/strong&gt; GPLv3 (&lt;a href=&quot;https://github.com/Adamant-im&quot; target=&quot;_blank&quot;&gt;исходники&lt;/a&gt;)&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Централизация:&lt;/strong&gt; децентрализованный&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Анонимность:&lt;/strong&gt; есть&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;E2EE:&lt;/strong&gt; есть&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Синхронизация E2EE:&lt;/strong&gt; есть&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Проверка отпечатков:&lt;/strong&gt; можно отсканировать QR-код собеседника или ввести его идентификатор&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Возможность добавления устройств:&lt;/strong&gt; есть, по парольной фразе (как в кошельках для «битков»)&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Групповые E2EE-чаты:&lt;/strong&gt; нет&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Уведомление о проверке E2EE:&lt;/strong&gt; нет&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Защита социального графа:&lt;/strong&gt; есть&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Альтернативные способы передачи данных:&lt;/strong&gt; нет&lt;/p&gt;
  &lt;p&gt;Еще один мессенджер, основанный на блокчейне. Создан он в России и имеет большую рекламную поддержку, не побоюсь сказать, со всех заинтересованных сторон.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/caadab2a0227b25dcad6b.png&quot; width=&quot;400&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;По уверениям разработчиков, его приватность максимальна, непонятно только, по сравнению с чем. При регистрации не нужно вводить никакой персональной информации. История сообщений не хранится на устройстве, а загружается из блокчейна, поэтому доступ к переписке возможен сразу с нескольких устройств пользователя — в этом как раз и заключается основной смысл технологии.&lt;/p&gt;
  &lt;p&gt;В мессенджере также предусмотрена возможность отправлять собеседникам криптовалюту, а именно ADM, ETH и BNB, причем разработчики обещают расширить этот список. Правда, актуальность этой фичи остается под вопросом, учитывая резкое падение биткойна, а следом за ним и других криптовалют.&lt;/p&gt;
  &lt;p&gt;При регистрации новому юзеру сразу присваивается ID мессенджера и адрес, по которому можно получить криптовалютный перевод, а также начисляется поощрительный приз в размере 0,1 ADM.&lt;/p&gt;
  &lt;p&gt; &lt;/p&gt;
  &lt;h3&gt;Cyphr&lt;/h3&gt;
  &lt;p&gt;&lt;a href=&quot;https://www.goldenfrog.com/cyphr&quot; target=&quot;_blank&quot;&gt;Официальный сайт&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Лицензия:&lt;/strong&gt; проприетарный&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Централизация:&lt;/strong&gt; централизованный&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Анонимность:&lt;/strong&gt; зарегистрироваться можно только по адресу электронной почты&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;E2EE:&lt;/strong&gt; есть (сообщение отправится, только если собеседник будет онлайн)&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Синхронизация E2EE:&lt;/strong&gt; есть&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Проверка отпечатков:&lt;/strong&gt; нет&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Возможность добавления устройств:&lt;/strong&gt; есть&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Групповые E2EE-чаты:&lt;/strong&gt; есть. Сообщение отправится, только если все собеседники будут онлайн&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Уведомление о проверке E2EE:&lt;/strong&gt; нет&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Защита социального графа:&lt;/strong&gt; есть&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Альтернативные способы передачи данных:&lt;/strong&gt; нет&lt;/p&gt;
  &lt;p&gt;Этот мессенджер разрабатывают в компании Golden Frog, и он проприетарный. Конечно, его создатели обещают не хранить на своих серверах связанные с пользователями метаданные и называют свое приложение zero-knowledge.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/645836fc07bf568d2a370.png&quot; width=&quot;400&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/83dae0a534df7ecb70fa3.png&quot; width=&quot;400&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Но все же, несмотря на эти уверения, кое-что будет храниться на сервере до того, как адресат получит сообщение. А именно — само сообщение в зашифрованном виде, время его отправки и имя адресата, то есть данные, которые необходимы для успешной передачи сообщения. Сообщения шифруются с помощью 256-битного симметричного шифрования.&lt;/p&gt;
  &lt;p&gt;В общем, в Cyphr хорошо практически все, кроме закрытых исходников.&lt;/p&gt;
  &lt;p&gt; &lt;/p&gt;
  &lt;h3&gt;Silence&lt;/h3&gt;
  &lt;p&gt;&lt;a href=&quot;https://silence.im/&quot; target=&quot;_blank&quot;&gt;Официальный сайт&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Лицензия:&lt;/strong&gt; GPLv3 (&lt;a href=&quot;https://github.com/SilenceIM/Silence&quot; target=&quot;_blank&quot;&gt;исходники&lt;/a&gt;)&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Централизация:&lt;/strong&gt; децентрализованный&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Анонимность:&lt;/strong&gt; нет, SMS-сообщения отправляются на номер телефона&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;E2EE:&lt;/strong&gt; есть&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Синхронизация E2EE:&lt;/strong&gt; нет&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Проверка отпечатков:&lt;/strong&gt; есть&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Возможность добавления устройств:&lt;/strong&gt; нет, при установке приложения не создается учетная запись, а идет привязка к телефонному номеру&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Групповые E2EE-чаты:&lt;/strong&gt; нет&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Защита социального графа:&lt;/strong&gt; нет (у оператора останется информация о факте отправки SMS-сообщения)&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Альтернативные способы передачи данных:&lt;/strong&gt; нет&lt;/p&gt;
  &lt;p&gt;Мессенджер, отколовшийся от проекта &lt;a href=&quot;https://signal.org/&quot; target=&quot;_blank&quot;&gt;Signal&lt;/a&gt;, который в свое время вырос из мессенджера TextSecure. Его особенность заключается в том, что шифрует он только SMS-сообщения. Из-за этого Silence выделяется из общего списка рассматриваемых мною мессенджеров, но тем не менее он весьма интересен. Silence можно установить на телефон под управлением Android в качестве основного приложения для отправки и приема SMS-сообщений.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/ca25b602a14c21713d642.png&quot; width=&quot;400&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Этот мессенджер работает там, где нет доступа к интернету или где возможности его использования ограничены. Но доступен Silence только для Android, версии для iOS не существует в природе.&lt;/p&gt;
  &lt;h3&gt;Итоги&lt;/h3&gt;
  &lt;p&gt;В этот раз дела в целом обстоят получше: у всех рассмотренных мессенджеров как минимум есть функция шифрования переписки. Рекомендовать какой-то конкретный из них не буду: лучше выбирай то, что тебе ближе и удобнее. Моя цель более скромная — помочь сориентироваться в многообразии мессенджеров.&lt;/p&gt;
  &lt;p&gt;Для твоего удобства вся информация сведена в &lt;a href=&quot;https://xakep.ru/static/messengers-table3.jpg#26175676&quot; target=&quot;_blank&quot;&gt;таблицу&lt;/a&gt;. Помни, что баллы в ней — не абсолютная оценка защищенности; они говорят лишь о наличии некоторого числа важных признаков.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/43436774a5606d6ea436c.png&quot; width=&quot;1520&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;https://t.me/USBKiller&quot; target=&quot;_blank&quot;&gt;ПОДПИСАТЬСЯ - USBKiller&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>usbkiller:eR7DYuuF</id><link rel="alternate" type="text/html" href="https://teletype.in/@usbkiller/eR7DYuuF?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=usbkiller"></link><title>Узнаем пароли знакомых</title><published>2020-02-19T05:59:47.421Z</published><updated>2020-02-19T05:59:47.421Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/a5/08/a5088b79-46f4-454d-931a-019f45e6f3b1.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/40/ab/40abb050-ee82-489c-8065-7429f063a40f.jpeg&quot;&gt;Источник: t.me/USBKiller</summary><content type="html">
  &lt;p&gt;Источник: t.me/USBKiller&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/40/ab/40abb050-ee82-489c-8065-7429f063a40f.jpeg&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;strong&gt;Итак.&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;Запускаем терминал. Для это правой кнопкой мыши по столу и &amp;quot;open terminal&amp;quot;.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/2da29b1dd6ed56c7241a4.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Далее пишем &amp;quot;setoolkit&amp;quot; - это набор инструментов для социальной инженерии.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/c4894da55c01619a19169.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Выбираем первый пункт.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/7f70cab6adff19d7b26b4.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Далее второй &amp;quot;website attack vector&amp;quot;.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/4dfb89c1ad256fda683fb.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Тут выбираем 3 вариант &amp;quot;credential harvester attack method&amp;quot;.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/2113fcd32e3f6c8474637.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;И последнее 2 вариант или &amp;quot;site cloner&amp;quot;.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/9f2ff044de21206fbb7dd.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Тут нужно будет вписать 2 параметра.&lt;/p&gt;
  &lt;p&gt;1)Куда будут направляться запросы, то есть ip адрес сервера, в данном случае &amp;quot;localhost&amp;quot;, у вас же нет личного настроенного сервера?&lt;/p&gt;
  &lt;p&gt;2)Домен сайта, который будет скопирован, в данном случае ВК, я просто не мог не взять его в пример&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/e2f91d906e8916b458706.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Если все сделаете правильно, то увидите нечто подобное.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/bd215a09d360527419164.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Пишем в браузере localhost и видите, что в консоли сразу отображаются все действия.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/f1434e78df594c06d71d4.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Для проверки введем логин и пароль и вы его моментально увидите слева.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/bf4c9ad392eeb56f8383f.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3&gt;Ответы на вопросы.&lt;/h3&gt;
  &lt;p&gt;Что такое localhost?&lt;/p&gt;
  &lt;p&gt;localhost или 127.0.0.1 - это ваш компьютер на котором держится веб-сервер, на котором в свою очередь работает сайт&lt;/p&gt;
  &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;p&gt;Кто на это поведется, там же даже не vk.com, а какой-то localhost, ты шутишь?&lt;/p&gt;
  &lt;p&gt;Еще раз, статья написана для примера и вряд ли у вас будет собственный выделенный веб-сервер и домен как ṿk.com, чтобы сделать сайт неотличимым от оригинала (надеюсь все обратили внимание на букву ṿ).&lt;/p&gt;
  &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;p&gt;Будет ли доступен сайт из интернета?&lt;/p&gt;
  &lt;p&gt;Нет, этот сайт будет доступен только вам и всем в вашей локальной сети.&lt;/p&gt;
  &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;p&gt;Можно ли сделать неотличимый сайт от оригинала таким способом?&lt;/p&gt;
  &lt;p&gt;Да. Покупайте сервер, ищите домен, который будет наиболее соответствовать оригиналу и вперед.&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;https://t.me/USBKiller&quot; target=&quot;_blank&quot;&gt;ПОДПИСАТЬСЯ - USBKiller&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>usbkiller:CoqSlu5DM</id><link rel="alternate" type="text/html" href="https://teletype.in/@usbkiller/CoqSlu5DM?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=usbkiller"></link><title>Непростая загогулина. Краткий путеводитель по эллиптическим кривым</title><published>2020-02-18T11:54:46.474Z</published><updated>2020-02-18T11:54:46.474Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/e1/08/e108b71f-e617-43b6-80c4-923f70acd45e.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/1e/9e/1e9efb0b-7c00-425b-8d40-aec197955943.jpeg&quot;&gt;Источник: t.me/USBKiller</summary><content type="html">
  &lt;p&gt;Источник: t.me/USBKiller&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/1e/9e/1e9efb0b-7c00-425b-8d40-aec197955943.jpeg&quot; width=&quot;4275&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3&gt;Содержание статьи&lt;/h3&gt;
  &lt;ul&gt;
    &lt;li&gt;Криптография с открытым ключом: как все начиналось&lt;/li&gt;
    &lt;li&gt;Алгоритм RSA в миниатюре&lt;/li&gt;
    &lt;li&gt;Не такой уж тайный ход&lt;/li&gt;
    &lt;li&gt;Эллиптические кривые: где найти надежный потайной ход?&lt;/li&gt;
    &lt;li&gt;Странная симметрия&lt;/li&gt;
    &lt;li&gt;Все страньше и страньше&lt;/li&gt;
    &lt;li&gt;Что все это значит?&lt;/li&gt;
    &lt;li&gt;Эллиптические кривые в действии&lt;/li&gt;
    &lt;li&gt;Оборотная сторона&lt;/li&gt;
    &lt;li&gt;Заглядывая вперед&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3&gt;Криптография с открытым ключом: как все начиналось&lt;/h3&gt;
  &lt;p&gt;Историю криптографии можно разделить на два периода: классический и современный. Водоразделом здесь служит 1977 год, когда одновременно были представлены алгоритм RSA и протокол Диффи — Хеллмана. Случилась настоящая революция: это были первые криптографические системы, где безопасность строилась на теории чисел. Стала возможной безопасная коммуникация без известного обеим сторонам — то есть симметричного — шифра. До этого криптография бесконечно занималась вопросом, как безопасно переслать секретные шифры. Теперь же она могла обеспечить доказательно безопасную коммуникацию между двумя сторонами — без заботы о том, не перехватит ли кто обмен ключами.&lt;/p&gt;
  &lt;p&gt;Современная криптография стоит на том, что ключ для шифрования данных может быть открытым, а вот ключ для дешифровки лучше оставить в секрете. Такие системы называют криптографическими системами с открытым ключом (public key cryptographic systems). Первая — и все еще самая распространенная из них — RSA. Она названа инициалами тех, кто впервые описал ее алгоритм (Ron Rivest, Adi Shamir, Leonard Adleman).&lt;/p&gt;
  &lt;p&gt;Хорошей криптографической системе с открытым ключом нужен набор алгоритмов, которые легко пройти в одном направлении и трудно в обратном. В случае с RSA «легкий» алгоритм умножает два простых числа. Его «трудной» парой будет факторизация — разложение получившегося результата на изначальные множители. Алгоритмы с такой характеристикой — «просто в одну сторону, трудно в обратную» — называют односторонней функцией с потайным входом (trapdoor function, TDF). Найти хорошую TDF критично важно для создания безопасной криптографической системы с открытым ключом.&lt;/p&gt;
  &lt;p&gt;Проще говоря, чем больше разрыв между сложностью прохождения функции в одном направлении и в другом, тем надежней получится криптографическая система, на ней основанная.&lt;/p&gt;
  &lt;h3&gt;Алгоритм RSA в миниатюре&lt;/h3&gt;
  &lt;p&gt;RSA — самая популярная и наиболее понятная из систем с открытым ключом. Ее безопасность опирается на то, что умножение — это быстро, а разложение на множители — медленно. Коротко рассмотрим, как выглядит и работает маленькая RSA-система.&lt;/p&gt;
  &lt;p&gt;Системы с открытым ключом обычно имеют два компонента: открытый ключ и секретный ключ. Шифрование работает так: берешь сообщение, применяешь к нему математическую операцию — и получаешь число, которое выглядит случайным. При дешифровке берешь это «случайное» число и применяешь другую операцию, чтобы получить исходное сообщение. Зашифрованное с помощью открытого ключа можно расшифровать, только применив секретный ключ.&lt;/p&gt;
  &lt;p&gt;Компьютеры не очень хорошо справляются с произвольно большими числами. Эту проблему можно решить, если выбрать максимальное значение и иметь дело только с числами, которые меньше максимума. Работает это как в часах с циферблатом и стрелками. Как перевести их, например, на 37 часов? Очевидно, разделить 37 на максимум — то есть 12 — и докрутить остаток. Так и здесь: любые вычисления, дающие результат больше максимума, мы «докручиваем» до числа в допустимом диапазоне.&lt;/p&gt;
  &lt;p&gt;В RSA максимальное значение (обозначим его &lt;code&gt;max&lt;/code&gt;) получают умножением двух случайных простых чисел. Открытый и секретный ключи — это два специально выбранных числа больше нуля, но меньше максимального значения, обозначим их &lt;code&gt;pub&lt;/code&gt; и &lt;code&gt;priv&lt;/code&gt;. Чтобы зашифровать число, мы перемножаем его &lt;code&gt;pub&lt;/code&gt; раз — и всякий раз «докручиваем», когда превышаем максимум. Чтобы расшифровать сообщение, перемножаем его &lt;code&gt;priv&lt;/code&gt; раз по тому же правилу — и получаем исходное число. Звучит удивительно, но правда работает. Когда обнаружили эту особенность, она стала большим прорывом.&lt;/p&gt;
  &lt;p&gt;Чтобы создать пару ключей для RSA, сначала берешь два простых числа, чтобы получить максимум (&lt;code&gt;max&lt;/code&gt;). Затем выбираешь число для открытого ключа (&lt;code&gt;pub&lt;/code&gt;). До тех пор пока ты знаешь два изначальных простых числа, ты можешь вычислить секретный ключ &lt;code&gt;priv&lt;/code&gt; через открытый. Это то, как факторизация соотносится со взломом RSA: разложение максимального значения на исходные множители позволяет вычислить чей-то секретный ключ по открытому и дешифровать личные сообщения.&lt;/p&gt;
  &lt;p&gt;Рассмотрим все это на конкретном примере. Возьмем простые числа 13 и 7, перемножим и получим максимальное значение 91. В качестве открытого ключа возьмем число 5. А затем, зная изначальные множители и максимум, применим расширенный алгоритм Евклида и получим секретный ключ — 29.&lt;/p&gt;
  &lt;p&gt;Эти параметры (&lt;code&gt;max = 91, pub = 5, priv = 29&lt;/code&gt;) определяют полностью функциональную RSA-систему. Мы можем взять число и перемножить его пять раз для зашифровки, а затем взять получившийся результат, перемножить его 29 раз и получить изначальное число.&lt;/p&gt;
  &lt;p&gt;Используем эти значения, чтобы зашифровать слово CLOUD.&lt;/p&gt;
  &lt;p&gt;Чтобы представить сообщение математически, нужно превратить буквы в числа. Для представления латинского алфавита отлично подходит кодировка UTF-8. Каждому символу соответствует свой номер.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/7d652e7bb618cf6b32f99.png&quot; width=&quot;504&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;В этой кодировке CLOUD выглядит как 67, 76, 79, 85, 68. Все эти числа меньше нашего максимума, поэтому мы можем зашифровать их по отдельности.&lt;/p&gt;
  &lt;pre&gt;67 × 67 = 4489 = 30

4489 = 91 × 49 + 30
30 × 67 = 2010 = 8
8 × 67 = 536 = 81
81 × 67 = 5427 = 58
&lt;/pre&gt;
  &lt;p&gt;58 и будет зашифрованной версией 67.&lt;/p&gt;
  &lt;p&gt;Повторив этот процесс для каждой из букв, мы получим зашифрованное сообщение CLOUD в виде&lt;/p&gt;
  &lt;pre&gt;58, 20, 53, 50, 87
&lt;/pre&gt;
  &lt;p&gt;Чтобы расшифровать это запутанное сообщение, берем каждое из получившихся чисел — и точно так же перемножаем 29 раз.&lt;/p&gt;
  &lt;pre&gt;58 × 58 = 3364 = 88 (помни, что мы «докручиваем» число, если оно превышает максимум)
88 × 58 = 5104 = 8
…
9 × 58 = 522 = 67
&lt;/pre&gt;
  &lt;p&gt;Вуаля, мы вернулись к 67. Провернув то же самое с остальными числами, мы получим исходное сообщение.&lt;/p&gt;
  &lt;p&gt;Вывод: ты можешь взять число, перемножить его сколько-то (&lt;code&gt;pub&lt;/code&gt;) раз и получить случайно выглядящий результат, а потом перемножить его другое количество (&lt;code&gt;priv&lt;/code&gt;) раз и вернуться к изначальному числу.&lt;/p&gt;
  &lt;h3&gt;Не такой уж тайный ход&lt;/h3&gt;
  &lt;p&gt;RSA и протокол Диффи — Хеллмана были столь мощны, потому что имели строгие обоснования безопасности. Их авторы доказали, что взлом системы равен решению математической проблемы, которую, как считается, сложно решить. Факторизация — хорошо известная проблема, ее изучают с античности (см. решето Эратосфена). Любые прорывы в этой области стали бы громкой новостью и озолотили изобретателя.&lt;/p&gt;
  &lt;p&gt;Тем не менее факторизация не такая уж большая проблема, если решать ее шаг за шагом. Для разложения на простые множители есть специальные алгоритмы — например, квадратичное решето или общий метод решета числового поля, — и они умеренно успешны. Во всяком случае, точно быстрее и экономичней, чем наивный подход с угадыванием пар простых чисел.&lt;/p&gt;
  &lt;p&gt;Эффективность этих алгоритмов растет, поскольку размер чисел, которые нужно раскладывать на множители, все время увеличивается. А вот разрыв между сложностью факторизации и умножения уменьшается — и тоже из-за роста чисел (например, длины ключей). Ресурсы, доступные для дешифровки, растут — и вместе с ними растет длина ключей, причем куда быстрее. Это не очень хорошо для мобильных и других маломощных девайсов, чьи вычислительные ресурсы ограничены. Разрыв между разложением и умножением не очень устойчив в долгосрочной перспективе.&lt;/p&gt;
  &lt;p&gt;Все это значит, что RSA далеко не идеальная система для криптографии будущего. В идеальной TDF операции «туда» и «обратно» усложняются в одинаковом темпе — пропорционально растущему размеру чисел. Нам нужен потайной ход понадежней.&lt;/p&gt;
  &lt;h3&gt;Эллиптические кривые: где найти надежный потайной ход?&lt;/h3&gt;
  &lt;p&gt;С появлением RSA и протокола Диффи — Хеллмана начался активный поиск других математически обоснованных решений для криптографии, которые могли бы послужить хорошей TDF. И вот в 1985 году были предложены алгоритмы, основанные на таинственном математическом направлении — эллиптических кривых.&lt;/p&gt;
  &lt;p&gt;Но что же такое эллиптическая кривая — и как работает основанная на ней TDF? К сожалению, в отличие от факторизации — штуки, с которой мы неизбежно сталкиваемся в школе, — эллиптические кривые большинству людей не близки. Понять и объяснить их не так-то просто — впрочем, я все равно попытаюсь. (Если глаза уже начали стекленеть, можешь скипнуть до раздела «Что все это значит?».)&lt;/p&gt;
  &lt;p&gt;Эллиптическая кривая — это множество точек, удовлетворяющих конкретному математическому уравнению. Выглядит оно так:&lt;/p&gt;
  &lt;pre&gt;y² = x³ + ax + b
&lt;/pre&gt;
  &lt;p&gt;Его график отдаленно напоминает упавшую набок греческую букву Ω (омега).&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/7648e0f019e7c38d1787d.png&quot; width=&quot;409&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Есть и другие представления эллиптических кривых, но технически это множество точек, удовлетворяющих уравнению с двумя переменными: одна из них в квадрате, а другая — в кубе. Однако эллиптическая кривая — это не просто симпатичная картинка: у нее есть ряд особенностей, которые делают ее хорошей основой для криптографии.&lt;/p&gt;
  &lt;h3&gt;Странная симметрия&lt;/h3&gt;
  &lt;p&gt;Еще раз взглянем на нашу эллиптическую кривую — и найдем те самые особенности.&lt;/p&gt;
  &lt;p&gt;Одна из них — горизонтальная симметрия. Каждую точку на кривой можно зеркально отразить по оси &lt;code&gt;x&lt;/code&gt; — и окажешься на все той же кривой. Еще интересней то, что любая не строго вертикальная прямая пересекает эллиптическую кривую не более чем в трех местах.&lt;/p&gt;
  &lt;p&gt;Представим, что это такой странный бильярд. Если соединить две точки на кривой, проходящая через них прямая пересечет ее еще ровно в одном месте. Поставим воображаемый бильярдный шарик в точку &lt;code&gt;A&lt;/code&gt; и толкнем его в сторону точки &lt;code&gt;B&lt;/code&gt;. Достигнув третьей, последней точки на кривой, шар отскочит либо прямо вверх (если он находится ниже оси &lt;code&gt;x&lt;/code&gt;), либо прямо вниз (если он выше оси &lt;code&gt;x&lt;/code&gt;) — на другую сторону кривой.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/a1dc753ff8924fe2b57a6.png&quot; width=&quot;410&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Мы можем соединить любые две точки на кривой и получить новую — например, соединив &lt;code&gt;A&lt;/code&gt; и &lt;code&gt;B&lt;/code&gt;, мы получили &lt;code&gt;С&lt;/code&gt;.&lt;/p&gt;
  &lt;p&gt;А еще мы можем связывать эти «ходы», чтобы раз за разом соединять изначальную точку с получившимся результатом. Так, соединив точку &lt;code&gt;A&lt;/code&gt; с самой собой, мы получим точку &lt;code&gt;B&lt;/code&gt;; из исходной точки &lt;code&gt;A&lt;/code&gt; и получившейся &lt;code&gt;B&lt;/code&gt; выйдет &lt;code&gt;C&lt;/code&gt;; &lt;code&gt;А&lt;/code&gt; и &lt;code&gt;С&lt;/code&gt;, в свою очередь, дадут &lt;code&gt;D&lt;/code&gt; — и так далее.&lt;/p&gt;
  &lt;p&gt;Оказывается, если мы имеем две точки — изначальную, «помноженную» на себя n раз, и конечную — выяснить, чему равно n, довольно сложно. Чтобы развить метафору со странным бильярдом, представь себе человека, который сколько-то времени играет в такой бильярд — сам с самой и в закрытой комнате. Ему будет довольно просто толкать шарик снова и снова по описанным выше правилам. Но если кто-нибудь войдет в эту комнату и увидит, где остановился шарик, то, даже зная правила игры и изначальную точку, определить количество ударов о бортики он все равно не сможет — пока не повторит все ходы от стартовой точки до финальной. «Легко туда, трудно обратно» — это, как помнишь, основа для хорошей TDF.&lt;/p&gt;
  &lt;h3&gt;Все страньше и страньше&lt;/h3&gt;
  &lt;p&gt;Упрощенная кривая из предыдущего раздела прекрасно выглядит и объясняет общую концепцию эллиптических кривых, но не показывает, как выглядят эллиптические кривые в криптографии.&lt;/p&gt;
  &lt;p&gt;Здесь, как и в RSA, нам приходится ограничивать себя числами в фиксированном диапазоне. Более того, нас в этом диапазоне интересуют целые числа — а кривая состоит не только из них. При решении уравнения эллиптической кривой (&lt;code&gt;y² = x³ + ax + b&lt;/code&gt;) мы используем тот же самый трюк с «докручиванием» чисел, превышающих максимум. Если за максимум взять простое число, такая эллиптическая кривая называется простой — и обладает превосходными криптографическими свойствами.&lt;/p&gt;
  &lt;p&gt;Вот пример кривой (&lt;code&gt;y² = x³ − x + 1&lt;/code&gt;), построенной для всех значений.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/d545370e83c0a5e262bf3.png&quot; width=&quot;784&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;А вот та же кривая, но построенная только для целых значений с максимумом 97.&lt;/p&gt;
  &lt;p&gt;Совсем не похоже на кривую в традиционном понимании — но это она. Выглядит так, как будто ставшую вдруг невидимой кривую прикололи кнопками в точках, где она выдает целые значения. И заметь, горизонтальная симметрия сохранилась.&lt;/p&gt;
  &lt;p&gt;На самом деле мы все еще можем играть на этой кривой в бильярд и соединять точки. И любая прямая по-прежнему может собрать на себе не более трех точек. Вычислить эти точки довольно легко. Представь себе, что линия, соединяющая две точки, — это нитка, которая обматывается вокруг кривой, пока не попадет на третью. Это как если бы в нашем странном бильярде шар, ударившись о бортик (максимум), волшебным образом перемещался на противоположную сторону стола и продолжал свое движение до тех пор, пока не ударится о точку, — как в игре «Астероиды».&lt;/p&gt;
  &lt;p&gt;С помощью такого представления кривой уже реально зашифровывать сообщения. Можно представить исходное число сообщения как &lt;code&gt;x&lt;/code&gt;, получить из уравнения &lt;code&gt;y&lt;/code&gt; — и, соответственно, точку на кривой. На практике все чуть сложнее, но общая идея такова.&lt;/p&gt;
  &lt;p&gt;Для слова &lt;code&gt;FLARE&lt;/code&gt; получим точки с координатами (70,6), (76,48), -, (82,6), (69,22).&lt;/p&gt;
  &lt;p&gt;(На этой кривой нет точки при &lt;code&gt;x&lt;/code&gt; = 65, но в реальном мире есть способы обойти эту проблему.)&lt;/p&gt;
  &lt;p&gt;Эллиптическую криптосистему определяют: взятое за максимум простое число, уравнение кривой и открытая (стартовая) точка на кривой. Секретным ключом будет число &lt;code&gt;priv&lt;/code&gt;, а открытым ключом — стартовая точка, соединенная сама с собой &lt;code&gt;priv&lt;/code&gt; раз. Вычисление секретного ключа по открытому в такой криптосистеме называется функцией дискретного логарифма эллиптической кривой. Кажется, это и есть та TDF, которую мы искали.&lt;/p&gt;
  &lt;h3&gt;Что все это значит?&lt;/h3&gt;
  &lt;p&gt;Вычислить дискретный логарифм эллиптической кривой трудно — на чем и строится эллиптическая криптография. Спустя несколько десятилетий математики так и не нашли алгоритм, который решал бы эту проблему лучше простого перебора. Другими словами, в отличие от факторизации с ее понятными математическими основаниями, у этой проблемы, кажется, нет короткого решения, которое сократило бы разрыв в TDF. При работе с числами одной величины решить дискретный логарифм эллиптической кривой гораздо труднее, чем разложить число на множители. А значит, эллиптические криптосистемы крепче RSA и протокола Диффи — Хеллмана.&lt;/p&gt;
  &lt;p&gt;Чтобы иллюстрировать, насколько крепче, Арьен Ленстра несколько лет назад представил концепцию «Универсальной безопасности» (PDF). Суть в том, чтобы вычислить, сколько энергии тратится на взлом криптографического алгоритма, и сравнить с тем, сколько воды можно вскипятить той же энергией. Эдакий криптографический углеродный след. По его расчетам, на взлом 228-битного RSA-ключа требуется меньше энергии, чем на кипячение одной чайной ложки воды. Для сравнения: энергией, потраченной на взлом 228-битного ECC-ключа, можно вскипятить всю воду на планете. Чтобы добиться того же уровня безопасности c RSA, нужен ключ в 2380 бит.&lt;/p&gt;
  &lt;p&gt;С эллиптической криптографией можно использовать ключи меньшей длины — и получать тот же уровень безопасности. А маленькие ключи важны, особенно в мире, где все больше криптографии на маломощных девайсах типа телефонов. Перемножить два простых числа проще, чем разложить результат на множители — но, когда простые числа становятся слишком длинными, даже умножение может занять на маломощных устройствах какое-то время. В принципе, можно поддерживать безопасность RSA, увеличивая длину ключей, — но производительность на клиенте от этого снизится. ECC, кажется, предлагает альтернативу получше — высокую безопасность и короткие быстрые ключи.&lt;/p&gt;
  &lt;h3&gt;Эллиптические кривые в действии&lt;/h3&gt;
  &lt;p&gt;Эллиптические кривые медленно запрягали, но теперь стремительно набирают популярность — и очень быстро распространяются. Эллиптическую криптографию сейчас можно найти в самых разных приложениях: правительство США использует ее для защиты внутренних коммуникаций, проект Tor — чтобы обеспечить анонимность; этот же механизм работает, если нужно подтвердить право собственности на биткойны, отправить сообщение в iMessage и зашифровать данные DNS с помощью DNSCurve; также это предпочтительный метод аутентификации для безопасного серфа через SSL/TLS. Cloudflare пользуется ECC, чтобы обеспечить совершенную прямую секретность (PFS), которая необходима, чтобы сохранить приватность в сети.&lt;/p&gt;
  &lt;p&gt;Криптографические алгоритмы первого поколения вроде RSA и Диффи — Хеллмана все еще подойдут для большинства сфер, но ECC быстро набирает популярность — как решение для конфиденциальности и безопасности в интернете.&lt;/p&gt;
  &lt;p&gt;Если ты откроешь HTTPS-версию блога Cloudflare через свежий Chrome или Firefox, то твой браузер будет использовать эллиптическую криптографию. Можешь убедиться в этом сам — нажми на замок слева от адресной строки и выбери вкладку «Соединение».&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/f2502673b34cab7eea2d0.png&quot; width=&quot;306&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;p&gt;На этой картинке нас в первую очередь интересует текст ECDHE_RSA. ECDHE расшифровывается как Elliptic Curve Diffie Hellman Ephemeral — это механизм обмена ключами, построенный на эллиптических кривых. В Cloudflare он обеспечивает совершенную прямую секретность на SSL. А с помощью RSA здесь идентифицируется сервер.&lt;/p&gt;
  &lt;p&gt;Мы используем RSA, потому что SSL-сертификат Cloudflare привязан к паре RSA-ключей. Но современные браузеры поддерживают и сертификаты на эллиптических кривых. Если бы Cloudflare использовал такой сертификат, его обозначение выглядело бы ECDHE_ECDSA. Идентификация сервера в таком случае выполнялась бы с помощью эллиптического алгоритма электронной подписи (Elliptic Curve Digital Signature Algorithm).&lt;/p&gt;
  &lt;p&gt;Уравнение эллиптической кривой для ECDHE, которую использует Cloudflare (и Google.com, кстати):&lt;/p&gt;
  &lt;pre&gt;max: 115792089210356248762697446949407573530086143415290314195533631308867097853951  
curve: y² = x³ + ax + b  
a = 115792089210356248762697446949407573530086143415290314195533631308867097853948  
b = 41058363725152142129326129780047268409114441015993725554835256314039467401291
&lt;/pre&gt;
  &lt;p&gt;Уровень производительности ECDSA по сравнению с RSA впечатляет. Даже со старыми версиями OpenSSL, которые не заточены под код эллиптических кривых, ECDSA-подпись с 256-битным ключом более чем в 20 раз быстрее RSA-подписи с 2048-битным ключом.&lt;/p&gt;
  &lt;p&gt;На MacBook Pro с OpenSSL 0.9.8 тест скорости выдает:&lt;/p&gt;
  &lt;pre&gt;Doing 256 bit sign ecdsa&amp;#x27;s for 10s: 42874 256 bit ECDSA signs in 9.99s
Doing 2048 bit private rsa&amp;#x27;s for 10s: 1864 2048 bit private RSA&amp;#x27;s in 9.99s
&lt;/pre&gt;
  &lt;p&gt;То есть с ECDSA за то же время можно получить в 23 раза больше подписей, чем с RSA.&lt;/p&gt;
  &lt;p&gt;Cloudflare постоянно ищет способы поднять производительность SSL. Например, мы начали использовать оптимизированную версию ECC, которая увеличивает скорость ECDHE более чем в два раза. Эллиптическая криптография экономит время, мощность и вычислительные ресурсы — как для сервера, так и для браузера — и помогает нам сделать сеть одновременно быстрее и безопаснее.&lt;/p&gt;
  &lt;h3&gt;Оборотная сторона&lt;/h3&gt;
  &lt;p&gt;Но не все так радужно в мире эллиптических кривых — есть и тонкие места, которые мешают им полностью охватить отрасль.&lt;/p&gt;
  &lt;p&gt;Одно из них — недавно мелькавший в новостях Dual_EC_DRBG (Dual Elliptic Curve Deterministic Random Bit Generator). Это генератор случайных чисел, стандартизированный Национальным институтом стандартов и технологий США (NIST), который продвигало их же Агентство национальной безопасности.&lt;/p&gt;
  &lt;p&gt;Dual_EC_DRBG генерирует псевдослучайные числа, используя принцип эллиптических кривых. Его алгоритм берет точки на кривой и многократно выполняет операцию по соединению этих точек — чтобы получить новые. После его публикации сообщалось (PDF), что в генератор, возможно, встроен бэкдор — а значит, последовательность полученных чисел можно полностью предсказать, если есть правильный секретный ключ.&lt;/p&gt;
  &lt;p&gt;Недавно компания RSA отозвала несколько своих продуктов, потому что Dual_EC_DRBG был установлен как дефолтный генератор псевдослучайных чисел в их линейке продуктов безопасности. Был генератор случайных чисел написан с бэкдором или нет, силу самой технологии эллиптических кривых это не отменяет — но зато поднимает вопрос о стандартизации. Как мы уже писали ранее, нужно следить, чтобы ваша система использовала адекватно случайные числа.&lt;/p&gt;
  &lt;p&gt;Некоторые скептически настроенные криптографы вообще испытывают недоверие — и к самому NIST, и к опубликованным им стандартам, которые поддержало АНБ. Почти все широко применяемые эллиптические кривые попадают в эту категорию. Об атаках на эти конкретные кривые ничего не слышно — однако плохие кривые существуют, и некоторые считают, что лучше поберечься, чем потом сожалеть.&lt;/p&gt;
  &lt;p&gt;Есть, конечно, кое-какой прогресс в разработке кривых с эффективной арифметикой за пределами NIST, включая кривую 25519, созданную Дэниелом Бернштейном (djb), и недавно вычисленные кривые Пауло Баретто со товарищи, — но до их широкого распространения еще жить и жить. Пока эти «нетрадиционные» кривые не встроят в браузеры, их нельзя будет использовать для обеспечения безопасности передаваемых по сети данных.&lt;/p&gt;
  &lt;p&gt;Другое тонкое место ECC связано с патентами. Более 130 патентов, касающихся конкретного использования эллиптических кривых, принадлежат BlackBerry — ведь в 2009 году они приобрели Certicom. Многие из тех патентов лицензированы для эксклюзивного использования частными компаниями — и даже АНБ. Некоторые разработчики из-за этого взяли паузу — чтобы оценить, не нарушает ли их работа с ECC эти патенты. В 2007 году Certicom подала иск против Sony — из-за нескольких видов использования эллиптических кривых, — однако в 2009 году иск был отклонен. Сейчас уже есть куча разных реализаций криптографии с эллиптическими кривыми, которые, как считается, не нарушают эти патенты — а потому широко используются.&lt;/p&gt;
  &lt;p&gt;У цифровой подписи ECDSA есть серьезный недостаток по сравнению с RSA: она требует хорошего источника энтропии. Без достаточной случайности чисел секретный ключ могут раскрыть. В 2013 году слабый генератор случайных чисел в Android позволил хакерам найти секретный ключ ECDSA и взломать несколько биткойн-кошельков. У Sony PlayStation была похожая уязвимость. Для электронных подписей нужен хороший генератор случайных чисел. Dual_EC_DRBG уж точно не подойдет.&lt;/p&gt;
  &lt;h3&gt;Заглядывая вперед&lt;/h3&gt;
  &lt;p&gt;Впрочем, недостатки есть у всякой технологии, а вот достоинства ECC по сравнению с традиционной RSA неоспоримы — и уже широко признаны. Многие эксперты беспокоятся, что математические алгоритмы RSA и Диффи — Хеллмана могут быть успешно взломаны в течение ближайших лет — и тогда ECC останется единственной разумной альтернативой.&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt;&lt;br /&gt;&lt;a href=&quot;https://t.me/USBKiller&quot; target=&quot;_blank&quot;&gt;ПОДПИСАТЬСЯ - USBKiller&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>usbkiller:ek10cgCK</id><link rel="alternate" type="text/html" href="https://teletype.in/@usbkiller/ek10cgCK?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=usbkiller"></link><title>Не пались! Как вычисляют вирусописателей</title><published>2020-02-16T17:19:51.907Z</published><updated>2020-02-16T17:19:51.907Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/1f/a1/1fa156d5-4562-497e-96d0-2c8ec55683ab.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/a2/ce/a2ceaaf5-e47e-4c7a-89b3-53d6f78a646e.jpeg&quot;&gt;Источник: t.me/USBKiller</summary><content type="html">
  &lt;p&gt;Источник: t.me/USBKiller&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/a2/ce/a2ceaaf5-e47e-4c7a-89b3-53d6f78a646e.jpeg&quot; width=&quot;1080&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3&gt;Содержание статьи&lt;/h3&gt;
  &lt;ul&gt;
    &lt;li&gt;Да кому ты нужен?&lt;/li&gt;
    &lt;li&gt;Это он, это он, ваш тотальный деанон!&lt;/li&gt;
    &lt;li&gt;В каждой строчке только точки&lt;/li&gt;
    &lt;li&gt;Вот тебе мыло душистое и полотенце пушистое&lt;/li&gt;
    &lt;li&gt;Не стучите, открыто!&lt;/li&gt;
    &lt;li&gt;Ваш домен выключен или находится вне зоны обслуживания&lt;/li&gt;
    &lt;li&gt;И смех и грех&lt;/li&gt;
    &lt;li&gt;Вместо послесловия&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3&gt;Да кому ты нужен?&lt;/h3&gt;
  &lt;p&gt;Начнем с того, что обе присутствующие на российском рынке отечественные антивирусные компании очень тесно взаимодействуют с правоохранительными органами, чего совершенно не скрывают. Хотя бы по той простой причине, что они вынуждены регулярно получать у суровых организаций с названиями из трех букв лицензии и сертификаты на разработку средств защиты конфиденциальной информации, на работу с криптографией, на защиту персональных данных и далее со всеми остановками. А это означает, что упомянутые компании регулярно проходят проверки со стороны этих организаций и плотно общаются с их представителями.&lt;/p&gt;
  &lt;p&gt;Кроме того, все они имеют лицензии на проведение технических экспертиз и исследований с использованием методов форензики, причем регулярно используют эти лицензии по назначению — в том числе в интересах государства. Наконец, ходят упорные слухи, что многие работающие на рынке информационной безопасности фирмы в обязательном порядке отправляют куда надо регулярные отчеты о текущей вирусной и киберкриминальной обстановке. Если в такой отчет, помимо сухой статистики, можно включить конкретные сведения о разоблаченном вирмейкере, упустят ли аналитики такую возможность? Ответ, в общем-то, очевиден.&lt;/p&gt;
  &lt;p&gt;Но есть и хорошая новость, юзернейм. Если однажды утром ты проснулся знаменитым, потому что твое имя внезапно попало в новостные ленты антивирусных компаний, это означает одно из двух. Либо ты уже сидишь в тесном зарешеченном помещении в ожидании суда, либо представители закона не проявили к твоей персоне заслуженного внимания.&lt;/p&gt;
  &lt;p&gt;Существует такое понятие, как тайна следствия, разглашать которую нельзя ни под каким соусом. Если в отношении некоего абстрактного кодера Васи органы правопорядка проводят какие-либо мероприятия, об этом вряд ли расскажут в интернетах до тех пор, пока кодеру Васе не будет предъявлено обвинение или он не предстанет перед судом. Только вот радоваться, обнаружив себя, любимого, в новостях, тоже глупо: это однозначно свидетельствует о том, что ты уже на карандаше, а о твоем творчестве оперативно сообщили куда следует. И в какой-то не очень прекрасный момент равнодушие со стороны людей в погонах может внезапно смениться пристальным интересом. Обстоятельства, знаешь ли, иногда складываются совершенно причудливым образом.&lt;/p&gt;
  &lt;h3&gt;Это он, это он, ваш тотальный деанон!&lt;/h3&gt;
  &lt;p&gt;Абсолютно во всех известных широкой общественности случаях деанона причину его следует искать в зеркале. Вирмейкеры порой палятся на таких мелочах, которые со стороны выглядят сущей нелепицей. Ну казалось бы, зачем хранить на серваке, где поднята админка ботнета, личные файлы? Зачем сбрасывать стату по работе другого ботнета эсэмэсками на номер мобильного телефона с левой симкой, если этот номер ранее неоднократно светился в объявлениях по продаже компьютерных потрошков с указанием города и даже, ты не поверишь, ближайшей станции метро? Кто надоумил юного гения организовать C&amp;amp;C трояна на публичном хостинге, где крутится сайт папиной фирмы, при этом жестко вбив URL прямо в код?&lt;/p&gt;
  &lt;p&gt;Складывается впечатление, что подобные глупости совершают исключительно кодеры, которых природа наделила одной-единственной извилиной, да и та анатомически расположена где-то в районе непосредственного контакта организма со стулом. Однако наступить на грабли может буквально каждый. Особенно если он не выработал полезной привычки внимательно смотреть себе под ноги.&lt;/p&gt;
  &lt;h3&gt;В каждой строчке только точки&lt;/h3&gt;
  &lt;p&gt;Как известно, отлаживание — это мучительный процесс избавления программы от лажи. Для облегчения этого самого процесса некоторые компиляторы добавляют в бинарник специальные отладочные строки. В них порой содержится полный путь к папке, где хранились исходники проекта, причем этот путь иногда включает имя пользователя винды, например &lt;code&gt;C:\Users\Vasya Pupkin\Desktop\Super_Virus\ProjectVirus1.vbp&lt;/code&gt;.&lt;/p&gt;
  &lt;p&gt;В процессе реверсинга вся эта радость неизбежно вылезает наружу. Одно дело, если имя учетки придумали те же самые ребята, которые сочиняют непроизносимые названия для товаров в магазине IKEA. Но зачастую строка включает настоящее имя и даже — страшно подумать — фамилию незадачливого вирмейкера. Благодаря этому обстоятельству вычислить его становится намного проще, хотя результат не гарантирован: мало ли на нашей планете обитает однофамильцев? Однако наличие в образце вредоноса отладочной строки с фамилией и характерной структурой папок может стать еще одним доказательством причастности человека к написанию программы, если за него возьмутся всерьез.&lt;/p&gt;
  &lt;p&gt;Даже если вместо имени пользователя в обнаруженной исследователями строчке значится ник, это все равно даст важную зацепку. Большинство людей, не страдающих паранойей, использует один и тот же ник на различных ресурсах. Это их и подводит. Любой желающий очень быстро отыщет посты интересующего его персонажа на форумах, его страничку на гитхабе и профайл в твиттере. Понять, что все эти «цифровые следы» оставило одно и то же лицо, несложно: одинаковый аватар, схожая подпись, один и тот же текст, размещенный на разных площадках… Дальше потянется ниточка, которая куда-нибудь да приведет.&lt;/p&gt;
  &lt;p&gt;Вывод прост: раз уж ты взялся за написание программы, которую кто-то, вероятно, захочет исследовать, нужно соблюдать правила элементарной гигиены и внимательно следить за тем, чтобы в код не попало ничего лишнего.&lt;/p&gt;
  &lt;h3&gt;Вот тебе мыло душистое и полотенце пушистое&lt;/h3&gt;
  &lt;p&gt;Еще одно распространенное природное явление — хранение адресов электронной почты в виде незашифрованных символьных значений. Характерные строки — это первое, на что обращает внимание в дизассемблированном коде реверс-инженер. Притом некоторые индивидуумы полагают, будто достаточно поксорить строчку, чтобы надежно спрятать свой адрес на мейл.ру от посторонних глаз. Нет, друзья, недостаточно.&lt;/p&gt;
  &lt;p&gt;Если в коде внезапно обнаруживается мыло, оно тут же вбивается в гуголь. Дальше возможны варианты. По адресу электропочты через несколько последовательных шагов может отыскаться и учетка в телеграме, и страничка пользователя в социальных сетях, и факт его регистрации на форумах вместе со всеми сообщениями. А может не нагуглиться ничего. Второй вариант случается, если предусмотрительный юзернейм не использует один и тот же ящик для технических целей и личной переписки.&lt;/p&gt;
  &lt;h3&gt;Не стучите, открыто!&lt;/h3&gt;
  &lt;p&gt;Еще веселее, когда какой-нибудь непризнанный гений прописывает прямо в коде логин и пароль, например от админки бота или от облачного хранилища, куда трой заливает утянутые с компьютера пользователя файлы. Совсем хорошо, если один и тот же пароль используется везде, где только можно, — и для авторизации в админке, и на почтовом сервере, и в социальных сетях.&lt;/p&gt;
  &lt;p&gt;В этой связи невольно вспоминается один недавний случай, когда некий анонимус решил проверить трояна-стилера на собственном компьютере. Стилер, что характерно, отработал на пять баллов. В результате в облако, логин и пароль от которого хранились в открытом виде в самом трое, с компа нашего естествоиспытателя было выгружено все исподнее, наглядно продемонстрировав исследователям его неприкрытую ж&lt;s&gt;о&lt;/s&gt;изнь и богатый внутренний мир. По возможности избегай этого, юзернейм.&lt;/p&gt;
  &lt;p&gt; Ваш домен выключен или находится вне зоны обслуживания&lt;/p&gt;
  &lt;p&gt;Кое-кто очень любит забивать прямо в код адреса управляющих серверов, даже несмотря на то, что прогрессивное человечество давным-давно придумало DGA — алгоритмы динамической генерации доменных имен. Примеры таких решений можно без особого труда найти в этих ваших интернетах.&lt;/p&gt;
  &lt;p&gt;И дело не в том, что DGA повышает живучесть троя (накрылся один управляющий сервак — софтина автоматически подключается к следующему), и даже не в том, что сервер, если его адрес известен, можно сбрутить, засинкхолить или заDDoSить. Вычислить можно и сгенерированный адрес, вдумчиво покурив алгоритм, но тут вступают в действия иные механизмы защиты — верификация подписи сервера, шифрование при передаче данных и прочие.&lt;/p&gt;
  &lt;p&gt;Даже если сломать админку у исследователя не получилось, очень много полезной информации можно добыть, воспользовавшись службой whois. И скрытие имени держателя домена помогает далеко не всегда. А еще можно поискать другие сайты на том же IP-адресе, посмотреть, что на них находится, и попробовать зайти оттуда. В принципе, многие слышали термин CloudFlare, но вот разбираться, что это такое, всем обычно лень.&lt;/p&gt;
  &lt;p&gt;Некоторые гуманоиды и вовсе поднимают админки у публичных хостеров либо на площадках, где крутятся другие их проекты или сайты работодателя. Комментировать такое я, пожалуй, не стану: глумиться над подобным грешно, а плакать уже сил нет.&lt;/p&gt;
  &lt;h3&gt;И смех и грех&lt;/h3&gt;
  &lt;p&gt;Гордыня — это смертный грех. А грешников, как утверждают религиозные деятели, ждет неминуемое наказание. Далеко не все вирмейкеры готовы оставаться в тени и тихонечко стричь бабло, им хочется славы, почета и уважения, внимания публики и бурных оваций. В результате кое-кто начинает записывать видосы о компиляции и обфускации троев и выкладывать скринкасты на ютубе. Позабыв при этом закрыть в браузере вкладочки со своей страничкой «Вконтакте» и окошки проводника, где на HD-разрешении можно разглядеть очень много интересного.&lt;/p&gt;
  &lt;p&gt;Другой персонаж компрометирующих роликов не снимал, зато выкладывал в интернет крайне интересные статьи о методах обхода UAC, написании сплоитов, повышении привилегий в системе и прочих вирмейкерских трюках. С конкретными примерами, конечно. Вычислили его очень просто: по этому самому коду, вернее по характерным именам переменных, комментам, манере реализации некоторых функций — в общем, сравнив выложенные в паблик исходники и кодес из IDA Pro. Отпираться оказалось бессмысленно — код он размещал в личном блоге за собственной подписью. Фаталити.&lt;/p&gt;
  &lt;h3&gt;Вместо послесловия&lt;/h3&gt;
  &lt;p&gt;Методов идентификации авторов малвари существует великое множество, я упомянул только о самых очевидных из них. Выводы тоже вполне очевидны: в кабинет к следователю вирмейкеров приводит собственная некомпетентность и &lt;s&gt;расп&lt;/s&gt;наплевательское отношение к элементарным вопросам безопасности. Впрочем, это, возможно, и неплохо: помнится, один похожий на Льва Толстого дядька что-то писал про естественный отбор. Который, по его мнению, в целом способствует повышению выживаемости вида.&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;https://t.me/USBKiller&quot; target=&quot;_blank&quot;&gt;ПОДПИСАТЬСЯ - USBKiller&lt;/a&gt;&lt;/p&gt;

</content></entry></feed>