Univelis / Foxspeed
Сегодня в Воронеже выступаем на фурфесте. Позади 9 часов дороги, но кажется, оно того стоило: опять этот вайб небольших городов и локальных фестов :3 Через пару дней наконец расскажу, как мы отыграли в Москве.
Хороший фест, мне понравился!
Команда проводила его первый раз, но получилось неплохо, ещё и мы выступили ок. Буду ещё вспоминать и фест, и Воронеж :3
Впереди сон и обратно в Москву 6 часов.
Команда проводила его первый раз, но получилось неплохо, ещё и мы выступили ок. Буду ещё вспоминать и фест, и Воронеж :3
Впереди сон и обратно в Москву 6 часов.
❤5👍4🥰3
Univelis / Foxspeed
Сегодня в Воронеже выступаем на фурфесте. Позади 9 часов дороги, но кажется, оно того стоило: опять этот вайб небольших городов и локальных фестов :3 Через пару дней наконец расскажу, как мы отыграли в Москве.
Как фурри-группа, мы обязательно сфоткались с котёнком с улицы Лизюкова :3
И домой.
И домой.
👍14❤6🥰5🌚1
Forwarded from Andrey Novozhilov (blackgaze, ambient, etc.)
зря вы отписываетесь, я же ещё новый сбор денег не объявлял
😁5🦄5❤1🆒1
Друзья, я вступил в серьезный бизнес-конфликт с могущественными людьми. Они кинули моего человека на деньги, стали ему угрожать, я вступился. Они начали угрожать мне. Человека спасли, но мне теперь обещают очень большие проблемы. Я их послал нахуй. Они пообещали мне масштабную кампанию по дискредитации.
Точно могу сказать, что реально мне они сделать ничего не смогут, оказалось, что руки коротки, у меня тоже есть могущественные заступники. Но анонимно гадить они начали, все по классике: оскорбительные выдумки, доксинг и клевета моим партнерам, друзьям и родственникам. Из-за денег и того, что я один из немногих, кто смог их послать, они в бешенстве. Поэтому не гнушаются ничем.
Разумеется, ничего реального на меня нарыть не удалось, поэтому придумали обвинения в лгбт, педофилии и еще чёрт знает в чем, придумывают по ходу. Не ведитесь, будьте бдительны — кампания ведется, разумеется, от анонимных аккаунтов и без каких-либо реальных доказательств. На их условия я не соглашусь, поэтому грязь на меня будут лить, пока не надоест. Но они трусы, так что в итоге они конечно обломаются (по большому счету, уже обломались).
Спасибо за внимание.
Точно могу сказать, что реально мне они сделать ничего не смогут, оказалось, что руки коротки, у меня тоже есть могущественные заступники. Но анонимно гадить они начали, все по классике: оскорбительные выдумки, доксинг и клевета моим партнерам, друзьям и родственникам. Из-за денег и того, что я один из немногих, кто смог их послать, они в бешенстве. Поэтому не гнушаются ничем.
Разумеется, ничего реального на меня нарыть не удалось, поэтому придумали обвинения в лгбт, педофилии и еще чёрт знает в чем, придумывают по ходу. Не ведитесь, будьте бдительны — кампания ведется, разумеется, от анонимных аккаунтов и без каких-либо реальных доказательств. На их условия я не соглашусь, поэтому грязь на меня будут лить, пока не надоест. Но они трусы, так что в итоге они конечно обломаются (по большому счету, уже обломались).
Спасибо за внимание.
😢29🤝16😱10🙈3🔥2😁2🤔2🖕2🫡2🆒1😎1
Вы могли пропустить (я вот пропустил), что формат 65х30 незаметно стал новым стандартом одноплатников.
Все видели RPi Zero, он давно существует, но другие вендоры наконец распробовали этот формфактор, и наклепали уже штук 10 плат на других процах. Теперь и сама RPi Foundation так же продолжила их МК RP3250.
Плюсы формата:
1. расположить одной линией флеш-оперативку-процессор-радио просто напрашивалось, а два Type-C USB и опционально HDMI или MIPI — как бонус сбоку.
2. это ~втрое компактнее прошлого стандарта RPi (86*54? 85*56? вот какой-то из них, ага), а мы же за ползучую миниатюризацию.
3. наконец-то понятное разделение сторон: одна сторона с Type-C наружу, другая с гребёнкой внутрь. В RPi мне не нравилось, что девайс нужно строить вокруг одноплатника, ты полностью зависишь от его размеров и разъёмов; теперь ограничений нет.
Ну а главное — это как 2 батарейки 18650 с 6 мм зазором! В него кнопки, антенну, датчики, зарядник/балансир лития, что угодно!
Можно сделать батарейный комп с датчиками, или беспроводную камеру с распознаванием лиц.
Или сложить 2*18650 и в той же плоскости рядом комп с платой RTL-SDR над ним, антенной сбоку и солнечной батареей 70*70.
Да, разъёмов мало, полноразмерных USB и тем более Ethernet там (почти) не бывает. Но к половине этих плат есть платы расширения с USB, Ethernet, питанием и даже RS-485.
Это не минус: плата компьютера очень тонкая, а всё высокое теперь живёт на отдельном модуле.
Такая этажерка имеет всё то, что и "большой" одноплатник, а места занимает гораздо меньше + теперь можно отказаться от кучи разъёмов/места, если не нужны; или сделать свою плату.
На картинке вот это:
Sakura Pi RK3308B ... Banana Pi M2 Zero
XPI-3566-ZERO ... Radxa Zero 2 Pro
Radxa Cubie A7Z ... Radxa ROCK Pi S0
Orange Pi Zero 2W ... Raspberry Pi Zero W
Два компа тут с моим любимым Rockchip RK3308, а ещё один с мощным RK3566. Себе я купил Orange Pi Z 2W и доволен: процы тут такие же, как в больших одноплатниках, просто КПД выше :)
Все видели RPi Zero, он давно существует, но другие вендоры наконец распробовали этот формфактор, и наклепали уже штук 10 плат на других процах. Теперь и сама RPi Foundation так же продолжила их МК RP3250.
Плюсы формата:
1. расположить одной линией флеш-оперативку-процессор-радио просто напрашивалось, а два Type-C USB и опционально HDMI или MIPI — как бонус сбоку.
2. это ~втрое компактнее прошлого стандарта RPi (86*54? 85*56? вот какой-то из них, ага), а мы же за ползучую миниатюризацию.
3. наконец-то понятное разделение сторон: одна сторона с Type-C наружу, другая с гребёнкой внутрь. В RPi мне не нравилось, что девайс нужно строить вокруг одноплатника, ты полностью зависишь от его размеров и разъёмов; теперь ограничений нет.
Ну а главное — это как 2 батарейки 18650 с 6 мм зазором! В него кнопки, антенну, датчики, зарядник/балансир лития, что угодно!
Можно сделать батарейный комп с датчиками, или беспроводную камеру с распознаванием лиц.
Или сложить 2*18650 и в той же плоскости рядом комп с платой RTL-SDR над ним, антенной сбоку и солнечной батареей 70*70.
Да, разъёмов мало, полноразмерных USB и тем более Ethernet там (почти) не бывает. Но к половине этих плат есть платы расширения с USB, Ethernet, питанием и даже RS-485.
Это не минус: плата компьютера очень тонкая, а всё высокое теперь живёт на отдельном модуле.
Такая этажерка имеет всё то, что и "большой" одноплатник, а места занимает гораздо меньше + теперь можно отказаться от кучи разъёмов/места, если не нужны; или сделать свою плату.
На картинке вот это:
Sakura Pi RK3308B ... Banana Pi M2 Zero
XPI-3566-ZERO ... Radxa Zero 2 Pro
Radxa Cubie A7Z ... Radxa ROCK Pi S0
Orange Pi Zero 2W ... Raspberry Pi Zero W
Два компа тут с моим любимым Rockchip RK3308, а ещё один с мощным RK3566. Себе я купил Orange Pi Z 2W и доволен: процы тут такие же, как в больших одноплатниках, просто КПД выше :)
🔥17❤8👍6
Univelis / Foxspeed
Вы могли пропустить (я вот пропустил), что формат 65х30 незаметно стал новым стандартом одноплатников. Все видели RPi Zero, он давно существует, но другие вендоры наконец распробовали этот формфактор, и наклепали уже штук 10 плат на других процах. Теперь и…
Пост для обсуждения поста про одноплатники
😁9😢3🗿2
Недавно обсудили в нашей компании, что оценивать защищённость разработок лучше не какими-то общепринятыми критериями или метриками, а просто деньгами.
В мире есть некоторые метрики защищённости железа/софта:
- CVSS (0–10 баллов потенциального урона от софта)
- Common Criteria, уровни EAL1–EAL7 с расчётом attack potential
- криптомодульные FIPS 140-3 с уровнями 1–4 от "клянусь, оно работает" до "дрель, морозилка и тепловизор не помогут".
Но всё это не особо мапится в язык бизнеса: даже если руководство хорошо шарит в инфобезе, всё равно нужен перевод. А вот деньги — отлично.
"Этот продукт на 1 млн ₽ взлома" — сразу в топку: хватит интересующегося студента с осциллографом и неделей времени.
"На 10 млн" — уже интересно, можно пообщаться, понять профиль атакующего и посмотреть, что доточить
"На 100 млн" — сразу зелёный свет: такой бюджет есть только у весьма специфичных игроков, да и то, если ROI реально виден.
Подход не новый, но я нечасто вижу его применение, и он отлично ложится на бизнес-слой.
Формально, мы оцениваем не уровень магии защиты, а минимальный бюджет осмысленного атакующего на получение промышленно пригодного эксплойта. Здесь:
- человеко-часы реверсера/лаборатории нужного класса;
- железо: микроскопы, ионный пучок, лазеры для fault-инъекций, xGSPS осциллографы, EM-щупы и т.д. (+амортизация);
- число итераций: сколько раз нужно пересобрать плату, чтобы довести атаку до состояния PoC;
- операционные риски: доступ к образцам, логистика, бумажки.
Изначально, мы просто идём к дружественной лаборатории реверсеров и просим их оценить цену, ну или хотя бы наш штатный реверсер оценивает из своего опыта. Но можно и формализовать: взять из Common Criteria их "attack potential" и перевести из баллов в рубли: сумма времени, экспертизы, возможностей и оборудования. У нас почти то же самое, только сразу в единицах, удобных для владельца продукта и CFO.
А главное, эта метрика отлично ложится на стоимость защищаемой системы, тираж выпуска и принимаемые риски: банально, 10к₽ контроллер партией 5к штук — хватит и "1 млн" защиты, любая более крутая защита будет явным перебором, просто не отобьёт экономику. А если... ну вы поняли.
Любой реверсер спросит: а что вы понимаете под стоимостью? Поиск уязвимости / первый успешный взлом / identification, или тиражное использование / exploitation? Одинаково важны обе фазы: дорогой взлом вполне может стоить того, если тиражирование будет условно-бесплатным и принесёт достаточный профит; и наоборот, детская уязвимость, но дорогие/недоступные носители для тиражирования ставят вопросы к ROI атаки. Хотя обычно даже единичный факт взлома уже роняет репутацию девайса, и уже не настолько важно, что тиражирование дорогое. Плюс, это может быть взлом не просто "системы в целом", а конкретного юзера этой системы, и это переходит в критерий принимаемых (или нет) рисков.
Метрика по стоимости железа тоже вопросительна: лаборатория не строится под один взлом, амортизация на потоке будет околонулевой, тогда взлом именно нашего девайса станет в разы дешевле. Эта штука в научных кругах называется low-cost attacs, особенно любят бесплатно ломать якобы "тампероустойчивые" устройства. (мораль: тампер это лишь щеколда на входе). Да и помните: суперустойчивый Knox в телефоне или ультразащищённый чип, требующий послойного шлифования кремния — скорее всего стократ дешевле обходятся на другом этапе, хотя бы даже на supply chain :)
Оценивать ROI тоже нужно обдуманно: чуваку может быть интереснее не эксплуатировать уязвимость, а просто продать её; а внутренняя оценка цены всегда будет ошибочной в разы.
Без этих оговорок цифра "стоимость защиты" быстро превратится в самообман. Желательно ещё обновлять её по итогам реальных незапланированных доступов :)
В мире есть некоторые метрики защищённости железа/софта:
- CVSS (0–10 баллов потенциального урона от софта)
- Common Criteria, уровни EAL1–EAL7 с расчётом attack potential
- криптомодульные FIPS 140-3 с уровнями 1–4 от "клянусь, оно работает" до "дрель, морозилка и тепловизор не помогут".
Но всё это не особо мапится в язык бизнеса: даже если руководство хорошо шарит в инфобезе, всё равно нужен перевод. А вот деньги — отлично.
"Этот продукт на 1 млн ₽ взлома" — сразу в топку: хватит интересующегося студента с осциллографом и неделей времени.
"На 10 млн" — уже интересно, можно пообщаться, понять профиль атакующего и посмотреть, что доточить
"На 100 млн" — сразу зелёный свет: такой бюджет есть только у весьма специфичных игроков, да и то, если ROI реально виден.
Подход не новый, но я нечасто вижу его применение, и он отлично ложится на бизнес-слой.
Формально, мы оцениваем не уровень магии защиты, а минимальный бюджет осмысленного атакующего на получение промышленно пригодного эксплойта. Здесь:
- человеко-часы реверсера/лаборатории нужного класса;
- железо: микроскопы, ионный пучок, лазеры для fault-инъекций, xGSPS осциллографы, EM-щупы и т.д. (+амортизация);
- число итераций: сколько раз нужно пересобрать плату, чтобы довести атаку до состояния PoC;
- операционные риски: доступ к образцам, логистика, бумажки.
Изначально, мы просто идём к дружественной лаборатории реверсеров и просим их оценить цену, ну или хотя бы наш штатный реверсер оценивает из своего опыта. Но можно и формализовать: взять из Common Criteria их "attack potential" и перевести из баллов в рубли: сумма времени, экспертизы, возможностей и оборудования. У нас почти то же самое, только сразу в единицах, удобных для владельца продукта и CFO.
А главное, эта метрика отлично ложится на стоимость защищаемой системы, тираж выпуска и принимаемые риски: банально, 10к₽ контроллер партией 5к штук — хватит и "1 млн" защиты, любая более крутая защита будет явным перебором, просто не отобьёт экономику. А если... ну вы поняли.
Любой реверсер спросит: а что вы понимаете под стоимостью? Поиск уязвимости / первый успешный взлом / identification, или тиражное использование / exploitation? Одинаково важны обе фазы: дорогой взлом вполне может стоить того, если тиражирование будет условно-бесплатным и принесёт достаточный профит; и наоборот, детская уязвимость, но дорогие/недоступные носители для тиражирования ставят вопросы к ROI атаки. Хотя обычно даже единичный факт взлома уже роняет репутацию девайса, и уже не настолько важно, что тиражирование дорогое. Плюс, это может быть взлом не просто "системы в целом", а конкретного юзера этой системы, и это переходит в критерий принимаемых (или нет) рисков.
Метрика по стоимости железа тоже вопросительна: лаборатория не строится под один взлом, амортизация на потоке будет околонулевой, тогда взлом именно нашего девайса станет в разы дешевле. Эта штука в научных кругах называется low-cost attacs, особенно любят бесплатно ломать якобы "тампероустойчивые" устройства. (мораль: тампер это лишь щеколда на входе). Да и помните: суперустойчивый Knox в телефоне или ультразащищённый чип, требующий послойного шлифования кремния — скорее всего стократ дешевле обходятся на другом этапе, хотя бы даже на supply chain :)
Оценивать ROI тоже нужно обдуманно: чуваку может быть интереснее не эксплуатировать уязвимость, а просто продать её; а внутренняя оценка цены всегда будет ошибочной в разы.
Без этих оговорок цифра "стоимость защиты" быстро превратится в самообман. Желательно ещё обновлять её по итогам реальных незапланированных доступов :)
🔥10👍8💯3
Наконец мои лапы дошли до этого крипточипа, а тут и задачка с хардверной эллиптической криптографией возникла на работе.
Суть: мелкий 8-ножка берёт на себя всю криптографию, причём правильно: охраняя закрытый ключ, давая честный рандом и т.д. Вынося всё чувствительное в него, вы автоматом получаете достаточную безопасность, подтверждённую опытом и сертами.
Оч заманчиво иметь SO8 чип, который умеет:
- генерить пары ключей (закрытый/открытый) для эллиптики
- юзать закрытый ключ внутри, никогда не отдавая его наружу
- генерить общий сессионный ключ по Диффи-Хеллману / ECDH
- считать хэши, подписывать и проверять подпись сообщений
- шифровать/расшифровывать сообщения по AES-128
- хранить данные в EEPROM, в т.ч. в OTP зонах
- ещё и имеет криптобезопасный генератор случайных чисел!
Зачем вообще всё это нужно: имеем два девайса, соединённых незащищённым каналом. CAN, RS485, Ethernet, что угодно, во что злоумышленник может влезть, прослушать и отправить свои посылки; пусть это контроллер двери и замок. Чувак подслушает команду "открытие двери", и потом отправит сам снова (replay атака). Как не дать это сделать? Не дать подслушать и отправить.
Чтобы не принять левую команду, добавим растущий номер или время, и вычислим хеш посылки с неким секретным ключом, это будет подписью. Не зная ключа, не сделаешь верную подпись.
Важно: подписываем закрытым/приватным ключом, проверяем подпись открытым/публичным. На старте, в режиме "знакомства" девайсов, каждый девайс сообщает всем свой публичный ключ, все его записывают.
Теперь, когда девайс А генерирует своё сообщение, он подписывает его своим приватным ключом, и любой другой девайс, приняв это сообщение, может проверить его подпись, используя уже известный публичный ключ девайса А.
Скорее всего, те кто менял блоки в машинах или айфонах, на этом моменте встрепенулись. Да, "прописать блок" это и есть "раздать его публичный ключ".
Против подслушивания можно зашифровать посылку полностью, но обычно хватает только подписи.
Про безопасность: Ledger вскрыли прошлые версии, ATECC508A на SSTIC 2020 лазером, и ATECC608A на BlackHat 2021 2 лазерами. 608A на сайте Microchip уже Not recommended for new designs, и есть B и C ревизии. У 608C есть варианты с JIL HIGH.
По методике из прошлого поста, уровень защиты "10 млн ₽" на старт и "10 тыс ₽" на повтор. Студент не вскроет :)
Для чипа, доступного на али за 300 ₽ это очень достойно.
Полный даташит недоступен, Microchip просит подписать NDA (вот бы чип умел подписывать кроме сообщений ещё и NDA!); но ковырянием в даташитах на прошлые версии и коде доступных библиотек, удалось навайбкодить всё, что нужно.
Команды в следующем посте:
Суть: мелкий 8-ножка берёт на себя всю криптографию, причём правильно: охраняя закрытый ключ, давая честный рандом и т.д. Вынося всё чувствительное в него, вы автоматом получаете достаточную безопасность, подтверждённую опытом и сертами.
Оч заманчиво иметь SO8 чип, который умеет:
- генерить пары ключей (закрытый/открытый) для эллиптики
- юзать закрытый ключ внутри, никогда не отдавая его наружу
- генерить общий сессионный ключ по Диффи-Хеллману / ECDH
- считать хэши, подписывать и проверять подпись сообщений
- шифровать/расшифровывать сообщения по AES-128
- хранить данные в EEPROM, в т.ч. в OTP зонах
- ещё и имеет криптобезопасный генератор случайных чисел!
Зачем вообще всё это нужно: имеем два девайса, соединённых незащищённым каналом. CAN, RS485, Ethernet, что угодно, во что злоумышленник может влезть, прослушать и отправить свои посылки; пусть это контроллер двери и замок. Чувак подслушает команду "открытие двери", и потом отправит сам снова (replay атака). Как не дать это сделать? Не дать подслушать и отправить.
Чтобы не принять левую команду, добавим растущий номер или время, и вычислим хеш посылки с неким секретным ключом, это будет подписью. Не зная ключа, не сделаешь верную подпись.
Важно: подписываем закрытым/приватным ключом, проверяем подпись открытым/публичным. На старте, в режиме "знакомства" девайсов, каждый девайс сообщает всем свой публичный ключ, все его записывают.
Теперь, когда девайс А генерирует своё сообщение, он подписывает его своим приватным ключом, и любой другой девайс, приняв это сообщение, может проверить его подпись, используя уже известный публичный ключ девайса А.
Скорее всего, те кто менял блоки в машинах или айфонах, на этом моменте встрепенулись. Да, "прописать блок" это и есть "раздать его публичный ключ".
Против подслушивания можно зашифровать посылку полностью, но обычно хватает только подписи.
Про безопасность: Ledger вскрыли прошлые версии, ATECC508A на SSTIC 2020 лазером, и ATECC608A на BlackHat 2021 2 лазерами. 608A на сайте Microchip уже Not recommended for new designs, и есть B и C ревизии. У 608C есть варианты с JIL HIGH.
По методике из прошлого поста, уровень защиты "10 млн ₽" на старт и "10 тыс ₽" на повтор. Студент не вскроет :)
Для чипа, доступного на али за 300 ₽ это очень достойно.
Полный даташит недоступен, Microchip просит подписать NDA (вот бы чип умел подписывать кроме сообщений ещё и NDA!); но ковырянием в даташитах на прошлые версии и коде доступных библиотек, удалось навайбкодить всё, что нужно.
Команды в следующем посте:
❤13👍6😱2🔥1
Команды для работы с ATECC608 из предыдущего поста:
1. Инициализация
Чип по умолчанию спит и даже может быть не виден командой i2cdetect. Пробуждение — запись 0x00 в устройство с адресом 0x00. Да, не по адресу чипа, а по адресу General call шины.
Через i2ctools это можно сделать с ключом -a из-под su:
Команда вернёт ошибку, но не переживайте, это нормально.
Спустя 2 мс можно прочитать wake-статус:
04 длина, 11 успешный wake, и 2 байта CRC.
Дальше все запросы начинаются с 03, это функция передачи команды (ещё есть 00/Reset, 01/Sleep, 02/Idle)
2. Чтение ревизии
03 функция "команда", 07 длина, 30 команда Info, param1/00 — ревизия, param2/0000 — без параметров, и CRC. Ответ:
07 длина, 00006002 ревизия, 2 байта CRC.
.60.02 соответствует чипу ATECC608A, .60.03 — ATECC608B.
3. Случайное число
03 функция "команда", 07 длина, 1B команда Random, param1/00 и param2/0000 — без параметров, и CRC. Ответ:
23 длина, FE A4 ... D6 15 случайное число (32 байта), 2 байта CRC.
Но пока конфиг чипа не залочен, эта команда всегда будет отдавать FF FF 00 00 FF FF 00 00... — это не издёвка, а маркер того, что чип открыт. Почему-то про это редко пишут, имейте в виду.
4. Публичный ключ из слота 0
03 функция "команда", 07 длина, 40 GenKey, param1/00 и param2/0000 — без параметров, и CRC. Ответ:
43 длина, D2 DE ... 8B B3 публичный ключ (64 байта), 2 байта CRC.
На самом деле, публичный ключ это лишь координата точки на эллиптической кривой: первые 32 байта X, вторые 32 байта Y.
5.1. Подготовка к подписыванию / загрузка Nonce в TempKey
03 функция "команда", 27 длина, 16 Nonce, param1/03 — режим Fixed, param2/0000 h0..h31 — 32 байта данных, и CRC. Ответ:
04 длина, 00 успешный приём, и 2 байта CRC.
5.2. Подписывание TempKey ключом из Slot0
03 функция "команда", 07 длина, 41 команда Sign, param1/80 — режим [External, TempKey], param2/0000 и CRC. Ответ:
43 длина, C7 D2 ... BF 76 подпись (64 байта), 2 байта CRC.
Подпись это на самом деле два числа по 32 байта, R||S.
Самое крутое то, что я попробовал проверить эту подпись тем же публичным ключом на компе в node.js — и проверка прошла! Мы успешно связали два криптоконтейнера, и всё работает :3
6. Блокировка конфигурации
У чипа есть три разных вида блокировки, для получения случайных чисел достаточно залочить конфигурацию.
03 функция "команда", 07 длина, 17 команда Lock, param1/80 — режим [Lock Config, Ignore CRC], param2/0000 и CRC. Ответ:
04 длина, 00 успешный лок, и 2 байта CRC.
Расчёт CRC
16 бит LSB-first, полином 8005, input reflected, output not, init 0000, final xor 0000. CRC_L = младший байт, CRC_H = старший.
Да, в качестве сообщения я везде использую число длиной 32 байта, а как подписать пакет другой длины или текст? Конечно, захешировать. В чипе и SHA-256 есть для этого.
Я рассказал лишь о 20% возможностей чипа. Ещё можно производить новые ключи от старых, строя цепочку и размножая их дальше; есть счётчики для контроля монотонности сообщений; можно создавать сессионный ключ из двух приватных, причём напрашивается вариант где с одной стороны этот чип, а с другой линукс; и ещё много всего.
Рекомендую разобраться: вы можете за 350 рублей добавить к вашему устройству надёжное шифрование, не закапываясь в это с головой. Не зря же Брюс Шнайер, отец криптографии, запрещает реализовывать криптоалгоритмы самому :)
1. Инициализация
Чип по умолчанию спит и даже может быть не виден командой i2cdetect. Пробуждение — запись 0x00 в устройство с адресом 0x00. Да, не по адресу чипа, а по адресу General call шины.
w1@0x00: 0x00Через i2ctools это можно сделать с ключом -a из-под su:
sudo i2cset -y -a 2 0x00 0x00Команда вернёт ошибку, но не переживайте, это нормально.
Спустя 2 мс можно прочитать wake-статус:
r4@0x60: 04 11 33 4304 длина, 11 успешный wake, и 2 байта CRC.
Дальше все запросы начинаются с 03, это функция передачи команды (ещё есть 00/Reset, 01/Sleep, 02/Idle)
2. Чтение ревизии
w8@0x60: 03 07 30 00 00 00 03 5D03 функция "команда", 07 длина, 30 команда Info, param1/00 — ревизия, param2/0000 — без параметров, и CRC. Ответ:
r7@0x60: 07 00 00 60 02 80 3807 длина, 00006002 ревизия, 2 байта CRC.
.60.02 соответствует чипу ATECC608A, .60.03 — ATECC608B.
3. Случайное число
w8@0x60: 03 07 1B 00 00 00 24 CD03 функция "команда", 07 длина, 1B команда Random, param1/00 и param2/0000 — без параметров, и CRC. Ответ:
r35@0x60: 23 FE A4 73 B9 4F D7 6F EA FB 5A 90 89 D0 1D 98 9E 8C 4C 49 84 BF 60 30 C7 FF BD 44 73 1A 52 D6 15 99 6623 длина, FE A4 ... D6 15 случайное число (32 байта), 2 байта CRC.
Но пока конфиг чипа не залочен, эта команда всегда будет отдавать FF FF 00 00 FF FF 00 00... — это не издёвка, а маркер того, что чип открыт. Почему-то про это редко пишут, имейте в виду.
4. Публичный ключ из слота 0
w8@0x60: 03 07 40 00 00 00 00 0503 функция "команда", 07 длина, 40 GenKey, param1/00 и param2/0000 — без параметров, и CRC. Ответ:
r67@0x60: 43 D2 DE .. 8B B3 29 A143 длина, D2 DE ... 8B B3 публичный ключ (64 байта), 2 байта CRC.
На самом деле, публичный ключ это лишь координата точки на эллиптической кривой: первые 32 байта X, вторые 32 байта Y.
5.1. Подготовка к подписыванию / загрузка Nonce в TempKey
w40@0x60: 03 27 16 03 00 00 h0 h1 ... h31 CRC_L CRC_H03 функция "команда", 27 длина, 16 Nonce, param1/03 — режим Fixed, param2/0000 h0..h31 — 32 байта данных, и CRC. Ответ:
r4@0x60: 04 00 03 4004 длина, 00 успешный приём, и 2 байта CRC.
5.2. Подписывание TempKey ключом из Slot0
w8@0x60: 03 07 41 80 00 00 28 0503 функция "команда", 07 длина, 41 команда Sign, param1/80 — режим [External, TempKey], param2/0000 и CRC. Ответ:
r67@0x60: 43 C7 D2 .. BF 76 52 A243 длина, C7 D2 ... BF 76 подпись (64 байта), 2 байта CRC.
Подпись это на самом деле два числа по 32 байта, R||S.
Самое крутое то, что я попробовал проверить эту подпись тем же публичным ключом на компе в node.js — и проверка прошла! Мы успешно связали два криптоконтейнера, и всё работает :3
6. Блокировка конфигурации
У чипа есть три разных вида блокировки, для получения случайных чисел достаточно залочить конфигурацию.
w8@0x60: 03 07 17 80 00 00 39 8D03 функция "команда", 07 длина, 17 команда Lock, param1/80 — режим [Lock Config, Ignore CRC], param2/0000 и CRC. Ответ:
r4@0x60: 04 00 03 4004 длина, 00 успешный лок, и 2 байта CRC.
Расчёт CRC
16 бит LSB-first, полином 8005, input reflected, output not, init 0000, final xor 0000. CRC_L = младший байт, CRC_H = старший.
Да, в качестве сообщения я везде использую число длиной 32 байта, а как подписать пакет другой длины или текст? Конечно, захешировать. В чипе и SHA-256 есть для этого.
Я рассказал лишь о 20% возможностей чипа. Ещё можно производить новые ключи от старых, строя цепочку и размножая их дальше; есть счётчики для контроля монотонности сообщений; можно создавать сессионный ключ из двух приватных, причём напрашивается вариант где с одной стороны этот чип, а с другой линукс; и ещё много всего.
Рекомендую разобраться: вы можете за 350 рублей добавить к вашему устройству надёжное шифрование, не закапываясь в это с головой. Не зря же Брюс Шнайер, отец криптографии, запрещает реализовывать криптоалгоритмы самому :)
❤11👍6🔥4🤔1
Мне всегда чесали мозг двойные учёные. Вместе с комментаторами вспомнили много; накидайте в комменты ещё свои варианты :D
Диаграмма Гершпрунга-Расселла
Эффект Прандтля-Глоерта
Параметры Тиля-Смолла
Схема Улама-Теллера
Алгоритм Диффи-Хеллмана
Эффект Даннинга-Крюгера
Феномен Баадера-Майнхоф
Эффект Барнума-Форера
Конденсат Бозе-Эйнштейна
Метод Рунге-Кутты
Неустойчивость Релея-Тейлора
Уравнения Навье-Стокса
Распределение Максвелла-Больцмана
Задача Штурма-Лиувилля
Закон Бойля-Мариотта
Закон Гей-Люссака
Фильтр Саллена-Ки
Уравнение Навье-Стокса
Мария Склодовская-Кюри
Закон Менделеева-Клапейрона
Правило Тициуса-Боде
Вектор Умова-Пойнтинга
Алгоритм Кули-Тьюки
Мост Эйнштейна-Розена
Неравенство Коши-Буняковского
Закон Майкельсона-Шварца :)
Код Рида-Соломона
Пространство Калаби-Яу
Алгоритм Ахо-Корасик
Теорема Остроградского-Гаусса
Диаграмма Эйлера-Венна
Мост Вина-Робинсона
Неравенство Коши-Адамара
Алгоритм Герчберга-Саксона
Теорема Пэли-Винера
Излучение Вавилова-Черенкова
Закон Джоуля-Ленца
Теорема Найквиста-Шеннона-Котельникова
Код Боуза-Чоудхури-Хоквингема
Парадокс Эйнштейна-Подольского-Розена
Закон Бугера-Ламберта-Бера
Алгоритм Кнута-Морриса-Пратта
Метод Бранауэра-Эммета-Теллера
Закон Био-Савара-Лапласа
Теория Дерягина-Ландау-Фервея-Овербека
Диаграмма Гершпрунга-Расселла
Эффект Прандтля-Глоерта
Параметры Тиля-Смолла
Схема Улама-Теллера
Алгоритм Диффи-Хеллмана
Эффект Даннинга-Крюгера
Феномен Баадера-Майнхоф
Эффект Барнума-Форера
Конденсат Бозе-Эйнштейна
Метод Рунге-Кутты
Неустойчивость Релея-Тейлора
Уравнения Навье-Стокса
Распределение Максвелла-Больцмана
Задача Штурма-Лиувилля
Закон Бойля-Мариотта
Закон Гей-Люссака
Фильтр Саллена-Ки
Уравнение Навье-Стокса
Мария Склодовская-Кюри
Закон Менделеева-Клапейрона
Правило Тициуса-Боде
Вектор Умова-Пойнтинга
Алгоритм Кули-Тьюки
Мост Эйнштейна-Розена
Неравенство Коши-Буняковского
Закон Майкельсона-Шварца :)
Код Рида-Соломона
Пространство Калаби-Яу
Алгоритм Ахо-Корасик
Теорема Остроградского-Гаусса
Диаграмма Эйлера-Венна
Мост Вина-Робинсона
Неравенство Коши-Адамара
Алгоритм Герчберга-Саксона
Теорема Пэли-Винера
Излучение Вавилова-Черенкова
Закон Джоуля-Ленца
Теорема Найквиста-Шеннона-Котельникова
Код Боуза-Чоудхури-Хоквингема
Парадокс Эйнштейна-Подольского-Розена
Закон Бугера-Ламберта-Бера
Алгоритм Кнута-Морриса-Пратта
Метод Бранауэра-Эммета-Теллера
Закон Био-Савара-Лапласа
Теория Дерягина-Ландау-Фервея-Овербека
❤8😁3
Forwarded from e/acc
Шифропанки проиграли
Я начал вести этот канал с серии постов об истории Cypherpunks — более чем 40-летнего движения, которое привело к появлению ключевых технологий, позволяющих построенние децентрализованных систем и институтов, таких как PGP и PKI (способ гарантировано приватного общения), Digicash (первые электронные деньги), TOR и Bittorent и, наконец, Биткоина, Эфира и идеи ДАО.
Почему это важно? Математика — неостановимый инструмент. Мы научились создавать нецензурируемые деньги и каналы связи. Но победив в создании инструментов, мы споткнулись о реальность их внедрения. Распространение технологий зависит не от криптографической стойкости, а от старой скучной политики и человеческой психологии, где важнее привычки, чем алгоритмы.
Четыре года я делал проекты в области SSI — системы цифровой identity для образования, медицины и идентификации в интернете. Технически мы всё сделали верно. Коммерчески проекты были успешны. Но идеологически мы провалились: вижен «суверенной личности» остался утопией. Люди не стали владеть своими данными, они просто получили еще один логин-пароль, за которым стоял новый посредник.
Парадокс: технологии шифропанков победили везде, но их идеология нигде не прижилась. Триллионы долларов в крипте, HTTPS на каждом сайте, сквозное шифрование в мессенджерах. Но криптографический слой оказался захвачен той самой бюрократической машиной (Левиафаном), против которой создавался. Пользователи сами, добровольно, отдают ключи от своей крипты Бинансу, а свои переписки — серверам Gmail и iMessage.
Причина проста: мы проигнорировали «когнитивный налог». Шифропанки требовали от человека ответственности: хранить ключи, понимать риски, настраивать ноды. Но обычный человек не хочет разбираться в эллиптических кривых ради покупки чашки кофе. Он выбирает Google не потому, что любит корпорации, а потому что восстановить пароль там можно за две минуты. Удобство — наркотик, а централизация — его главный дилер. Если приватный инференс стоит $50k, он проиграет подписке за $20, даже если эта подписка читает и использует ваши данные.
Но война не окончена. Сейчас код перестает быть просто софтом и становится институциональным дизайном. Следующее поколение систем (ИИ-агенты, абстракция аккаунтов и чейнов в крипте, intent economy) скроет сложность от пользователя. И главное его преимущество остается
Будущее не за тем, чтобы заставить всех стать гиками. Будущее за системами, которые являются само-оптимизирующимися кибернетическими организмами, где «правильный» выбор является одновременно и самым простым. Лозунг «Cypherpunks write code» не просто про код, а про дизайн механизмов (стимулов) и интерфейсы, которые делают свободу фичей системы. Мы неизбежно придем к автономным институтам не потому, что люди станут сознательнее, а потому что старые институты коллапсируют под весом собственной неэффективности. Почему — в следующей части.
Я начал вести этот канал с серии постов об истории Cypherpunks — более чем 40-летнего движения, которое привело к появлению ключевых технологий, позволяющих построенние децентрализованных систем и институтов, таких как PGP и PKI (способ гарантировано приватного общения), Digicash (первые электронные деньги), TOR и Bittorent и, наконец, Биткоина, Эфира и идеи ДАО.
Почему это важно? Математика — неостановимый инструмент. Мы научились создавать нецензурируемые деньги и каналы связи. Но победив в создании инструментов, мы споткнулись о реальность их внедрения. Распространение технологий зависит не от криптографической стойкости, а от старой скучной политики и человеческой психологии, где важнее привычки, чем алгоритмы.
Четыре года я делал проекты в области SSI — системы цифровой identity для образования, медицины и идентификации в интернете. Технически мы всё сделали верно. Коммерчески проекты были успешны. Но идеологически мы провалились: вижен «суверенной личности» остался утопией. Люди не стали владеть своими данными, они просто получили еще один логин-пароль, за которым стоял новый посредник.
Парадокс: технологии шифропанков победили везде, но их идеология нигде не прижилась. Триллионы долларов в крипте, HTTPS на каждом сайте, сквозное шифрование в мессенджерах. Но криптографический слой оказался захвачен той самой бюрократической машиной (Левиафаном), против которой создавался. Пользователи сами, добровольно, отдают ключи от своей крипты Бинансу, а свои переписки — серверам Gmail и iMessage.
Причина проста: мы проигнорировали «когнитивный налог». Шифропанки требовали от человека ответственности: хранить ключи, понимать риски, настраивать ноды. Но обычный человек не хочет разбираться в эллиптических кривых ради покупки чашки кофе. Он выбирает Google не потому, что любит корпорации, а потому что восстановить пароль там можно за две минуты. Удобство — наркотик, а централизация — его главный дилер. Если приватный инференс стоит $50k, он проиграет подписке за $20, даже если эта подписка читает и использует ваши данные.
Но война не окончена. Сейчас код перестает быть просто софтом и становится институциональным дизайном. Следующее поколение систем (ИИ-агенты, абстракция аккаунтов и чейнов в крипте, intent economy) скроет сложность от пользователя. И главное его преимущество остается
Будущее не за тем, чтобы заставить всех стать гиками. Будущее за системами, которые являются само-оптимизирующимися кибернетическими организмами, где «правильный» выбор является одновременно и самым простым. Лозунг «Cypherpunks write code» не просто про код, а про дизайн механизмов (стимулов) и интерфейсы, которые делают свободу фичей системы. Мы неизбежно придем к автономным институтам не потому, что люди станут сознательнее, а потому что старые институты коллапсируют под весом собственной неэффективности. Почему — в следующей части.
Telegram
e/acc
До недавнего времени криптография считалась военной технологией, доступной только избранным и применяемой государствами для защиты сверхценной информации.
Однако, со стремительным ростом компьютерных технологий и экспоненциальным падением стоимости вычислительных…
Однако, со стремительным ростом компьютерных технологий и экспоненциальным падением стоимости вычислительных…
🔥7😢5💯1
Все вокруг меня стали ставить ноды мештастика — сегодня уже четв шестой человек за 2 месяца. Я чего-то не знаю и там раздают деньги, или это попытка убежать от цензуры? Ну тогда лол.
🤣12❤7👻5👍3🌚2
В новом году в мире ожидается мясо, посмотрим чо будет.
Доросли до 800 подписчиков вашими стараниями; а в новом году будет продолжение проекта DOLGO (GNSS-генератор) и продолжение исследований Лаборатории резонанса.
Спасибо, что следите и ждёте постов, вы няшечки :3
Сил, наличия чипов и наличия желания делать штуки дальше.
Доросли до 800 подписчиков вашими стараниями; а в новом году будет продолжение проекта DOLGO (GNSS-генератор) и продолжение исследований Лаборатории резонанса.
Спасибо, что следите и ждёте постов, вы няшечки :3
Сил, наличия чипов и наличия желания делать штуки дальше.
❤20🥰8👍7
НОВОГОДНЯЯ МИКРОСХЕМА (буквально)
Начну год с лёгкого поста, пока все ещё под салатиками.
Замечали, что практически все гирлянды нужно прощёлкать 7 раз, чтобы дойти до единственно удобного режима "не мигает"?
А замечали мерцание гирлянд на 100 Гц, будто разработчикам было лень сделать ШИМ на 1 кГц? Меня это давно расстраивает: как можно такой стробоскоп пускать в продажу!
Всё это потому, что все они сделаны на одной микросхеме. Конечно, для такого массового товара китайцы не могли не разработать специальную микру, точнее две:
- MOSDESIGN M80056B / M80056B-1 / M80002-4
- Unisonic UTC8156
Различаются числом ветвей (4/8) и управлением (кнопка или 8-позиционный переключатель), в остальном идентичны.
*Тут был ошибочный текст про задание частоты* В микросхеме есть понижатель напряжения на стабилитроне, поэтому снаружи лишь диодный мост (а скорее, один диод), резистор, и тиристоры для гирлянд. Коммутация только пропуском целых периодов, поэтому это и не ШИМ даже, а просто вкл/выкл на частоте 50 Гц.
Конечно, никто не пытается следить за фазой синуса в сети (как в сложных симисторных регуляторах), вся регулировка яркости это лишь пропускание целых полупериодов сети — поэтому они мерцают, и особенно это заметно на малой яркости в начале / конце режима "slo-glo" (медленное разгорание/потухание).
А теперь вместо лампочек в гирляндах светодиоды: да, на цепи из нескольких десятков белых светодиодов с ограничивающим резистором погасится как раз напряжение сети, но у них нет инерционности ламп, поэтому все колебания яркости прекрасно видны, особенно боковым зрением.
Сейчас сильно популярнее гирлянды с питанием от USB; как мне удалось выяснить, там уже полноценный микроконтроллер типа того 4-центового Padauk, уже с 32'768 Гц кварцем и гораздо более приятным ШИМ без мерцаний.
Самое милое, что эти чипы прямо в даташите называются Рождественскими Микросхемами, такая прелесть :3
У кого такая гирлянда — скидывайте в комменты фотки своих контроллеров, соберём коллекцию.
TL;DR: Чипы новогодних гирлянд — это легаси из времён ламп накаливания и тиристоров. Модуляция яркости пропуском периодов отлично работала с тепловой инерцией ламп; теперь перешли на светодиоды без инерции, а чипов на складах миллионы штук на годы вперёд — вот и видим злое мерцание.
Ну а тонкие провода это и экономия, и предохранитель при КЗ.
Начну год с лёгкого поста, пока все ещё под салатиками.
Замечали, что практически все гирлянды нужно прощёлкать 7 раз, чтобы дойти до единственно удобного режима "не мигает"?
А замечали мерцание гирлянд на 100 Гц, будто разработчикам было лень сделать ШИМ на 1 кГц? Меня это давно расстраивает: как можно такой стробоскоп пускать в продажу!
Всё это потому, что все они сделаны на одной микросхеме. Конечно, для такого массового товара китайцы не могли не разработать специальную микру, точнее две:
- MOSDESIGN M80056B / M80056B-1 / M80002-4
- Unisonic UTC8156
Различаются числом ветвей (4/8) и управлением (кнопка или 8-позиционный переключатель), в остальном идентичны.
*Тут был ошибочный текст про задание частоты* В микросхеме есть понижатель напряжения на стабилитроне, поэтому снаружи лишь диодный мост (а скорее, один диод), резистор, и тиристоры для гирлянд. Коммутация только пропуском целых периодов, поэтому это и не ШИМ даже, а просто вкл/выкл на частоте 50 Гц.
Конечно, никто не пытается следить за фазой синуса в сети (как в сложных симисторных регуляторах), вся регулировка яркости это лишь пропускание целых полупериодов сети — поэтому они мерцают, и особенно это заметно на малой яркости в начале / конце режима "slo-glo" (медленное разгорание/потухание).
А теперь вместо лампочек в гирляндах светодиоды: да, на цепи из нескольких десятков белых светодиодов с ограничивающим резистором погасится как раз напряжение сети, но у них нет инерционности ламп, поэтому все колебания яркости прекрасно видны, особенно боковым зрением.
Сейчас сильно популярнее гирлянды с питанием от USB; как мне удалось выяснить, там уже полноценный микроконтроллер типа того 4-центового Padauk, уже с 32'768 Гц кварцем и гораздо более приятным ШИМ без мерцаний.
Самое милое, что эти чипы прямо в даташите называются Рождественскими Микросхемами, такая прелесть :3
У кого такая гирлянда — скидывайте в комменты фотки своих контроллеров, соберём коллекцию.
TL;DR: Чипы новогодних гирлянд — это легаси из времён ламп накаливания и тиристоров. Модуляция яркости пропуском периодов отлично работала с тепловой инерцией ламп; теперь перешли на светодиоды без инерции, а чипов на складах миллионы штук на годы вперёд — вот и видим злое мерцание.
Ну а тонкие провода это и экономия, и предохранитель при КЗ.
❤14👍12🔥6🍾2
НОВОГОДНИЕ ИТОГИ
Наверное, надо запостить такие картинки, раз все постят.
Ну да, техно-сарказм, ваш любимый токсик опять кричит на ИИ и на то, как всё вокруг сделано неправильно.
А я в рамках своего 2025 Wrapped отмечу посты про:
- 25 Гбит/с домашнюю сеть
- Самодельную камеру Вильсона
- Запись своей фотки в RFID-визитку
- Супер-телескоп Веры Рубин
- Силовые MEMS-выключатели
- Матрицу со встроенной видеообработкой
- Тактильный энкодер типа SmartKnob
- Выступление на Underconf 2
- Работу с Secure Enclave чипом ATECC608
А чем интересным поделитесь вы? Расскажите! (да, это наглый Call-to-Action).
Забавно, мама напомнила первые мои моменты знакомства с электричеством: во втором классе собрал схему с лампой и выключателем, но почему-то замкнул сеть. Конечно, при включении выбило автоматы, зато было весело.
Ну а потом, в 5 классе, в школе устроили чаепитие и воткнули ~5 чайников в удлинители, вставленные друг в друга цепочкой. Ожидаемо, изоляция потекла. Расскажите и про свои случаи!
А насчёт той кошьки — она сидит в частной коллекции кошек в доме за городом, нам периодически присылают видосики, ей там вроде нормально. Всё равно хочется найти ей человека.
Наверное, надо запостить такие картинки, раз все постят.
Ну да, техно-сарказм, ваш любимый токсик опять кричит на ИИ и на то, как всё вокруг сделано неправильно.
А я в рамках своего 2025 Wrapped отмечу посты про:
- 25 Гбит/с домашнюю сеть
- Самодельную камеру Вильсона
- Запись своей фотки в RFID-визитку
- Супер-телескоп Веры Рубин
- Силовые MEMS-выключатели
- Матрицу со встроенной видеообработкой
- Тактильный энкодер типа SmartKnob
- Выступление на Underconf 2
- Работу с Secure Enclave чипом ATECC608
А чем интересным поделитесь вы? Расскажите! (да, это наглый Call-to-Action).
Забавно, мама напомнила первые мои моменты знакомства с электричеством: во втором классе собрал схему с лампой и выключателем, но почему-то замкнул сеть. Конечно, при включении выбило автоматы, зато было весело.
Ну а потом, в 5 классе, в школе устроили чаепитие и воткнули ~5 чайников в удлинители, вставленные друг в друга цепочкой. Ожидаемо, изоляция потекла. Расскажите и про свои случаи!
А насчёт той кошьки — она сидит в частной коллекции кошек в доме за городом, нам периодически присылают видосики, ей там вроде нормально. Всё равно хочется найти ей человека.
❤8👏7
ВСКРЫТЬ BLUETOOTH ESP32
На днях прошёл 39-й Chaos Communication Congress, и подарил много тем для освещения. Выложу пару из них под тегом #39с3.
ESP32 крут, но его радио насквозь проприетарно, и когда вы уже наигрались с чипом так, как того хотел производитель — хочется поиграться более грязно: например, почему бы не вскрыть эти назойливые чёрные радиоящики? Антонио Васкес Бланко (Antón) показал, как приоткрыть эту завесу тайны.
Вообще, почему всё так плохо? Все радиоинтерфейсы зарегулированы; следовать спекам просят везде, но тут особая ситуация: среда доступа разделяемая (общий радиоэфир), и любое отклонение от спек портит жизнь сразу всем. Поэтому есть радиочасть (прошитая бинарными блобами) и интерфейс доступа, куда HCI-командами можно послать лишь что-то разрешённое.
Хотя давно всплывала инфа, что у ESP32 есть и незадокументированные регистры, и нестандартные команды, на которые таки приходит ответ. Espressif отвечали, что это отладочные команды для производства, но... ну вы поняли.
Антонио докопался до деталей реализации BT-периферии, восстановил полную карту памяти/регистров/прерываний и собрал воедино все те штуки, которые и делают этот модуль полностью прозрачным.
По итогам реверса он смог:
- принимать и передавать низкоуровневые данные (не только высокоуровневые абстракции)
- инжектить произвольные пакеты (а значит, открыл дверь для Bluetooth-фаззинга!)
- выложить полную инфу с описанием регистров и структур.
К сожалению, так и не вышло полностью перевести модуль в promiscious режим, в основном из-за хардверной генерации Sequence ID. Но даже так это уже существенный прорыв.
Теперь ESP32 становится платформой для глубокого исследования Bluetooth — от поиска закладок в беспроводных наушниках до аудита сетевого поведения и сниффинга всего обмена, от фуззинга и тестов на устойчивость до разборов странного поведения устройств.
сслк: media.ccc.de/v/39c3-liberating-bluetooth-on-the-esp32
репо: github.com/TarlogicSecurity/ESP32-Bluetooth-Reversing
На днях прошёл 39-й Chaos Communication Congress, и подарил много тем для освещения. Выложу пару из них под тегом #39с3.
ESP32 крут, но его радио насквозь проприетарно, и когда вы уже наигрались с чипом так, как того хотел производитель — хочется поиграться более грязно: например, почему бы не вскрыть эти назойливые чёрные радиоящики? Антонио Васкес Бланко (Antón) показал, как приоткрыть эту завесу тайны.
Вообще, почему всё так плохо? Все радиоинтерфейсы зарегулированы; следовать спекам просят везде, но тут особая ситуация: среда доступа разделяемая (общий радиоэфир), и любое отклонение от спек портит жизнь сразу всем. Поэтому есть радиочасть (прошитая бинарными блобами) и интерфейс доступа, куда HCI-командами можно послать лишь что-то разрешённое.
Хотя давно всплывала инфа, что у ESP32 есть и незадокументированные регистры, и нестандартные команды, на которые таки приходит ответ. Espressif отвечали, что это отладочные команды для производства, но... ну вы поняли.
Антонио докопался до деталей реализации BT-периферии, восстановил полную карту памяти/регистров/прерываний и собрал воедино все те штуки, которые и делают этот модуль полностью прозрачным.
По итогам реверса он смог:
- принимать и передавать низкоуровневые данные (не только высокоуровневые абстракции)
- инжектить произвольные пакеты (а значит, открыл дверь для Bluetooth-фаззинга!)
- выложить полную инфу с описанием регистров и структур.
К сожалению, так и не вышло полностью перевести модуль в promiscious режим, в основном из-за хардверной генерации Sequence ID. Но даже так это уже существенный прорыв.
Теперь ESP32 становится платформой для глубокого исследования Bluetooth — от поиска закладок в беспроводных наушниках до аудита сетевого поведения и сниффинга всего обмена, от фуззинга и тестов на устойчивость до разборов странного поведения устройств.
сслк: media.ccc.de/v/39c3-liberating-bluetooth-on-the-esp32
репо: github.com/TarlogicSecurity/ESP32-Bluetooth-Reversing
🔥17❤6🌚3😨1