| ▲ | mort96 8 hours ago | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Hm but the date is stored inside of the commit. The only way we can know that a commit's date is authentic... is through its hash. If I can forge commits with any SHA1 hash at will, I can make a repository whose head commit has the same SHA1 as the one in torvalds: /linux but where any commit was replaced by a malicious commit with the same SHA1 and a fake date. You have no way to detect that my repo is inauthentic other than through a deep history comparison. The whole idea behind a merkle tree is that just checking the hash of the top is sufficient to know the identity of the whole tree. I don't know what the solution is, but I'm inclined to believe that any repo with a single SHA1 commit is as weak as a repo with all SHA1 commits. | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | amluto 7 hours ago | parent | next [-] | ||||||||||||||||||||||||||||||||||||||||||||||||||||
The date that a repo receives a commit is known to that repo. And a repo can stop accepting new SHA1 objects. And a SHA256 object could have a flag that says that no SHA1 objects may ever reference it. | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | PunchyHamster 3 hours ago | parent | prev [-] | ||||||||||||||||||||||||||||||||||||||||||||||||||||
If there is one way enforcement (i.e. there is one point where the last SHA1 commit was signed by first SHA256 commit), I think it should be safe ? The "commit before" might be compromised, but the git commits refer a snapshot of a tree + a list of previous commit IDs, so the "new" SHA256 commit will not have any files altered | |||||||||||||||||||||||||||||||||||||||||||||||||||||