Топологический аудит ECDSA: когда геометрия защищает ваши ключи

Откройте для себя, как топология превращается из абстрактной математической дисциплины в мощный инструмент криптоанализа!
Все об алгоритмах
Откройте для себя, как топология превращается из абстрактной математической дисциплины в мощный инструмент криптоанализа!
Любой программист микроконтроллеров, Imho, рано или поздно (сейчас, скорее, рано) от одного из коллег или из статьи в интернете слышит загадочное ПЛИС или FPGA, CPLD, ПВМ — что-то такое. Если честно, то я услышал вот это загадочное, занырнул чуть-чуть, и теперь думаю, что мой опыт пригодится кому-то ещё. Если совсем честно, то статья ещё планируется как небольшая (всего в трёх частях) заметка для себя. Я когда погружался, делал пометки в текстовом файле, здесь получится их хорошо отредактированная версия.
Очень много вещей в подобных этому туториалах, которые я читал, пропускаются как сами собой разумеющиеся. Подробные инструкции куда и как тыкать есть в документации к плате разработки. Но там не хватает ответов на вопросы зачем и почему. Здесь я хочу скомбинировать 2 подхода.
История Фила Катца — это классическая IT-драма: блестящий взлёт, жёсткая конкуренция, суды, огромный успех и, в конечном итоге, личная трагедия.
С самых первых дней изучения биологии или естествознания нам рассказывают о взаимодействии видов, пищевых цепочках и иерархий. Классический пример: трава, кролики и волки. Если волков исключить из уравнения, то кролики будут размножаться и съедят всю траву и будут потом голодные; если исключить траву, то кролики вымрут и волки будут голодные; если исключить кроликов, то трава разрастется, а волки будут голодными. Этот крайне утрированный пример показывает тесную взаимосвязь всего живого, связь, которую порой крайне сложно описать четким математическим языком. Несмотря на устоявшуюся структурированность, которую мы приписываем межвидовому взаимодействию, оно куда ближе к хаосу, чем к порядку. Группа ученых из Мичиганского университета (Анн-Арбор, Мичиган, США) провели любопытное исследование трех враждующих видов муравьев и хищных мух, которое показало всю сложность попыток какого-либо предсказания динамики их взаимодействия. Что именно удалось установить ученым, какие методы были использованы, и как данное исследование связано с сельским хозяйством? Ответы на эти вопросы мы найдем в докладе ученых.
Новый подход к анализу безопасности алгоритма цифровой подписи на эллиптических кривых (ECDSA) через призму алгебраической топологии.
Как повернуть время вспять и выиграть Assembly с DOS-демкой в 2025-м году.
Разбираем олдскульные эффекты на примере демки "Demoded".
Секреты, хитрости и откровенное жульничество российского демомэйкинга.
История в картинках.
Делюсь с вами задачей, которая позволит бесцельно потратить ваше время, как уже это сделала со мной. Под катом небольшая история из жизни и немного кода на JS.
Мы живём в эпоху больших языковых моделей — инструментов вроде ChatGPT, Gemini, Claude, которые поражают своими способностями: они пишут тексты, отвечают на сложные вопросы, генерируют код и даже ведут осмысленные диалоги. Но задумывались ли вы, как им удаётся не просто понимать отдельные фразы, но и удерживать смысл длинных документов, многочасовых бесед или даже целых книг?
В статье разберём путь от понимания человеческого восприятия до современных оптимизаций механизма внимания в LLM.
После выбора аппаратной базы (двойной STM32, каскад датчиков WT901 + LSM6DSV16X + LIS2DW12) наступает этап, который инженеры любят и ненавидят одновременно: программная реализация навигационного алгоритма. Эта часть посвящена математике, фильтрам и тому, как не сойти с ума, интегрируя шумные измерения в реальные координаты. Текст ориентирован на специалистов, поэтому скучноватые места будут разбавлены самоиронией и примерами из практики.
Сразу оговорюсь, что обычно я не занимаюсь компьютерной безопасностью и не интересуюсь, а занимаюсь алгоритмами и структурами данных - в прикладном применении это оптимизация быстродействия, высокопроизводительные вычисления типа CUDA, AVX512, многопоточность, что применяется например для майнеров криптовалют. Так я влез в криптанализ, ибо области, получается, соприкасаются. Был у меня заказ от человека, который хотел очень быстро на видеокартах перемножать 256-битные числа в 512-битные произведения. Я конечно сделал как он хотел, но вот пришла идея: так а зачем перемножать безчисленное количество чисел, если в принципе можно разложить на множители 512-битное число имея текущие технологии? Об этом дальше и речь.
Дано:
Предлагаю разобраться, как правильно оценить код с точки зрения его скорости выполнения.
Прежде всего надо выяснить, что мы понимаем под эффективным алгоритмом. Попробую дать авторское определение: эффективный алгоритм — код, который выполняется с минимальным использованием вычислительных ресурсов процессора. Соответственно, неэффективный алгоритм, наоборот, требует больше ресурсов и, соответственно, больше времени для выполнения.
Давайте рассмотрим, что же такое «хороший» и «плохой» алгоритм, на примере простой задачи с leetcode.
Библиотека функций к Script-fu
В предыдущей статье мы рассмотрели имеющиеся в GIMP возможности векторной графики. Здесь мы рассмотрим как эти возможности использовать при построении графических примитивов — Фигур. Для построения абстракций фигур мы уже написали несколько классов: Фигуры рисуемых по контуру Кистью и Карандашом, Фигур заполняемых определённым цветом, Комбинированных Фигур, Фигур использующих Изображения и Фигур использующих Текст. Здесь я продемонстрирую, как легко и непринуждённо мы можем встроить новые абстракции в существующую иерархию классов. А заодно рассмотрим как вся эта иерархия классов может использоваться в языке функциональной геометрии, рассмотренном в предыдущем цикле статей.
Алгоритмическая торговля на Московской бирже с помощью терминала QUIK остаётся популярным способом автоматизировать стратегии. В этой статье мы напишем грид-бота, который выставляет ордера сеткой вокруг текущей цены и зарабатывает на колебаниях.
Привет! Я Рома, бэкендер-питонист в KTS.
Это вторая статья в моем цикле об алгоритме архивации bzip2. Первую можно прочитать здесь, но для понимания сегодняшней темы она необязательна. Ниже я разберу преобразование Барроуза-Уилера — ключевой этап сжатия bzip2.
Всем привет! Представьте таблицу с сотнями или даже тысячами атрибутов. Как в условиях высокой размерности найти релевантные данные по запросу на естественном языке? Классические методы часто не справляются, нужны новые подходы.
Именно за эту сложную задачу взялась команда Департамента управления данными (SberData) в рамках эффективной интеграции ИИ‑агентов в Корпоративную аналитическую платформу Сбера (КАП), которая объединяет современные инструменты для работы с данными: хранение, интеграция, аналитика, моделирование и контроль качества данных. Наличие таких технологий, как продвинутые LLM (например, GigaChat), и большие объёмы данных делают исследование подобных задач актуальным для рынка больших данных.
В статье мы сравним эффективность векторного поиска, гибридных методов и подхода Retrieval‑Augmented Generation (RAG), оценим их влияние на точность результатов и обсудим практические ограничения.
В мире frontend есть проблема: многие разработчики плохо ориентируются в структурах данных и не умеют их грамотно применять, чтобы получать эффективные и производительные решения своих задач.
Мы, Тимофей Соломенников и Руслан Мирзоев, разработчики онлайн-кинотеатра PREMIER, хотим поделиться своим опытом и на реальных примерах показать, что даёт правильное использование структур данных.
В этой статье вы найдете разбор нескольких структур данных, которые мы считаем наиболее важными и которые чаще всего пригождаются. Описание их преимуществ, особенностей и демонстрацию применения. Для всех рассматриваемых в статье структур данных мы подготовили реальные примеры и выложили их исходный код — так, нам кажется, польза и особенности будут гораздо более наглядными. Таким образом этот материал носит не только справочный характер, он поможет «пощупать» структуры на практике и, надеемся, увидеть потенциал применения в вашей ежедневной работе.
Всякое рациональное число в позиционной системе счисления имеет либо конечную запись дробной части, либо бесконечную периодическую запись. Как вычислить соответствующий период для произвольного числа вида 1/α? В статье выведем универсальную формулу и рассмотрим конкретный и «быстрый» пример с большим периодом, но в шестнадцатеричной системе счисления, который можно проверить на калькуляторе.
«Лень‑матушка вперёд нас родилась»
В этой статье я хочу рассказать о технике «Expression Templates» и её применении в библиотеке simstr.
Как известно, «хороший программист — ленивый программист». Именно лень толкает нас на поиск оптимальных решений и экономию ресурсов. А человек, проводящий много времени с компьютером — волей‑неволей начинает его «одушевлять» и беспокоится о нём. Поэтому не знаю, как у вас, а у меня сердце кровью обливается, когда я вижу, что для получения конечного результата тем способом, который написан в программе, бедному процессору придётся выполнять много лишней работы, зазря тратить тактики и бестолку гонять байтики туда‑сюда. Это прямо вызывает боль.
Вот, к примеру, давайте рассмотрим такой простенький код.
Можно ли применить известный трюк с операцией XOR, используемый для поиска в списках одного или двух пропущенных чисел, сделав так, чтобы он подошёл бы для поиска тысяч отсутствующих идентификаторов в таблицах, содержащих миллионы строк?
Идея собрать инерциальный навигатор пришла в голову быстро, но подобрать подходящие компоненты было сложнее. Главный микроконтроллер должен иметь достаточную вычислительную мощность для интегрирования уравнений движения и работы пользовательского интерфейса, при этом потреблять минимум энергии. Я выбрал контроллер семейства STM32 от STMicroelectronics, основанный на ядре ARM Cortex‑M. Этот чип обладает богатым набором периферии (I²C, SPI, UART, SDIO) и аппаратным блоком плавающей точки. К тому же компания ST поставляет готовые программные библиотеки для работы с MEMS‑датчиками.
В прототип заложил использование одновременно 2х контроллеров STM32 - один для вычислений и корректирвоки курса, второй для работы с элементами управления, экраном, отрисовка карты и прочие действия не связанные с координацией инерциальных датчиков.
Интегральный датчик инерции — сердце устройства. За основу взял 9‑осевой MEMS‑IMU WitMotion WT901, сочетающий три акселерометра и три гироскопа и электронный компас, что соответствует классическому INS. Этот модуль имеет низкий шум ускорений (~0,03 m/s²) и угловых скоростей (~0,02°/s) и выдает данные по интерфейсу SPI. Для обеспечения работы в широком температурном диапазоне датчик снабжён встроенным термодатчиком, данные которого учитываются при калибровке.