Or you simply take snapshots of the simulation state each 30 or 60seconds or whatever (depends on the amount of memory it eats).
When user asks to rewind, it reloads the last snapshot, closest to the desired point of rewinding, and then fastforwards the physics to the exact desired timestamp.