Natanael

joined 1 year ago
[–] Natanael 2 points 4 months ago* (last edited 4 months ago)

That's a second pre-image attacks when you're targeting existing state (attacking hash values of existing data by creating a second file matching it). For some reason even with MD5 that's still infeasible - but collision attacks where you don't have a target output value, but instead have partial target inputs which need to have the same output hash, are however practical and fast.

[–] Natanael 8 points 4 months ago (2 children)

Tldr, modern hash algorithms process data in fixed size blocks. For MD5 you take 128 bits at a time.

The core function in a hash is a little scrambler function (permutation) that takes two different inputs and gives you a single output back.

So it starts with a fixed value built into the algorithm, and then scrambles the first block of the message with it. Then it takes that scrambled piece and mixes that with the next block of the message, then takes THAT scrambled piece and mixes it with the next block. And so on until the end of the message. The last scrambled piece is the hash value.

Collision attacks target that core function by figuring out how to tweak multiple messages so that their scrambler outputs "collide", ending up equal. So you can hash two tweaked messages and get the same hash value. These tweaks usually include a bunch of random looking bits to work.

Then for a multicollision we don't just do it for two messages. We do it for every letter in the alphabet. For a HTML document we encode something like a and repeat for every letter. Every letter gets a distinct random looking value. Then we have many documents with the same hash and one letter different. We can show you a hash and then pick which letter to present you with in the document. All of them checks out.

But then we repeat the attack. We add another whole alphabet right after the first one! Now we have a a. And because the second letter is in a different block, that works just fine! Adding a second letter don't change the first intermediate value, and you can attack the second intermediate value for the second letter separately. So you add the whole alphabet again (with new associated calculated garbage for every letter in the second position), and now after the second letter we have a new intermediate value which is the same regardless of which letter we pick in the second position.

So now we can independently pick a random letter in the first position and in the second position too! Every combination of two letters has the same hash because of the hidden calculated garbage after each letter!

Then we just repeat the multicollision attack on the whole alphabet over and over until your document is long enough to encode your message. And that message may include the document's own hash.

[–] Natanael 2 points 4 months ago

He could encourage states to join

[–] Natanael 1 points 4 months ago

Appointments are for life, but I've seen arguments it's possible to "retire" justices to powerless seats so they technically keep the job and title. Or rotate them out of SCOTUS cases to the federal circuits, so they still keep their title but have the role and power of regular judges.

[–] Natanael 3 points 4 months ago

Looks like that dev haven't kept it up but I've seen 2 other people announce working on it

[–] Natanael 5 points 4 months ago
[–] Natanael 5 points 4 months ago

Pretty Good Privacy (proprietary original)

GNU Privacy Guard (open source clone)

OpenPGP is the shared spec

[–] Natanael 5 points 4 months ago* (last edited 4 months ago) (1 children)

I mean if you're prepared to do it 2^128 times in a row...

[–] Natanael 13 points 4 months ago (4 children)

It's using a combination of multicollision attacks against MD5 and sequences of groups of alternate blocks of data representing the alphabet encoded in a way compatible with the file format.

It's basically <[a+random]/[b+random]/[c+random]...> * (length of message). The random data is crafted by the attack tool so each block has the exact same effect on the MD5 hashing algorithm as it processes each block. You need to decide how many variable blocks you need and where and their encoding in advance. You encode the blocks so the randomness isn't visible in the final rendered file.

When you have that prepped, you compute the final hash, then at each block position you select the block representing the letter you want (and its associated random data). So then you can select letters matching the actual file hash value.

It only works against hash functions with practical multicollision attacks. Doesn't work on SHA256 and newer hashes.

[–] Natanael 2 points 4 months ago (1 children)

You can but you need to define what part of the data the signature covers (a signature can't sign itself, so it must be excluded from the data bundle). Signed PDF files has the signature appended after the document data

[–] Natanael 1 points 4 months ago

I've had 3x nephews over for several days in a row, more than once. Oh god no thanks I won't have children of my own. Was sure of it already as a teen long before that, have not changed my mind since.

[–] Natanael 5 points 4 months ago

Candidate, candidate, camera, TV

view more: ‹ prev next ›