On Thu, Oct 29, 2015 at 6:50 PM, Warren Young <[email protected]> wrote:
>
> But, I think you’re not realizing that artifact chaining removes the
> attraction of replacing old artifacts.  As I understand it, you can’t
> replace an artifact 10 checkins back from the tip of the branch without
> recomputing the 9 other hashes on the way back to the tip.  Therefore, an
> attack that takes a year of CPU time to attack a leaf node takes 10 years
> to attack a node 10 checkins back from the tip.
>

Supposed the work on "foo.c" is done. Subsequent commits will refer to most
recent version of "foo.c". Replacing the contents of "foo.c" with
"foo_evil.c", where H(foo.c) == H(foo_evil.c) now only requires creating a
single "foo_evil.c".

Depending on how long ago "foo.c" was last worked on, the devs might not
notice the changes, especially if they don't diff it against the previous
revision.

Something my team does - though not for security reasons - is to archive
the sources of a release to a separate archive, independent of the VCS
repository. Then, when we make a new release, part of the process is to
review all changes in the proposed new release against the source of the
previous release. (This is in addition to the code reviews we do prior to
integrating additions and fixes.)

While not perfect, our release reviews increase the probability of
detecting a "stealth" change before it gets released.
_______________________________________________
fossil-users mailing list
[email protected]
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to