You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
> The importance of using signed mirror lists depends on the application and the users of that application. There is minimal risk to the application’s security from being tricked into contacting the wrong mirrors. This is because the framework has very little trust in repositories.
131
+
132
+
The mirror list being signed is mostly for the sake of completeness, rather than out of concern for a particular threat.
133
+
134
+
37
135
## Comparison with TUF
38
136
39
137
In this section we highlight some of the differences in the specifics of the
@@ -560,6 +658,45 @@ This list is currenty not exhaustive.
560
658
But we would still like to be able to install and verify old packages. How
561
659
do we deal with this?
562
660
661
+
## Ongoing Maintenance
662
+
663
+
### Mirror Keys: Every Year
664
+
665
+
The mirror list requires annual resigning by a holder of a mirror key.
666
+
To do this, use the following steps:
667
+
668
+
1. Install `hackage-root-tool` on the signing machine and ensure that the key is present.
669
+
2. Create a new `mirrors.json` file by incrementing the version field of the existing file and adding a year to the expiration date. Delete the signature(s), replacing them with an empty array. Place the file on the signing machine.
670
+
3. Sign the file using `hackage-root-tool sign KEYmirrors.json`, and place the resulting signature array into the `signatures` field of `mirrors.json`.
671
+
4. Commit the updated file to `https://github.com/haskell-infra/hackage-root-keys` and inform the Hackage admins so they can install it.
672
+
673
+
674
+
### Root Data: Every Other Year
675
+
676
+
The holders of the root keys are, each year, signing the root information file `root.json` that directs clients to the operational and mirror keys.
677
+
The keyholders are attesting that they believe that the root and operational keys are not compromised, that Hackage is still under the control of trusted administrators, and that everything is working about the way it usually does.
678
+
679
+
Today, there are five active root keys, because three of the original eight never completed the setup process.
680
+
681
+
To prepare the updated `roots.json`for signing by the root keyholders, a coordinator should perform the following edits:
682
+
1. If any newkeys are to be admitted, collect their key IDs and add them to the `keys` field.
683
+
2. Modify the expiration date.
684
+
3. Increment the `version` field.
685
+
4. Delete the existing signatures.
686
+
687
+
Each holder of root keys should do the following:
688
+
1. Install `hackage-root-tool` on the signing machine and ensure that the key is present.
689
+
2. Place the updated `roots.json` file on the signing machine.
690
+
3. Sign the file using `hackage-root-tool sign KEY roots.json`, and send the resulting signature back to the person who is coordinating the signing.
691
+
692
+
Finally, the coordinator should insert the provided signatures and commit the updated file to `https://github.com/haskell-infra/hackage-root-keys` and inform the Hackage admins so they can install it.
693
+
694
+
695
+
### Operational Keys
696
+
697
+
The operational keys do not presently require regeneration, unless the private keys have been lost or compromised.
698
+
699
+
563
700
## <a name="paths">Footnotes</a>
564
701
565
702
### Footnote: Paths
@@ -692,3 +829,4 @@ regard as a Hackage-1 repository is one hosted on `hackage.haskell.org`).
0 commit comments