Довольно очевидно, что этот процесс можно запускать параллельно с загрузкой самой страницы, и работать оно должно быстрее, чем собственно загрузка средней страницы. Думаю, об этом подумали и инженеры Гугла :)
maintainer is usually one or more people who build source code into a binary package for distribution, [оr] commit patches, or organize code in a source repository
Если бы вы хоть немного пытались читать, что вам пишут, а не искать возможности для самоутверждения, вы бы поняли, что вам пытаются указать на второй, вполне ходовой, способ использования слова maintainer в контексте OSS: разработчик, который постоянно работает над проектом, имеет право записи в upstream репозиторий, [не] принимает патчи и триажит баги.
Автору большой респект! Бекраунд у всех разный (у меня, вот, есть 2 года муштры по алгоритмам на Физтехе) и важен именно твой прогресс. Рад, что получилось разобраться и проникнуться алгоритмическими задачками — сам недавно стал переоткрывать для себя этот мир. Ещё могу посоветовать попробовать Advent of Code, если он прошёл мимо.
Я правильно понимаю, что чтобы замерять именно инференс, а не просто время отсылки команд на GPU, используется glMemoryBarrier? Насколько я знаю, барьер только устранит возможные проблемы с кэшами внутри потока исполнения на GPU, но не вызовет синхронизацию CPU и GPU-потоков, так что этого недостаточно. Надо бы провести повторный замер с синхронизацией через glFinish, а то вывод статьи рискует оказаться слишком далёким от правды.
Помимо утечки приватного ключа, есть ещё соображения нагрузки на ключ. Утрированно: подписывается обычно хеш от документа, а значений хеш-функции — конечно много. Соответственно, с течением времени условная Ева будет узнавать, как подписывать всё большее и большее число хешей, и будет увеличиваться вероятность того, что в это число войдёт и хеш нужного Еве документа.
Разумеется, такая атака не очень применима на практике, но каждая операция с ключом потенциально выдаёт всё больше и больше информации о нём, и единственный способ с этим бороться — периодически менять ключ.
В случае асимметричной криптографии возникают и более видимые проблемы. Скажем, в схеме Эль-Гамаля, стойкость обеспечивается (предполагаемои) трудностью задачи дискретного логарифмирования — буквально, нам сложно вычислить приватный ключ по публичному. Но задача-то эта решаема, и даже вполне очевидным способом — пусть и за долгое (на данном этапе развития технологий) время. Но ограниченное. И ключевую пару дольше этого времени использовать нельзя.
Спасибо за классный квест! Отличный повод отложить подготовку к экзаменам в институте :)
Для интересующихся — под спойлерами разбор задачек.
Начало
Итак, начинаем с леса, в котором нетрудно углядеть штрихкод. Собственно, используя какой-нибудь распознаватель, получаем адрес 159.69.211.35:3232.
Элементарно, Ватсон
По данному адресу висит изображение в JPEG:
Видимые артефакты намекают на стеганографию, а в названии файла Englishman_outguess_you.jpg присутствует довольно неожиданный перевод слова «перехитрить», который наводит на утилиту Outguess. С её помощью извлекаем закодированную в Base32 ссылку jbxbcjjz.gonchar.uk:7463/jbxbcjjz.
Кстати, тут есть небольшая пасхалка. Если зайти по дефолтному 80му порту на сайт с Ватсоном, тебе предложат послушать песню Wrong Way.
Позвони мне, позвони
По ссылке оказывается ogg-файл c песней «Позвони мне, позвони» в исполнении Ирины Муравьёвой. В метаданных призыв повторяется более конкретным образом:
COMMENT : RmxhbnQgTW9zY293IG51bWJlciBleHQgNQo=
ALBUM : RmxhbnQgTW9zY293IG51bWJlciBleHQgNQo=
ZN : 20468
COMMENTS : Позвони мне по телефону +7 8172 578 223 и узнай, что тебя ждет дальше
TITLE : Позвони мне, позвони
ARTIST : Муравьева Ирина
Впрочем, на Вологодском номере звонок сразу сбрасывают, зато в комментарии/названии альбома лежит закодированная уже Base64 строка «Flant Moscow number ext 5». Находим на сайте Фланта их номер +7 (495) 721-10-27, прожимаем пятёрку и слушаем сообщение.
Второе место и каналы
Криповый детский голос зачитывает:
Привет, рад что ты здесь. Венеция и Петербург славятся своими каналами. Запомните, редко кто знает имя того, кто занял втрое место. А теперь, следующая загадка.
После этого, более приятный мужской голос оглашает «affinity aqua snow type 2 0 2 0». С божьей помощью (вернее, подсказкой из комментариев) понимаем, что «второе место» отсылает к необходимости посмотреть на вторые буквы слов: fqny2020. При достаточной степени упоротости, каналы должны навести на мысли о Телеграме, где под таким ником обнаруживается канал.
Двоичный код
В канале опубликован график
с подписью
Привет! Тебе удалось пройти часть пути, но еще много впереди. Вот и следующая загадка. И помни: не важно, кем ты представишься!
Можно догадаться, что блоки O1-O4 (octet) и P (port) обозначают IP-адрес и порт, а 8 значений, отложенных по оси абсцисс, задают значения бит. В десятичной системе счисления всё это добро образует 95.216.220.159:110.
Почта
На 110м порту принято размещать POP3-сервера. подключившись по Telnet (к слову, мой провайдер почему-то РОСКОМНАДЗОР этот IP), можно обнаружить заветное приветствие почтового сервера. Вспоминая напутствие «не важно, кем ты представишься», вводим произвольное имя пользователя и пароль, чтобы обнаружить одно входящее письмо.
После масленицы
Письмо довольно большое и начинается следующим образом:
http://10.10.10.1:8080
client
dev tap
proto tcp
tun-mtu 1500
remote 159.69.211.35 5555
nobind
persist-key
persist-tun
Подсеть 10.0.0.0/8 зарезервирована для локальных нужд, а дальше как раз лежит файл конфигурации OpenVPN. Заводим VPN-клиент, открываем 10.10.10.1:8080 и получаем текст «I posle maslenitsy on, i v facebook razmeschen on, i suda im hodit' nado».
Сразу после Масленицы начинается Великий пост, посты постят в Facebook, а ещё в HTTP есть метод POST. Отправляя туда же POST-запрос, получаем «GET here ZZZZZZZ». С 10.10.10.1:8080/ZZZZZZZ скачивается файл.
Распаковка подарков
Скачанный файл оказывается gzip-архивом. Внутри него лежит tar-архив, с названием «tar -xf», внутри которого лежит gzip-архив с названием «tar -xzf» внутри которого лежит tar-архив с названием «tar -xf»… Потом ещё начинают появляться zip-архивы с названием «unzip -o», и спустя 2479 распаковок мы получаем два текстовых файла.
Во втором, без малого, 5000 строк длинных слов на латинице. Это книжный шифр, упоминавшийся у Дойля (и в бибисишной экранизации). Каждая непустая строка задаёт букву: третье число указывает строку в файле, второе — слово в этой строке, а первое — букву в слове. Пустые строки разделяют слова зашифрованного сообщения «MySQL USER quest PASS superquest BASE quest PORT default INSIDE VPN».
πоследний рывок
Подключаемся MySQL-клиентом по инструкции к 10.10.10.1, и находим таблицу под названием «pi»:
+------+----------+---------+
| id | position | nexthop |
+------+----------+---------+
| 2 | 2 | . |
| 7 | 1 | h |
| 9 | 3 | a |
| 6 | 1 | i |
| 5 | 1 | g |
| 5 | 2 | . |
| 5 | 3 | o |
| 3 | 1 | n |
| 3 | 2 | g |
| 3 | 3 | r |
| 3 | 4 | u |
| 1 | 1 | u |
| 1 | 2 | o |
| 2 | 1 | d |
| 4 | 1 | p |
| 9 | 1 | o |
| 8 | 1 | n |
| 8 | 2 | k |
| 9 | 2 | c |
+------+----------+---------+
Числа в колонке id совпадают с первыми девятнадцатью цифрами в десятичной записи числа Пи. Если переставить строки, сложив цифры в правильном порядке (position задаёт порядок вхождений для каждой цифры), колонка nexthop сложится в nupogodi.gonchar.uk.
Довольно очевидно, что этот процесс можно запускать параллельно с загрузкой самой страницы, и работать оно должно быстрее, чем собственно загрузка средней страницы. Думаю, об этом подумали и инженеры Гугла :)
Ну я и сказал (:
Наличием людей, возмущённых поптыками разработчиков открытых проектов получать деньги за свою работу .
Если бы вы хоть немного пытались читать, что вам пишут, а не искать возможности для самоутверждения, вы бы поняли, что вам пытаются указать на второй, вполне ходовой, способ использования слова maintainer в контексте OSS: разработчик, который постоянно работает над проектом, имеет право записи в upstream репозиторий, [не] принимает патчи и триажит баги.
5 минут и одна неправильная посылка (пытался использовать set как мультисет); переключился на Питон с традиционных плюсов — писать и правда удобнее (:
Код
Автору большой респект! Бекраунд у всех разный (у меня, вот, есть 2 года муштры по алгоритмам на Физтехе) и важен именно твой прогресс. Рад, что получилось разобраться и проникнуться алгоритмическими задачками — сам недавно стал переоткрывать для себя этот мир. Ещё могу посоветовать попробовать Advent of Code, если он прошёл мимо.
AP, например: не первичный, ещё не используется, не то что представляется при слове «душить» и как раз в надежде на безболезненность.
Открывал на сервере в MacOS окно Emacs из докера с guix — всё отлично работало!
Картинку про троллейбус из буханки хлеба можно не присылать :)
Я правильно понимаю, что чтобы замерять именно инференс, а не просто время отсылки команд на GPU, используется
glMemoryBarrier
? Насколько я знаю, барьер только устранит возможные проблемы с кэшами внутри потока исполнения на GPU, но не вызовет синхронизацию CPU и GPU-потоков, так что этого недостаточно. Надо бы провести повторный замер с синхронизацией черезglFinish
, а то вывод статьи рискует оказаться слишком далёким от правды.Помимо утечки приватного ключа, есть ещё соображения нагрузки на ключ. Утрированно: подписывается обычно хеш от документа, а значений хеш-функции — конечно много. Соответственно, с течением времени условная Ева будет узнавать, как подписывать всё большее и большее число хешей, и будет увеличиваться вероятность того, что в это число войдёт и хеш нужного Еве документа.
Разумеется, такая атака не очень применима на практике, но каждая операция с ключом потенциально выдаёт всё больше и больше информации о нём, и единственный способ с этим бороться — периодически менять ключ.
В случае асимметричной криптографии возникают и более видимые проблемы. Скажем, в схеме Эль-Гамаля, стойкость обеспечивается (предполагаемои) трудностью задачи дискретного логарифмирования — буквально, нам сложно вычислить приватный ключ по публичному. Но задача-то эта решаема, и даже вполне очевидным способом — пусть и за долгое (на данном этапе развития технологий) время. Но ограниченное. И ключевую пару дольше этого времени использовать нельзя.
Для интересующихся — под спойлерами разбор задачек.
Видимые артефакты намекают на стеганографию, а в названии файла Englishman_outguess_you.jpg присутствует довольно неожиданный перевод слова «перехитрить», который наводит на утилиту Outguess. С её помощью извлекаем закодированную в Base32 ссылку jbxbcjjz.gonchar.uk:7463/jbxbcjjz.
Кстати, тут есть небольшая пасхалка. Если зайти по дефолтному 80му порту на сайт с Ватсоном, тебе предложат послушать песню Wrong Way.
Впрочем, на Вологодском номере звонок сразу сбрасывают, зато в комментарии/названии альбома лежит закодированная уже Base64 строка «Flant Moscow number ext 5». Находим на сайте Фланта их номер +7 (495) 721-10-27, прожимаем пятёрку и слушаем сообщение.
После этого, более приятный мужской голос оглашает «affinity aqua snow type 2 0 2 0». С божьей помощью (вернее, подсказкой из комментариев) понимаем, что «второе место» отсылает к необходимости посмотреть на вторые буквы слов: fqny2020. При достаточной степени упоротости, каналы должны навести на мысли о Телеграме, где под таким ником обнаруживается канал.
с подписью
Можно догадаться, что блоки O1-O4 (octet) и P (port) обозначают IP-адрес и порт, а 8 значений, отложенных по оси абсцисс, задают значения бит. В десятичной системе счисления всё это добро образует 95.216.220.159:110.
Подсеть 10.0.0.0/8 зарезервирована для локальных нужд, а дальше как раз лежит файл конфигурации OpenVPN. Заводим VPN-клиент, открываем 10.10.10.1:8080 и получаем текст «I posle maslenitsy on, i v facebook razmeschen on, i suda im hodit' nado».
Сразу после Масленицы начинается Великий пост, посты постят в Facebook, а ещё в HTTP есть метод POST. Отправляя туда же POST-запрос, получаем «GET here ZZZZZZZ». С 10.10.10.1:8080/ZZZZZZZ скачивается файл.
Во втором, без малого, 5000 строк длинных слов на латинице. Это книжный шифр, упоминавшийся у Дойля (и в бибисишной экранизации). Каждая непустая строка задаёт букву: третье число указывает строку в файле, второе — слово в этой строке, а первое — букву в слове. Пустые строки разделяют слова зашифрованного сообщения «MySQL USER quest PASS superquest BASE quest PORT default INSIDE VPN».
Числа в колонке id совпадают с первыми девятнадцатью цифрами в десятичной записи числа Пи. Если переставить строки, сложив цифры в правильном порядке (position задаёт порядок вхождений для каждой цифры), колонка nexthop сложится в nupogodi.gonchar.uk.