Друзья, я вступил в серьезный бизнес-конфликт с могущественными людьми. Они кинули моего человека на деньги, стали ему угрожать, я вступился. Они начали угрожать мне. Человека спасли, но мне теперь обещают очень большие проблемы. Я их послал нахуй. Они пообещали мне масштабную кампанию по дискредитации.
Точно могу сказать, что реально мне они сделать ничего не смогут, оказалось, что руки коротки, у меня тоже есть могущественные заступники. Но анонимно гадить они начали, все по классике: оскорбительные выдумки, доксинг и клевета моим партнерам, друзьям и родственникам. Из-за денег и того, что я один из немногих, кто смог их послать, они в бешенстве. Поэтому не гнушаются ничем.
Разумеется, ничего реального на меня нарыть не удалось, поэтому придумали обвинения в лгбт, педофилии и еще чёрт знает в чем, придумывают по ходу. Не ведитесь, будьте бдительны — кампания ведется, разумеется, от анонимных аккаунтов и без каких-либо реальных доказательств. На их условия я не соглашусь, поэтому грязь на меня будут лить, пока не надоест. Но они трусы, так что в итоге они конечно обломаются (по большому счету, уже обломались).
Спасибо за внимание.
Точно могу сказать, что реально мне они сделать ничего не смогут, оказалось, что руки коротки, у меня тоже есть могущественные заступники. Но анонимно гадить они начали, все по классике: оскорбительные выдумки, доксинг и клевета моим партнерам, друзьям и родственникам. Из-за денег и того, что я один из немногих, кто смог их послать, они в бешенстве. Поэтому не гнушаются ничем.
Разумеется, ничего реального на меня нарыть не удалось, поэтому придумали обвинения в лгбт, педофилии и еще чёрт знает в чем, придумывают по ходу. Не ведитесь, будьте бдительны — кампания ведется, разумеется, от анонимных аккаунтов и без каких-либо реальных доказательств. На их условия я не соглашусь, поэтому грязь на меня будут лить, пока не надоест. Но они трусы, так что в итоге они конечно обломаются (по большому счету, уже обломались).
Спасибо за внимание.
😢30🤝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 тоже нужно обдуманно: чуваку может быть интереснее не эксплуатировать уязвимость, а просто продать её; а внутренняя оценка цены всегда будет ошибочной в разы.
Без этих оговорок цифра "стоимость защиты" быстро превратится в самообман. Желательно ещё обновлять её по итогам реальных незапланированных доступов :)
🔥11👍9💯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!); но ковырянием в даташитах на прошлые версии и коде доступных библиотек, удалось навайбкодить всё, что нужно.
Команды в следующем посте:
❤14👍7😱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 рублей добавить к вашему устройству надёжное шифрование, не закапываясь в это с головой. Не зря же Брюс Шнайер, отец криптографии, запрещает реализовывать криптоалгоритмы самому :)
❤12👍6🔥4🤔1
Мне всегда чесали мозг двойные учёные. Вместе с комментаторами вспомнили много; накидайте в комменты ещё свои варианты :D
Диаграмма Гершпрунга-Расселла
Эффект Прандтля-Глоерта
Параметры Тиля-Смолла
Схема Улама-Теллера
Алгоритм Диффи-Хеллмана
Эффект Даннинга-Крюгера
Феномен Баадера-Майнхоф
Эффект Барнума-Форера
Конденсат Бозе-Эйнштейна
Метод Рунге-Кутты
Неустойчивость Релея-Тейлора
Уравнения Навье-Стокса
Распределение Максвелла-Больцмана
Задача Штурма-Лиувилля
Закон Бойля-Мариотта
Закон Гей-Люссака
Фильтр Саллена-Ки
Уравнение Навье-Стокса
Мария Склодовская-Кюри
Закон Менделеева-Клапейрона
Правило Тициуса-Боде
Вектор Умова-Пойнтинга
Алгоритм Кули-Тьюки
Мост Эйнштейна-Розена
Неравенство Коши-Буняковского
Закон Майкельсона-Шварца :)
Код Рида-Соломона
Пространство Калаби-Яу
Алгоритм Ахо-Корасик
Теорема Остроградского-Гаусса
Диаграмма Эйлера-Венна
Мост Вина-Робинсона
Неравенство Коши-Адамара
Алгоритм Герчберга-Саксона
Теорема Пэли-Винера
Излучение Вавилова-Черенкова
Закон Джоуля-Ленца
Теорема Найквиста-Шеннона-Котельникова
Код Боуза-Чоудхури-Хоквингема
Парадокс Эйнштейна-Подольского-Розена
Закон Бугера-Ламберта-Бера
Алгоритм Кнута-Морриса-Пратта
Метод Бранауэра-Эммета-Теллера
Закон Био-Савара-Лапласа
Теория Дерягина-Ландау-Фервея-Овербека
Диаграмма Гершпрунга-Расселла
Эффект Прандтля-Глоерта
Параметры Тиля-Смолла
Схема Улама-Теллера
Алгоритм Диффи-Хеллмана
Эффект Даннинга-Крюгера
Феномен Баадера-Майнхоф
Эффект Барнума-Форера
Конденсат Бозе-Эйнштейна
Метод Рунге-Кутты
Неустойчивость Релея-Тейлора
Уравнения Навье-Стокса
Распределение Максвелла-Больцмана
Задача Штурма-Лиувилля
Закон Бойля-Мариотта
Закон Гей-Люссака
Фильтр Саллена-Ки
Уравнение Навье-Стокса
Мария Склодовская-Кюри
Закон Менделеева-Клапейрона
Правило Тициуса-Боде
Вектор Умова-Пойнтинга
Алгоритм Кули-Тьюки
Мост Эйнштейна-Розена
Неравенство Коши-Буняковского
Закон Майкельсона-Шварца :)
Код Рида-Соломона
Пространство Калаби-Яу
Алгоритм Ахо-Корасик
Теорема Остроградского-Гаусса
Диаграмма Эйлера-Венна
Мост Вина-Робинсона
Неравенство Коши-Адамара
Алгоритм Герчберга-Саксона
Теорема Пэли-Винера
Излучение Вавилова-Черенкова
Закон Джоуля-Ленца
Теорема Найквиста-Шеннона-Котельникова
Код Боуза-Чоудхури-Хоквингема
Парадокс Эйнштейна-Подольского-Розена
Закон Бугера-Ламберта-Бера
Алгоритм Кнута-Морриса-Пратта
Метод Бранауэра-Эммета-Теллера
Закон Био-Савара-Лапласа
Теория Дерягина-Ландау-Фервея-Овербека
❤10😁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
До недавнего времени криптография считалась военной технологией, доступной только избранным и применяемой государствами для защиты сверхценной информации.
Однако, со стремительным ростом компьютерных технологий и экспоненциальным падением стоимости вычислительных…
Однако, со стремительным ростом компьютерных технологий и экспоненциальным падением стоимости вычислительных…
🔥8😢5💯1
Все вокруг меня стали ставить ноды мештастика — сегодня уже четв шестой человек за 2 месяца. Я чего-то не знаю и там раздают деньги, или это попытка убежать от цензуры? Ну тогда лол.
🤣12❤7👻6👍4🌚2
В новом году в мире ожидается мясо, посмотрим чо будет.
Доросли до 800 подписчиков вашими стараниями; а в новом году будет продолжение проекта #DOLGO (GNSS-генератор) и продолжение исследований Лаборатории резонанса.
Спасибо, что следите и ждёте постов, вы няшечки :3
Сил, наличия чипов и наличия желания делать штуки дальше.
Доросли до 800 подписчиков вашими стараниями; а в новом году будет продолжение проекта #DOLGO (GNSS-генератор) и продолжение исследований Лаборатории резонанса.
Спасибо, что следите и ждёте постов, вы няшечки :3
Сил, наличия чипов и наличия желания делать штуки дальше.
❤22🥰10👍8
НОВОГОДНЯЯ МИКРОСХЕМА (буквально)
Начну год с лёгкого поста, пока все ещё под салатиками.
Замечали, что практически все гирлянды нужно прощёлкать 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: Чипы новогодних гирлянд — это легаси из времён ламп накаливания и тиристоров. Модуляция яркости пропуском периодов отлично работала с тепловой инерцией ламп; теперь перешли на светодиоды без инерции, а чипов на складах миллионы штук на годы вперёд — вот и видим злое мерцание.
Ну а тонкие провода это и экономия, и предохранитель при КЗ.
❤15👍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 чайников в удлинители, вставленные друг в друга цепочкой. Ожидаемо, изоляция потекла. Расскажите и про свои случаи!
А насчёт той кошьки — она сидит в частной коллекции кошек в доме за городом, нам периодически присылают видосики, ей там вроде нормально. Всё равно хочется найти ей человека.
❤9👏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
🔥22❤8🌚6😨1
СДЕЛАТЬ АЛЮМИНИЙ КАК У APPLE
Все видели этот фирменный сатиновый эппловский алюминий в макбуках: матовый, почти не бликующий, выглядящий "дорого". Если хотите повторить такой в своём девайсе — я реверснул их технологию и готов поделиться с вами. Забавно, что сначала я дошёл до сути сам, потом почитал патенты Apple, почти совпало.
Суть: шлифовка+аквабласт+анодирование+герметизация.
0. Из Al 6061 делаем нужную деталь: фрезеровка, резание, ...
1. Шлифуем её. Apple говорит про полировку, но доводить до зеркала точно не нужно, потратит силы, а пользы не принесёт.
2. Создадим микрорельеф поверхности: похоже на пескоструй, но песок поцарапает деталь; похоже на сатинирование, но оно тоже оставит царапины, хоть и направленные; всё равно не то.
Это аквабластинг: микросферы из кремнезёма в потоке воды. Они бомбардируют алюминий, упрочняя поверхностный слой, и оставляя сотни микрократеров на 1мм². Это ручной этап, и чем ровнее получится бластить, тем лучше результат. Получим равномерную, правильно рассеивающую свет матовость.
3. Анодируем для красоты: обычное сернокислое анодирование без красителя (для цвета Silver), для других цветов красители я не подбирал. Так получаем толстый прочный оксидный слой Al₂O₃ для закрепления текстуры и для ощущения прочности.
На этом этапе становится важен материал. Алюминий 6061 проявляет себя хорошо, а вот пробовали мы такое сделать с алюминием после SLM 3D-печати — оказалось, что в порошке алюминия для печати есть кремний (это по сути силумин), и он не окисляется, создаёт серую пыль на поверхности, уходит в раствор в виде взвеси, падает на дно, короче создаёт шлам. Для 3D-печатных штук понадобится опыт анодирования силумина, либо некие фторсодержащие добавки для растворения кремния.
4. Уже почти то, что нужно — но сейчас поверхность пористая и жадно впитывает всё, не только краску, но и жир с пальцев: отпечатки появляются мгновенно и даже ацетон их не возьмёт.
Надо запечатать поры.
В промышленности это делают гидротермальным методом: свежий, не закристаллизовавшийся Al₂O₃ обдают горячей водой или паром, он переходит в бёмит AlO(OH), увеличиваясь в объёме и распирая/закрывая поры. Я сделал проще: аэрозольно покрыл лаком Cramolin Plastic, а липкую, блестящую плёнку лака с поверхности смыл ацетоном. Лак остался в порах, не давая адсорбироваться грязи. Это — органическая импрегнация пор.
Можно сказать, вы получите сапфировую плёнку на алюминии.
Все видели этот фирменный сатиновый эппловский алюминий в макбуках: матовый, почти не бликующий, выглядящий "дорого". Если хотите повторить такой в своём девайсе — я реверснул их технологию и готов поделиться с вами. Забавно, что сначала я дошёл до сути сам, потом почитал патенты Apple, почти совпало.
Суть: шлифовка+аквабласт+анодирование+герметизация.
0. Из Al 6061 делаем нужную деталь: фрезеровка, резание, ...
1. Шлифуем её. Apple говорит про полировку, но доводить до зеркала точно не нужно, потратит силы, а пользы не принесёт.
2. Создадим микрорельеф поверхности: похоже на пескоструй, но песок поцарапает деталь; похоже на сатинирование, но оно тоже оставит царапины, хоть и направленные; всё равно не то.
Это аквабластинг: микросферы из кремнезёма в потоке воды. Они бомбардируют алюминий, упрочняя поверхностный слой, и оставляя сотни микрократеров на 1мм². Это ручной этап, и чем ровнее получится бластить, тем лучше результат. Получим равномерную, правильно рассеивающую свет матовость.
3. Анодируем для красоты: обычное сернокислое анодирование без красителя (для цвета Silver), для других цветов красители я не подбирал. Так получаем толстый прочный оксидный слой Al₂O₃ для закрепления текстуры и для ощущения прочности.
На этом этапе становится важен материал. Алюминий 6061 проявляет себя хорошо, а вот пробовали мы такое сделать с алюминием после SLM 3D-печати — оказалось, что в порошке алюминия для печати есть кремний (это по сути силумин), и он не окисляется, создаёт серую пыль на поверхности, уходит в раствор в виде взвеси, падает на дно, короче создаёт шлам. Для 3D-печатных штук понадобится опыт анодирования силумина, либо некие фторсодержащие добавки для растворения кремния.
4. Уже почти то, что нужно — но сейчас поверхность пористая и жадно впитывает всё, не только краску, но и жир с пальцев: отпечатки появляются мгновенно и даже ацетон их не возьмёт.
Надо запечатать поры.
В промышленности это делают гидротермальным методом: свежий, не закристаллизовавшийся Al₂O₃ обдают горячей водой или паром, он переходит в бёмит AlO(OH), увеличиваясь в объёме и распирая/закрывая поры. Я сделал проще: аэрозольно покрыл лаком Cramolin Plastic, а липкую, блестящую плёнку лака с поверхности смыл ацетоном. Лак остался в порах, не давая адсорбироваться грязи. Это — органическая импрегнация пор.
Можно сказать, вы получите сапфировую плёнку на алюминии.
🔥37👍7🆒4❤2😱2
ХИМИЧЕСКАЯ ËЛОЧКА не заставила себя ждать (но жёлтая)
0. Обмотайте весы плёнкой, наденьте перчатки, приготовьте пакет для мусора и бутылку с широким горлом.
1. В 500 мл колбе: 2 грамма нитрата свинца (II) растворите в 50 мл холодной воды с парой капель уксуса или несколькими крупинками лимонной кислоты, чтобы предотвратить гидролиз (а то пойдёт белёсая муть гидроксида/карбоната свинца).
2. В другой 50 мл колбе: 3 грамма йодида калия растворите в 30 мл холодной воды.
3. Покачивая большую колбу, вылейте в неё раствор йодида.
4. Восторгайтесь (очень важно!) насыщенному жёлтому цвету мелкокристаллического йодида свинца (II).
5. 5 минут дайте осадку осесть, слейте раствор в бутылку, промойте осадок холодной водой и опять слейте после отстоя.
6. Залейте туда 400 мл крутого кипятка (подогрейте колбу, чтобы не лопнула), перемешайте (осадок растворится) и оставьте.
7. Через полчаса в растворе начнут созревать кристаллы волшебной красоты. Наблюдайте. Это реакция "золотой дождь".
Pb(NO₃)₂ + 2 KI → PbI₂↓ + 2 KNO₃
8. Утилизируйте все перчатки и пакеты, бутылку, реагент нитрата свинца и дважды вымойте руки до локтя и лицо.
9. PbI₂ можно размешать в глицерине в маленькой колбе.
Суть реакции:
при взаимодействии нитрата свинца Pb(NO₃)₂ и йодида калия KI проиходит обмен ионами, и образуется йодид свинца PbI₂ (потому что он слаборастворим) и нитрат калия KNO₃, но поскольку реагенты смешиваются быстро и реагируют по всему объёму, йодид свинца получается очень мелкодисперсный. Прекрасный плотный жёлтый цвет, но это ещё только половина эксперимента.
Растворимость йодида свинца зависит от температуры: при 100°C это 4.36 г/л, при 80°C 3 г/л, а при комнатных 25°С — всего 0.76 г/л. Поэтому, если приготовить его насыщенный раствор в кипятке, то при охлаждении раствора эти лишние 3.6 грамма на литр выпадут в осадок; но главное, они будут кристаллизоваться медленно, образуя невиданной красоты кристаллы-хлопья сразу во всей толще раствора, сверкая и медленно опадая.
0. Обмотайте весы плёнкой, наденьте перчатки, приготовьте пакет для мусора и бутылку с широким горлом.
1. В 500 мл колбе: 2 грамма нитрата свинца (II) растворите в 50 мл холодной воды с парой капель уксуса или несколькими крупинками лимонной кислоты, чтобы предотвратить гидролиз (а то пойдёт белёсая муть гидроксида/карбоната свинца).
2. В другой 50 мл колбе: 3 грамма йодида калия растворите в 30 мл холодной воды.
3. Покачивая большую колбу, вылейте в неё раствор йодида.
4. Восторгайтесь (очень важно!) насыщенному жёлтому цвету мелкокристаллического йодида свинца (II).
5. 5 минут дайте осадку осесть, слейте раствор в бутылку, промойте осадок холодной водой и опять слейте после отстоя.
6. Залейте туда 400 мл крутого кипятка (подогрейте колбу, чтобы не лопнула), перемешайте (осадок растворится) и оставьте.
7. Через полчаса в растворе начнут созревать кристаллы волшебной красоты. Наблюдайте. Это реакция "золотой дождь".
Pb(NO₃)₂ + 2 KI → PbI₂↓ + 2 KNO₃
8. Утилизируйте все перчатки и пакеты, бутылку, реагент нитрата свинца и дважды вымойте руки до локтя и лицо.
9. PbI₂ можно размешать в глицерине в маленькой колбе.
Суть реакции:
при взаимодействии нитрата свинца Pb(NO₃)₂ и йодида калия KI проиходит обмен ионами, и образуется йодид свинца PbI₂ (потому что он слаборастворим) и нитрат калия KNO₃, но поскольку реагенты смешиваются быстро и реагируют по всему объёму, йодид свинца получается очень мелкодисперсный. Прекрасный плотный жёлтый цвет, но это ещё только половина эксперимента.
Растворимость йодида свинца зависит от температуры: при 100°C это 4.36 г/л, при 80°C 3 г/л, а при комнатных 25°С — всего 0.76 г/л. Поэтому, если приготовить его насыщенный раствор в кипятке, то при охлаждении раствора эти лишние 3.6 грамма на литр выпадут в осадок; но главное, они будут кристаллизоваться медленно, образуя невиданной красоты кристаллы-хлопья сразу во всей толще раствора, сверкая и медленно опадая.
🔥18❤5😱3
АНАЛОГОВЫЕ FPGA ДОСТУПНЫ, ОПЯТЬ
Программируемые аналоговые схемы это как привычные FPGA, только в аналоговой электронике: массив фильтров, усилителей, смесителей, детекторов, и всё это можно пересобирать софтом.
Профиты ясны: сейчас мы берём входной сигнал (почти всегда аналоговый), оцифруем его в АЦП, параллельно обрабатываем, короче все прелести трейдоффа "кол-во состояний vs битность". А так можно, например, умножить сигнал на N одной ячейкой.
Концепция известна с 90-х (тот же Anadigm), но есть проблемы. Классическая ПЛИС программируется внешней цифровой памятью, а настройки ПАИС (усиления, веса, токи смещения, пороги, тысячи их!) придётся как-то генерировать локально, ставя ЦАП на каждый вход — и лишнее место, и потребление.
Да и аналоговые штуки плохо масштабируются вниз, а для создания программируемой схемы нужен массив из большого количества одинаковых ячеек.
В новом SoC FPAA от Hasler эти значения хранятся в плавающих затворах pFET транзисторов прямо в массиве аналоговых ячеек. А для задания значений рядом есть АЦП/ЦАП, которые, конечно, можно использовать и для работы схемы. А ещё SRAM 16k*16 для кода и данных и 16-битное ядро MSP430 для контроля, обработки и динамического переконфигурирования схемы.
То есть, ЦАПы настроек никуда не исчезают, просто добавляются буферы и роутинг этих сигналов. Это до 600'000 раз компактнее, чем ставить ЦАП к каждому элементу, требующему настройки.
Отдельно они упоминают, что и этот роутинг сам является активным элементом цепи, участвующим в вычислениях.
Что можно делать, и сделано уже прямо сейчас: напрашивается always-on обработка сигнала рядом с сенсором, одновременно и конфигурируемая, и ультра-низкопотребляющая. Да и быстрое прототипирование аналоговых схем тоже хочется потрогать, а дальше перенести в схему, или так и оставить FPAA чип рядом.
Низкопотребляющая mixed-signal обработка, сенсор-хабы, адаптивные контуры управления без задержек на конверсии.
Два примера: подводный сонар с переконфигурированием на лету под разные режимы работы, и споттер ключевого слова (то, как умная колонка слышит ваше "Маруся!") с потреблением 23 мкВт. Да, keyword spotter на обычных SoC уже оптимизированы — даже приснопамятный IA611 с NPU потреблял 2 мВт на фазе ожидания ключевого слова; но ПАИС стократ экономичнее.
В 2025 Okika заявила о завершении поглощения Anadigm (прежние лидеры аналоговых матриц) и намерении развивать FPAA под своим крылом. Правда, основная отладочная плата пока стоит полмиллиона рублей. Ждём :)
Ну так а чо делать: это уже в чистом виде микропотребляющие нейроны, или аналоговый conditioner / анти-клип перед АЦП, переконфигурируемый аналоговый фронденд для стенда с датчиками, и даже симулятор динамических систем / ODE-решателей на аналоговых вычислениях.
Намеренно не провожу параллели с советским аналоговым гидрокомпьютером, потому что ну разный класс устройств.
Программируемые аналоговые схемы это как привычные FPGA, только в аналоговой электронике: массив фильтров, усилителей, смесителей, детекторов, и всё это можно пересобирать софтом.
Профиты ясны: сейчас мы берём входной сигнал (почти всегда аналоговый), оцифруем его в АЦП, параллельно обрабатываем, короче все прелести трейдоффа "кол-во состояний vs битность". А так можно, например, умножить сигнал на N одной ячейкой.
Концепция известна с 90-х (тот же Anadigm), но есть проблемы. Классическая ПЛИС программируется внешней цифровой памятью, а настройки ПАИС (усиления, веса, токи смещения, пороги, тысячи их!) придётся как-то генерировать локально, ставя ЦАП на каждый вход — и лишнее место, и потребление.
Да и аналоговые штуки плохо масштабируются вниз, а для создания программируемой схемы нужен массив из большого количества одинаковых ячеек.
В новом SoC FPAA от Hasler эти значения хранятся в плавающих затворах pFET транзисторов прямо в массиве аналоговых ячеек. А для задания значений рядом есть АЦП/ЦАП, которые, конечно, можно использовать и для работы схемы. А ещё SRAM 16k*16 для кода и данных и 16-битное ядро MSP430 для контроля, обработки и динамического переконфигурирования схемы.
То есть, ЦАПы настроек никуда не исчезают, просто добавляются буферы и роутинг этих сигналов. Это до 600'000 раз компактнее, чем ставить ЦАП к каждому элементу, требующему настройки.
Отдельно они упоминают, что и этот роутинг сам является активным элементом цепи, участвующим в вычислениях.
Что можно делать, и сделано уже прямо сейчас: напрашивается always-on обработка сигнала рядом с сенсором, одновременно и конфигурируемая, и ультра-низкопотребляющая. Да и быстрое прототипирование аналоговых схем тоже хочется потрогать, а дальше перенести в схему, или так и оставить FPAA чип рядом.
Низкопотребляющая mixed-signal обработка, сенсор-хабы, адаптивные контуры управления без задержек на конверсии.
Два примера: подводный сонар с переконфигурированием на лету под разные режимы работы, и споттер ключевого слова (то, как умная колонка слышит ваше "Маруся!") с потреблением 23 мкВт. Да, keyword spotter на обычных SoC уже оптимизированы — даже приснопамятный IA611 с NPU потреблял 2 мВт на фазе ожидания ключевого слова; но ПАИС стократ экономичнее.
В 2025 Okika заявила о завершении поглощения Anadigm (прежние лидеры аналоговых матриц) и намерении развивать FPAA под своим крылом. Правда, основная отладочная плата пока стоит полмиллиона рублей. Ждём :)
Ну так а чо делать: это уже в чистом виде микропотребляющие нейроны, или аналоговый conditioner / анти-клип перед АЦП, переконфигурируемый аналоговый фронденд для стенда с датчиками, и даже симулятор динамических систем / ODE-решателей на аналоговых вычислениях.
Намеренно не провожу параллели с советским аналоговым гидрокомпьютером, потому что ну разный класс устройств.
❤11🤔5👍3🔥2🎄2😱1