Дебильный рассказ про всякую хуйню, детерминизм вычислений, свойства информации, криптографии, математики и физики - всё вперемешку. Мысли на тему "что как и почему". Шизофрения снова одолевает.
Очень мало пространства для маневра, нужно очень много точных знаний обовсём, как бы не больше чем у разработчиков оригинала. Они свободны выбирать что делать, как. и из чего. Точная копия чего-то такого - работает уровнем ниже. К примеру, проц от денди есть в виде транзисторной схемы работает точно как оригинал, повторяя даже то что сами разработчики не знают. Прикольный пример. Симуляция этого же проца на уровне ассемблерных инструкций - пишется на коленке за пару дней и работает со старым кодом. Но без гарантий что точно так-же и никак иначе. Для денди есть кривые игры, нестандартные картриджи, чтобы почти всё запускалось - нужна симуляция с учетом растактовки. Тоже не сложная, но уже не хватает документации. Надо мерять как оно в железе. На этой точности уже пора остановиться. Работает почти всё, упаковывается хоть в телевизор хоть в телефон. Готовых игр в старые года - написано дохуя. По-сути не хуже современных. Похуй что спрайтовая анимация и не фотореалистично. Нам в детстве денди и сеги хватало и оно никуда не делось. Сегу даже до сих пор выпускают в железе, там стоит ПЛИС чип, а не здоровая плата с микросхемами как в оригинале. А для компа - пишут всякую фотореалистичную хуйню, чтобы было реалистичнее чем раньше. Но вряд-ли будет, не хватает вычислительной мощности без локализации и конвееризации вычислений. Сколько гигафлопсов в видеокарты не добавляй - всеравно не хватит. Зато годно чтобы чего-нибудь брутфорсить или майниить криптовалюты, там асик (1 крошечный чип из многих) - считает SHA256 быстрее какого угодно супер датацентра. Очень показательный пример граничных возможностей бессмысленных вычислений. Делается под sha256 или любой другой хэш (или блочный шифр). Почти не делается под алгоритмы с памятью. Хэш - это однонаправленный алгоритм из последовательности цельночисленных действий, результат везде должен быть строго одинаковый. это раскладывается в конвеер из электрических сигналов, в транзисторную схему. и в любую другую схему на дискретной логике (оптическую, или на джозефсоновских переходах.). Предел скорости - упирается в нанометры и число атомов на транзистор. В наноджоули на перезарядку затворов. Масштабируемо количественным методом на сколько угодно, но не больше чем есть атомов во вселенной. Майнить можно быстрее и ещё быстрее, но никто и никогда не переберёт полное множество 2^256. Не в этой вселенной уж точно. И не с какими угодно технологиями будущего. Силовым способом задача не решается никак, даже гипотетически. Но возможно - решается аналитическим способом. Пределы возможного в этом направлении сложно хоть сколь-нибудь обоснованно оценить. Как я считаю - предельная глубина анализа тоже ограничена законами физики, но точно не знаю как. Не нанометрами, гигагерцами и нанодхоулями, и даже не числом атомов. Но почти наверняка - скоростью света. На практике - ещё никто не нашел второй прообраз хотя-бы сраного sha4 (коллизии к которому - в принципе можно посчитать на листочке). Видимо это не спроста. Коллизии хэшей - ищутся встречной подгонкой статистических закономерностей изменения битов в раунд-функции, наилучная атака - это сумма всех дифференциальных путей со сколь угодно малым отличием вероятностей от случайного распределения. Чем больше известно каких угодно закономерностей - тем лучше. Их складывают тысячи, чтобы получить одинаковый результат из разных исходных данных. Второй прообраз так найти, там направление движения информации - только вперёд. Обратного преобразования - может вообще не быть (хэш функция необратима, в отличии от блочного шифра). Наилучшие атаки - через анализ системы бинарных уравнений. формула взлома любого хэша или шифра - не секрет, а наоборот - банально выводится из кода, представить проще всего в системе 3SAT. Это то что тривиально автоматизируется. Система уравнений есть, но как и чем это решать? 3SAT солвер с полиномиальной сложностью - это вопрос не аппаратных ресурсов, а чистой математики. возможен или нет хотя-бы в принципе. если да - симмитричная криптография работает не от знания, а от незнания, это значит - фундаментально обратимы любые формальные преобразования информации. Вообще любые какие угодно, как не придумай. Если же наоборот, P != NP - это ограничивает обратимость вычислений чего угодно каким угодно способом. Можно создать шифр который нельзя взломать никак. Это один из вопросов фундаментальной науки, на который нет никакиого ответа. Даже приблизительного. Как сделать шифр с абсолютной стойкостью? Почти как угодно, если взять побольше раундов без выпадения значащих битов. Устаревшая классика - сеть фейстеля, в которую можно пихать рандомную вычислительную хуйню. требование - чтобы результат раунда зависел от каждого входного бита. не обязательна обратимость. схема Фейстеля - почти для гопников. Делим блок на две равные части (или любое другое чётное число), считаем что-нибудь от одной половины и складываем с другой (любым обратимым преобразованием. хоть ксором, хоть по по модульной арифметике., прибавляем туда же раундовый ключ (тоже обратимым способом). требование этого шага - обратимость. после чего половинки блока меняются местами. это полураунд который нужно повторить чётное число раз, чем большем лучше (точно не хуже). Диффузия (изначально сколь угодно малая) = вырастет растёт до неразличимости от случайности. алгоритм всегда однозначно обратимый, расшифровываем так-же само, считая раунды в обратном порядке, только вместо сложения - вычитаем (если складывали ксором, тоже ксори. ксор самообратим и устроен проще всего другого. в этом месте алгоритма - ничем не хуже любого другого обратимого действия. и ничем не лучше.). Что ещё важно учесть делая блочный шифр из говна и палок? Ключевое расписание, вот что! Свойства сети фейстеля строго доказуемы только при условии отсутствия любых закономерностей между ключами разных раундов. Грубо говоря - можно сделать без ключевого расписания вообще, сгенерировав раундовые ключи аппаратно. требование одно - отсутствие любых закономерностей между разными раундовыми ключами. это хуй знает как сделать по математике, правильно делается по квантовой физике. Вероятность квантовых флуктуаций не зависит ни от чего, за исключением возможно лишь только излучения с горизонта событий чёрной дыры. Одиночный фотон запущенный в полупрозрачное зеркало - может проскочить, а может отразиться. С не равной вероятностью (это зависит от прозрачности зеркала. не нужно строго полупрозрачное зеркало, пойдет какое угодно с прозрачностью отличающейся от ноля. нолики и единички - будут выпадать неравномерно, это легко исправляется простой математикой. важно - что каждый следующий бит не зависит от предыщущего никак. даже в теории, даже какаким угодно неизвестным способом. это уже проверенное свойство Вселенной. Можно постулировать - существцование кроме принципа причинности - принципа беспричинности. причинно-следственные связи могут не иметь причины. это не потому что учёные чего-то не знают.. Есть события - происходящие сами по себе и никак иначе. таково свойство этого мира, оно базовое и пролазит в какой-либо форме вообще повсюду. хоть в аналоговые схемы, хоть в цифровые, как бы они не были устроены. невозможное по каким угодно закономерностям - происходит просто так. само собой, везде и повсюду. от этого ограничения не свободны никакие технологии работающие с классической информацией. шумы всегда есть. и никак не избавиться. в цифровых схемах - шумы фазовые (есть между сигналами любых генераторов частоты, есть в схемах с ФАПЧ. любых двух сигналов - всегда чуть-чуть плавает. Это аналоговое свойство берущееся с квантового уровня. неустранимое до конца, в принципе но сводимое к сколь угодно малым цифрам, но не к нолю. и наоборот, к сколь угодно большим, с этим вообще никаких сложностей нет. имеются любые два источника сигналов - как можно более точно измеряем время их прихода. оно может быть каким угодно, не может быть строго одинаковым (ещё Эйнштейн сформулировал постулат физического несуществования понятия одновременности. в разных системах отсчёта - может различаться не только время, но и порядок поступления сигналов. Вопрос что произошло раньше а что позже - бессмысленный. Или одно или другое, зависит от того откуда смотреть. Это кажется странным (противоречит бытовой логике и прошивке нашего мозга), но оно именно так. Обнаружив сколь угодно малую разницу во времени сигналов - обрабатываем это простейшим детерминированным алгоритмом. Называется Экстрактор лоренца. и ксорим полученные им биты от разных собитый какое-то разумное число раз. любая, сколь угодно малая случайность отличная от ноля - таким способом делается наблюдаемой, с вероятность предсказать следующий бит любым способом - сводима к сколь угодно малой величине. бит не абсолютно случайный, но с отличием 10^-256 степени, или ещё меньше. Это строго доказуемо математически. простейший из способов генерировать криптографические ключи без криптографии. (вот почему я ругался на физиков, которые в QRNG впихивают Kecchack, дескать за такое надо убивать.) У хэш-функции могут быть какие-нибудь неизвестные свойства. У ксора и экстрактора лоренца - точно нет. это простейшее. доказывается на пальцах. суть QRNG - в получении фундаментальной случайности, с гарантированно известной вероятность. но только если аппаратная часть работает правильно. фотоны нужно выпускать по одному. ловить - можно не всегда, а хоть как-нибудь. как доказать что железка работает именно так, а не как угодно иначе, без знания о внутреннем устройстве? Способ есть. Через эффекты квантовой нелокальности. И скорость света. Нужен генератор запутанных фотонов (2 штуки) и 4 детектора фотонов. Размещаем детекторы на известном расстояни от генераторов, примерно одинаковом, так чтобы моменты фиксации результатов измерения различались меньше чем расстояние на скорость света. Это - гарантия отсутствия причинно-следственных связей двух разных экспериментов. причинно-следственные связи могут быть с чем угодно, не могут быть между двумя конкретными измерениями. при этом должны выполняться неравенства Белла. Случайные. Далее из этого матемаьтикой можно получить хоть разные хоть одинаковые случайности. нелокальность пока придумали использовать только одним способом - для квантовой криптографии, физической а не их свойств чисел. брошенные разными в двух разных местах кости всегда выпадают случайно и при этом всегда одинаково. то-же самое будет работать даже в разном пространстве и времени. можно получить два одинаковых измерения неважно где и когда. это свойство квантовой информации - лежит вне пространства и времени. как я считаю, на базовом уровне реальности - пространства и времени просто нет. это вторичные, а не базовые явления. Считается что это уже нулевой уровень реальности, ниже ничего нет. Как я считаю, должен быть минус первый. Как он может быть устроен? Точно - самым простым способом. Проще чем всё что угодно другое. ))