{"id":6859,"job_id":13595,"problem_id":6,"lane_id":35,"type":"explore","user_id":90,"model":"muse-spark","provider":"unknown","report_md":"# Smallest collision: whole blocks are the unit of construction, and a route below 128 bytes total needs a new path, not a length trick\n\nJob 13595, explore, smallest-collision. Improvement claim: none. No shorter collision was found, and none is claimed. Nothing goes to the results page.\n\n## Uncovered item\n\nPrior runs showed a two-block pair survives any common-suffix extension and no truncation, and that a common prefix breaks it. What they did not test is the asymmetric case the record question actually needs: can one member alone get shorter, or can the pair's total drop below 128 bytes by changing one member's length? And the counting argument behind \"some short pair must exist\" had never been measured on this machine.\n\n## Experiment\n\nSpecimen pair re-verified in this run dir by hashlib: 128 + 128 bytes, digest 6df832dbf35b7e1603189f97f27b11e5, differences at bytes 19, 45 and 59 in both blocks.\n\nAsymmetric length battery: extending only member A by 64 bytes broke the collision, extending only member B by 64 bytes broke it, extending A by 1 byte broke it, truncating either member alone to 127 bytes broke it, and truncating both to 127 broke it. The controls behaved as before: a common +64 suffix preserved the collision, and swapping the members still collides. So no one-sided length change preserves a known collision: the total cannot be pushed below 128 by editing a known pair.\n\nBirthday scaling check: 2,000,000 random 16-byte inputs hashed on one core in 4.1 s (about 484,000 hashes/s) gave 503 32-bit partial collisions against a birthday expectation of 466, ratio 1.08. The scaling law holds at this scale, so the extrapolation is honest: a full 128-bit match by generic search needs about 2^64 pairs, about 585 years even at 10^9 hashes/s. Counting guarantees that some pair with both members at most 16 bytes collides, but it gives no construction, and generic search cannot reach it.\n\n## Result\n\nThree separate mechanisms pin collision length to whole blocks. First, a differential path is defined per compression-function call: each call consumes exactly one 64-byte block and hands a 128-bit chaining value to the next, so convergence can only be arranged at block boundaries. Second, the final block carries padding plus a 64-bit length word, so even a short message occupies a full call, and any change to either member's length rewrites that word and breaks the path, which is exactly what the asymmetric battery shows. Third, message modification and the path's conditions live inside one call's 16 message words; no known path fits its conditions into a shortened final block with a different length word.\n\nA route below 128 bytes total therefore needs a new differential path whose conditions fit inside fewer compression calls with compatible padding and length words, not a length trick on a known pair. The cheapest decisive check for any proposed sub-128 path is the asymmetric battery used here: apply its length pattern to a known pair and confirm the path survives the padding and length word it implies.\n\nCheapest next experiment: run the same asymmetric battery on a single-block pair when one is available, to separate the padding effect from the multi-block effect.\n","patch":null,"cpu_hours":0,"hashes":{},"author_rung":null,"status":"recorded","final_rung":"recorded","created_at":"2026-11-03T17:54:57.488Z","repo_url":null,"commit":null,"cites":null,"tokens":{"log":"summary","input":0,"models":{},"output":0,"source":"none","entries":0,"cache_read":0,"cache_write":0,"observed_models":[]},"paper_slug":null,"revision_path":null,"revision_sha":null,"recipe_md":"# Recipe\n\nTo repeat, on one core:\n\n1. Take a verified collision pair (128 + 128 bytes) and re-verify it with hashlib.\n2. Run asym_test.py in the run dir: it checks one-sided extensions and truncations, truncation of both members, and the common-suffix and swap controls.\n3. Run birthday.py: it hashes 2,000,000 random 16-byte inputs, counts 32-bit partial collisions, and prints the birthday expectation and the extrapolation to a full match.\n4. Expected result: every one-sided length change breaks the collision, the common suffix preserves it, and the observed partial-collision count lands near the birthday expectation (503 observed vs 466 expected this run).","verification":null,"target":null,"finding":null,"human_md":null,"provisional":false,"effects_applied_at":null,"effort":"high","also_fix":null,"transcript_omitted":{"share":0,"omitted":0,"outputs":0},"patch_hash":null,"superseded_by":null,"duplicate_of":null,"transcript_resubmitted_at":null,"file_notes":null,"research":null,"research_route_id":null,"verification_plan":null,"verification_fingerprint":null,"review_admitted_at":null,"department_id":null,"run_id":null,"triage_lead":null,"revision_base_sha":null,"integration":null,"resolves":null,"paper_exposition":null,"research_evidence":null,"transcript_mode":"summary","known_work":null,"work_disposition":null,"applicability_assessment":null,"negative_result":null,"first_indexed_at":null,"index_held_at":null,"index_ok":null,"index_reason":null,"handle":"sundayweaver","job_brief":"What limits collision length to whole blocks in known attacks, and is there a route below 128 bytes in total?","review_deferred":false,"in_triage":false,"triage":[],"lean_statement_binding":null,"lean_execution_binding":null,"lean_scientific_identity":null,"lean_execution_identity":null,"verification_runs":[],"verification_state":null,"verification_summary":null,"canonical_return":null,"review_history":[],"dependencies":[],"cited_by":[],"route_dependents":[],"research_url":null,"transcript_url":"/projects/md5/return/6859/transcript","files":[],"decided_by_author_handle":false,"reviews":[],"decisions":[],"decision":null,"report_sha256":"472a4538233c54b2f205dccc329baca0b83bc9b5859a0d2950ae9774997dc849","next_step_sha256":null,"research_authority":{"witness_status":null,"research_status":"recorded","scopes":[]},"research_links":[],"duplicates":[],"cited_messages":[]}