public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] gentoo commit in users/robbat2/tree-signing-gleps: 01-distribution-process-security
@ 2007-11-28  0:27 Robin H. Johnson (robbat2)
  0 siblings, 0 replies; 17+ messages in thread
From: Robin H. Johnson (robbat2) @ 2007-11-28  0:27 UTC (permalink / raw
  To: gentoo-commits

robbat2     07/11/28 00:27:53

  Modified:             01-distribution-process-security
  Log:
  Update the generation part of MetaManifest.

Revision  Changes    Path
1.5                  users/robbat2/tree-signing-gleps/01-distribution-process-security

file : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.5&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.5&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?r1=1.4&r2=1.5

Index: 01-distribution-process-security
===================================================================
RCS file: /var/cvsroot/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- 01-distribution-process-security	27 Oct 2006 09:40:49 -0000	1.4
+++ 01-distribution-process-security	28 Nov 2007 00:27:53 -0000	1.5
@@ -1,11 +1,12 @@
 GLEP: xx+1
 Title: Security of distribution of Gentoo software - Infrastructure to User distribution - MetaManifest
-Version: $Revision: 1.4 $
-Last-Modified: $Date: 2006/10/27 09:40:49 $
+Version: $Revision: 1.5 $
+Last-Modified: $Date: 2007/11/28 00:27:53 $
 Author: Robin Hugh Johnson <robbat2@gentoo.org>, 
 Status: Draft
 Type: Standards Track
 Content-Type: text/plain
+Requires: GLEP44, GLEPxx+5
 Created: October 2006
 Post-History: ...
 
@@ -66,34 +67,28 @@
 ---------------------------------------------
 1. Start at the root of the Gentoo Portage tree (gentoo-x86, although
    this procedure applies to overlays as well).
-2. Initialize a list, empty. This will contain the relative paths of
-   every item for our MetaManifest.
+2. Initialize two empty lists: COVERED, ALL.
+2.1 'ALL' will contain every file in the tree.
+2.2 'COVERED' will contain every file that is mentioned in an existing
+    Manifest2.
 3. Traverse the tree, depth-first.
-3.0. At the top level only, ignore the distfiles and packages entries.
-3.1. If a directory contains a Manifest file, include ONLY the Manifest
-     file in the list, and do not process any other in this directory,
-     or any child directories.
-3.2. For directories not containing a Manifest file, add every file to
-     the list, and repeat item #3 for every child directory.
-4. Your list now contains every Manifest in the tree, as well as all
-   items that are not contained in any other manifest.
+3.1. At the top level only, ignore the distfiles and packages
+     directories.
+3.2  Place every file (including the Manifest itself) in the directory
+     in the ALL list.
+3.3. If a directory contains a Manifest file, extract all AUX, MISC, and
+     EBUILD items from it, and place them into the COVERED list.
+4. Produce a new list, UNCOVERED, as the set difference between ALL and
+   COVERED. This is every item that is not covered by another Manifest.
 5. If an existing MetaManifest file is present, remove it.
-6. For each item in the list:
-6.1. If the item is an existing Manifest, the Manifest2 type is
-     'MANIFEST' - this is a specialization of the 'AUX' type.
-6.2. If the item is under licenses, scripts, or metadata, the Manifest2
-     type is 'MISC'.
-6.3. If the item is under eclasses or profiles, the Manifest2 type is
-     'AUX'.
-6.4. All other items (category metadata.xml, skel.*) are of Manifest2
-      type 'MISC'.
-7. For each item in the list (they all have types now), produce the
-   hashes, and add to the MetaManifest file.
+6. For each file in the list, assign a Manifest2 type per [GLEPxx+5].
+7. For each file in the list, produce the hashes, and add with the
+   filetype to the MetaManifest file.
 8. The MetaManifest must ultimately be GnuPG-signed.
 8.1. For the initial implementation, the same key as used for tarball
      signing is sufficient.
 8.2. For the future, the key used for fully automated signing by infra
-     should NOT be on the same keyring as developer keys. See [GLEPxx+3
+     should not be on the same keyring as developer keys. See [GLEPxx+3
      for further notes].
 
 The above does not conflict the proposal contained in GLEP33, which
@@ -101,9 +96,10 @@
 the Manifest rules above still provide indirect verification for all
 files after the GLEP33 restructuring if it comes to pass.
 
-If per-category Manifests are added, the size of the MetaManifest will
-be greatly reduced, and this specification was written with such a
-possible future addition in mind.
+If other Manifests are added (such as per-category, or protecting
+versioned eclases), the size of the MetaManifest will be greatly
+reduced, and this specification was written with such a possible future
+addition in mind.
 
 MetaManifest generation will take place as part of the existing process
 by infrastructure that takes the contents of CVS and prepares it for
@@ -123,50 +119,33 @@
 compromise checking the file length, and that the hashes match.
 
 TODO(from ciaranm): Deal with excludes properly - a missing package.mask
-SHOULD be treated as an error.
-TODO: talk to genone re Manifest2 hashes, and AUX stripping/adding 'files/'
-
-Brief overview of Manifest2 verification:
------------------------------------------
-Excluding the Manifest1 compatibility data (lines starting with the name
-of a hash), each line is in the following format:
-FILETYPE FILENAME LEN (HASHNAME HASH)+
-Filetype behavior, where the filename is relative to, and behavior when
-an entry in the Manifest2 is not present:
-|--------|-----------|------------|
-|Filetype|Relative to|Missing-fail|
-|--------|-----------|------------|
-|MISC    |Manifest-bd|NO          |
-|AUX     |$FILESDIR  |YES         |
-|DIST    |$DISTDIR   |N/A         |
-|EBUILD  |N/A fileext|YES         |
-|--------|-----------|------------|
-Manifest-bd = basedir(Manifest)
+should be treated as an error.
 
 Procedure for verifying an item in the MetaManifest:
 ----------------------------------------------------
-1. Check the GnuPG signature on the MetaManifest against the keyring of
-   automated Gentoo keys. See [GLEPxx+3] for full details regarding
-   verification of GnuPG signatures. 
-1.1. Do not continue if the signature check fails.
-2. For a verification of the tree following an rsync:
-2.1. M2-verify every entry in the MetaManifest
-2.2. (optional if Manifests will be checked before use) M2-verify each
-     normal Manifest file listed in the MetaManifest.
-3. If checking at the installation of a package:
-3.1. M2-verify the entry in MetaManifest for the Manifest
-3.2. M2-verifying the contents of the Manifest. 
-3.3. Perform M2-verification of all eclasses used (both directly and
-     indirectly) by the ebuild. 
-3.4. For initial implementations, it is acceptable to check EVERY item
-     in the eclass directory, rather than tracking the exact files used
-     by every eclass (see note #1). Later implementations should strive
-     to only verify individual eclasses as needed.
-
-Notes:
-1. Tracking of exact files is of specific significance to the libtool
-eclass, as it stores patches under eclass/ELT-patches, and as such that
-would not be picked up by any tracing of the inherit function.
+NEEDS REWRITE
+XX 1. Check the GnuPG signature on the MetaManifest against the keyring of
+XX    automated Gentoo keys. See [GLEPxx+3] for full details regarding
+XX    verification of GnuPG signatures. 
+XX 1.1. Do not continue if the signature check fails.
+XX 2. For a verification of the tree following an rsync:
+XX 2.1. M2-verify every entry in the MetaManifest
+XX 2.2. (optional if Manifests will be checked before use) M2-verify each
+XX      normal Manifest file listed in the MetaManifest.
+XX 3. If checking at the installation of a package:
+XX 3.1. M2-verify the entry in MetaManifest for the Manifest
+XX 3.2. M2-verifying the contents of the Manifest. 
+XX 3.3. Perform M2-verification of all eclasses used (both directly and
+XX      indirectly) by the ebuild. 
+XX 3.4. For initial implementations, it is acceptable to check EVERY item
+XX      in the eclass directory, rather than tracking the exact files used
+XX      by every eclass (see note #1). Later implementations should strive
+XX      to only verify individual eclasses as needed.
+XX 
+XX Notes:
+XX 1. Tracking of exact files is of specific significance to the libtool
+XX eclass, as it stores patches under eclass/ELT-patches, and as such that
+XX would not be picked up by any tracing of the inherit function.
 
 Implementation Notes
 ====================
@@ -190,8 +169,8 @@
 tree-signing work finished, and helping to edit.
 Ciaran McCreesh <ciaranm@...> - Manifest2 implementation in paludis
 Brian Harring <ferring@gmail.com> - Manifest2 implementation in pkgcore
-TODO:
 Marius Mauch <genone@gentoo.org> - Manifest2 implementation in portage
+TODO:
 Ned Ludd <solar@gentoo.org> - Security concept review
 
 Copyright



-- 
gentoo-commits@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [gentoo-commits] gentoo commit in users/robbat2/tree-signing-gleps: 01-distribution-process-security
@ 2007-11-28  4:30 Robin H. Johnson (robbat2)
  0 siblings, 0 replies; 17+ messages in thread
From: Robin H. Johnson (robbat2) @ 2007-11-28  4:30 UTC (permalink / raw
  To: gentoo-commits

robbat2     07/11/28 04:30:03

  Modified:             01-distribution-process-security
  Log:
  Improve wording and rewrite the verification section.

Revision  Changes    Path
1.6                  users/robbat2/tree-signing-gleps/01-distribution-process-security

file : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.6&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.6&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?r1=1.5&r2=1.6

Index: 01-distribution-process-security
===================================================================
RCS file: /var/cvsroot/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- 01-distribution-process-security	28 Nov 2007 00:27:53 -0000	1.5
+++ 01-distribution-process-security	28 Nov 2007 04:30:03 -0000	1.6
@@ -1,7 +1,7 @@
 GLEP: xx+1
 Title: Security of distribution of Gentoo software - Infrastructure to User distribution - MetaManifest
-Version: $Revision: 1.5 $
-Last-Modified: $Date: 2007/11/28 00:27:53 $
+Version: $Revision: 1.6 $
+Last-Modified: $Date: 2007/11/28 04:30:03 $
 Author: Robin Hugh Johnson <robbat2@gentoo.org>, 
 Status: Draft
 Type: Standards Track
@@ -67,26 +67,30 @@
 ---------------------------------------------
 1. Start at the root of the Gentoo Portage tree (gentoo-x86, although
    this procedure applies to overlays as well).
-2. Initialize two empty lists: COVERED, ALL.
-2.1 'ALL' will contain every file in the tree.
-2.2 'COVERED' will contain every file that is mentioned in an existing
-    Manifest2.
+
+2. Initialize two unordered sets: COVERED, ALL.
+2.1. 'ALL' will contain every file in the tree.
+2.2. 'COVERED' will contain every file that is mentioned in an existing
+     Manifest2.
+
 3. Traverse the tree, depth-first.
 3.1. At the top level only, ignore the distfiles and packages
      directories.
-3.2  Place every file (including the Manifest itself) in the directory
-     in the ALL list.
+3.2. Place every file (including the Manifest itself) in the directory
+     in the ALL set.
 3.3. If a directory contains a Manifest file, extract all AUX, MISC, and
-     EBUILD items from it, and place them into the COVERED list.
-4. Produce a new list, UNCOVERED, as the set difference between ALL and
+     EBUILD items from it, and place them into the COVERED set.
+
+4. Produce a new set, UNCOVERED, as the set-difference between ALL and
    COVERED. This is every item that is not covered by another Manifest.
 5. If an existing MetaManifest file is present, remove it.
-6. For each file in the list, assign a Manifest2 type per [GLEPxx+5].
-7. For each file in the list, produce the hashes, and add with the
+6. For each file in UNCOVERED, assign a Manifest2 type per [GLEPxx+5].
+7. For each file in UNCOVERED, produce the hashes, and add with the
    filetype to the MetaManifest file.
+
 8. The MetaManifest must ultimately be GnuPG-signed.
-8.1. For the initial implementation, the same key as used for tarball
-     signing is sufficient.
+8.1. For the initial implementation, the same key as used for snapshot
+     tarball signing is sufficient.
 8.2. For the future, the key used for fully automated signing by infra
      should not be on the same keyring as developer keys. See [GLEPxx+3
      for further notes].
@@ -114,38 +118,50 @@
 Secondly, the MetaManifest may be checked during installation of a
 package.
 
-In the following, I've used term 'M2-verify' to note following the
-hash verification procedures as defined by the Manifest2 format - which
-compromise checking the file length, and that the hashes match.
-
-TODO(from ciaranm): Deal with excludes properly - a missing package.mask
-should be treated as an error.
-
 Procedure for verifying an item in the MetaManifest:
 ----------------------------------------------------
-NEEDS REWRITE
-XX 1. Check the GnuPG signature on the MetaManifest against the keyring of
-XX    automated Gentoo keys. See [GLEPxx+3] for full details regarding
-XX    verification of GnuPG signatures. 
-XX 1.1. Do not continue if the signature check fails.
-XX 2. For a verification of the tree following an rsync:
-XX 2.1. M2-verify every entry in the MetaManifest
-XX 2.2. (optional if Manifests will be checked before use) M2-verify each
-XX      normal Manifest file listed in the MetaManifest.
-XX 3. If checking at the installation of a package:
-XX 3.1. M2-verify the entry in MetaManifest for the Manifest
-XX 3.2. M2-verifying the contents of the Manifest. 
-XX 3.3. Perform M2-verification of all eclasses used (both directly and
-XX      indirectly) by the ebuild. 
-XX 3.4. For initial implementations, it is acceptable to check EVERY item
-XX      in the eclass directory, rather than tracking the exact files used
-XX      by every eclass (see note #1). Later implementations should strive
-XX      to only verify individual eclasses as needed.
-XX 
-XX Notes:
-XX 1. Tracking of exact files is of specific significance to the libtool
-XX eclass, as it stores patches under eclass/ELT-patches, and as such that
-XX would not be picked up by any tracing of the inherit function.
+In the following, I've used term 'M2-verify' to note following the hash
+verification procedures as defined by the Manifest2 format - which
+compromise checking the file length, and that the hashes match. Which
+filetypes may be ignored on missing is discussed in [GLEPxx+5].
+
+1. Check the GnuPG signature on the MetaManifest against the keyring of
+   automated Gentoo keys. See [GLEPxx+3] for full details regarding
+   verification of GnuPG signatures. 
+1.1. Do not continue if the signature check fails.
+
+2. For a verification of the tree following an rsync:
+2.1. Build a set 'ALL' of every file covered by the rsync. (exclude
+     $DISTDIR, $PKGDIR, local/)
+2.2. M2-verify every entry in the MetaManifest, descending into inferior
+     Manifests as needed. Place the relative path of every checked item
+     into a set 'COVERED'.
+2.3. Construct the set 'UNCOVERED' by set-difference between the ALL and
+     COVERED sets.
+2.4. For each file in the UNCOVERED set, assign a Manifest2 filetype.
+2.5. If the filetype for any file in the UNCOVERED set requires a halt
+     on error, do so.
+2.6. Completed verification
+
+3. If checking at the installation of a package:
+3.1. M2-verify the entry in MetaManifest for the Manifest
+3.2. M2-verify all relevant metadata/ contents if metadata/ is being
+     used (optionally done before dependancy checking).
+3.3. M2-verifying the contents of the Manifest. 
+3.4. Perform M2-verification of all eclasses and profiles used (both
+     directly and indirectly) by the ebuild.
+3.5. For initial implementations, it is acceptable to check EVERY item
+     in the eclass and profiles directory, rather than tracking the
+     exact files used by every eclass (see note #1). Later
+     implementations should strive to only verify individual eclasses
+     and profiles as needed.
+
+Notes:
+1. Tracking of exact files is of specific significance to the libtool
+eclass, as it stores patches under eclass/ELT-patches, and as such that
+would not be picked up by any tracing of the inherit function. This may
+be alleviated by a later eclass and ebuild variable that explicitly
+declares what files from the tree are used by a package.
 
 Implementation Notes
 ====================



-- 
gentoo-commits@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [gentoo-commits] gentoo commit in users/robbat2/tree-signing-gleps: 01-distribution-process-security
@ 2008-07-01  7:01 Robin H. Johnson (robbat2)
  0 siblings, 0 replies; 17+ messages in thread
From: Robin H. Johnson (robbat2) @ 2008-07-01  7:01 UTC (permalink / raw
  To: gentoo-commits

robbat2     08/07/01 07:01:41

  Modified:             01-distribution-process-security
  Log:
  Fix headings to REST format. Update the creation procedure as suggested by genone.

Revision  Changes    Path
1.8                  users/robbat2/tree-signing-gleps/01-distribution-process-security

file : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.8&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.8&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?r1=1.7&r2=1.8

Index: 01-distribution-process-security
===================================================================
RCS file: /var/cvsroot/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security,v
retrieving revision 1.7
retrieving revision 1.8
diff -p -w -b -B -u -u -r1.7 -r1.8
--- 01-distribution-process-security	28 Nov 2007 04:36:48 -0000	1.7
+++ 01-distribution-process-security	1 Jul 2008 07:01:40 -0000	1.8
@@ -1,16 +1,17 @@
 GLEP: xx+1
 Title: Security of distribution of Gentoo software - Infrastructure to User distribution - MetaManifest
-Version: $Revision: 1.7 $
-Last-Modified: $Date: 2007/11/28 04:36:48 $
+Version: $Revision: 1.8 $
+Last-Modified: $Date: 2008/07/01 07:01:40 $
 Author: Robin Hugh Johnson <robbat2@gentoo.org>, 
 Status: Draft
 Type: Standards Track
 Content-Type: text/plain
 Requires: GLEP44, GLEPxx+5
 Created: October 2006
-Updated: November 2007
+Updated: November 2007, June 2008
 Post-History: ...
 
+========
 Abstract
 ========
 MetaManifest provides a means of verifiable distribution from Gentoo
@@ -19,6 +20,7 @@ untrusted networks and system, by extend
 and adding a top-level Manifest file, with support for other nested
 Manifests.
 
+==========
 Motivation
 ==========
 As part of a comprehensive security plan, we need a way to prove that
@@ -48,6 +50,7 @@ guarantee: A user can prove that the tre
 has not been tampered with since leaving the Gentoo infrastructure.
 No other guarantees, either implicit or explicit are made.
 
+=============
 Specification
 =============
 For lack of a better name, the following solution should be known as the
@@ -64,6 +67,7 @@ are protected.
 In the following, the MetaManifest file is a file named 'Manifest',
 located at the root of a repository.
 
+---------------------------------------------
 Procedure for creating the MetaManifest file:
 ---------------------------------------------
 1. Start at the root of the Gentoo Portage tree (gentoo-x86, although
@@ -77,22 +81,21 @@ Procedure for creating the MetaManifest 
 3. Traverse the tree, depth-first.
 3.1. At the top level only, ignore the distfiles and packages
      directories.
-3.2. Place every file (including the Manifest itself) in the directory
-     in the ALL set.
-3.3. If a directory contains a Manifest file, extract all AUX, MISC, and
-     EBUILD items from it, and place them into the COVERED set.
-
-4. Produce a new set, UNCOVERED, as the set-difference between ALL and
-   COVERED. This is every item that is not covered by another Manifest.
+3.2. If the directory contains a Manifest file add it to the ALL set and
+     don't descend any further, otherwise add all files to the ALL set
+3.3. If a directory contains a Manifest file, extract all relevant local
+     files from it (presently: AUX, MISC, EBUILD; but should follow the
+     evolution of Manifest2 entry types per [GLEPxx+5]), and place them
+     into the COVERED set.
+4. Produce a new set, UNCOVERED, as the set-difference (ALL)-(COVERED).
+   This is every item that is not covered by another Manifest.
 5. If an existing MetaManifest file is present, remove it.
-6. For each file in UNCOVERED, assign a Manifest2 type per [GLEPxx+5].
-7. For each file in UNCOVERED, produce the hashes, and add with the
-   filetype to the MetaManifest file.
-
-8. The MetaManifest must ultimately be GnuPG-signed.
-8.1. For the initial implementation, the same key as used for snapshot
+6. For each file in UNCOVERED, assign a Manifest2 type, produce the
+   hashes, and add with the filetype to the MetaManifest file.
+7. The MetaManifest must ultimately be GnuPG-signed.
+7.1. For the initial implementation, the same key as used for snapshot
      tarball signing is sufficient.
-8.2. For the future, the key used for fully automated signing by infra
+7.2. For the future, the key used for fully automated signing by infra
      should not be on the same keyring as developer keys. See [GLEPxx+3
      for further notes].
 
@@ -112,13 +115,16 @@ distribution via rsync, which includes g
 Manifest files are not checked at this point, as they are assumed to be
 correct.
 
+--------------------------------------------------------
 Verification of one or more items from the MetaManifest:
+--------------------------------------------------------
 There are two times that this may happen: firstly, immediately after the
 rsync has completed - this has the advantage that the kernel file cache
 is hot, and checking the entire tree can be accomplished quickly.
-Secondly, the MetaManifest may be checked during installation of a
+Secondly, the MetaManifest should be checked during installation of a
 package.
 
+----------------------------------------------------
 Procedure for verifying an item in the MetaManifest:
 ----------------------------------------------------
 In the following, I've used term 'M2-verify' to note following the hash
@@ -158,12 +164,14 @@ filetypes may be ignored on missing is d
      and profiles as needed.
 
 Notes:
+======
 1. Tracking of exact files is of specific significance to the libtool
 eclass, as it stores patches under eclass/ELT-patches, and as such that
 would not be picked up by any tracing of the inherit function. This may
 be alleviated by a later eclass and ebuild variable that explicitly
 declares what files from the tree are used by a package.
 
+====================
 Implementation Notes
 ====================
 For this portion of the tree-signing work, no actions are required of
@@ -172,6 +180,7 @@ commit as they do presently, and the Met
 Infrastructure during the tree generation process, and distributed to
 users.
 
+=======================
 Backwards Compatibility
 =======================
 There are no backwards compatibility issues, as old versions of Portage
@@ -179,6 +188,7 @@ do not look for a Manifest file at the t
 Manifest2-aware versions of Portage ignore entries that they are not
 certain how to handle.
 
+======
 Thanks
 ======
 I'd like to thank the following people for input on this GLEP.
@@ -190,6 +200,7 @@ I'd like to thank the following people f
 TODO:
 - Ned Ludd (solar) - Security concept review
 
+=========
 Copyright
 =========
 Copyright (c) 2006 by Robin Hugh Johnson. This material may be



-- 
gentoo-commits@lists.gentoo.org mailing list



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [gentoo-commits] gentoo commit in users/robbat2/tree-signing-gleps: 01-distribution-process-security
@ 2008-07-01  7:04 Robin H. Johnson (robbat2)
  0 siblings, 0 replies; 17+ messages in thread
From: Robin H. Johnson (robbat2) @ 2008-07-01  7:04 UTC (permalink / raw
  To: gentoo-commits

robbat2     08/07/01 07:04:31

  Modified:             01-distribution-process-security
  Log:
  More whitespace.

Revision  Changes    Path
1.10                 users/robbat2/tree-signing-gleps/01-distribution-process-security

file : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.10&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.10&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?r1=1.9&r2=1.10

Index: 01-distribution-process-security
===================================================================
RCS file: /var/cvsroot/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security,v
retrieving revision 1.9
retrieving revision 1.10
diff -p -w -b -B -u -u -r1.9 -r1.10
--- 01-distribution-process-security	1 Jul 2008 07:03:50 -0000	1.9
+++ 01-distribution-process-security	1 Jul 2008 07:04:31 -0000	1.10
@@ -1,7 +1,7 @@
 GLEP: xx+1
 Title: Security of distribution of Gentoo software - Infrastructure to User distribution - MetaManifest
-Version: $Revision: 1.9 $
-Last-Modified: $Date: 2008/07/01 07:03:50 $
+Version: $Revision: 1.10 $
+Last-Modified: $Date: 2008/07/01 07:04:31 $
 Author: Robin Hugh Johnson <robbat2@gentoo.org>, 
 Status: Draft
 Type: Standards Track



-- 
gentoo-commits@lists.gentoo.org mailing list



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [gentoo-commits] gentoo commit in users/robbat2/tree-signing-gleps: 01-distribution-process-security
@ 2008-07-01  7:06 Robin H. Johnson (robbat2)
  0 siblings, 0 replies; 17+ messages in thread
From: Robin H. Johnson (robbat2) @ 2008-07-01  7:06 UTC (permalink / raw
  To: gentoo-commits

robbat2     08/07/01 07:06:54

  Modified:             01-distribution-process-security
  Log:
  Exclude distfiles/packages directly, not $PKGDIR, $DISTDIR. Also always verify all of metadata/ if it is used in any way.

Revision  Changes    Path
1.11                 users/robbat2/tree-signing-gleps/01-distribution-process-security

file : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.11&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.11&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?r1=1.10&r2=1.11

Index: 01-distribution-process-security
===================================================================
RCS file: /var/cvsroot/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security,v
retrieving revision 1.10
retrieving revision 1.11
diff -p -w -b -B -u -u -r1.10 -r1.11
--- 01-distribution-process-security	1 Jul 2008 07:04:31 -0000	1.10
+++ 01-distribution-process-security	1 Jul 2008 07:06:53 -0000	1.11
@@ -1,7 +1,7 @@
 GLEP: xx+1
 Title: Security of distribution of Gentoo software - Infrastructure to User distribution - MetaManifest
-Version: $Revision: 1.10 $
-Last-Modified: $Date: 2008/07/01 07:04:31 $
+Version: $Revision: 1.11 $
+Last-Modified: $Date: 2008/07/01 07:06:53 $
 Author: Robin Hugh Johnson <robbat2@gentoo.org>, 
 Status: Draft
 Type: Standards Track
@@ -143,7 +143,7 @@ filetypes may be ignored on missing is d
 
 2. For a verification of the tree following an rsync:
 2.1. Build a set 'ALL' of every file covered by the rsync. (exclude
-     $DISTDIR, $PKGDIR, local/)
+     distfiles/, packages/, local/)
 2.2. M2-verify every entry in the MetaManifest, descending into inferior
      Manifests as needed. Place the relative path of every checked item
      into a set 'COVERED'.
@@ -157,7 +157,7 @@ filetypes may be ignored on missing is d
 3. If checking at the installation of a package:
 3.1. M2-verify the entry in MetaManifest for the Manifest
 3.2. M2-verify all relevant metadata/ contents if metadata/ is being
-     used (optionally done before dependancy checking).
+     used in any way (optionally done before dependancy checking).
 3.3. M2-verifying the contents of the Manifest. 
 3.4. Perform M2-verification of all eclasses and profiles used (both
      directly and indirectly) by the ebuild.



-- 
gentoo-commits@lists.gentoo.org mailing list



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [gentoo-commits] gentoo commit in users/robbat2/tree-signing-gleps: 01-distribution-process-security
@ 2008-07-01  7:08 Robin H. Johnson (robbat2)
  0 siblings, 0 replies; 17+ messages in thread
From: Robin H. Johnson (robbat2) @ 2008-07-01  7:08 UTC (permalink / raw
  To: gentoo-commits

robbat2     08/07/01 07:08:20

  Modified:             01-distribution-process-security
  Log:
  Clarify spots where verification has failed and we must abort.

Revision  Changes    Path
1.12                 users/robbat2/tree-signing-gleps/01-distribution-process-security

file : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.12&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.12&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?r1=1.11&r2=1.12

Index: 01-distribution-process-security
===================================================================
RCS file: /var/cvsroot/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security,v
retrieving revision 1.11
retrieving revision 1.12
diff -p -w -b -B -u -u -r1.11 -r1.12
--- 01-distribution-process-security	1 Jul 2008 07:06:53 -0000	1.11
+++ 01-distribution-process-security	1 Jul 2008 07:08:20 -0000	1.12
@@ -1,7 +1,7 @@
 GLEP: xx+1
 Title: Security of distribution of Gentoo software - Infrastructure to User distribution - MetaManifest
-Version: $Revision: 1.11 $
-Last-Modified: $Date: 2008/07/01 07:06:53 $
+Version: $Revision: 1.12 $
+Last-Modified: $Date: 2008/07/01 07:08:20 $
 Author: Robin Hugh Johnson <robbat2@gentoo.org>, 
 Status: Draft
 Type: Standards Track
@@ -139,7 +139,7 @@ filetypes may be ignored on missing is d
 1. Check the GnuPG signature on the MetaManifest against the keyring of
    automated Gentoo keys. See [GLEPxx+3] for full details regarding
    verification of GnuPG signatures. 
-1.1. Do not continue if the signature check fails.
+1.1. Abort if the signature check fails.
 
 2. For a verification of the tree following an rsync:
 2.1. Build a set 'ALL' of every file covered by the rsync. (exclude
@@ -151,7 +151,7 @@ filetypes may be ignored on missing is d
      COVERED sets.
 2.4. For each file in the UNCOVERED set, assign a Manifest2 filetype.
 2.5. If the filetype for any file in the UNCOVERED set requires a halt
-     on error, do so.
+     on error, abort and display a suitable error.
 2.6. Completed verification
 
 3. If checking at the installation of a package:



-- 
gentoo-commits@lists.gentoo.org mailing list



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [gentoo-commits] gentoo commit in users/robbat2/tree-signing-gleps: 01-distribution-process-security
@ 2008-07-01  7:09 Robin H. Johnson (robbat2)
  0 siblings, 0 replies; 17+ messages in thread
From: Robin H. Johnson (robbat2) @ 2008-07-01  7:09 UTC (permalink / raw
  To: gentoo-commits

robbat2     08/07/01 07:09:56

  Modified:             01-distribution-process-security
  Log:
  Convert verification item 3.5 to a note about initial implementation only.

Revision  Changes    Path
1.13                 users/robbat2/tree-signing-gleps/01-distribution-process-security

file : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.13&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.13&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?r1=1.12&r2=1.13

Index: 01-distribution-process-security
===================================================================
RCS file: /var/cvsroot/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security,v
retrieving revision 1.12
retrieving revision 1.13
diff -p -w -b -B -u -u -r1.12 -r1.13
--- 01-distribution-process-security	1 Jul 2008 07:08:20 -0000	1.12
+++ 01-distribution-process-security	1 Jul 2008 07:09:56 -0000	1.13
@@ -1,7 +1,7 @@
 GLEP: xx+1
 Title: Security of distribution of Gentoo software - Infrastructure to User distribution - MetaManifest
-Version: $Revision: 1.12 $
-Last-Modified: $Date: 2008/07/01 07:08:20 $
+Version: $Revision: 1.13 $
+Last-Modified: $Date: 2008/07/01 07:09:56 $
 Author: Robin Hugh Johnson <robbat2@gentoo.org>, 
 Status: Draft
 Type: Standards Track
@@ -161,19 +161,19 @@ filetypes may be ignored on missing is d
 3.3. M2-verifying the contents of the Manifest. 
 3.4. Perform M2-verification of all eclasses and profiles used (both
      directly and indirectly) by the ebuild.
-3.5. For initial implementations, it is acceptable to check EVERY item
-     in the eclass and profiles directory, rather than tracking the
-     exact files used by every eclass (see note #1). Later
-     implementations should strive to only verify individual eclasses
-     and profiles as needed.
 
 Notes:
 ======
-1. Tracking of exact files is of specific significance to the libtool
-eclass, as it stores patches under eclass/ELT-patches, and as such that
-would not be picked up by any tracing of the inherit function. This may
-be alleviated by a later eclass and ebuild variable that explicitly
-declares what files from the tree are used by a package.
+1. For initial implementations, it is acceptable to check EVERY item in
+   the eclass and profiles directory, rather than tracking the exact
+   files used by every eclass (see note #2). Later implementations
+   should strive to only verify individual eclasses and profiles as
+   needed.
+2. Tracking of exact files is of specific significance to the libtool
+   eclass, as it stores patches under eclass/ELT-patches, and as such
+   that would not be picked up by any tracing of the inherit function.
+   This may be alleviated by a later eclass and ebuild variable that
+   explicitly declares what files from the tree are used by a package.
 
 ====================
 Implementation Notes



-- 
gentoo-commits@lists.gentoo.org mailing list



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [gentoo-commits] gentoo commit in users/robbat2/tree-signing-gleps: 01-distribution-process-security
@ 2008-07-11  1:27 Robin H. Johnson (robbat2)
  0 siblings, 0 replies; 17+ messages in thread
From: Robin H. Johnson (robbat2) @ 2008-07-11  1:27 UTC (permalink / raw
  To: gentoo-commits

robbat2     08/07/11 01:27:37

  Modified:             01-distribution-process-security
  Log:
  Provide a solution to the replay attacks described by Cappos et al. at http://www.cs.arizona.edu/people/justin/packagemanagersecurity/.

Revision  Changes    Path
1.14                 users/robbat2/tree-signing-gleps/01-distribution-process-security

file : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.14&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.14&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?r1=1.13&r2=1.14

Index: 01-distribution-process-security
===================================================================
RCS file: /var/cvsroot/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security,v
retrieving revision 1.13
retrieving revision 1.14
diff -p -w -b -B -u -u -r1.13 -r1.14
--- 01-distribution-process-security	1 Jul 2008 07:09:56 -0000	1.13
+++ 01-distribution-process-security	11 Jul 2008 01:27:37 -0000	1.14
@@ -1,7 +1,7 @@
 GLEP: xx+1
 Title: Security of distribution of Gentoo software - Infrastructure to User distribution - MetaManifest
-Version: $Revision: 1.13 $
-Last-Modified: $Date: 2008/07/01 07:09:56 $
+Version: $Revision: 1.14 $
+Last-Modified: $Date: 2008/07/11 01:27:37 $
 Author: Robin Hugh Johnson <robbat2@gentoo.org>, 
 Status: Draft
 Type: Standards Track
@@ -50,6 +50,11 @@ guarantee: A user can prove that the tre
 has not been tampered with since leaving the Gentoo infrastructure.
 No other guarantees, either implicit or explicit are made.
 
+Additionally, distributing a set of the most recent MetaManifests from a
+trusted source allows validation of trees that come from community
+mirrors, and allows detection of malicious (either by deliberate delay,
+replay [C08a, C08b] or alteration community mirrors.
+
 =============
 Specification
 =============
@@ -96,10 +101,19 @@ Procedure for creating the MetaManifest 
 6. For each file in UNCOVERED, assign a Manifest2 type, produce the
    hashes, and add with the filetype to the MetaManifest file.
 
-7. The MetaManifest must ultimately be GnuPG-signed.
-7.1. For the initial implementation, the same key as used for snapshot
+7. For unique identification of the MetaManifest, a header line should
+   be included, using the exact contents of the metadata/timestamp.x
+   file, so that a MetaManifest may be tied back to a tree as 
+   distributed by the rsync mirror system. The string of
+   'metadata/timestamp.x' should be included to identify this revision
+   of MetaManifest generation. Eg:
+   "Timestamp: metadata/timestamp.x: 1215722461 Thu Jul 10 20:41:01 2008 UTC"
+   The package manager MUST not use the identifying string as a filename.
+
+8. The MetaManifest must ultimately be GnuPG-signed.
+8.1. For the initial implementation, the same key as used for snapshot
      tarball signing is sufficient.
-7.2. For the future, the key used for fully automated signing by infra
+8.2. For the future, the key used for fully automated signing by infra
      should not be on the same keyring as developer keys. See [GLEPxx+3
      for further notes].
 
@@ -141,25 +155,29 @@ filetypes may be ignored on missing is d
    verification of GnuPG signatures. 
 1.1. Abort if the signature check fails.
 
-2. For a verification of the tree following an rsync:
-2.1. Build a set 'ALL' of every file covered by the rsync. (exclude
+2. Check the Timestamp header. If it is significently out of date
+   compared to the local clock or a trusted source, halt or require
+   manual intervention from the user.
+
+3. For a verification of the tree following an rsync:
+3.1. Build a set 'ALL' of every file covered by the rsync. (exclude
      distfiles/, packages/, local/)
-2.2. M2-verify every entry in the MetaManifest, descending into inferior
+3.2. M2-verify every entry in the MetaManifest, descending into inferior
      Manifests as needed. Place the relative path of every checked item
      into a set 'COVERED'.
-2.3. Construct the set 'UNCOVERED' by set-difference between the ALL and
+3.3. Construct the set 'UNCOVERED' by set-difference between the ALL and
      COVERED sets.
-2.4. For each file in the UNCOVERED set, assign a Manifest2 filetype.
-2.5. If the filetype for any file in the UNCOVERED set requires a halt
+3.4. For each file in the UNCOVERED set, assign a Manifest2 filetype.
+3.5. If the filetype for any file in the UNCOVERED set requires a halt
      on error, abort and display a suitable error.
-2.6. Completed verification
+3.6. Completed verification
 
-3. If checking at the installation of a package:
-3.1. M2-verify the entry in MetaManifest for the Manifest
-3.2. M2-verify all relevant metadata/ contents if metadata/ is being
+4. If checking at the installation of a package:
+4.1. M2-verify the entry in MetaManifest for the Manifest
+4.2. M2-verify all relevant metadata/ contents if metadata/ is being
      used in any way (optionally done before dependancy checking).
-3.3. M2-verifying the contents of the Manifest. 
-3.4. Perform M2-verification of all eclasses and profiles used (both
+4.3. M2-verifying the contents of the Manifest. 
+4.4. Perform M2-verification of all eclasses and profiles used (both
      directly and indirectly) by the ebuild.
 
 Notes:
@@ -184,13 +202,40 @@ commit as they do presently, and the Met
 Infrastructure during the tree generation process, and distributed to
 users.
 
+----------------------------------------------------
+Timestamps & Additional distribution of MetaManifest
+----------------------------------------------------
+As discussed by [C08a,C08b], malicious third-party mirrors may use the
+principles of exclusion and replay to deny an update to clients, while
+at the same time recording the identity of clients to attack.
+
+This should be guarded against by including a timestamp in the header of
+the MetaManifest, as well as distributing the latest MetaManifests by a
+trusted channel.
+
+On all rsync mirrors directly maintained by the Gentoo infrastructure,
+and not on community mirrors, there should be a new module
+'gentoo-portage-metamanifests'. Within this module, all MetaManifests
+for a recent timeframe (eg one week) should be kept, named as
+"MetaManifest.$TS", where $TS is the timestamp from inside the file.
+The most recent MetaManifest should always be symlinked as
+MetaManifest.current. The possibility of serving the recent
+MetaManifests via HTTPS should also be explored to mitigate MITM
+attacks.
+
+The package manager should obtain MetaManifest.current and use it to
+decide is the tree is too out of date per operation #2 of the
+verification process. The decision about freshness should be a
+user-configuration setting, with the ability to override.
+
 =======================
 Backwards Compatibility
 =======================
-There are no backwards compatibility issues, as old versions of Portage
-do not look for a Manifest file at the top level of the tree.
-Manifest2-aware versions of Portage ignore entries that they are not
-certain how to handle.
+- There are no backwards compatibility issues, as old versions of
+  Portage do not look for a Manifest file at the top level of the tree.
+- Manifest2-aware versions of Portage ignore all entries that they are
+  not certain how to handle. Enabling headers and PGP signing to be
+  conducted easily.
 
 ======
 Thanks
@@ -204,6 +249,17 @@ I'd like to thank the following people f
 TODO:
 - Ned Ludd (solar) - Security concept review
 
+==========
+References
+==========
+
+[C08a] Cappos, J et al. (2008). "Package Management Security".
+    University of Arizona Technical Report TR08-02. Available online
+    from: ftp://ftp.cs.arizona.edu/reports/2008/TR08-02.pdf
+[C08b] Cappos, J et al. (2008). "Attacks on Package Managers"
+    Available online at:
+    http://www.cs.arizona.edu/people/justin/packagemanagersecurity/
+
 =========
 Copyright
 =========



-- 
gentoo-commits@lists.gentoo.org mailing list



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [gentoo-commits] gentoo commit in users/robbat2/tree-signing-gleps: 01-distribution-process-security
@ 2008-07-11 22:43 Robin H. Johnson (robbat2)
  0 siblings, 0 replies; 17+ messages in thread
From: Robin H. Johnson (robbat2) @ 2008-07-11 22:43 UTC (permalink / raw
  To: gentoo-commits

robbat2     08/07/11 22:43:46

  Modified:             01-distribution-process-security
  Log:
  "local" in the scope of the PORTDIR is also an ignored directory.

Revision  Changes    Path
1.15                 users/robbat2/tree-signing-gleps/01-distribution-process-security

file : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.15&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.15&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?r1=1.14&r2=1.15

Index: 01-distribution-process-security
===================================================================
RCS file: /var/cvsroot/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security,v
retrieving revision 1.14
retrieving revision 1.15
diff -p -w -b -B -u -u -r1.14 -r1.15
--- 01-distribution-process-security	11 Jul 2008 01:27:37 -0000	1.14
+++ 01-distribution-process-security	11 Jul 2008 22:43:46 -0000	1.15
@@ -1,7 +1,7 @@
 GLEP: xx+1
 Title: Security of distribution of Gentoo software - Infrastructure to User distribution - MetaManifest
-Version: $Revision: 1.14 $
-Last-Modified: $Date: 2008/07/11 01:27:37 $
+Version: $Revision: 1.15 $
+Last-Modified: $Date: 2008/07/11 22:43:46 $
 Author: Robin Hugh Johnson <robbat2@gentoo.org>, 
 Status: Draft
 Type: Standards Track
@@ -84,8 +84,8 @@ Procedure for creating the MetaManifest 
      Manifest2.
 
 3. Traverse the tree, depth-first.
-3.1. At the top level only, ignore the distfiles and packages
-     directories.
+3.1. At the top level only, ignore the following directories: distfiles,
+     packages, local
 3.2. If the directory contains a Manifest file add it to the ALL set and
      don't descend any further, otherwise add all files to the ALL set
 3.3. If a directory contains a Manifest file, extract all relevant local



-- 
gentoo-commits@lists.gentoo.org mailing list



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [gentoo-commits] gentoo commit in users/robbat2/tree-signing-gleps: 01-distribution-process-security
@ 2008-07-12  8:23 Robin H. Johnson (robbat2)
  0 siblings, 0 replies; 17+ messages in thread
From: Robin H. Johnson (robbat2) @ 2008-07-12  8:23 UTC (permalink / raw
  To: gentoo-commits

robbat2     08/07/12 08:23:45

  Modified:             01-distribution-process-security
  Log:
  Make the logic about UNCOVERED and ALL much clearer.

Revision  Changes    Path
1.16                 users/robbat2/tree-signing-gleps/01-distribution-process-security

file : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.16&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.16&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?r1=1.15&r2=1.16

Index: 01-distribution-process-security
===================================================================
RCS file: /var/cvsroot/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security,v
retrieving revision 1.15
retrieving revision 1.16
diff -p -w -b -B -u -u -r1.15 -r1.16
--- 01-distribution-process-security	11 Jul 2008 22:43:46 -0000	1.15
+++ 01-distribution-process-security	12 Jul 2008 08:23:45 -0000	1.16
@@ -1,7 +1,7 @@
 GLEP: xx+1
 Title: Security of distribution of Gentoo software - Infrastructure to User distribution - MetaManifest
-Version: $Revision: 1.15 $
-Last-Modified: $Date: 2008/07/11 22:43:46 $
+Version: $Revision: 1.16 $
+Last-Modified: $Date: 2008/07/12 08:23:45 $
 Author: Robin Hugh Johnson <robbat2@gentoo.org>, 
 Status: Draft
 Type: Standards Track
@@ -86,12 +86,12 @@ Procedure for creating the MetaManifest 
 3. Traverse the tree, depth-first.
 3.1. At the top level only, ignore the following directories: distfiles,
      packages, local
-3.2. If the directory contains a Manifest file add it to the ALL set and
-     don't descend any further, otherwise add all files to the ALL set
-3.3. If a directory contains a Manifest file, extract all relevant local
+3.2. If a directory contains a Manifest file, extract all relevant local
      files from it (presently: AUX, MISC, EBUILD; but should follow the
      evolution of Manifest2 entry types per [GLEPxx+5]), and place them
      into the COVERED set.
+3.3. Recursively add every file in the directory to the ALL set,
+     pursusant to the exclusion list as mentioned in [GLEPxx+5].
 
 4. Produce a new set, UNCOVERED, as the set-difference (ALL)-(COVERED).
    This is every item that is not covered by another Manifest.



-- 
gentoo-commits@lists.gentoo.org mailing list



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [gentoo-commits] gentoo commit in users/robbat2/tree-signing-gleps: 01-distribution-process-security
@ 2008-07-12  8:24 Robin H. Johnson (robbat2)
  0 siblings, 0 replies; 17+ messages in thread
From: Robin H. Johnson (robbat2) @ 2008-07-12  8:24 UTC (permalink / raw
  To: gentoo-commits

robbat2     08/07/12 08:24:46

  Modified:             01-distribution-process-security
  Log:
  Mention the exclusion list better.

Revision  Changes    Path
1.17                 users/robbat2/tree-signing-gleps/01-distribution-process-security

file : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.17&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.17&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?r1=1.16&r2=1.17

Index: 01-distribution-process-security
===================================================================
RCS file: /var/cvsroot/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security,v
retrieving revision 1.16
retrieving revision 1.17
diff -p -w -b -B -u -u -r1.16 -r1.17
--- 01-distribution-process-security	12 Jul 2008 08:23:45 -0000	1.16
+++ 01-distribution-process-security	12 Jul 2008 08:24:45 -0000	1.17
@@ -1,7 +1,7 @@
 GLEP: xx+1
 Title: Security of distribution of Gentoo software - Infrastructure to User distribution - MetaManifest
-Version: $Revision: 1.16 $
-Last-Modified: $Date: 2008/07/12 08:23:45 $
+Version: $Revision: 1.17 $
+Last-Modified: $Date: 2008/07/12 08:24:45 $
 Author: Robin Hugh Johnson <robbat2@gentoo.org>, 
 Status: Draft
 Type: Standards Track
@@ -94,7 +94,8 @@ Procedure for creating the MetaManifest 
      pursusant to the exclusion list as mentioned in [GLEPxx+5].
 
 4. Produce a new set, UNCOVERED, as the set-difference (ALL)-(COVERED).
-   This is every item that is not covered by another Manifest.
+   This is every item that is not covered by another Manifest, or part
+   of an exclusion list.
 
 5. If an existing MetaManifest file is present, remove it.
 



-- 
gentoo-commits@lists.gentoo.org mailing list



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [gentoo-commits] gentoo commit in users/robbat2/tree-signing-gleps: 01-distribution-process-security
@ 2008-07-12  8:25 Robin H. Johnson (robbat2)
  0 siblings, 0 replies; 17+ messages in thread
From: Robin H. Johnson (robbat2) @ 2008-07-12  8:25 UTC (permalink / raw
  To: gentoo-commits

robbat2     08/07/12 08:25:35

  Modified:             01-distribution-process-security
  Log:
  Mention that the Manifest2 filetype clarifications are not needed to implement MetaManifest, they only improve it.

Revision  Changes    Path
1.18                 users/robbat2/tree-signing-gleps/01-distribution-process-security

file : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.18&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.18&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?r1=1.17&r2=1.18

Index: 01-distribution-process-security
===================================================================
RCS file: /var/cvsroot/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security,v
retrieving revision 1.17
retrieving revision 1.18
diff -p -w -b -B -u -u -r1.17 -r1.18
--- 01-distribution-process-security	12 Jul 2008 08:24:45 -0000	1.17
+++ 01-distribution-process-security	12 Jul 2008 08:25:35 -0000	1.18
@@ -1,7 +1,7 @@
 GLEP: xx+1
 Title: Security of distribution of Gentoo software - Infrastructure to User distribution - MetaManifest
-Version: $Revision: 1.17 $
-Last-Modified: $Date: 2008/07/12 08:24:45 $
+Version: $Revision: 1.18 $
+Last-Modified: $Date: 2008/07/12 08:25:35 $
 Author: Robin Hugh Johnson <robbat2@gentoo.org>, 
 Status: Draft
 Type: Standards Track
@@ -203,6 +203,13 @@ commit as they do presently, and the Met
 Infrastructure during the tree generation process, and distributed to
 users.
 
+--------------------------------------------
+MetaManifest and the new Manifest2 filetypes
+--------------------------------------------
+While [GLEPxx+5] describes the addition of new filetypes, these are NOT
+needed for implementation of the MetaManifest proposal. Without the new
+filetypes, all entries in the MetaManifest would be of type 'MISC'.
+
 ----------------------------------------------------
 Timestamps & Additional distribution of MetaManifest
 ----------------------------------------------------



-- 
gentoo-commits@lists.gentoo.org mailing list



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [gentoo-commits] gentoo commit in users/robbat2/tree-signing-gleps: 01-distribution-process-security
@ 2008-07-13  6:56 Robin H. Johnson (robbat2)
  0 siblings, 0 replies; 17+ messages in thread
From: Robin H. Johnson (robbat2) @ 2008-07-13  6:56 UTC (permalink / raw
  To: gentoo-commits

robbat2     08/07/13 06:56:06

  Modified:             01-distribution-process-security
  Log:
  fix capitalization.

Revision  Changes    Path
1.20                 users/robbat2/tree-signing-gleps/01-distribution-process-security

file : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.20&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.20&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?r1=1.19&r2=1.20

Index: 01-distribution-process-security
===================================================================
RCS file: /var/cvsroot/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security,v
retrieving revision 1.19
retrieving revision 1.20
diff -p -w -b -B -u -u -r1.19 -r1.20
--- 01-distribution-process-security	13 Jul 2008 02:23:36 -0000	1.19
+++ 01-distribution-process-security	13 Jul 2008 06:56:05 -0000	1.20
@@ -1,7 +1,7 @@
 GLEP: xx+1
 Title: Security of distribution of Gentoo software - Infrastructure to User distribution - MetaManifest
-Version: $Revision: 1.19 $
-Last-Modified: $Date: 2008/07/13 02:23:36 $
+Version: $Revision: 1.20 $
+Last-Modified: $Date: 2008/07/13 06:56:05 $
 Author: Robin Hugh Johnson <robbat2@gentoo.org>, 
 Status: Draft
 Type: Standards Track
@@ -252,7 +252,7 @@ I'd like to thank the following people f
 - Patrick Lauer (patrick): Prodding me to get all of the tree-signing
   work finished, and helping to edit.
 - Ciaran McCreesh (ciaranm): Paludis Manifest2
-- Brian Harring (ferringb): PkgCore Manifest2
+- Brian Harring (ferringb): pkgcore Manifest2
 - Marius Mauch (genone) & Zac Medico (zmedico): Portage Manifest2
 TODO:
 - Ned Ludd (solar) - Security concept review



-- 
gentoo-commits@lists.gentoo.org mailing list



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [gentoo-commits] gentoo commit in users/robbat2/tree-signing-gleps: 01-distribution-process-security
@ 2008-10-09 21:11 Robin H. Johnson (robbat2)
  0 siblings, 0 replies; 17+ messages in thread
From: Robin H. Johnson (robbat2) @ 2008-10-09 21:11 UTC (permalink / raw
  To: gentoo-commits

robbat2     08/10/09 21:11:21

  Modified:             01-distribution-process-security
  Log:
  I think this was done already.

Revision  Changes    Path
1.21                 users/robbat2/tree-signing-gleps/01-distribution-process-security

file : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.21&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.21&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?r1=1.20&r2=1.21

Index: 01-distribution-process-security
===================================================================
RCS file: /var/cvsroot/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security,v
retrieving revision 1.20
retrieving revision 1.21
diff -p -w -b -B -u -u -r1.20 -r1.21
--- 01-distribution-process-security	13 Jul 2008 06:56:05 -0000	1.20
+++ 01-distribution-process-security	9 Oct 2008 21:11:21 -0000	1.21
@@ -1,7 +1,7 @@
 GLEP: xx+1
 Title: Security of distribution of Gentoo software - Infrastructure to User distribution - MetaManifest
-Version: $Revision: 1.20 $
-Last-Modified: $Date: 2008/07/13 06:56:05 $
+Version: $Revision: 1.21 $
+Last-Modified: $Date: 2008/10/09 21:11:21 $
 Author: Robin Hugh Johnson <robbat2@gentoo.org>, 
 Status: Draft
 Type: Standards Track
@@ -254,7 +254,6 @@ I'd like to thank the following people f
 - Ciaran McCreesh (ciaranm): Paludis Manifest2
 - Brian Harring (ferringb): pkgcore Manifest2
 - Marius Mauch (genone) & Zac Medico (zmedico): Portage Manifest2
-TODO:
 - Ned Ludd (solar) - Security concept review
 
 ==========






^ permalink raw reply	[flat|nested] 17+ messages in thread

* [gentoo-commits] gentoo commit in users/robbat2/tree-signing-gleps: 01-distribution-process-security
@ 2008-10-09 21:33 Robin H. Johnson (robbat2)
  0 siblings, 0 replies; 17+ messages in thread
From: Robin H. Johnson (robbat2) @ 2008-10-09 21:33 UTC (permalink / raw
  To: gentoo-commits

robbat2     08/10/09 21:33:12

  Modified:             01-distribution-process-security
  Log:
  Fix sentence structure.

Revision  Changes    Path
1.22                 users/robbat2/tree-signing-gleps/01-distribution-process-security

file : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.22&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.22&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?r1=1.21&r2=1.22

Index: 01-distribution-process-security
===================================================================
RCS file: /var/cvsroot/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security,v
retrieving revision 1.21
retrieving revision 1.22
diff -p -w -b -B -u -u -r1.21 -r1.22
--- 01-distribution-process-security	9 Oct 2008 21:11:21 -0000	1.21
+++ 01-distribution-process-security	9 Oct 2008 21:33:11 -0000	1.22
@@ -1,7 +1,7 @@
 GLEP: xx+1
 Title: Security of distribution of Gentoo software - Infrastructure to User distribution - MetaManifest
-Version: $Revision: 1.21 $
-Last-Modified: $Date: 2008/10/09 21:11:21 $
+Version: $Revision: 1.22 $
+Last-Modified: $Date: 2008/10/09 21:33:11 $
 Author: Robin Hugh Johnson <robbat2@gentoo.org>, 
 Status: Draft
 Type: Standards Track
@@ -52,8 +52,8 @@ No other guarantees, either implicit or 
 
 Additionally, distributing a set of the most recent MetaManifests from a
 trusted source allows validation of trees that come from community
-mirrors, and allows detection of malicious (either by deliberate delay,
-replay [C08a, C08b] or alteration community mirrors.
+mirrors, and allows detection of all cases of malicious mirrors (either
+by deliberate delay, replay [C08a, C08b] or alteration).
 
 =============
 Specification
@@ -228,7 +228,7 @@ for a recent timeframe (eg one week) sho
 "MetaManifest.$TS", where $TS is the timestamp from inside the file.
 The most recent MetaManifest should always be symlinked as
 MetaManifest.current. The possibility of serving the recent
-MetaManifests via HTTPS should also be explored to mitigate MITM
+MetaManifests via HTTPS should also be explored to mitigate MitM
 attacks.
 
 The package manager should obtain MetaManifest.current and use it to






^ permalink raw reply	[flat|nested] 17+ messages in thread

* [gentoo-commits] gentoo commit in users/robbat2/tree-signing-gleps: 01-distribution-process-security
@ 2008-10-09 22:30 Robin H. Johnson (robbat2)
  0 siblings, 0 replies; 17+ messages in thread
From: Robin H. Johnson (robbat2) @ 2008-10-09 22:30 UTC (permalink / raw
  To: gentoo-commits

robbat2     08/10/09 22:30:44

  Modified:             01-distribution-process-security
  Log:
  Add note per-category MetaManifests reducing delta requirements.

Revision  Changes    Path
1.23                 users/robbat2/tree-signing-gleps/01-distribution-process-security

file : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.23&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.23&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?r1=1.22&r2=1.23

Index: 01-distribution-process-security
===================================================================
RCS file: /var/cvsroot/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security,v
retrieving revision 1.22
retrieving revision 1.23
diff -p -w -b -B -u -u -r1.22 -r1.23
--- 01-distribution-process-security	9 Oct 2008 21:33:11 -0000	1.22
+++ 01-distribution-process-security	9 Oct 2008 22:30:44 -0000	1.23
@@ -1,7 +1,7 @@
 GLEP: xx+1
 Title: Security of distribution of Gentoo software - Infrastructure to User distribution - MetaManifest
-Version: $Revision: 1.22 $
-Last-Modified: $Date: 2008/10/09 21:33:11 $
+Version: $Revision: 1.23 $
+Last-Modified: $Date: 2008/10/09 22:30:44 $
 Author: Robin Hugh Johnson <robbat2@gentoo.org>, 
 Status: Draft
 Type: Standards Track
@@ -236,6 +236,18 @@ decide is the tree is too out of date pe
 verification process. The decision about freshness should be a
 user-configuration setting, with the ability to override.
 
+--------------------------------
+MetaManifest size considerations
+--------------------------------
+With only two levels of Manifests (per-package and top-level), every
+rsync will cause a lot of traffic transfering the modified top-level
+MetaManifest. To reduce this, per-category Manifests are strongly
+recommended. Alternatively, if the distribution method efficently
+handles small patch-like changes in an existing file, using an
+uncompressed MetaManifest may be acceptable (this would primarily be
+distributed version control systems). Other suggestions in reducing this
+traffic are welcomed.
+
 =======================
 Backwards Compatibility
 =======================






^ permalink raw reply	[flat|nested] 17+ messages in thread

* [gentoo-commits] gentoo commit in users/robbat2/tree-signing-gleps: 01-distribution-process-security
@ 2008-10-22  0:41 Robin H. Johnson (robbat2)
  0 siblings, 0 replies; 17+ messages in thread
From: Robin H. Johnson (robbat2) @ 2008-10-22  0:41 UTC (permalink / raw
  To: gentoo-commits

robbat2     08/10/22 00:41:43

  Modified:             01-distribution-process-security
  Log:
  Fix RST validation.

Revision  Changes    Path
1.25                 users/robbat2/tree-signing-gleps/01-distribution-process-security

file : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.25&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?rev=1.25&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security?r1=1.24&r2=1.25

Index: 01-distribution-process-security
===================================================================
RCS file: /var/cvsroot/gentoo/users/robbat2/tree-signing-gleps/01-distribution-process-security,v
retrieving revision 1.24
retrieving revision 1.25
diff -p -w -b -B -u -u -r1.24 -r1.25
--- 01-distribution-process-security	9 Oct 2008 23:23:12 -0000	1.24
+++ 01-distribution-process-security	22 Oct 2008 00:41:43 -0000	1.25
@@ -1,7 +1,7 @@
 GLEP: xx+1
 Title: Security of distribution of Gentoo software - Infrastructure to User distribution - MetaManifest
-Version: $Revision: 1.24 $
-Last-Modified: $Date: 2008/10/09 23:23:12 $
+Version: $Revision: 1.25 $
+Last-Modified: $Date: 2008/10/22 00:41:43 $
 Author: Robin Hugh Johnson <robbat2@gentoo.org>, 
 Status: Draft
 Type: Standards Track
@@ -79,18 +79,20 @@ Procedure for creating the MetaManifest 
    this procedure applies to overlays as well).
 
 2. Initialize two unordered sets: COVERED, ALL.
-2.1. 'ALL' will contain every file in the tree.
-2.2. 'COVERED' will contain every file that is mentioned in an existing
+
+   1. 'ALL' will contain every file in the tree.
+   2. 'COVERED' will contain every file that is mentioned in an existing
      Manifest2.
 
 3. Traverse the tree, depth-first.
-3.1. At the top level only, ignore the following directories: distfiles,
+
+   1. At the top level only, ignore the following directories: distfiles,
      packages, local
-3.2. If a directory contains a Manifest file, extract all relevant local
+   2. If a directory contains a Manifest file, extract all relevant local
      files from it (presently: AUX, MISC, EBUILD; but should follow the
      evolution of Manifest2 entry types per [GLEPxx+5]), and place them
      into the COVERED set.
-3.3. Recursively add every file in the directory to the ALL set,
+   3. Recursively add every file in the directory to the ALL set,
      pursusant to the exclusion list as mentioned in [GLEPxx+5].
 
 4. Produce a new set, UNCOVERED, as the set-difference (ALL)-(COVERED).
@@ -112,9 +114,10 @@ Procedure for creating the MetaManifest 
    The package manager MUST not use the identifying string as a filename.
 
 8. The MetaManifest must ultimately be GnuPG-signed.
-8.1. For the initial implementation, the same key as used for snapshot
+
+   1. For the initial implementation, the same key as used for snapshot
      tarball signing is sufficient.
-8.2. For the future, the key used for fully automated signing by infra
+   2. For the future, the key used for fully automated signing by infra
      should not be on the same keyring as developer keys. See [GLEPxx+3
      for further notes].
 
@@ -154,31 +157,33 @@ filetypes may be ignored on missing is d
 1. Check the GnuPG signature on the MetaManifest against the keyring of
    automated Gentoo keys. See [GLEPxx+3] for full details regarding
    verification of GnuPG signatures. 
-1.1. Abort if the signature check fails.
+   1. Abort if the signature check fails.
 
 2. Check the Timestamp header. If it is significently out of date
    compared to the local clock or a trusted source, halt or require
    manual intervention from the user.
 
 3. For a verification of the tree following an rsync:
-3.1. Build a set 'ALL' of every file covered by the rsync. (exclude
+
+   1. Build a set 'ALL' of every file covered by the rsync. (exclude
      distfiles/, packages/, local/)
-3.2. M2-verify every entry in the MetaManifest, descending into inferior
+   2. M2-verify every entry in the MetaManifest, descending into inferior
      Manifests as needed. Place the relative path of every checked item
      into a set 'COVERED'.
-3.3. Construct the set 'UNCOVERED' by set-difference between the ALL and
+   3. Construct the set 'UNCOVERED' by set-difference between the ALL and
      COVERED sets.
-3.4. For each file in the UNCOVERED set, assign a Manifest2 filetype.
-3.5. If the filetype for any file in the UNCOVERED set requires a halt
+   4. For each file in the UNCOVERED set, assign a Manifest2 filetype.
+   5. If the filetype for any file in the UNCOVERED set requires a halt
      on error, abort and display a suitable error.
-3.6. Completed verification
+   6. Completed verification
 
 4. If checking at the installation of a package:
-4.1. M2-verify the entry in MetaManifest for the Manifest
-4.2. M2-verify all relevant metadata/ contents if metadata/ is being
+
+   1. M2-verify the entry in MetaManifest for the Manifest
+   2. M2-verify all relevant metadata/ contents if metadata/ is being
      used in any way (optionally done before dependancy checking).
-4.3. M2-verifying the contents of the Manifest. 
-4.4. Perform M2-verification of all eclasses and profiles used (both
+   3. M2-verifying the contents of the Manifest. 
+   4. Perform M2-verification of all eclasses and profiles used (both
      directly and indirectly) by the ebuild.
 
 Notes:






^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2008-10-22  0:41 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-13  6:56 [gentoo-commits] gentoo commit in users/robbat2/tree-signing-gleps: 01-distribution-process-security Robin H. Johnson (robbat2)
  -- strict thread matches above, loose matches on Subject: below --
2008-10-22  0:41 Robin H. Johnson (robbat2)
2008-10-09 22:30 Robin H. Johnson (robbat2)
2008-10-09 21:33 Robin H. Johnson (robbat2)
2008-10-09 21:11 Robin H. Johnson (robbat2)
2008-07-12  8:25 Robin H. Johnson (robbat2)
2008-07-12  8:24 Robin H. Johnson (robbat2)
2008-07-12  8:23 Robin H. Johnson (robbat2)
2008-07-11 22:43 Robin H. Johnson (robbat2)
2008-07-11  1:27 Robin H. Johnson (robbat2)
2008-07-01  7:09 Robin H. Johnson (robbat2)
2008-07-01  7:08 Robin H. Johnson (robbat2)
2008-07-01  7:06 Robin H. Johnson (robbat2)
2008-07-01  7:04 Robin H. Johnson (robbat2)
2008-07-01  7:01 Robin H. Johnson (robbat2)
2007-11-28  4:30 Robin H. Johnson (robbat2)
2007-11-28  0:27 Robin H. Johnson (robbat2)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox