Live data from Hacker News

If you didn't cancel the credit card you used for linode.com, now is the time

news.ycombinator.com

121–130 of 138 posts

Re: If you didn't cancel the credit card you used for linode.com, now is the time

#121
post #88

Earlier quoted context omitted.

How does storing the public key on the key bastion make it useless?

The public key is used by the webserver to encrypt credit card data. If it was stored in the key bastion, it wouldn't be available to the webserver.

Okay, say you have the following scenario:

1) super secure server which handles only the processing of credit cards, handed off to it through a carefully specified API

2) webserver which talks to that server

Obviously, the webserver needs the public key. There's no reason to delete the public key from the private server, but not really any reason not to.

Now, let's say that, under certain circumstances, system 1 itself needs to add encrypted records. Now you need the key there too. You could 1) generate a different key-pair and track which key touches which, but for records generated by system 1 you're generating a keypair that might as well be a symmetric key, which you've objected to; or 2) you could encrypt those records with a symmetric key, but now you've got additional code paths to audit and maintain; or 3 you could send off a request to an external server but that seems to add more complexity and vulnerability not less. Just using the existing public key to encrypt those records doesn't seem like a bad idea - it's a message to the server in the future from the server now, and messages to someone get encrypted with their public key.

Now, you've got a system where you have the public and private key sitting on the same server (and being used on the same server), and if someone does manage to get into that secure server (never impossible) the description I initially complained about would be equally applicable to this setup as to the setup Linode had.

Re: If you didn't cancel the credit card you used for linode.com, now is the time

#122

Earlier quoted context omitted.

I wish other banks offered that functionality. I am not a fan of Citibank.

Get the Fidelity Amex from FIA (aka BofA). It's one of the few genuine 2% cashback cards, has no annual fee, no forex fees iirc, and lets you create "ShopSafe" numbers.

It has a forex fee, just called about it before a trip. Something like 2.5 or 3.5%; my CapitalOne card didn't so I just used that instead.

Haven't found the ShopSafe numbers yet; I'm going to look for that now that you mentioned it.

Overall great card to have, because besides the 2% back on all purchases (if you deposit the money to a qualified Fidelity account) it has a bunch of the perks like rental car coverage, theft insurance on recent purchases, and doubled warranty, up to 1 year.

Re: If you didn't cancel the credit card you used for linode.com, now is the time

#123

Earlier quoted context omitted.

A public key is a file. It can be stored in more than one place. For example, you can generate both inside the key bastion, and then copy the public key to the public servers, while leaving a copy on the bastion.

But that's not what Linode did. Linode put the private key right next to the public key, where anyone who compromised their web frontend could get at it. If they had kept their private key where it belonged, we wouldn't be having this discussion because their security alert would have said "...and we have verified that no credit card data was accessed".

And the problem was the private key being on the server running the web front-end, and that's what should be criticized. Presence of a public key does not a webserver make.

Re: If you didn't cancel the credit card you used for linode.com, now is the time

#124

Earlier quoted context omitted.

Consider someone learning their way around this stuff, but not yet well versed. They've heard people on HN talking about how "storing public key and private key together" is bad. Would you recommend they 1) move .ssh/id_dsa.pub to a different directory, or 2) make sure .ssh isn't world-readable? The issue was insecure storage of the private key - presence or absence of the public key is entirely irrelevant.

I'd recommend they not store the private key next to the public key; that is, they shouldn't do "scp .ssh/id_dsa* remoteserver:" It doesn't matter whether there's something stored with the private key, both because that location should be secure and because the private key can used to recover the public key.

Is the issue that you somehow believe "stored with" is not a commutative relationship?

Edited to add:

"It doesn't matter whether there's something stored with the private key, both because that location should be secure and because the private key can used to recover the public key."

Right, it doesn't matter in what should be the overwhelming majority of cases where "the public and private key are stored in the same directory" so it's a piss-poor test for whether things are obviously being done horribly wrong.

Re: If you didn't cancel the credit card you used for linode.com, now is the time

#125

Earlier quoted context omitted.

I think you are not talking about the same thing that the rest of us are talking about. I see three locations or context involved: 1. The public area - meaning anyone has access. 2. The application context (server, etc) -- should be a "secured" location, meaning few people or processes have legitimate access, and measures should be taken to prevent unauthorized access. The private key should never be present in locat…

> The typical assumption in most scenarios is that context > 2 is secure, and by that I mean secure enough to house > the private key. I disagree. An application server is, by nature, running a lot of untrusted and unaudited code exposed to a (semi-)public network. It should not be considered trusted, because it will probably be the first system to be compromised in any attack. > I am saying that anyone who has acces…

> I disagree. An application server is, by nature, running a lot of untrusted and unaudited code exposed to a (semi-)public network. It should not be considered trusted, because it will probably be the first system to be compromised in any attack.

And I agree with you for things are are truly high-security, but there are tons of people using PKI in this context 2, because it is not worth it to them to invest in dedicated crypto hardware. I would argue most webservers are in this category. When you spin up a virtual machine in the cloud to be your web server, do you also put together an HSM in your private data center (because you can't really trust a co-location center either) to house the SSL keys? For most people the answer is no. Most web setups have their SSL private key on the same box as their application code, because the web server will need to have access to the private key in order to serve HTTPS traffic.

> you don't want someone with access to the public key to also have access to the private key,

This is false. Specifically, the key pair owner will have access to both by virtue of the fact that they are generated together. So the key owner is a "someone with access to the public key [who also has] access to the private key". To be clear:

  1. *Everyone* has access to the public key.
  2. The key owner has access to the private key
Therefore, the key owner has access to both the public and private keys. Therefore it is safe for the owner to store the public key alongside the private key. You do not want everyone with access to the public key to have access to the private key, true. But there is at least one person with access to both: the owner. So it is false to say you cannot store them side-by-side. You can store the public key with the private key in a secure location if you want. You can store the public key anywhere you like. You will need to make the public key available to others outside the secure location so they can use it.

> It doesn't matter if someone can derive the public key from the private key. That's not what's being argued here. The problem is that there is a place where the public key was stored, and Linode also stored the private key there, which is insane.

It is only insane if that place was not secure, and if it was public. We do not that place was insecure or public. All you said was:

> The fact that Linode stored the public and private keys in the same directory is strong evidence that they do not have any competence in security.

The fact that the public key and private key were store together by itself tells us nothing. If they stored the private key in a public place (next to the public key or not), then they are beyond stupid. But that fact the keys were stored together means nothing on its own.

Suppose I have the following:

1. A secured HSM containing both the public and private keys. 2. A public-facing webserver serving the public key.

This is a secure setup, and it is true that "the public and private key were store (sic) together"

Re: If you didn't cancel the credit card you used for linode.com, now is the time

#126

Earlier quoted context omitted.

The entire purpose of having separate public and private keys is for the private key to be stored in a secure location. That way, when your data-writer is compromised, none of the previously written data is at risk without an additional compromise of the key bastion. If the private key is stored in the same directory, then there no effectively no additional security over simple symmetric-key encryption with a passphr…

You missed dllthomas's point. The private key should never exist outside a dedicated secure location, the "key bastion" as you say. dllthoms's point was that it doesn't matter if the public key is also present in the secure location. There is no reason the keys have to be stored separately. That is orthogonal to the actual requirement that the private key is private aka. secret. In fact, the public key is public mean…

What he might not realize is that SSH can generate the public key from its "private key" file, so there is literally no good way to have a private key separate from a public key.

Re: If you didn't cancel the credit card you used for linode.com, now is the time

#127

Linode stored the encrypted credit card numbers in our [linode's] database ... we have no evidence decrypted credit card numbers were obtained . [1] To me, this implies that the attackers did indeed get the encrypted data. This would be a mighty juicy target to focus your decryption efforts on! In my mind, it was only a matter of time. Regardless of whether OP's story holds water.. get your card re-issued if this app…

> This would be a mighty juicy target to focus your decryption efforts on! In practice, either the Linode data was properly encrypted and keys properly managed, or it wasn't, rendering the encryption worthless. There's very little middle ground. If you can break properly encrypted data, you have way bigger opportunities than carding.

Attackers claimed that the keys were stored in memory and that they retrieved them: "We proceeded to breach Linode and acquire their in-memory keys." http://straylig.ht/zines/HTP5/0x02_Linode.txt

Re: If you didn't cancel the credit card you used for linode.com, now is the time

#128
post #60

Tangentially: Why do merchants really need to store CC numbers? From the consumers' standpoint, there would be no difference if, during the first transaction, the merchant is issued some alterate key with which to charge the account. Each merchant would be issued their own key, so there would be no risk of a security breach spreading outside of the merchant.

This creates lock-in with whatever company is storing the cards. Let's say you let PayPal store all your cards and you only had tokens. Now, you want to switch to Stripe, but you'd have to re-acquire the cards from all your customers to do so. If you're doing recurring billing, you're going to lose a significant percentage of your revenue doing this, perhaps so much that it's not feasible to switch even though you're unhappy with your current processor.

Re: If you didn't cancel the credit card you used for linode.com, now is the time

#129

Earlier quoted context omitted.

I wish other banks offered that functionality. I am not a fan of Citibank.

Get the Fidelity Amex from FIA (aka BofA). It's one of the few genuine 2% cashback cards, has no annual fee, no forex fees iirc, and lets you create "ShopSafe" numbers.

Are you sure it is the amex card that supports shopsafe? I thought Amex discontinued their similar product _years_ ago.

Re: If you didn't cancel the credit card you used for linode.com, now is the time

#130

Signing up for on-line services is a good use for "virtual account numbers". This is a feature offered on some Citibank and Discover credit cards (maybe others) that allows you to generate a separate credit card number that's billed to your original account. The nice thing about them is that once a virtual account number has been billed by a vendor, it does not accept any charges in the future except from the same ve…

I've got an account with Bank of America and they have that feature as well. Downside, none of their service reps even know it exists, even worse they are slowly phasing it out (making it more and more difficult to find) even-though it is a feature I absolutely love.

The other downside is that it is Bank of America.
Post reply on HN