<br><br><div class="gmail_quote">On Fri, Dec 24, 2010 at 12:59 AM, Michael H. Warfield <span dir="ltr">&lt;<a href="mailto:mhw@wittsend.com">mhw@wittsend.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im">On Fri, 2010-12-24 at 00:21 -0500, Jim Kinney wrote:<br>
&gt; Here&#39;s a scenario:<br>
<br>
&gt; multiple rings of security with the innermost having FBI background checks<br>
&gt; and security clearances, vault doors, dedicated fiber lines, treason<br>
&gt; convictions etc. I work with the stuff outside of that arena and it has two<br>
&gt; layers: non-classified but sensitive and/or export controlled, and<br>
&gt; non-classified and not export controlled. Certain groups of people are not<br>
&gt; allowed to connect except to the outermost , unsecured network.<br>
<br>
</div>Yeah, pretty much standard fare.<br>
<div class="im"><br>
&gt; People need to be able to ssh into the controlled arena to &quot;do things&quot;. The<br>
&gt; laptops are currently not full drive encrypted (windows is a problem and the<br>
&gt; Mac systems have a different issue - no one is use Linux laptops which don&#39;t<br>
&gt; have a problem with drive encryption). So the need to keep ssh keys<br>
&gt; encrypted is high.<br>
<br>
&gt; In general, people are lazy. If they can find a way to remove the encryption<br>
&gt; from the key, they will. Thus the need to find a way to test if a users key<br>
&gt; is _still_ encrypted.<br>
<br>
</div>What you have just described, to me, screams &quot;smart keys&quot;.  Putty,<br>
Absolute telnet, et al ssh clients support these things and this is the<br>
only really effective way to deal with this.  The keys are on a USB<br>
smart-key (NOT a USB memory key or SSD) or a smart card w/ reader and<br>
you don&#39;t need to worry about this.  They CANNOT screw it up.  They have<br>
to enter a PIN and get it right.  No intruder, NO INTRUDER, can extract<br>
that private key.  The gov has these keys now.  I forget the acronym but<br>
it&#39;s something like UAC (Universal Access Control) or some such.  This<br>
is a solved problem and ssh works with it very well.  I have keys on my<br>
Aladden smart key for ssh access.  You would have to steal the key and<br>
beat the PIN out of me (3 failures locks the key and requires a security<br>
officer key to reactivate).<br></blockquote><div><br>Ah ha! CAC. I&#39;ve seen this acronym around. crypto-access-card maybe.  I will start the push for more info on those and some details on usage.<br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<div class="im"><br>
&gt; the only reason I have for keeping keys in the vault is for back checking in<br>
&gt; the event of a breach. The key hash is more important to me as it can be<br>
&gt; sent around and used to check if a key is encrypted or not. It the new key<br>
&gt; has matches the original bare key hash, bad times are in order.<br>
&gt;<br>
&gt; The pub key in ldap gives a way to quickly add/remove access for a key user.<br>
&gt; I wish it was a standard thing in sshd.<br>
&gt;<br>
&gt; I see your point about access keys and no need for escrow. I need to look at<br>
&gt; auditd logs a bit more but I think they don&#39;t have that level of detail<br>
&gt; during a connections authentication section.<br>
&gt;<br>
&gt; These remote machine are OS controlled by me and the others I work with so<br>
&gt; it&#39;s possible to add in an sshd that allows a connection back triggered by a<br>
&gt; connection to my network. That back connect can run a hash on the connected<br>
&gt; user&#39;s priv key and compare it to the one hash of the unecrypted key stored<br>
&gt; earlier.<br>
<br>
&gt; This would be easier if ssh had a patch that allowed a compile flag<br>
&gt; requiring a password on keys.<br>
<br>
</div>This is intrinsicly and inherently impossible.  It would violate a very<br>
principle of cryptography.  Such a thing could only be enforced at the<br>
client but the server would have to depend on the client and the client<br>
must be assumed to be NOT trustworthy, only the key is the key and to be<br>
the determining factor.  Therein you have a conflict.  How does the<br>
server validate that the client truthfully enforces the policy that<br>
allows or disallows the keys.  This can not be.  Such schemes can not<br>
work.<br></blockquote><div><br>It would be the ssh client side thing only. <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im"><br>
&gt; Happily, most of the people that need this access are mostly carbon-based<br>
&gt; life forms. A few are probably part silicon and sulfur...<br>
<br>
</div>:-P<br>
<div><div></div><div class="h5"><br>
&gt; On Thu, Dec 23, 2010 at 11:50 PM, Michael H. Warfield &lt;<a href="mailto:mhw@wittsend.com">mhw@wittsend.com</a>&gt;wrote:<br>
&gt;<br>
&gt; &gt; Hello,<br>
&gt; &gt;<br>
&gt; &gt; Good to have triggered some interesting discussion on this.  I can see<br>
&gt; &gt; that I&#39;ll have a VERY lively session if I do my ssh talk at ALE.  Aaron<br>
&gt; &gt; and I can work out the scheduling details later but I think this will<br>
&gt; &gt; have to go on the calendar for some upcoming month.  Probably later that<br>
&gt; &gt; sooner, unfortunately, but we&#39;ll make it happen.<br>
&gt; &gt;<br>
&gt; &gt; On Thu, 2010-12-23 at 16:02 -0500, Jim Kinney wrote:<br>
&gt; &gt; &gt; On Thu, Dec 23, 2010 at 3:29 PM, Michael H. Warfield &lt;<a href="mailto:mhw@wittsend.com">mhw@wittsend.com</a><br>
&gt; &gt; &gt;wrote:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; I know I&#39;m doing my IPv6 talk next month for ALE.  Maybe I need to<br>
&gt; &gt; &gt; &gt; schedule my talk on &quot;Securing the Secure Shell&quot; some time in the next<br>
&gt; &gt; &gt; &gt; few months as well.  I gave that talk in front of AUUG a while back but<br>
&gt; &gt; &gt; &gt; I don&#39;t think I&#39;ve delivered it at ALE before.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; I am all for hearing it! Aaron please contact MHW ASAP before he<br>
&gt; &gt; changes<br>
&gt; &gt; &gt; his mind! :-)<br>
&gt; &gt;<br>
&gt; &gt; &gt; At work, I&#39;m prepping an ssh-key repository to ensure that all keys use a<br>
&gt; &gt; &gt; good password.<br>
&gt; &gt;<br>
&gt; &gt; I&#39;m not totally sure I perceive the threat vectors you hope to address<br>
&gt; &gt; or where they stand on an attack tree here, but...  Ok...  Lets work<br>
&gt; &gt; with this and see where it leads.  Yes, I can see some similarity<br>
&gt; &gt; between strong passwords on PGP keys and this but the similarity is<br>
&gt; &gt; somewhat superficial since they keys are used for totally different<br>
&gt; &gt; things and other environmental factors come into play.<br>
&gt; &gt;<br>
&gt; &gt; &gt; The repository will generate the ssh keys for the users and<br>
&gt; &gt; &gt; archive the original, no password key in a vault (literal, steel vault<br>
&gt; &gt; with<br>
&gt; &gt; &gt; key as text on paper with a barcode for fast input, placed there buy<br>
&gt; &gt; someone<br>
&gt; &gt; &gt; with a firearms license at the federal level), then the user must enter a<br>
&gt; &gt; &gt; password to encrypt the key.<br>
&gt; &gt;<br>
&gt; &gt; As a cryptographer, any system generating keys for a user stands the<br>
&gt; &gt; hair up on the back of my neck.  It also runs contrary to a number of<br>
&gt; &gt; strong crypto systems which would preclude it to some extent or another.<br>
&gt; &gt; To use my analogy a bit further, the idea of generating PGP keys for<br>
&gt; &gt; users would be totally abhorrent and unacceptable to me and violates<br>
&gt; &gt; many of the basic PGP principles.  But, these are not the same thing and<br>
&gt; &gt; this very thing is common in X.509 client certificates where a site<br>
&gt; &gt; generates a complete PKS12 key and cert pair (which I also think is an<br>
&gt; &gt; abomination but that&#39;s grist for another rant on another day) for a<br>
&gt; &gt; client and then E-Mails it to them with a transport passphrase (sigh).<br>
&gt; &gt;<br>
&gt; &gt; &gt; That encrypted key is then copied to their<br>
&gt; &gt; &gt; thumb drive and the original unencrypted is hashed, wiped and the hash<br>
&gt; &gt; &gt; stored. Their pub key is placed in the ldap server.The sshd is a modified<br>
&gt; &gt; &gt; one that locates ssh pub keys from ldap. It is also configured to never<br>
&gt; &gt; &gt; allow a password entry.<br>
&gt; &gt;<br>
&gt; &gt; That sounds sort of reasonable but I&#39;m not sure of the value-add in the<br>
&gt; &gt; complexity of this is unless the real goal is an escrow or backup of the<br>
&gt; &gt; private keying material.  If that private keying material is intended<br>
&gt; &gt; primarily for authentication, then I have to feel this is all a bad<br>
&gt; &gt; idea.  Having a backup for a key used to protect data at rest, such as<br>
&gt; &gt; PGP keys, is generally a good idea.  Having a backup of private keying<br>
&gt; &gt; material primarily used for authentication is almost always a very bad<br>
&gt; &gt; idea.  You don&#39;t gain anything by it.  If someone loses an<br>
&gt; &gt; authentication key, you simply replace the authentication key and reset<br>
&gt; &gt; the public keys for the authentication and nothing is lost.  If you lose<br>
&gt; &gt; a key for data at rest, the data is lost.  That&#39;s not the case with an<br>
&gt; &gt; authentication key, like this, though.  I don&#39;t see the value in the<br>
&gt; &gt; keystore and this complicated handoff.<br>
&gt; &gt;<br>
&gt; &gt; &gt; The complicated (and unwritten) stage is to devise a method that checks<br>
&gt; &gt; the<br>
&gt; &gt; &gt; connecting users priv key for being still password locked once they log<br>
&gt; &gt; in.<br>
&gt; &gt; &gt; If it&#39;s NOT locked, they are kicked out and the pub key is removed from<br>
&gt; &gt; &gt; ldap. Not sure yet on how to do this.<br>
&gt; &gt;<br>
&gt; &gt; I would have to say this is just about impossible and should be<br>
&gt; &gt; impossible, even in principle, on several levels.  How do you deal with<br>
&gt; &gt; the case of ssh-agent where the keys have been loaded and cached?  What<br>
&gt; &gt; if they are hosted on an unlocked smart-card?  How do you detect if they<br>
&gt; &gt; were originally password protected or not?<br>
&gt; &gt;<br>
&gt; &gt; What about if they are forwarded using authentication forwarding?  This<br>
&gt; &gt; is actually an incredibly powerful facility allowing remote system to<br>
&gt; &gt; remote system authenticated key access while never hosting private<br>
&gt; &gt; keying materials on any remote server.  How would you deal with<br>
&gt; &gt; automated processes (not all of this is run by a carbon based life form<br>
&gt; &gt; pounding  at a keyboard)?<br>
&gt; &gt;<br>
&gt; &gt; Example...  From an lbb (Little Black Box) located somewhere, a cron job<br>
&gt; &gt; runs a process that begins a process on a remote server.  The key<br>
&gt; &gt; required for that process is stored on the lbb and loaded into an<br>
&gt; &gt; ssh-agent process for the duration of this operation.  More so, the<br>
&gt; &gt; ssh-agent uses a script to validate each authentication request using<br>
&gt; &gt; the request acknowledgment hooks.  The remote system, with no private<br>
&gt; &gt; keying material present, at some point initiates a connection to yet<br>
&gt; &gt; another remote server for, say, backup transfers.  The connection is<br>
&gt; &gt; authenticated via ssh auth forwarding back to the lbb while the<br>
&gt; &gt; acknowledgment script confirms the authentication occurs at the correct<br>
&gt; &gt; times and the correct number of times during the process (and raises<br>
&gt; &gt; alarms if something takes place out of step or too many times).  When<br>
&gt; &gt; the processes are complete, the connections are broken down and the<br>
&gt; &gt; first server has no way to authenticate to the second server, since it<br>
&gt; &gt; has no private keying materials present.  No passwords are required,<br>
&gt; &gt; since the keys are stored on a system to which no remote login is<br>
&gt; &gt; permitted and which exists behind strict security barriers.  You can<br>
&gt; &gt; build a complete state machine and engine based on this model using<br>
&gt; &gt; multiple keys to control highly complex interactions between multiple<br>
&gt; &gt; remote systems and keep them all secure with NO passwords and NO private<br>
&gt; &gt; key material present on the external sites and NO password on the<br>
&gt; &gt; private key on a highly secured staging engine.<br>
&gt; &gt;<br>
&gt; &gt; Second example...  My laptop incorporates full hard drive (partition)<br>
&gt; &gt; encryption via LUKS (and has for years).  All of my private keying<br>
&gt; &gt; material exists only on encrypted drives (or encrypted drive images).<br>
&gt; &gt; Passwords are merely static encryption on the keys.  But, anyone with<br>
&gt; &gt; the ability to access those keys when the drives are unlocked (system<br>
&gt; &gt; running) would have the ability to trojan binaries or otherwise capture<br>
&gt; &gt; my passwords on those keys.  I am required to have this level of<br>
&gt; &gt; encryption on my drives now for totally external reasons regardless of<br>
&gt; &gt; my use of ssh auth keys.  I fail to see any value-add here at all where<br>
&gt; &gt; other, stronger, encryption prevails and dominates.<br>
&gt; &gt;<br>
&gt; &gt; In most environments I can envision where you would find this<br>
&gt; &gt; complicated scheme of insuring strong passwords on keys (even if that<br>
&gt; &gt; were possible) I would expect, just from a pure regulatory compliance<br>
&gt; &gt; standpoint, you would first require file system or drive encryption to<br>
&gt; &gt; protect other valuable private information.  So, either you are not<br>
&gt; &gt; providing any value add with this additional layer of complexity or you<br>
&gt; &gt; are leaving other sensitive material exposed.  I&#39;m not sure I&#39;m<br>
&gt; &gt; comfortable with that decision.<br>
&gt; &gt;<br>
&gt; &gt; This scheme also fails when you take into account hardware crypto<br>
&gt; &gt; devices such as smart cards and things like the tpm present on most<br>
&gt; &gt; decent laptops nowadays.  These these are crypto devices that can store<br>
&gt; &gt; keys and even generate keys and can lock them in a way that they can not<br>
&gt; &gt; be retrieved from the device, protected only by a PIN, which is in no<br>
&gt; &gt; way shape or form going to comply with your idea of a strong password.<br>
&gt; &gt; Yet, this is vastly superior to a scheme of requiring strong passwords<br>
&gt; &gt; on ssh keys.  If you are going to this much trouble, buy these people<br>
&gt; &gt; some OpenPGP smart-keys/smart-cards and save yourself a lot of time,<br>
&gt; &gt; expense, and headaches.  You&#39;ll be more secure and your users will be<br>
&gt; &gt; one hell of a lot happier with strong security that&#39;s actually<br>
&gt; &gt; convenient and easy to use!  Imagine that.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; So...  I&#39;d like to hear more about the requirements for this system<br>
&gt; &gt; you&#39;re working on.  I&#39;ve seen too many of these systems which are really<br>
&gt; &gt; designed to make the user&#39;s life more difficult but make them &quot;feel<br>
&gt; &gt; secure&quot; because it&#39;s an inconvenience being imposed on them rather than<br>
&gt; &gt; real security that is transparent and convenient but gains nobody any<br>
&gt; &gt; accolades and doesn&#39;t impress anyone that you&#39;re doing something to make<br>
&gt; &gt; them secure.  A LOT of what I learn is from people in unique situations<br>
&gt; &gt; I never anticipated with problem requiring unique solutions I had not<br>
&gt; &gt; considered before.  This sounds like one of them and I&#39;m intrigued.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; &gt; --<br>
&gt; &gt; &gt; --<br>
&gt; &gt; &gt; James P. Kinney III<br>
&gt; &gt; &gt; I would rather stumble along in freedom than walk effortlessly in chains.<br>
&gt; &gt;<br>
&gt; &gt; Regards,<br>
&gt; &gt; Mike<br>
&gt; &gt; --<br>
&gt; &gt; Michael H. Warfield (AI4NB) | (770) 985-6132 |  mhw@WittsEnd.com<br>
&gt; &gt;   /\/\|=mhw=|\/\/          | (678) 463-0932 |<br>
&gt; &gt; <a href="http://www.wittsend.com/mhw/" target="_blank">http://www.wittsend.com/mhw/</a><br>
&gt; &gt;   NIC whois: MHW9          | An optimist believes we live in the best of<br>
&gt; &gt; all<br>
&gt; &gt;  PGP Key: 0x674627FF        | possible worlds.  A pessimist is sure of it!<br>
&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; --<br>
&gt; James P. Kinney III<br>
&gt; I would rather stumble along in freedom than walk effortlessly in chains.<br>
&gt;<br>
<br>
</div></div>--<br>
<div><div></div><div class="h5">Michael H. Warfield (AI4NB) | (770) 985-6132 |  mhw@WittsEnd.com<br>
   /\/\|=mhw=|\/\/          | (678) 463-0932 |  <a href="http://www.wittsend.com/mhw/" target="_blank">http://www.wittsend.com/mhw/</a><br>
   NIC whois: MHW9          | An optimist believes we live in the best of all<br>
 PGP Key: 0x674627FF        | possible worlds.  A pessimist is sure of it!<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>-- <br>James P. Kinney III<br>I would rather stumble along in freedom than walk effortlessly in chains.<br><br><br>