Про механические ДСЧ
Aug. 26th, 2020 09:06 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Тут Шнайер рекламирует механический ДСЧ. В смысле набор специальных кубиков, которые кидаешь, потом складываешь в коробочку и получаешь случайную картинку, которую можно отсканировать специальным приложением и получить гарантированные 192 бита энтропии. (и можно в таком виде хранить с качестве резервнойкопии ключа).
Недостатком этого решения является только то, что оно завязано на проприетарный джаваскрипт для распознавания картинки, который надо грузить с сайта.
По-моему, следовало делать по другому. Делаем квадратную коробочку с тремя приелеенными по углам кубиками с фиксированным рисунком. Остальные кубики разрисовываем случайным сетками черных и белых квадратиков. Юзер кидает кубики, складывает их в коробочку, и получает QR-код, который можно сосканировать стандартным приложением для считывания QR-кодов и получить случаную строку алфавитно-цифровых символов.
Вопросов к безопасности было б гораздо меньше, посколььку приложений для чтения QR-кодов море, в том числе и опенсурсных.
no subject
Date: 2020-08-26 06:14 am (UTC)no subject
Date: 2020-08-26 06:24 am (UTC)Интересно, существует ли способ вычислить такие решетки на кубиках, чтобы она сходилась при любом их положении.
no subject
Date: 2020-08-26 06:34 am (UTC)Может проще найти приложение, которое может считать QR код без проверки контрольной суммы. Точнее, выдавать сырые цифры.
no subject
Date: 2020-08-26 06:54 am (UTC)Тогда это будет почти что ничем не лучше DiceKey. Весь смысл идеи в том, что для конвертации результата бросания костей в цифровую форму юзер пользуется одним из множества уже имевшихся приложений, а не привязывается к какому-то конкретному.
(которое будет нуждаться в secuity audit-е).
Примерно так же работает у нас сертификация алгоритмов шифрования. Можно сертифицирвоать программную реализацию, которая работает на процессоре общего назначения, сделанном в Китае. Но если ты закажешь в Китае специальную микросхему реализующую ГОСТ Р 34.12, то ее не сертифицируют, потому что не в России сделано.
Приложение специально разработанное для работы с сенситивной информацией вызывает больше подозрений в том, что туда задложены бэкдоры, чем приложение для чтения надписей на заборе (а основное применение читалки QR-кодов именно такое).
no subject
Date: 2020-08-26 07:22 am (UTC)no subject
Date: 2020-08-26 07:29 am (UTC)а вообще эта задачка мне напомнила приснопамятный загрузочный лист для SCSI-сканера :)
no subject
Date: 2020-08-26 07:48 am (UTC)положение кубика одно из 25 - то есть 25*24*23*22*... расположений
no subject
Date: 2020-08-26 07:56 am (UTC)Почему из 25?
log2 25!*24 то всего 88.
Коробочку надо больше делать. Вот при коробочке 7x7 у нас уже потребные 200 бит энтропии набираются. Правда если вычесть три кубика на угловые маркеры QR-кода остается 196. Но все равно достаточно. Заказывали же 192.
no subject
Date: 2020-08-26 08:15 am (UTC)no subject
Date: 2020-08-26 08:09 pm (UTC)no subject
Date: 2020-08-26 07:56 am (UTC)no subject
Date: 2020-08-26 08:05 am (UTC)no subject
Date: 2020-08-26 08:16 am (UTC)no subject
Date: 2020-08-26 10:11 am (UTC)Я как раз недавно изучал, как устроены QR-коды (достаточно поверхностно, но всё же). Там не просто контрольные суммы, там весьма крутые коды исправления ошибок. Какое-то сильно нетривиальное (тут я уже не вникал в детали) обобщение кода Хэмминга. Но, кажется, сколько-то бит ("сколько-то" -- это дофига! До 30% при высокой избыточности) он восстанавливает, но потом всё-таки говорит "не смогла" (в отличие от оригинального Хэмминга, который всегда имеет мнение о том, что было в оригинале, варианта "не сумел" у него нет).
Но, даже если предположить, что мы можем попросить приложение игнорировать контрольные суммы, тебе придётся приклеивать не только три боковых квадратика, но и (1) остальные фиксированные зоны (которые человеческий глаз обычно не замечает, но они есть), (2) биты описания формата (случайный формат -- плохая идея), (3) начало битовой последовательности (там заголовок следующего уровня вложенности, и делать его случайным -- тоже плохая идея). И только потом идут raw байты. В общем, на втором из трёх рисунке в этом разделе статьи в википедии всё, что помечено чёрным, белым, красным, розовым, а также поля Enc и Len должны быть фиксированными. А вот остальные можешь накидывать (в предположении, что контрольные суммы мы умеем игнорить).
... Рождение котят в ускорителе ...
no subject
Date: 2020-08-26 10:29 am (UTC)По-моему, судя по картинке все эти зоны попадают либо на края трех угловых квадратиков, которые все равно приклеивать, либо в 4-й угол.
no subject
Date: 2020-08-26 10:57 am (UTC)Ещё цепочки, соединяющие угловые квадраты по "внутренней" (ближней к центру всего кода) стороне. В общем, если это коробочка, то она окажется поделена на три зоны: "основную" и две боковых, которые между краями угловых квадратов и отделены от основной стенками. Но не считая этого, да -- либо вплотную к квадратам, либо четвёртый угол.
Для больших кодов (не помню, с какого размера начиная) ещё дополнительные квадраты пять на пять в середине, образующие решётку с большим шагом. Кажется, начиная буквально со второго после самого маленького, но не уверен.
... Вы сбиваете с толку весь Париж! ...
no subject
Date: 2020-08-26 05:03 pm (UTC)no subject
Date: 2020-08-26 11:03 am (UTC)no subject
Date: 2020-08-26 03:23 pm (UTC)В основном - удобством хранения результатов броска в качестве резервной копии пассфразы.
no subject
Date: 2020-08-26 05:05 pm (UTC)no subject
Date: 2020-08-26 11:49 am (UTC)Мне кажется, лучше использовать что-то типа тлеющего разряда - измерять либо ток, либо моменты, когда ток пересекает некоторое пороговое значение (а время можно измерять с любой точностью). Причём надо брать сильно избыточное количество бит и смешивать их в хаш-функции.
Так-то на тлеющий разряд могут влиять и окружающая температура, и звуки...
Приложение на JS - не бывает проприетиарным, оно всего опен-сорсное.
no subject
Date: 2020-08-27 03:39 pm (UTC)Обфусцированный код считается opensource?
no subject
Date: 2020-08-26 12:54 pm (UTC)Используем Interleaved 2of5. 4 цифры на каждый кубик. Один ряд кубиков, составленных вплотную друг к другу, даст одну линейку линейного штрихкода.
Правда, от бит, которые добавляются ориентацией верхней грани, придется отказаться.
no subject
Date: 2020-08-26 05:15 pm (UTC)Хорошая идея. А сколько линеек штрихкода надо, чтобы набрать 192 бита? 58 десятичных цифр.
no subject
Date: 2020-08-26 06:53 pm (UTC)Пять рядов по шесть кубиков (всего 180 уникальных граней, что укладывается в нумерацию 4 цифрами, 6 вариантов выпадения каждого кубика, 30! вариантов перестановок): 185 (wolframalpha) бит
Решетка 6x6 - 231 бита.
А так для 192 бит надо 31 кубик: решение уравнения.
no subject
Date: 2020-08-30 12:07 am (UTC)no subject
Date: 2020-10-24 01:13 pm (UTC)- Недавно в Сбербанке оплачивал квитанции по штрих-коду. Новый терминал никак не считывал данные. Я внимательнее всмотрелся в квитанцию, мол, может загвоздка в том, что плохо пропечатано. Тогда и мелькнула мысль, что код сильно напоминает национальные коми орнаменты. Возникла идея составить из них какой-нибудь узорчик и раскрасить. Набросал в Photoshop пару вариантов сначала в монохромном, а потом в цветном виде. Получилось симпатично. Даже придумал новому стилю пару названий - «коми-техно» или «etno-tech», - отметил Сергей.
Мастер узорного вязания, руководитель мастерской «Югыд-арт» Светлана Турова поддержала идею креативного жителя Коми:
- Конечно, потребуется доработка, но это интересно. Я попробую с этим эскизом-макетом поработать и превратить его в готовое изделие. В общем, идея в стадии разработки, - рассказала мастерица.
https://www.ryazan.kp.ru/daily/26934.5/3985169/
no subject
Date: 2020-10-24 01:32 pm (UTC)Ага, идешь видешь девушку в шарфие Знакомишься, просишь телефончик, а она "Сосканируй мой шарфик сканером штриходов".
no subject
Date: 2020-10-24 03:03 pm (UTC)no subject
Date: 2020-10-24 04:53 pm (UTC)Ну это кто с какими девушками знакомится.