Template Version: @(#)sac_nextcase 1.66 04/17/08 SMI
This information is Copyright 2008 Sun Microsystems
1. Introduction
    1.1. Project/Component Working Name:
         gnome-keyring
    1.2. Name of Document Author/Supplier:
         Author:  Jeff Cai
    1.3  Date of This Document:
        08 July, 2008
4. Technical Description
1. Introduction
   1.1. Project/Component Working Name:

        GNOME Keyring

   1.2. Name of Document Author/Supplier:
        
        Author:         Jeff Cai
        Sponser:        Irene Huang

   1.3. Date of This Document:

        07/09/2008

   1.4. Name of Major Document Customer(s)/Consumer(s):

        1.4.1. The PAC or CPT you expect to review your project:

                Solaris PAC

        1.4.2. The ARC(s) you expect to review your project:

                LSARC

        1.4.3. The Director/VP who is "Sponsoring" this project:

                Robert O'Dea

        1.4.4. The name of your business unit:

                Software - OPG

   1.5. Email Aliases:
            1.5.1. Responsible Manager:  harry.lu at sun.com
            1.5.2. Responsible Engineer: jeff.cai at sun.com
            1.5.3. Marketing Manager:    
            1.5.4. Interest List:        brian.cameron at sun.com
                                         darren.moffat at sun.com
                                         wyllys.ingersoll at sun.com

2. Project Summary
   2.1. Project Description:

   GNOME Keyring is a system to store passwords and other sensitive data in a 
   standardized way across all GNOME applications.

   A keyring stores a collection of encrypted passwords and encrypted 
   information about those passwords. A user can have multiple keyrings, each 
   for a different use, but there is a default one, called 'login'. There is 
   also a special 'session' keyring which is not stored on disk and goes away 
   when you log out.

   When a user logs into GNOME, the keyrings are locked and a master keyring 
   password has to be provided in order to unlock each of them.

   This fast-track increments the version of gnome-keyring in Solaris
   from 2.20.3 to 2.22.3.
      
4. Technical Description:

    4.1. Details:
    
    Compared with the previous version 2.20, following features have been added:

    - Basic X.509 certificate and key store.
    - PKCS#11 module for accessing cerfificates and keys.
    - Now includes an SSH agent.
    - Automatically activate keyring daemon via DBus if it is not already
      running.
    - Add a simpler API fro accessing and storing passwords. Older APIs 
      exist too. Refer to [1]

    4.2 GNOME Keyring SSH Agent

    GNOME Keyring includes an SSH agent which integrates with the gnome-keyring
    and user login for its passwords. It can also use the main X.509 private
    key store.

    GNOME Keyring will set the SSH_AUTH_SOCK environment variable when it 
    starts up.

    The id_rsa and id_dsa files in ~/.ssh are automatically usable through the
    SSH agent without first 'loading' them. Other X.509 private keys marked 
    with the 'ssh-authentication' purpose are also usable.

    Additional SSH keys can be manually loaded and managed via the ssh-add 
    command.

    If you use another SSH agent(such as the ssh-agent included with OpenSSH), 
    you may want to disable the SSH agent in GNOME Keyring to prevent ssh from 
    using it instead of your prefered SSH agent. You can set 
    /apps/gnome-keyring/daemon-components/ssh
    gconf key to false. This prevents the SSH component of gnome-keyring from 
    starting up when the user logs in.

    The default GNOME start up script (/usr/dt/config/Xsession.jds) will be 
    changed to NOT start up "under" ssh-agent like it does today and instead 
    ensure the environment variables for the gnome-keyring version are set 
    early enough. 

    4.3 GNOME Keyring Certificates and Encryption Keys
   
    The following paths are searched for encryption keys and certificate files.

         - ~/.ssh/id_?sa
         - ~/.gnome2/keystore/*

    Most standard file formats for keys and certificates are supported:

    Certificates

        * Standard DER encoded certificates.
        * Certificates contained in PKCS#7 files.
        * Certificates contained in PKCS#8 files.
        * PEM encodings of the above. 

    Encryption Keys

        * PKCS#1 RSA keys.
        * PKCS#8 encrypted RSA and DSA keys.
        * DER encoded DSA keys.
        * PEM encodings of the above.
        * OpenSSL PEM encrypted keys. 

    File Encryption and Password Algorithms

    PKCS#5 PBE

          * DES CBC MD2
          * DES CBC MD5
          * DES CBC SHA1 

    PKCS#5 PBE2

          * DES CBC SHA1
          * 3DES CBC SHA1
          * RC2-128 CBC SHA1 

    PKCS#12 PBE

          * RC4-128 STREAM SHA1
          * 3DES CBC SHA1
          * RC2-128 CBC SHA1
          * RC2-40 CBC SHA1

    Supported crypto mechanisms include 
    
        - DSA: sign/verify
        - RSA: encrypt/decrypt sign/verify

    4.4 GNOME Keyring Cryptoki (PKCS#11) Support
    
    PKCS#11 is a standard that lets applications use encryption keys and
    certificates on devices like smart cards. gnome-keyring implements this
    standard and acts such a device, storing keys and certificates and
    making them available for applications to use.

    PKCS#11 deals directly with things like RSA/DSA signing operations, and
    certificate attributes. It's a bit low level. Usually one uses PKCS#11
    through a cyrpto library like NSS. [5]

    PKCS#11 in gnome-keyring actually uses the libgcrypt crypto API to perform
    the actual crypto operations, nowhere in the keyring/pkcs11 code do they 
    actually re-implement RSA or DSA key-generation or crypto functionality. 


    4.5. Interfaces:
         Exported Interfaces
           Interface                        Classification      Comments
         ---------------                    -------------- 
-----------------------
         SUNWgnome-libs                      Uncommitted     Package name 
(unchanged)
         SUNWgnome-libs-devel                Uncommitted     Package name 
(unchanged)

         /usr/lib/libgnome-keyring.so        Volatile        Symbolic Link 
(unchanged)
         /usr/lib/libgnome-keyring.so.0      Volatile        SONAME (changed)


         /us/share/gconf/schemas/ \          Volatile        GCONF keys schemas 
that 
             gnome-keyring.schemas                           defines the 
preferences for 
                                                             the tools (New)
                        
         /usr/bin/gnome-keyring-daemon       Volatile         (unchanged)
         /usr/lib/gnome-keyring-ask          Project Private  (unchanged)

         /usr/lib/gnome-keyring/ \           Volatile         (New)
             gnome-keyring-pkcs11.so         

         /usr/lib/pkgconfig/ \
              gnome-keyring-1.pc             Volatile         (unchanged)
         /usr/include/gnome-keyring-1/ \
              gnome-keyring.h                Volatile         (unchanged)
         /usr/include/gnome-keyring-1/ \
              gnome-keyring-memory.h         Volatile         (unchanged)
         /usr/include/gnome-keyring-1/ \
              gnome-keyring-result.h         Volatile         (unchanged)

         ~/.gnome2/keyrings                  Project Private  Location where 
keyrings 
                                                              are stored

         /usr/share/dbus-1/services/ \       Project
            org.gnome.keyring.service        Private          DBus service file 
(New)

         org.gnome.keyrings.Daemon           Volatile         DBus interface 
                                                              (session 
interface)
         org.gnome.keyrings.Daemon \
            GetSocketPath                    Volatile         DBus method, 
return 
                                                              socket path.
         Imported Interfaces
           Interface              Classification     Comments
         ---------------        --------------- -----------------------
               GTK+              Committed         LSARC/2008/207       
               GLib              Committed         LSARC/2008/207       
               D-Bus             Volatile          LSARC/2006/368       
               libhal            Volatile          PSARC/2005/399
               libgcrypt         Volatile          LSARC/2008/354 
               libtasn1          Volatile          LSARC/2008/390
           
    4.6. Packaging & Delivery:
        
         No new packages are delivered. The two existing packages:
         SUNWgnome-libs(base package)                 - base package for 
binaries
         SUNWgnome-libs-devel (development package)   - develoment package for 

    4.7 Security Impact:
        
        Please refer to [7]. 

    4.8 Dependencies:
        
        libtasn1 is a new imported interface. gnome-keyring makes use of 
libtasn1 to 
        parse X509 certificate and general certificate.
         
5. References
        [1] New API storing passwords:
                http://live.gnome.org/GnomeKeyring/StoringPasswords
        [2] Homepage:
                http://live.gnome.org/GnomeKeyring
        [3] API document: http://library.gnome.org/devel/gnome-keyring/stable/
        [4] GNOME 2.14 ARC: LSARC/2006/202/
        [5] Configure other applications to use gnome-keyring certificates and 
keys:
            http://live.gnome.org/GnomeKeyring/ApplicationSetup
        [6] PCKS#11: http://live.gnome.org/GnomeKeyring/Cryptoki
        [7] GNOME 2.14 security questionnaire: 
            
http://sac.sfbay/LSARC/2006/202/updated.materials-3/security-questionnaire.txt


6. Resources and Schedule
    6.4. Steering Committee requested information
        6.4.1. Consolidation C-team Name:
                Desktop
    6.5. ARC review type: FastTrack
    6.6. ARC Exposure: open


Reply via email to