Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Git-signatures – Multiple PGP signatures for your commits (github.com/hashbang)
75 points by Couto on Feb 17, 2019 | hide | past | favorite | 14 comments


A similar idea was described in 2015: https://grimoire.ca/git/detached-sigs


Looks like a really cool approach for git-tag based release management in a CI level.

TIL about git-notes which looks pretty neat.


Is there anything out there that doesn't need GPG? Having a working GPG install is a huge lift for developers.


I take this to mean: apart from the barnacles on GPG, could there be a system which does what GPG does for software development (signing), without the non-functioning web-of-trust of GPG, or the hierarchical system of x509 signing? Something that deals with lost keys, compromised keys/accounts, loss of DNS control, MitMing, MitBing, etc?

I think it is probably in the class of problems where there are no great foolproof solutions. However, I can imagine that techniques like certificate transparency (all signed x509 certificates pushed to a shared log) would be quite useful. Even blockchain techniques. Maybe send someone to check on me, I'm feeling unwell having written that.


> I think it is probably in the class of problems where there are no great foolproof solutions. However, I can imagine that techniques like certificate transparency (all signed x509 certificates pushed to a shared log) would be quite useful.

Securing DNS: "https://news.ycombinator.com/item?id=19181362"

> Certs on the Blockchain: "Can we merge Certificate Transparency with blockchain?" https://news.ycombinator.com/item?id=18961724

> Namecoin (decentralized blockchain DNS): https://en.wikipedia.org/wiki/Namecoin


(Your first link is broken.)

My main problem with blockchain is the excessive energy consumption of PoW. I know there are PoS efforts, but they seem problematical.

I like the recent CertLedger paper: https://eprint.iacr.org/2018/1071.pdf


My mistake. How ironic. Everything depends upon the red wheelbarrow. Here's that link without the trailing ": https://news.ycombinator.com/item?id=19181362

> My main problem with blockchain is the excessive energy consumption of PoW. I know there are PoS efforts, but they seem problematical.

One report said that 78% of Bitcoin energy usage is from renewable sources (many of which would otherwise be curtailed and otherwise unfunded due to flat-to-falling demand for electricity). But PoW really is expensive and hopefully the market will choose less energy-inefficient solutions from the existing and future blockchain solutions while keeping equal or better security assurances.

>> Proof of Work (Bitcoin, ...), Proof of Stake (Ethereum Casper), Proof of Space, Proof of Research (GridCoin, CureCoin,)

The spec should be: DDOS resiliant (without a SPOF), no one entity with control over API and/or database credentials and database backups and the clock, and immutable.

Immutability really cannot be ensured with hashed records that incorporate the previous record's hash as a salt in a blocking centralized database because someone ultimately has root and the clock and all the backups and code vulnerable to e.g. [No]SQL injection; though distributed 'replication' and detection of record modification could be implemented. git push -f may be detected if it's on an already-replicated branch; but git depends upon local timestamps. google/trillian does Merkle trees in a centralized database (for Certificate Transparency).

In quickly reading the git-signatures shell script sources, I wasn't certain whether the git-notes branch with the .gitsigners that are fetched from all n keyservers (with DNS) is also signed?

I also like the "Table 1: Security comparison of Log Based Approaches to Certificate Management" in the CertLedger paper. Others are far more qualified to compare implementations.


keybase.io is a really solid approach for trusting that a given key is owned by a certain person. Basically, it's a centralized registry to list your keys, and you can publish proof of key-ownership on any website/social media that you own. So anyone can look up my public key from my twitter or github, and know that they're both me.

Some people object to it because it lets you store your keys with them (encrypted with a passphrase), but that's always been optional.


Extra requirements: - Not trusting one company/hosting provider (like keybase/AWS).

- Works for periodically or totally offline signing and verification.

- Not be an ephemeral record (like a tweet) or undated. - Not require memorisation of very long passphrases.

- Not be subject to mass compromise (i.e. like a bug in a Bitcoin wallet code on android).


https://goo.gl/images/Mww5SR

You read my mind. I'd love if it could be rooted in a Yubikey.

Decoupling the "signing" and "verifying" parts seem like a good idea. As random Person signs something, how someone else figures out how to go trust that signature is a separate problem.


Afaik, you can install keys for use with gpg[1] on modern yubi keys.


> I'd love if it could be rooted in a Yubikey.

FIDO2 and Yubico helped develop the new W3C WebAuthn standard: https://en.wikipedia.org/wiki/WebAuthn

But WebAuthn does not solve for WoT or PKI or certificate pinning.

> Decoupling the "signing" and "verifying" parts seem like a good idea. As random Person signs something, how someone else figures out how to go trust that signature is a separate problem.

Someone can probably help with terminology here. There's identification (proving that a person has the key AND that it's their key (biometrics, challenge-response)), signing (using a key to create a cryptographic signature – for the actual data or a reasonably secure cryptographic hash of said data – that could only could have been created with the given key), signature verification (checking that the signature was created by the claimed key for the given data), and then there's trusting that the given key is authorized for a specific purpose (Web of Trust (key-signing parties), PKI, ACME, exchange of symmetric keys over a different channel such as QKD) by e.g. signing a structured document that links cryptographic keys with keys for specific authorized functions and trusting the key(s) used to sign said authorizing document.

Private (e.g. Zero Knowledge) blockchains can be used for key exchange and key rotation. Public blockchains can be used for sharing (high-entropy) key components; also with an optional exchange of money to increase the cost of key compromise attempts.

There's also WKD: "Web Key Directory"; which hosts GPG keys over HTTPS from a .well-known URL for a given user@domain identifier: https://wiki.gnupg.org/WKD

Compared to existing PGP/GPG keyservers, WKD does rely upon HTTPS.

TUF is based on Thandy. TUF: "The Update Framework" does not presume channel security (is designed to withstand channel compromise) https://en.wikipedia.org/wiki/The_Update_Framework_(TUF)

The TUF spec doesn't mention PGP/GPG: https://github.com/theupdateframework/specification/blob/mas...

There's a derivative of TUF for automotive applications called Uptane: https://uptane.github.io

The Bitcoin article on multisignature; 1-of-2, 2-of-2, 2-of-3, 3-of-5, etc.: https://en.bitcoin.it/wiki/Multisignature


If you’re on Mac, GPG Suite suite really simplifies things.


You mean some process other than `brew install gnupg`, or do you mean the silliness around generating and publishing a key (and, of course, later renewing the key)?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: