Оптимальный алгоритм заполнения массива

VID_20230215_173752

Насколько мне известно, Д. Кнут не разделяет этой уверенности.

Если я правильно понял, следует читать “произвольной длины”.

Массив уже реализован и вписан в линейную память компьютера единственно возможным способом.

Определением.
Наложение на “случайность” дополнительных условий напрочь убивает эту случайность.

Если сумеете доказать, что они случайные, с удовольствием ознакомлюсь с доказательством.

Да нахрен мне не уср#лось что либо тебе доказывать. Опять ничего кроме занудства.

:slight_smile:
Так оставьте ненужные споры —
Я себе уже всё доказал:
Лучше гор могут быть только горы,
На которых ещё не бывал,

Мне пару месяцев назад именно это и понадобилось. Задача стояла защитить проект (железку с ESP32 на борту) от копирования (производства сторонними лицами). В проекте использовал шифрование AES128. Алгоритм был следующий. При старте, ESP32 генерирует массив 16 байт случайных чисел, и отсылает его на Attiny85, которая шифрует данный массив жеско прописанным в ней ключем. Этот ключ так же знает и еспэшка, которая тоже шифрует данный массив. Пока ESP32 не получит от Attiny85 правильного шифрованного ответа, программа на ESP не стартует (плата не работает). Ну а тинька закрыта на уровне фьюзов. Таким образом убил 2-х зайцев. Закрыл мало мальски проект от воровства, и второе, можно открыто выкладывать обновление ПО для ESP32 (нет тиньки - проект не работает). Жаль, что пока не нашел реализацию данного алгоритма на ATSHA204 (по совету ЕвгенияП) для ESP32. Кстате для Atmega328 всё получилось шикарно, но данная библиотека для еспэшки не работает. Пока нет времени разбираться, но желание разобраться пока ещё осталось. ATSHA204 интересна ещё тем, что её можно закатывать в слои печатной платы на уровне производства, как когда то этим занималась IBM в своих серверных материнках. Если пользоаптель забывал пароль на биос, то по сути работчую материнка в мусорку.

и что, это не “лечится” бит-хаком?

Обоснуй??? Так ответ всегда разный. Какой битхак? Конечно можно всё дизасемблировать. Но в ESP32 ключ раскидан по прошивке, а тиньку конечно можно послойно пилить, Но тогда уж проще с нуля всё писать под себя, только сколько это будет стоить? А в принципе, я буду в душе даже рад, если электроника будет моя, а ПО чьё то. Но заказчик в любом случае за реинженеринг отстегнёт от поллимона и больше. Как то так вижу тот проект.

без этого никак))
ищется кусок, где принимается решение запускать код или нет, и правится условный переход, и все эти ключи и ATSHA204 побоку.

По моему сильно намудрили. Есть такая штука Энигма. Вот сейчас это ее аналог. 8 байт это колесики шифрования по перетасовки байта сообщения. Например идет сообщение “Hello World”, его шифруют в “QWERTYUASDFG”. Если для проверки правильного расположения колесиков отправить снова “Hello World” и если на выходе получим снова “QWERTYUASDFG” то все верно, Если нет, то в лес.

а вот тут то и работает бит-хак :sweat_smile:

Хакнуть AES128 даже методом перебора считаю не реально. Туда каждый раз летит случайный массив. Вычислить 16 байтный ключ практически не возможно.

я где то писал, что собираюсь “Хакнуть AES128” ?
ладно, а то зафлудили тему человеку…

Ну почему. Все по теме. Как идет перешифровка байта в барабанчике? Можно просто арифметически сложить, арифметически отнять, сделать исключающее ИЛИ, инверсия и исключающее ИЛИ. Но лучше создать некий массив из 256 байтов перекодировки. Раздать “колоду”, а потом случайно “перемешать” между собой байты. И вуаля. свой собственный самопальный криптошифр готов. И главное, что все согласно этой теме форума.

шёл разговор о моменте принятия решения, таким образом ломался цербер2

Тогда уже так:
Допустим нам нужен массив длиной N, заполнить числами от К до М.
Создаем массив длиной M-K+1, что-то типа [0…M-K]
Заполняем массив значениями индекс+K
Тасуем: В цикле от 0 до N-1 меняем местами соответствующий элемент с рандомным от 0 до M-K.
Рубим хвост массива.

1 лайк

А родное шифрование прошивки чем не устроило? Какой-то бредовый фарш.

он так и не понял, что я пытался донести до него.

1 лайк

А вот интересно, читал ли кто его многотомники?

Я первый начал )) очень давно. Но не хватило соображалки.