|
|
|
|
|
by laughinghan
3737 days ago
|
|
A GPG signature has major usability problems. From where do you get the public key to verify the GPG signature against? If it's from NPM, an attacker who could convince you to download the wrong package could convince you to download the wrong public key, too. If it's from previous versions of the package, what happens if the author loses the public key, or if package ownership needs to be transferred (another name dispute, or the author abandons their package)? Does NPM force people installing the package to decide whether to accept the new key? If NPM merely warns people installing the package, the situation is again barely better than an NPM-provided shasum. |
|
PGP key servers:
hkps.pool.sks-keyservers.net wwwkeys.pgp.net pgp.mit.edu
There are plenty more. You upload a public key, they relay them around. Read all about it.
http://pgp.mit.edu/faq.html
You can also attach an email address to the public key. You can send an encrypted email to that address and get an encrypted response back proving that the owner of that address has a copy of the private key. Now you just have to trust that package-signer@npmjs.org or whoever can keep his private key safe. You can even store a private key on a Yubikey device to limit theft of the private key to the theft of a physical token.
Not having gpg signed packages is bad enough. Actively discouraging them and denying that pull request is mind-blowing to me personally. The idea that they are going to invent a better scheme is dangerous. They will screw it up, just like everybody else who ever tried that.
Schneier's Law: Any person can invent a security system so clever that he or she can't imagine a way of breaking it.