LINUX.ORG.RU

CoReCTica/CRCT/Корректика

 , , ,


0

2

Как-то заморочился по вопросу — как удостовериться, что текущий файл это именно тот файл, который был изначально? Не модифицируемый, ничего такого.

Придумал сделать так - вычисляешь sha-1, md5, crc-32, и потом берёшь по n первых символов от sha-1 и md5.
Затем просто дописываешь в имя файла через точки вида <имяфайла sh.md.crc32323.расширение>
Получается достаточно короткая запись, которую можно в любой момент проверить.
Таким образом, от отдельно взятых хэшей остаются достаточно маленькие части (по умолчанию брал 2, но можно 4 или 8, но это на глазок неудобно проверять), но подразумевается, что генерация файла (не размером в несколько байт) с подобными характеристиками будет не очень простым занятием.

ПС: метод сделал для себя, может он и фигня, тема сделана, чтобы оффтопика не было в другой теме. ППС:Записывается как CRCT-n, где n - кол-во взятых символов. С точки зрения повышения сложности при меньшем количестве символов — лучше вместо 8 символов CRC32 потратить их на другие хэши.



Последнее исправление: Dreamject (всего исправлений: 1)

Затем просто дописываешь в имя файла через точки вида <имяфайла sh.md.crc32323.расширение>

Как-то сомнительно. Злоумышленник меняет содержимое и изменяет имя файла. Да и «достаточно маленькие части» хешей — легко подделать.

EXL ★★★★★
()

и потом берёшь по n первых символов
n первых символов

тебе уже сказали — ты не можешь в ХЭШ функции.

по умолчанию брал 2, но можно 4 или 8, но это на глазок
но это на глазок
на глазок

пешиисчо.

anonymous
()
Ответ на: комментарий от EXL

Злоумышленник меняет содержимое и изменяет имя файла

Ну если имя файла не соответствует исходному - значит ответ очевиден, что файл изменён)
А так - подразумевается, что имя файла можно узнать из первоисточника, по крайней мере в логах где-то оно будет светиться.

Или так: допустим, сделал фотографию, и не хочешь, что кто-то отфотошопил. А если отфотошопил - то было бы заметно.

А по поводу мелких частей хэшей — единоразово подбирать и

Dreamject
() автор топика

А все-таки хорошо, что появляются такие персонажи порой. Жизнь прет, ЛОР торт и тд...

Кстати попробовал клавиатуру, брат умер в страшных корчах.

anonymous
()
Ответ на: комментарий от alozovskoy

Почему тогда не узнать из этого первоисточника хэш?

Непрактично.
Да и хэш в ряде случаев (файл локальный) снова вычислять придётся, а тут просто: «У тебя какое имя файла, „котята.17.34.abcde1”»?
Не говоря о том, что такие данные можно запомнить и записать.

Dreamject
() автор топика

Тебе мало того треда? Ответь-ка на мой вопрос про подбор MD5:

Вот давай так: я подписал свое мнение о твоем алгоритме функцией «первый символ от MD5» и получил '0'.

$ echo -n 'полная фигня' | md5sum | head -c1; echo
0
$ echo -n 'бред сивого школьника' | md5sum | head -c1; echo
a
$ echo -n 'глупость века' | md5sum | head -c1; echo
7
$ echo -n 'феноменальный бред' | md5sum | head -c1; echo
0

опапа, я вручную «подобрал md5»???

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)

А какой смысл дрочева с sha, если потом вычисляется md5 и потом еще и crc?

anonymous
()

а тут просто: «У тебя какое имя файла, „котята.17.34.abcde1”»?

В итоге, после получения файла, мне необходимо будет вычислять crc32, md5 и sha-1, а дальше reduce'ить их по твоему алгоритму. Вместо того, чтобы высчитать какой-нибудь один хеш и проверить его на совпадение.

EXL ★★★★★
()
Ответ на: комментарий от anonymous

Кстати попробовал клавиатуру

О, предлагаю этот тред для баланса скатить в клавиатуру.

t184256 ★★★★★
()
Ответ на: комментарий от EXL

Никак, во-первых для безопасности достаточно любого видимого участия криптографии (https://xkcd.com/1181). Во-вторых поделие ТС все равно ни на что не годно.

Я хоть и тролль, но понимаю, что ТС не только споповил слабенькую хеш-функцию, но еще и передает ее тем же каналом, наверное для удобства.

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от EXL

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

Если всё-таки выяснится, что файл вредоносный/неправильный, это будет основанием отправляться к отправителю.

Проверять три хеша и сокращать их?

Есть инструменты, которые выводят сразу все выбранные хэши.
Проверить по 2 символа от каждого хэша, и потом 8 , будет быстрее, чем проверять >16 символов самостоятельно.

Dreamject
() автор топика

Товарищи спв, вот ТС споповил слабенькую хеш-функцию, для удобства придумал передавать ее тем же каналом, что и «подписанное» содержиое и рад.

Внимание вопрос: почему подписывать все гаправо и налево любителей нет, а вот сочинять свою криптографию путем порчи готовой — пруд пруди? Есть примеры горе-сочинителей, подписывающих что-то реально важное? Почему производить бред интереснее, чем применять толковое?

t184256 ★★★★★
()
Ответ на: комментарий от t184256

не только споповил слабенькую хеш-функцию

Всё относительно)
Может это слабее, чем sha-1, зато лучше, чем crc32.

Если интересно, можешь подделать http://dreamject.org/prosto-kost-kreativnaya/
98.fe.4501100F
Размером большим, хотя бы, чем 10 кбайт.

Dreamject
() автор топика

Цифровую подпись вроде уже давно изобрели. Чем не устраивает?

imul ★★★★★
()
Ответ на: комментарий от t184256

Проверить по 2 символа от каждого хэша, и потом 8 , будет быстрее и куда небезопаснее,

Во-первых, это лучше, чем ничего.
А во-вторых, если твоё «куда» к математике не имеет отношения).

Dreamject
() автор топика
Ответ на: не только споповил слабенькую хеш-функцию от Dreamject

Может это слабее, чем sha-1, зато лучше, чем crc32.

И куда слабее, чем обрезанный до той же длины MD5.

Если интересно, можешь подделать http://dreamject.org/prosto-kost-kreativnaya/

98.fe.4501100F Размером большим, хотя бы, чем 10 кбайт. Я попробую, а ты пока ответь на главный вопрос:

Ты передаешь хеш тем же каналом, что и файл. От какой подделки он должен спасти?

t184256 ★★★★★
()
Ответ на: комментарий от t184256

Даже ссылка на файл будет содержать в себе немного данных. И опять же, фигурирование в многочисленных логах.
Одно дело - по-хорошему подделать файл и просто пустить, другое - допустить, что любой может сверить этот файл с исходником, найти его на диске или даже загуглить.

Dreamject
() автор топика
Ответ на: комментарий от t184256

И куда слабее, чем обрезанный до той же длины MD5.

Вряд ли.

Допустим, будет два хэша из 8 символов, 10 ричнрй системе. У каждого по 10 в 8 степени комбинаций.
Допустим, вычисление одной комбинации - 1 секунда. Для каждого хэша надо потратить в пределе до 10 в 8 секунд для полного перебор.
Если сократить до 2 символов, то на перебор уйдет 100 секунд, если до 4 - 10000
Но если взять по 2 символов от каждого хэша, то затраченное время, по сути, будет 100х101, а не 100х100
Это, конечно, полный перебор, и тут не рассмотрены другие случаи.
Итого, время расчета двух урезанных хэшей увеличится в 2 раза, но безопасность, относительно нарезанного одного хэша да 4 символов - увеличится в 100 раз.
Пс: с телефона написал, криво

Dreamject
() автор топика
Ответ на: комментарий от Dreamject

Допустим, будет два хэша из 8 символов, 10 ричнрй системе. У каждого по 10 в 8 степени комбинаций.

Допустим, вычисление одной комбинации - 1 секунда.
...

Все.. это просто толстый тролль. Расходимся.

anonymous
()
Ответ на: комментарий от Dreamject

Скорость перебора твоего хеша равна скорости перебора самого дохлого из используемых хешей --- CRC32.

Правда я посмотрел скорость подбора CRC32. На 10K данных на моем ноуте на одном ядре моя прога на питоне будет подбирать твой CRC32 сутки, а дальше он подойдет с вероятностью 1/16^4, так что хрен я твою штуку подберу за разумные сроки. Но будь у тебя MD5, обрезанный до 12 символов, то я бы подбирал его на 30% дольше, так что твоя поделка --- срам.

t184256 ★★★★★
()
Ответ на: комментарий от Dreamject

Пока файл берется по ссылке --- это может быть подделка с поддельным именем. Переформулирую: из какого источника, отличного от источника содержимого файла, ты заранее узнаешь имя?

t184256 ★★★★★
()
Ответ на: комментарий от t184256

Но будь у тебя MD5, обрезанный до 12 символов, то я бы подбирал его на 30% дольше

Поделись расчетами.
Можешь попробовать для более ста символов подделать)

Понятно, что для большего соотношения символы/сложность можно использовать ≈12/2 на мд 5 и ша1, но это уже слишком длинно для человеческого восприятия.

Dreamject
() автор топика

Блин, я дебил, все же тривиально!!! Я могу сломать твою «безопасность» за секунды. http://paste.ubuntu.com/11010303/plain/

$ time ./smart.py 
... ('6b', '62', '4501100F') 10K 4s
... ('87', '9d', '4501100F') 20K 8s
... ('7e', '87', '4501100F') 30K 13s
FOUND 98.fe.4501100F

real	0m16.147s
user	0m12.232s
sys	0m3.814s

$ pastebinit -b fpaste.org res.txt
http://fpaste.org/219496/

Прямая ссылка: http://fpaste.org/219496/raw/

Как тебе?

t184256 ★★★★★
()
Ответ на: комментарий от t184256

Я могу сломать твою «безопасность» за секунды. http://paste.ubuntu.com/11010303/plain/

Круто ●.● (правда моё имя немного неправильно написал) ! Любой файл так быстро подделывается?

Dreamject
() автор топика

Да. Вот 643КБ за 5 минут. http://www.uploadmb.com/dw.php?id=1431012133

$ time ./smart.py
... ('71', '82', '4501100F') 1K 20s
... ('18', '9c', '4501100F') 2K 40s
... ('21', '00', '4501100F') 3K 60s
... ('1a', 'ac', '4501100F') 4K 80s
... ('86', '7f', '4501100F') 5K 101s
... ('c3', 'ac', '4501100F') 6K 122s
... ('77', '0d', '4501100F') 7K 142s
... ('0a', '71', '4501100F') 8K 163s
... ('f5', 'f2', '4501100F') 9K 183s
... ('1d', '6e', '4501100F') 10K 204s
... ('a9', '3d', '4501100F') 11K 224s
... ('8f', 'ff', '4501100F') 12K 245s
... ('ce', '4f', '4501100F') 13K 265s
... ('64', '89', '4501100F') 14K 286s
... ('d7', 'd1', '4501100F') 15K 306s
FOUND 98.fe.4501100F

real    5m17.851s
user    4m36.038s
sys     0m20.999s
$ md5sum sorry.txt                        
fe5d417c9d090d14bb0227f3a8f4e471  sorry.txt
$ sha1sum sorry.txt                   
98581dac5fc7c0cbcdd56d24ce75d88655e61c63  sorry.txt
$ du -h --apparent-size sorry.txt
643K    sorry.txt
t184256 ★★★★★
()
Ответ на: комментарий от EXL

Внезапно дошло, что crc32 вообще-то легко подделывать в плане того, что лишь малая часть вычислений зависит, допустим, от хвоста. CRC же. Как я раньше это не догонял --- не пойму. Дальше нагуглилось готовое суперрешение, которое я скотчем прилепил к своей брутфорсилке. Профит!

Громко не ругать, код выглядит хреново, работает неоптимально.

https://gist.github.com/t184256/2e64a05f23a1a09183d6

Весь почет и уважение направлять загадочному Project Nayuki.

Мораль: школьники, не придумывайте свою криптографию, придут студенты и за час научатся ломать ее за минуты.

t184256 ★★★★★
()
Ответ на: комментарий от t184256

http://natmchugh.blogspot.co.uk/2015/05/how-to-make-two-binaries-with-same-md...

Ого, MD5 за секунды? Класс.

Это коллизионная атака, а в вашем случае используется атака нахождения второго прообраза, к которой MD5 все еще устойчив.

Поэтому не совсем правильно говорить «ОЛОЛО MD5 СЛОМАН!!111». Его все еще можно использовать, при условии что есть доверие к стороне, генерирующей хеш (например, .iso-образа).

edigaryev ★★★★★
()
Ответ на: комментарий от edigaryev

Я где-то сказал «MD5 сломан»? Я говорю «MD5 за секунды». Я, конечно, не специалист в криптографии, но и моих скромных познаний хватает, чтобы отличить «мой случай» от коллизионной атаки, занимающей целые секунды. Как-то обидно выслушивать такие поучения.

Вы лучше вот что скажите, раз такой умный. Я пытаюсь придумать хоть какое-нибудь безопасное применение хешу ТСа. Вот если я и вы обменяемся заранее секретной солью по защищенному каналу, а затем вы мне отправите по незащищенному каналу файл и его хеш с этой солью, я тоже солю, хеширую, получаю тот же результат и считаю, что отправителю файла действительно известна секретная соль => это вы. Вопрос: насколько в такой схеме злоумышленнику легко обмануть меня и выдать произвольный файл за ваш а) с использованием в качестве хеша MD5 б) с использованием хеша, предлагаемого ТС? Извините уж, что объясняю на пальцах, в терминологии не ас.

t184256 ★★★★★
()
Ответ на: комментарий от t184256

Я где-то сказал «MD5 сломан»?

Ты зря принимаешь это на свой счет, это был всего лишь вывод из первого абзаца.

К тому же, мы тут общаемся не одни.

Вопрос: насколько в такой схеме злоумышленнику легко обмануть меня и выдать произвольный файл за ваш

Поздравляю, ты только что изобрел HMAC.

а) с использованием в качестве хеша MD5

http://cseweb.ucsd.edu/~mihir/papers/hmac-new.html

HMAC was proved by Bellare, Canetti and Krawczyk (1996) to be a PRF assuming that (1) the underlying compression function is a PRF, and (2) the iterated hash function is weakly collision-resistant. However, recent attacks show that assumption (2) is false for MD5 and SHA-1, removing the proof-based support for HMAC in these cases. This paper proves that HMAC is a PRF under the sole assumption that the compression function is a PRF. This recovers a proof based guarantee since no known attacks compromise the pseudorandomness of the compression function, and it also helps explain the resistance-to-attack that HMAC has shown even when implemented with hash functions whose (weak) collision resistance is compromised.

https://tools.ietf.org/html/rfc6151

MD5 is no longer acceptable where collision resistance is required such as digital signatures. It is not urgent to stop using MD5 in other ways, such as HMAC-MD5; however, since MD5 must not be used for digital signatures, new protocol designs should not employ HMAC-MD5.

б) с использованием хеша, предлагаемого ТС?
CRC-32

Дальше не читал.

edigaryev ★★★★★
()

наркоман штоле? тогда специально для тебя придумали откреплённую подпись

anonymous
()
Ответ на: комментарий от Dreamject

Можешь сначала закончить школу, а потом писать на ЛОР?

Даже ссылка на файл будет содержать в себе немного данных.

Не обязательно.

загуглить

Гугль знает не всё.

x3al ★★★★★
()

Прекрасный тред

ЛОР, а где «тот тред», который предшествовал этому и из которого перекатился ТС? Я не смог найти.

amomymous ★★★
()
Ответ на: Прекрасный тред от amomymous

Такой же вопрос. Блин, сколько я оказывается интересного пропустил катаясь по горам...

Suntechnic ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.