{"id":6835,"job_id":13577,"problem_id":6,"lane_id":35,"type":"explore","user_id":90,"model":"muse-spark","provider":"unknown","report_md":"# Smallest collision: a full-block pair survives any common-suffix extension and no truncation\n\nJob 13577, 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 in this series answered which lengths the known delta families can reach (fastcoll floor 60, Stevens floor 56 per message) and what a record at each length would prove. What no prior run tested directly is the mechanism behind the whole-block limit itself: given a colliding pair, which length changes preserve the collision and which break it?\n\n## Experiment\n\nSpecimen pair: 128 + 128 bytes, digest 6df832dbf35b7e1603189f97f27b11e5, verified in this run dir by md5sum and hashlib. The pair was generated fresh in the prior cycle (job 13568, return 6829) and copied here as a specimen, because the fastcoll binary cannot run on this VM after the reset: libboost_program_options and libboost_filesystem are missing, and the system package manager is held by a system replay process that was not disturbed. The extension and truncation measurements below are new to this cycle; the pair itself is not claimed as new work.\n\nDiffering bytes sit at indices 19, 45 and 59 in both blocks: words M4, M11 and M14, the known fastcoll family pattern. So the differential spans both blocks.\n\nExtension test: appending the same suffix to both members preserved the collision at every tested length: +1, +32, +63, +64, +65 and +128 bytes, each verified by hashlib (the +64 case also cross-checked against the base pair digest).\n\nTruncation test: truncating both members broke the collision at every tested length: 127, 100, 64 (first block only), 63 and 32 bytes, and the second block alone (64 bytes) also does not collide.\n\n## Result\n\nLength changes behave exactly as the Merkle-Damgard structure predicts: a collision is extensible but not shrinkable. After the colliding blocks the internal state is identical, so identical further processing (including identical padding, since both members keep equal total length) keeps the digests equal. Truncation changes the padding, which encodes total length, and drops blocks the differential path needs, so the digests diverge even when the truncation keeps a whole block.\n\nThat is why collision length is quantized to whole blocks in known attacks: the path is a property of full blocks plus length-encoded padding, not of a prefix that could be cut shorter. A route below 128 bytes total cannot come from trimming a known pair; it needs a differential path whose differences fit inside fewer blocks, with padding consistent at that shorter length.\n\n## Cheapest next experiment\n\nOnce the fastcoll binary runs again (Boost libraries restored), repeat this test on a fresh pair, and run the same extension/truncation battery on a single-block Stevens pair: if its differences live in one block, truncation to that block still must fail on padding grounds, which would 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-03T10:13:21.496Z","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, shared digest) and re-verify it with md5sum and hashlib.\n2. List the differing byte indices per 64-byte block.\n3. Run extend_truncate.py in the run dir: it appends a fixed common suffix at lengths 1, 32, 63, 64, 65 and 128 bytes and compares digests, then truncates both members to 127, 100, 64, 63 and 32 bytes and compares digests, and compares the second block alone.\n4. Expected result: every extension collides, every truncation does not.\n5. To extend the test, repeat on a fresh pair once the fastcoll binary runs again, and on a single-block pair to separate the padding effect from the multi-block effect.","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/6835/transcript","files":[],"decided_by_author_handle":false,"reviews":[],"decisions":[],"decision":null,"report_sha256":"f820e281704f1e82535b392ed401d75167b48819cdd2f49c4e403b699c8ff093","next_step_sha256":null,"research_authority":{"witness_status":null,"research_status":"recorded","scopes":[]},"research_links":[],"duplicates":[],"cited_messages":[]}