Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-04 Thread Adam Young


DRM is the way to go. However it does not support symmetric keys now. 
This is the pert that we need for volume keys. May be it is the vault 
to store all sorts of keys. This is something that needs to be 
designed and looked at as a broader perspective.
Adam likes to repeat a phase about dreaming big so I do. I want IPA to 
be a vault for all sorts of keys and passwords and what else. If DRM 
is the answer - great.
I can start listing the use cases that such a key store should satisfy 
and we can design something that would altimately fit the build but 
build gradually knocking use cases one by one.
I will take an action idem to come with the use cases. Give me couple 
weeks as I am under water now...



Specifically:  the phrase is Dream big, implement small.


There are four things here, I'd guess, that should play into the design.


1.  User certificates in IPA.  Discussed  already, and probably the 
first thing to implement on the IPA side.
2.  DRM/KRA  talking to an external CA.  Not sure if this makes sense, 
has been discussed etc.
3.  DRM/KRA  Integration into IPA.  Regardless of 2, we should talk 
through the use cases for integration

4.  DRM/KRA  Support for symmetric keys etc.

___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users


Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-04 Thread Rich Megginson

On 08/04/2011 02:05 PM, Ian Stokes-Rees wrote:



On 8/3/11 6:13 PM, Dmitri Pal wrote:

On 08/03/2011 10:10 AM, Ian Stokes-Rees wrote:

If there were some way to securely embed an arbitrary string in the
user profile, that would go a long way to solving this problem.  At
least 4KB to cover a 2048 X.509 public key, but ideally 10 KB or
more.  To remove the ACL complexity, just having it accessible only by
the user (token or password based fetch) would be suitable.

Do not quite understand how that would work or what you mean.


I've just realized that I think the functionality I'm looking for is 
already available.  I want the same system that is used for storing 
passwords.  Consider the following trace:


$ ldapsearch -h freeipa -b 
uid=tester,cn=users,cn=portal,dc=nebiogrid,dc=org -Y GSSAPI -LLL -d 0 
-T ~/.ldapresults/


SASL/GSSAPI authentication started
SASL username: ijsto...@nebiogrid.org
SASL SSF: 56
SASL data security layer installed.
dn: uid=tester,cn=users,cn=portal,dc=nebiogrid,dc=org
objectClass: person
objectClass: posixAccount
objectClass: account
objectClass: inetOrgPerson
objectClass: top
objectClass: organizationalPerson
givenName: test
sn: test
cn: test test
mail: meg...@hkl.hms.harvard.edu
uidNumber: 1031
gidNumber: 1031
homeDirectory: /p/home//tester
uid: tester
userPassword:: e2NyeXB0fXNCb2drN3p4c2lha1E=

[aside: I'd love a tip on how to get rid of the non-LDIF SASL headers]

The userpassword (hash) is stored in base-64 format and is only 
accessible by me because I have permissions to access this.  Some 
other user doing the same query would not get the userPassword 
attribute.  Even better, I can use the -tt option to write the 
base64-decoded content to a file.


The parts of the puzzle that I'd have to work out are:

1. are there objectClass schemas that have fields that would be 
suitable for a set of common private keys (rsa1, rsa2, dsa, gpg, pgp, 
and x509)?

x509 schema are included with 389 (05rfc4523.ldif et. al.)
I think there is a schema for storage of ssh keys


2. if not, instructions on how to set up such a schema (basically with 
exactly the set of attributes above), with the fields being base64 
(binary?)
Take a look at the existing schema.  For most fields that hold opaque 
blob data, you will probably want to use OctetString syntax.


3. what do I have to do to get the behavior that only certain parties 
can read a particular attribute?
Read up on Access Control (acis): 
http://docs.redhat.com/docs/en-US/Red_Hat_Directory_Server/8.2/html-single/Administration_Guide/index.html#Managing_Access_Control


4. any way to get ldapsearch to write out particular attributes to 
particular files?

Not really - all you have is -T and -tt
But any non-trivial application is not going to use ldapsearch as the 
main interface for getting these values.   I suggest using python with 
python-ldap.


Thanks,

Ian


___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users


___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users

Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-04 Thread Dmitri Pal
On 08/04/2011 04:12 PM, Rich Megginson wrote:
 On 08/04/2011 02:05 PM, Ian Stokes-Rees wrote:


 On 8/3/11 6:13 PM, Dmitri Pal wrote:
 On 08/03/2011 10:10 AM, Ian Stokes-Rees wrote:
 If there were some way to securely embed an arbitrary string in the
 user profile, that would go a long way to solving this problem.  At
 least 4KB to cover a 2048 X.509 public key, but ideally 10 KB or
 more.  To remove the ACL complexity, just having it accessible only by
 the user (token or password based fetch) would be suitable.
 Do not quite understand how that would work or what you mean.

 I've just realized that I think the functionality I'm looking for is
 already available.  I want the same system that is used for storing
 passwords.  Consider the following trace:

 $ ldapsearch -h freeipa -b
 uid=tester,cn=users,cn=portal,dc=nebiogrid,dc=org -Y GSSAPI -LLL -d 0
 -T ~/.ldapresults/

 SASL/GSSAPI authentication started
 SASL username: ijsto...@nebiogrid.org
 SASL SSF: 56
 SASL data security layer installed.
 dn: uid=tester,cn=users,cn=portal,dc=nebiogrid,dc=org
 objectClass: person
 objectClass: posixAccount
 objectClass: account
 objectClass: inetOrgPerson
 objectClass: top
 objectClass: organizationalPerson
 givenName: test
 sn: test
 cn: test test
 mail: meg...@hkl.hms.harvard.edu
 uidNumber: 1031
 gidNumber: 1031
 homeDirectory: /p/home//tester
 uid: tester
 userPassword:: e2NyeXB0fXNCb2drN3p4c2lha1E=

 [aside: I'd love a tip on how to get rid of the non-LDIF SASL headers]

 The userpassword (hash) is stored in base-64 format and is only
 accessible by me because I have permissions to access this.  Some
 other user doing the same query would not get the userPassword
 attribute.  Even better, I can use the -tt option to write the
 base64-decoded content to a file.

 The parts of the puzzle that I'd have to work out are:

 1. are there objectClass schemas that have fields that would be
 suitable for a set of common private keys (rsa1, rsa2, dsa, gpg, pgp,
 and x509)?
 x509 schema are included with 389 (05rfc4523.ldif et. al.)
 I think there is a schema for storage of ssh keys

Take a look at this:
https://fedorahosted.org/freeipa/ticket/754
http://code.google.com/p/openssh-lpk/

Patches are welcome ;-)


 2. if not, instructions on how to set up such a schema (basically
 with exactly the set of attributes above), with the fields being
 base64 (binary?)
 Take a look at the existing schema.  For most fields that hold opaque
 blob data, you will probably want to use OctetString syntax.

 3. what do I have to do to get the behavior that only certain parties
 can read a particular attribute?
 Read up on Access Control (acis):
 http://docs.redhat.com/docs/en-US/Red_Hat_Directory_Server/8.2/html-single/Administration_Guide/index.html#Managing_Access_Control

 4. any way to get ldapsearch to write out particular attributes to
 particular files?
 Not really - all you have is -T and -tt
 But any non-trivial application is not going to use ldapsearch as the
 main interface for getting these values.   I suggest using python with
 python-ldap.

 Thanks,

 Ian


 ___
 Freeipa-users mailing list
 Freeipa-users@redhat.com
 https://www.redhat.com/mailman/listinfo/freeipa-users


 ___
 Freeipa-users mailing list
 Freeipa-users@redhat.com
 https://www.redhat.com/mailman/listinfo/freeipa-users


-- 
Thank you,
Dmitri Pal

Sr. Engineering Manager IPA project,
Red Hat Inc.


---
Looking to carve out IT costs?
www.redhat.com/carveoutcosts/



___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users

Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-03 Thread Ondrej Valousek

Maybe stupid question, but I have to ask:
Why would anyone want to store user RSA keys in LDAP? Once you have IPA server with KDC installed, you can use Kerberos for authentication 
as well.

And you get single sign on as a special bonus :-)

Ondrej


The information contained in this e-mail and in any attachments is confidential 
and is designated solely for the attention of the intended recipient(s). If you 
are not an intended recipient, you must not use, disclose, copy, distribute or 
retain this e-mail or any part thereof. If you have received this e-mail in 
error, please notify the sender by return e-mail and delete all copies of this 
e-mail from your computer system(s).
Please direct any additional queries to: communicati...@s3group.com.
Thank You.
Silicon and Software Systems Limited (S3 Group). Registered in Ireland no. 
378073.
Registered Office: South County Business Park, Leopardstown, Dublin 18___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users

Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-03 Thread Ian Stokes-Rees

  
  

 First,
  security specialist would probably rebel about providing the
  password or keys in clear. The best practice says do not reveal
  the keys/passwords but rather encrypt them with some other
  "transport" secret that would be known to the user or destination
  host and would protect the password/key while in transit.


OK, the transport from client to FreeIPA would, of course, be
secure, but the key/token that is returned from the client is
available in cleartext (perhaps just in memory, such as ssh-agent).
And specifying a passphrase on the command line would be discouraged
but possible -- prompting for it, if Kerberos tokens were not
sufficient, would be preferable.

 Our current
  plan is to focus on the storage and make sure we can address the
  use cases we need to address like keys for disk encryption, SSH
  etc. Serving them out is whole different story and I doubt it will
  be done soon. Design work in this area would hopefully start in
  the fall.

If there were some way to securely embed an arbitrary string in the
user profile, that would go a long way to solving this problem. At
least 4KB to cover a 2048 X.509 public key, but ideally 10 KB or
more. To remove the ACL complexity, just having it accessible only
by the user (token or password based fetch) would be suitable.

Ian
  


___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users

Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-03 Thread Ian Stokes-Rees

  
  


On 8/3/11 4:47 AM, Ondrej Valousek wrote:

  
  Maybe stupid question, but I have to ask:
  Why would anyone want to store user RSA keys in LDAP? Once you
  have IPA server with KDC installed, you can use Kerberos for
  authentication as well.
  And you get single sign on as a special bonus :-)

If you only work in a single administrative domain, this is fine. I
am constantly accessing systems all over the US, and
internationally, and the use of ssh-key-based authentication allows
me to do this without continuous password prompts. In fact, on many
of the systems I can *only* access them by ssh-key. Being able to
hold those keys in central keystore like FreeIPA with a single
passphrase, and the ability for an administrator to reset that
passphrase, is very desirable for me and for the other users of the
systems I'm a part of. Resetting key-based access control if the
private key passphrase is lost is always a nuisance.

Ian
  


___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users

Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-03 Thread Stephen Gallagher
On Wed, 2011-08-03 at 10:14 -0400, Ian Stokes-Rees wrote:
 
 
 On 8/3/11 4:47 AM, Ondrej Valousek wrote: 
  Maybe stupid question, but I have to ask:
  Why would anyone want to store user RSA keys in LDAP? Once you have
  IPA server with KDC installed, you can use Kerberos for
  authentication as well.
  And you get single sign on as a special bonus :-)
 
 If you only work in a single administrative domain, this is fine.  I
 am constantly accessing systems all over the US, and internationally,
 and the use of ssh-key-based authentication allows me to do this
 without continuous password prompts.  In fact, on many of the systems
 I can *only* access them by ssh-key.  Being able to hold those keys in
 central keystore like FreeIPA with a single passphrase, and the
 ability for an administrator to reset that passphrase, is very
 desirable for me and for the other users of the systems I'm a part of.
 Resetting key-based access control if the private key passphrase is
 lost is always a nuisance.


As a general rule, I would think that having your private key stored
somewhere that an admin other than yourself can reset the password and
have access to would be really dangerous. Most especially if this
private key was being used to access sites in other administrative
domains.

That really sounds like an accident waiting to happen...


signature.asc
Description: This is a digitally signed message part
___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users

Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-03 Thread Ian Stokes-Rees


On Wed Aug  3 10:37:45 2011, Stephen Gallagher wrote:
 As a general rule, I would think that having your private key stored
 somewhere that an admin other than yourself can reset the password and
 have access to would be really dangerous. Most especially if this
 private key was being used to access sites in other administrative
 domains.
 
 That really sounds like an accident waiting to happen...

If you are concerned about that, then don't make use of a centralized 
keystore.

You may be a security expert and have a deeper understanding of this 
than I do, but from my limited experience and knowledge of security 
audits and risk assessment, if you don't trust your system 
administrators then you have a whole heap of other issues you need to 
contend with.

Consider that the FreeIPA server is probably *more* secure than the 
user-accessible systems and file servers.  If someone with 
administrative (root) privs for the part of the system where I store my 
passphrase encrypted private key would be the kind of person who would 
take the private key from a central keystore, if it existed, then do 
you not think they could get my passphrase and/or cleartext private key 
from the system *without* a central keystore?

This is not to say there aren't arguments against it: a policy mix up 
or a bug in the central keystore could lead to *all* users having their 
private keys compromised, and an admin who can dip in and grab private 
keys without any evidence would also be bad, but hopefully the Audit 
part of IPA means that any access to private keys will be securely 
logged, and flagged if they are by users other than the owner of the 
private key.

This is a topic that is very important to me, so I'm quite interested 
to hear how my reasoning may be flawed, or to hear opinions from others.

Regards,

Ian

attachment: ijstokes.vcf___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users

Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-03 Thread Adam Young

On 08/03/2011 12:21 PM, Ian Stokes-Rees wrote:


On Wed Aug  3 10:37:45 2011, Stephen Gallagher wrote:

As a general rule, I would think that having your private key stored
somewhere that an admin other than yourself can reset the password and
have access to would be really dangerous. Most especially if this
private key was being used to access sites in other administrative
domains.

That really sounds like an accident waiting to happen...

If you are concerned about that, then don't make use of a centralized
keystore.

You may be a security expert and have a deeper understanding of this
than I do, but from my limited experience and knowledge of security
audits and risk assessment, if you don't trust your system
administrators then you have a whole heap of other issues you need to
contend with.

Consider that the FreeIPA server is probably *more* secure than the
user-accessible systems and file servers.  If someone with
administrative (root) privs for the part of the system where I store my
passphrase encrypted private key would be the kind of person who would
take the private key from a central keystore, if it existed, then do
you not think they could get my passphrase and/or cleartext private key
from the system *without* a central keystore?


I think that it is a case of Just becasue I am paranoid doesn't mean 
they are not out to get me.  Its not that we don't trust sys admins, it 
is that we don't trust anyone.


Typically, instead of trusting anyone, sysadmin or no, with long term 
access to keys, you might provide a window in which they know the shared 
secret in order to reset the key, but not to make that a permanent 
relationship.


I think what you are interested in is the Data Recovery Manager 
(DRM...hey, we had the acronym first, but we also call it Key Recovery  
)  aspect of Certificate Server.


Here's the redhat docs on it

http://docs.redhat.com/docs/en-US/Red_Hat_Certificate_System/7.1/html/Administrators_Guide/kra.html#22604

And from the RPM

That is not integrated into FreeIPA, but the packages are in Fedora as 
pki-kra

The Data Recovery Manager (DRM) is an optional PKI subsystem that can act
as a Key Recovery Authority (KRA).  When configured in conjunction with the
Certificate Authority (CA), the DRM stores private encryption keys as 
part of

the certificate enrollment process.  The key archival mechanism is triggered
when a user enrolls in the PKI and creates the certificate request.  
Using the

Certificate Request Message Format (CRMF) request format, a request is
generated for the user's private encryption key.  This key is then stored in
the DRM which is configured to store keys in an encrypted format that 
can only

be decrypted by several agents requesting the key at one time, providing for
protection of the public encryption keys for the users in the PKI 
deployment.




This is not to say there aren't arguments against it: a policy mix up
or a bug in the central keystore could lead to *all* users having their
private keys compromised, and an admin who can dip in and grab private
keys without any evidence would also be bad, but hopefully the Audit
part of IPA means that any access to private keys will be securely
logged, and flagged if they are by users other than the owner of the
private key.

This is a topic that is very important to me, so I'm quite interested
to hear how my reasoning may be flawed, or to hear opinions from others.

Regards,

Ian



___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users


___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users

Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-03 Thread Stephen Gallagher
On Wed, 2011-08-03 at 12:21 -0400, Ian Stokes-Rees wrote:
 
 On Wed Aug  3 10:37:45 2011, Stephen Gallagher wrote:
  As a general rule, I would think that having your private key stored
  somewhere that an admin other than yourself can reset the password and
  have access to would be really dangerous. Most especially if this
  private key was being used to access sites in other administrative
  domains.
  
  That really sounds like an accident waiting to happen...
 
 If you are concerned about that, then don't make use of a centralized 
 keystore.
 
 You may be a security expert and have a deeper understanding of this 
 than I do, but from my limited experience and knowledge of security 
 audits and risk assessment, if you don't trust your system 
 administrators then you have a whole heap of other issues you need to 
 contend with.
 
 Consider that the FreeIPA server is probably *more* secure than the 
 user-accessible systems and file servers.  If someone with 
 administrative (root) privs for the part of the system where I store my 
 passphrase encrypted private key would be the kind of person who would 
 take the private key from a central keystore, if it existed, then do 
 you not think they could get my passphrase and/or cleartext private key 
 from the system *without* a central keystore?
 
 This is not to say there aren't arguments against it: a policy mix up 
 or a bug in the central keystore could lead to *all* users having their 
 private keys compromised, and an admin who can dip in and grab private 
 keys without any evidence would also be bad, but hopefully the Audit 
 part of IPA means that any access to private keys will be securely 
 logged, and flagged if they are by users other than the owner of the 
 private key.
 
 This is a topic that is very important to me, so I'm quite interested 
 to hear how my reasoning may be flawed, or to hear opinions from others.

As Adam pointed out, the default assumption is that no one is trusted.
But my main concern is not that the admins have access to your private
keys, but that they have access to your private keys *for an unrelated
domain*.

Even if both domains exist in your organization (e.g. CORP and ENG), you
are implicitly granting the admin of the CORP domain permission to
impersonate you on the ENG domain.

You're also significantly increasing the damage surface of a successful
attack against this domain. It's analogous to using the same password at
many major sites: compromise one and you have the keys to all of the
others.

So I guess what I'm saying is not Don't use centrally managed key
storage, but rather If you use the key anywhere but in this
administrative domain, do not put it in centrally-managed storage that
anyone but you can ever gain access to it.


signature.asc
Description: This is a digitally signed message part
___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users

Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-03 Thread Ian Stokes-Rees


On 8/3/11 12:38 PM, Adam Young wrote:
 I think what you are interested in is the Data Recovery Manager
 (DRM...hey, we had the acronym first, but we also call it Key
 Recovery  )  aspect of Certificate Server.

That is awesome.  That is exactly what I want.

Do you have experience with this?  If so, does it work if the
certificate requests are being handled by an external entity?  We use a
Department of Energy CA located in California, but the users in our
community are from across the US (and international), and we're looking
to improve the process of them acquiring a usable identity in a
federated environment.  We're using FreeIPA internally, but if we can
link it in to the cert request process and cert mgmt process (from the
user end, not the CA end) that would be great.

Ian
attachment: ijstokes.vcf___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users

Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-03 Thread Ian Stokes-Rees


On 8/3/11 1:02 PM, Stephen Gallagher wrote:
 So I guess what I'm saying is not Don't use centrally managed key
 storage, but rather If you use the key anywhere but in this
 administrative domain, do not put it in centrally-managed storage that
 anyone but you can ever gain access to it. 

Yes, I appreciate the distinction you raise.  Regarding your last
comment quoted above, to the best of my knowledge that is impossible.  I
regularly have discussions with people saying an administrator could
always do X,Y and Z to access your supposedly private data -- if there
are ways in which I could be wrong about that, I'd love to know them. 
Otherwise I believe that the key risks from a centralized keystore are:

* ease of compromise by an unscrupulous administrator
* extent of compromise if attacker gains administrative privs to central
keystore (although it sounds like the RH DRM system could significantly
reduce that)
* risk of compromise due to security vulnerabilities in central keystore
software

I think the general consensus is that you are always exposed to some
degree of risk, and it is necessary to evaluate the risks versus the
benefits.  There are some lovely lakes in northern Maine where you can
probably use your laptop without too much risk of compromised privacy,
or closer to home, I'm sure most of us can remember a day when we got
lots of useful work done on a computer with no network connection and
were excited when we got one new piece of software every few months.

In my risk/benefit world, a centralized keystore would be really useful.

And for the record, if any one of the computers I use is compromised
with a keyboard scanner or theft of my private ssh or X.509 keys, then
I'm in a whole world of pain, and not a small amount of inconvenience
(and risk of malicious attacks) to the various systems I regularly
access.  Best I can tell, that isn't too different from most people in
my situation, and short of that nice cabin in Maine, is simply the
reality (risk) of the kind of work I do, and the people I do it for.

Ian
attachment: ijstokes.vcf___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users

Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-03 Thread Simo Sorce
On Wed, 2011-08-03 at 13:46 -0400, Stephen Gallagher wrote:
 On Wed, 2011-08-03 at 13:41 -0400, Ian Stokes-Rees wrote:
  
  
  On 8/3/11 1:02 PM, Stephen Gallagher wrote: 
   So I guess what I'm saying is not Don't use centrally managed key
   storage, but rather If you use the key anywhere but in this
   administrative domain, do not put it in centrally-managed storage
   that anyone but you can ever gain access to it. 
  
  Yes, I appreciate the distinction you raise.  Regarding your last
  comment quoted above, to the best of my knowledge that is impossible.
  I regularly have discussions with people saying an administrator
  could always do X,Y and Z to access your supposedly private data --
  if there are ways in which I could be wrong about that, I'd love to
  know them.  Otherwise I believe that the key risks from a centralized
  keystore are:
  
  * ease of compromise by an unscrupulous administrator
  * extent of compromise if attacker gains administrative privs to
  central keystore (although it sounds like the RH DRM system could
  significantly reduce that)
  * risk of compromise due to security vulnerabilities in central
  keystore software
  
  I think the general consensus is that you are always exposed to some
  degree of risk, and it is necessary to evaluate the risks versus the
  benefits.  There are some lovely lakes in northern Maine where you can
  probably use your laptop without too much risk of compromised privacy,
  or closer to home, I'm sure most of us can remember a day when we got
  lots of useful work done on a computer with no network connection and
  were excited when we got one new piece of software every few months.
  
  In my risk/benefit world, a centralized keystore would be really
  useful.
  
  And for the record, if any one of the computers I use is compromised
  with a keyboard scanner or theft of my private ssh or X.509 keys, then
  I'm in a whole world of pain, and not a small amount of inconvenience
  (and risk of malicious attacks) to the various systems I regularly
  access.  Best I can tell, that isn't too different from most people in
  my situation, and short of that nice cabin in Maine, is simply the
  reality (risk) of the kind of work I do, and the people I do it for.
 
 
 Well, there exist central storage approaches that don't allow even the
 local admin access to the data. The trade-off of course is that they
 can't reinstate your access if you forget the password.
 
 In other words, you can set a password that is used as a symmetric key
 for encrypting your data in the central store. It's still central and
 can be retrieved from anywhere, but only you know how to read it.

In these situations to allow recovery you can have all data encrypted a
second time with a central store public key. But the corresponding
private key is not stored in a place accessible online and gaining
access to the means to recover keys is subject to logging on a
specialized system which audits everything you do and notifies all
interested parties automatically when you access anyone's keys.

That can be done but it is expensive, something we can plan for a the
future, but not something we can do in the short term.

Simo.

-- 
Simo Sorce * Red Hat, Inc * New York

___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users


Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-03 Thread Stephen Gallagher
On Wed, 2011-08-03 at 14:02 -0400, Ian Stokes-Rees wrote:
 
 
 On 8/3/11 1:46 PM, Stephen Gallagher wrote: 
  Well, there exist central storage approaches that don't allow even
  the local admin access to the data. The trade-off of course is that
  they can't reinstate your access if you forget the password. In
  other words, you can set a password that is used as a symmetric key
  for encrypting your data in the central store. It's still central
  and can be retrieved from anywhere, but only you know how to read
  it. 
 
 You still seem to be missing the relevance of unscrupulous
 administrators and compromised systems to man in the middle any
 interactions you have with this system.  Unless you never access the
 data yourself once the unscrupulous admin or attacker has gained
 access, then such a person can pretty easily intercept your password
 and get at your data.
 
 Ian

No, the way that such a system would work is that the password would
never be passed to the central server. Only the encrypted data would be
sent and received. All decryption would happen locally. The most a
man-in-the-middle attack could accomplish would be damaging the file so
it couldn't be decrypted anymore. That could accomplish a
denial-of-service, but not grant the attacker privileges to use your
keys.


signature.asc
Description: This is a digitally signed message part
___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users

Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-03 Thread Ian Stokes-Rees


On Wed Aug  3 14:05:51 2011, Stephen Gallagher wrote:
 No, the way that such a system would work is that the password would
 never be passed to the central server. Only the encrypted data would be
 sent and received. All decryption would happen locally. The most a
 man-in-the-middle attack could accomplish would be damaging the file so
 it couldn't be decrypted anymore. That could accomplish a
 denial-of-service, but not grant the attacker privileges to use your
 keys.

Yes, of course.  I work so much on machines hosted in racks in some 
server room that I forget a lot of people do most of their work on a 
single physical machine that could have strong privilege separation so 
even administrators can't normally access the machine.  I guess I'm 
imagining an environment where if there is *any* interest in a central 
keystore, then there are administrators who have full access to all 
systems that would access that central keystore, but your scenario is 
certainly possible.  As you've pointed out, with that degree of 
autonomy over your own system surely it follows that you could choose 
not to use a central keystore if one were provided.

Ian
attachment: ijstokes.vcf___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users

Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-03 Thread Adam Young

On 08/03/2011 01:16 PM, Ian Stokes-Rees wrote:



On 8/3/11 12:38 PM, Adam Young wrote:
I think what you are interested in is the Data Recovery Manager 
(DRM...hey, we had the acronym first, but we also call it Key 
Recovery  )  aspect of Certificate Server.


That is awesome.  That is exactly what I want.

Do you have experience with this?  If so, does it work if the 
certificate requests are being handled by an external entity?  We use 
a Department of Energy CA located in California, but the users in our 
community are from across the US (and international), and we're 
looking to improve the process of them acquiring a usable identity 
in a federated environment.  We're using FreeIPA internally, but if we 
can link it in to the cert request process and cert mgmt process (from 
the user end, not the CA end) that would be great.


Ian
Experience?  I've been on the Dogtag  project for over a week now.  I'm 
learning about it as we speak.


The place to ask about Dogtag and the pki products is 
pki-us...@redhat.com 
http://www.redhat.com/mailman/listinfo/pki-users   and the IRC Channel 
on freednode is *#dogtag-pki.


*Integrating KRA into IPA is on the map, although I am not sure the 
timeframe.  However, I suspect that our approach would be assuming you 
wanted your own CA.  Not sure if you can do KRA with**an external CA.*

*
___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users

Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-03 Thread Dmitri Pal
On 08/03/2011 10:10 AM, Ian Stokes-Rees wrote:
 If there were some way to securely embed an arbitrary string in the
 user profile, that would go a long way to solving this problem.  At
 least 4KB to cover a 2048 X.509 public key, but ideally 10 KB or
 more.  To remove the ACL complexity, just having it accessible only by
 the user (token or password based fetch) would be suitable.
Do not quite understand how that would work or what you mean.

-- 
Thank you,
Dmitri Pal

Sr. Engineering Manager IPA project,
Red Hat Inc.


---
Looking to carve out IT costs?
www.redhat.com/carveoutcosts/



___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users


Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-03 Thread Dmitri Pal
On 08/03/2011 01:56 PM, Simo Sorce wrote:
 On Wed, 2011-08-03 at 13:46 -0400, Stephen Gallagher wrote:
 On Wed, 2011-08-03 at 13:41 -0400, Ian Stokes-Rees wrote:

 On 8/3/11 1:02 PM, Stephen Gallagher wrote: 
 So I guess what I'm saying is not Don't use centrally managed key
 storage, but rather If you use the key anywhere but in this
 administrative domain, do not put it in centrally-managed storage
 that anyone but you can ever gain access to it. 
 Yes, I appreciate the distinction you raise.  Regarding your last
 comment quoted above, to the best of my knowledge that is impossible.
 I regularly have discussions with people saying an administrator
 could always do X,Y and Z to access your supposedly private data --
 if there are ways in which I could be wrong about that, I'd love to
 know them.  Otherwise I believe that the key risks from a centralized
 keystore are:

 * ease of compromise by an unscrupulous administrator
 * extent of compromise if attacker gains administrative privs to
 central keystore (although it sounds like the RH DRM system could
 significantly reduce that)
 * risk of compromise due to security vulnerabilities in central
 keystore software

 I think the general consensus is that you are always exposed to some
 degree of risk, and it is necessary to evaluate the risks versus the
 benefits.  There are some lovely lakes in northern Maine where you can
 probably use your laptop without too much risk of compromised privacy,
 or closer to home, I'm sure most of us can remember a day when we got
 lots of useful work done on a computer with no network connection and
 were excited when we got one new piece of software every few months.

 In my risk/benefit world, a centralized keystore would be really
 useful.

 And for the record, if any one of the computers I use is compromised
 with a keyboard scanner or theft of my private ssh or X.509 keys, then
 I'm in a whole world of pain, and not a small amount of inconvenience
 (and risk of malicious attacks) to the various systems I regularly
 access.  Best I can tell, that isn't too different from most people in
 my situation, and short of that nice cabin in Maine, is simply the
 reality (risk) of the kind of work I do, and the people I do it for.

 Well, there exist central storage approaches that don't allow even the
 local admin access to the data. The trade-off of course is that they
 can't reinstate your access if you forget the password.

 In other words, you can set a password that is used as a symmetric key
 for encrypting your data in the central store. It's still central and
 can be retrieved from anywhere, but only you know how to read it.
 In these situations to allow recovery you can have all data encrypted a
 second time with a central store public key. But the corresponding
 private key is not stored in a place accessible online and gaining
 access to the means to recover keys is subject to logging on a
 specialized system which audits everything you do and notifies all
 interested parties automatically when you access anyone's keys.

 That can be done but it is expensive, something we can plan for a the
 future, but not something we can do in the short term.

 Simo.


Simo and Stephen,

I do not think we would be able to design this right here an right now.
It is a complex problem. I think we should design the solution when time
comes (this fall) to be secure but allow people to loosen the security
if the environment they work in allows it.
For example we never know anything about the physical security of the
deployment thus we always assume worst. But it does not mean that the
environment does not have other means to secure access and that IPA has
to be the lonely soldier. IMO it is up to the deployment to avoid our
tight security recommendations and implement less secure approaches. It
is all a trade off that should be evaluated in a specific environment by
people in charge. We should educate about best practices but not enforce
as there are reasons not to follow them.

-- 
Thank you,
Dmitri Pal

Sr. Engineering Manager IPA project,
Red Hat Inc.


---
Looking to carve out IT costs?
www.redhat.com/carveoutcosts/



___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users


[Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-02 Thread Ian Stokes-Rees
Is there some mechanism to store private keys (e.g. ssh, pgp, gpg,
X.509) in FreeIPA, tied to a user account, so only the user (via kerb
token or with password prompt) can fetch the token?

If FreeIPA doesn't make this possible, can anyone suggest a good
mechanism to have, effectively, a user keystore that would sync
passwords with FreeIPA nicely.  I am thinking, in particular, of the
scenario where users forget their password -- we'd strongly prefer to
just reset it for them (24 hours, one login) in a way that didn't mean
also re-issuing all passphrase-secured identity tokens.

Thanks,

Ian
attachment: ijstokes.vcf___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users

Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-02 Thread Dmitri Pal
On 08/02/2011 02:15 PM, Ian Stokes-Rees wrote:
 Is there some mechanism to store private keys (e.g. ssh, pgp, gpg,
 X.509) in FreeIPA, tied to a user account, so only the user (via kerb
 token or with password prompt) can fetch the token?

 If FreeIPA doesn't make this possible, can anyone suggest a good
 mechanism to have, effectively, a user keystore that would sync
 passwords with FreeIPA nicely.  I am thinking, in particular, of the
 scenario where users forget their password -- we'd strongly prefer to
 just reset it for them (24 hours, one login) in a way that didn't mean
 also re-issuing all passphrase-secured identity tokens.


Not now however:
https://fedorahosted.org/freeipa/ticket/754
https://fedorahosted.org/freeipa/ticket/237
https://fedorahosted.org/freeipa/ticket/521

There are also some thoughts and ideas about IPA as a secure vault for
other credentials in other systems which is not logged as a ticket.


Would you mind sharing with us your ideas about this functionality
actually should work?
Use cases, examples and design ideas are very welcome.



 Thanks,

 Ian


 ___
 Freeipa-users mailing list
 Freeipa-users@redhat.com
 https://www.redhat.com/mailman/listinfo/freeipa-users


-- 
Thank you,
Dmitri Pal

Sr. Engineering Manager IPA project,
Red Hat Inc.


---
Looking to carve out IT costs?
www.redhat.com/carveoutcosts/



___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users

Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-02 Thread Simo Sorce
On Tue, 2011-08-02 at 16:27 -0400, Dmitri Pal wrote:
 On 08/02/2011 02:15 PM, Ian Stokes-Rees wrote: 
  Is there some mechanism to store private keys (e.g. ssh, pgp, gpg,
  X.509) in FreeIPA, tied to a user account, so only the user (via
  kerb token or with password prompt) can fetch the token?
  
  If FreeIPA doesn't make this possible, can anyone suggest a good
  mechanism to have, effectively, a user keystore that would sync
  passwords with FreeIPA nicely.  I am thinking, in particular, of the
  scenario where users forget their password -- we'd strongly prefer
  to just reset it for them (24 hours, one login) in a way that didn't
  mean also re-issuing all passphrase-secured identity tokens.
  
 
 Not now however:
 https://fedorahosted.org/freeipa/ticket/754
 https://fedorahosted.org/freeipa/ticket/237
 https://fedorahosted.org/freeipa/ticket/521

Replaced the last one with: https://fedorahosted.org/freeipa/ticket/1560

Simo.

-- 
Simo Sorce * Red Hat, Inc * New York

___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users


Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-02 Thread Ian Stokes-Rees


On 8/2/11 4:27 PM, Dmitri Pal wrote:
 On 08/02/2011 02:15 PM, Ian Stokes-Rees wrote:
 Is there some mechanism to store private keys (e.g. ssh, pgp, gpg,
 X.509) in FreeIPA, tied to a user account, so only the user (via kerb
 token or with password prompt) can fetch the token?

 If FreeIPA doesn't make this possible, can anyone suggest a good
 mechanism to have, effectively, a user keystore that would sync
 passwords with FreeIPA nicely.  I am thinking, in particular, of the
 scenario where users forget their password -- we'd strongly prefer to
 just reset it for them (24 hours, one login) in a way that didn't
 mean also re-issuing all passphrase-secured identity tokens.


 Not now however:
 https://fedorahosted.org/freeipa/ticket/754
 https://fedorahosted.org/freeipa/ticket/237
 https://fedorahosted.org/freeipa/ticket/521

 There are also some thoughts and ideas about IPA as a secure vault for
 other credentials in other systems which is not logged as a ticket.


 Would you mind sharing with us your ideas about this functionality
 actually should work?
 Use cases, examples and design ideas are very welcome.

Is there any standard to keystores?  It would be great if Linux, Mac,
Windows could all be pointed at an FreeIPA to fetch credentials,
usernames, passwords.  Authentication could use kerberos tickets if
available, otherwise prompt for username/password, or have configurable
authentication policies.

Users and administrators could set ACL policies on the keystores (I know
very little about LDAP, but I believe LDAP already provides this kind of
thing), and they could be hierarchical, with access policy inheritance. 
It could act as a password safe like http://kedpm.sourceforge.net/.

Imagine storing SSH private keys in IPA.  The user then wants to fetch
these into ssh-agent, or to provide them for some other in-memory
process that requires access to the unencrypted private-key.

Another scenario is X.509 PKI where the private key is usually
passphrase encrypted.  If the user forgets their passphrase, the PKI
token needs to be revoked and a new one issued.  Much better (IMO) to
hold it in a trusted authentication system and to provide the
unencrypted key to applications on demand.  User-passphrase can then be
linked to FreeIPA system.

Here is a quick idea of a command line to fetch credentials from an IPA
keystore:

ipa-keystore-fetch [-k keystore] [-u username] [-p password] [-P]
 [-o output_dir_or_file] \
 [/path/to/token/]token_name[#attribute] \
[[/path/to/token/]token_name[#attribute]] [ ... ]

Usual kind of thing: the user would have a default keystore, and their
kerberos tokens (if available) would be used to authenticate for access
to the keystore (based on username, I guess).  Users could just dump
tokens in the root space, or arrange the tokens hierarchically. 
Tokens could have attributes associated with them, with a primary or
default token if none is specified.  Tokens could be dumped to screen,
routed to an application (pipe, IPC, socket, PID), or written to file. 
You could pretty easily imagine commands:

chmod # acl changes
add
edit
rm
backup
ls

Ian

attachment: ijstokes.vcf___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users

Re: [Freeipa-users] Use of FreeIPA or FreeIPA LDAP server to hold private keys

2011-08-02 Thread Dmitri Pal
On 08/02/2011 05:51 PM, Ian Stokes-Rees wrote:


 On 8/2/11 4:27 PM, Dmitri Pal wrote:
 On 08/02/2011 02:15 PM, Ian Stokes-Rees wrote:
 Is there some mechanism to store private keys (e.g. ssh, pgp, gpg,
 X.509) in FreeIPA, tied to a user account, so only the user (via
 kerb token or with password prompt) can fetch the token?

 If FreeIPA doesn't make this possible, can anyone suggest a good
 mechanism to have, effectively, a user keystore that would sync
 passwords with FreeIPA nicely.  I am thinking, in particular, of the
 scenario where users forget their password -- we'd strongly prefer
 to just reset it for them (24 hours, one login) in a way that didn't
 mean also re-issuing all passphrase-secured identity tokens.


 Not now however:
 https://fedorahosted.org/freeipa/ticket/754
 https://fedorahosted.org/freeipa/ticket/237
 https://fedorahosted.org/freeipa/ticket/521

 There are also some thoughts and ideas about IPA as a secure vault
 for other credentials in other systems which is not logged as a ticket.


 Would you mind sharing with us your ideas about this functionality
 actually should work?
 Use cases, examples and design ideas are very welcome.

 Is there any standard to keystores?  It would be great if Linux, Mac,
 Windows could all be pointed at an FreeIPA to fetch credentials,
 usernames, passwords.  Authentication could use kerberos tickets if
 available, otherwise prompt for username/password, or have
 configurable authentication policies.

 Users and administrators could set ACL policies on the keystores (I
 know very little about LDAP, but I believe LDAP already provides this
 kind of thing), and they could be hierarchical, with access policy
 inheritance.  It could act as a password safe like
 http://kedpm.sourceforge.net/.

 Imagine storing SSH private keys in IPA.  The user then wants to fetch
 these into ssh-agent, or to provide them for some other in-memory
 process that requires access to the unencrypted private-key.

 Another scenario is X.509 PKI where the private key is usually
 passphrase encrypted.  If the user forgets their passphrase, the PKI
 token needs to be revoked and a new one issued.  Much better (IMO) to
 hold it in a trusted authentication system and to provide the
 unencrypted key to applications on demand.  User-passphrase can then
 be linked to FreeIPA system.

 Here is a quick idea of a command line to fetch credentials from an
 IPA keystore:

 ipa-keystore-fetch [-k keystore] [-u username] [-p password] [-P]
  [-o output_dir_or_file] \
  [/path/to/token/]token_name[#attribute] \
 [[/path/to/token/]token_name[#attribute]] [ ... ]

 Usual kind of thing: the user would have a default keystore, and their
 kerberos tokens (if available) would be used to authenticate for
 access to the keystore (based on username, I guess).  Users could just
 dump tokens in the root space, or arrange the tokens
 hierarchically.  Tokens could have attributes associated with them,
 with a primary or default token if none is specified.  Tokens
 could be dumped to screen, routed to an application (pipe, IPC,
 socket, PID), or written to file.  You could pretty easily imagine
 commands:

 chmod # acl changes
 add
 edit
 rm
 backup
 ls

 Ian


First, security specialist would probably rebel about providing the
password or keys in clear. The best practice says do not reveal the
keys/passwords but rather encrypt them with some other transport
secret that would be known to the user or destination host and would
protect the password/key while in transit.
Second, yes I was thinking about hierarchical storage too but then every
user would have to turn into a container. That would have some
implications that need to be researched. It might be easier to keep the
key(s) in user entry and have ACLs attached to the key(s). And then have
a separate vault storage in a form of a database for a quick and simple
lookup. Needs investigation.
Third there is a standard and protocol
http://www.oasis-open.org/committees/kmip/ but last time I looked there
were no open source implementations that we can take advantage of.
Starting a whole new kmip related project is something that we can't
afford...

So:
It can be solved and can be solved generically and more or less securely
but it will take a lot of time before we would get there.
I am sure we would though but not as soon as you might want.

Our current plan is to focus on the storage and make sure we can address
the use cases we need to address like keys for disk encryption, SSH etc.
Serving them out is whole different story and I doubt it will be done
soon. Design work in this area would hopefully start in the fall.


-- 
Thank you,
Dmitri Pal

Sr. Engineering Manager IPA project,
Red Hat Inc.


---
Looking to carve out IT costs?
www.redhat.com/carveoutcosts/



___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users