La preoccupazione per il testo ripetibile in Git si impegna a ridurre lo spazio dei nomi e indebolire la chiave GPG

3

Ho bisogno di aiuto con due problemi PGP / GPG:

  1. Assicurandoti che il mio modo di pensare sia corretto (cioè, ho davvero bisogno di un'altra sottochiave GPG per il mio scenario)
  2. Assicurandoti di creare correttamente la sottochiave senza compromettere i miei attuali tasti (bonus a eventuali critiche / suggerimenti costruttivi extra dai dati esposti)

SCENARIO GPK SUBKEY

Uso la mia chiave GPG per:

  1. Crittografia e / o firma di alcune conversazioni via email
  2. Firma il mio Git si impegna

C'è stato qualcosa che mi ha infastidito da un po 'ora riguardo all'uso della stessa chiave per entrambi.

Come sottolineato nel film di Alan Turing, "The Imitation Game" (2014), i messaggi codificati Enigma sono stati decifrati solo dopo che il namespace è stato abbattuto drammaticamente. La macchina sviluppata da Turing non poteva provare abbastanza combinazioni prima che i cifrari venissero cambiati. Tuttavia, riducendo drasticamente lo spazio dei nomi, sono stati in grado di decifrare i messaggi.

Il modo in cui lo spazio dei nomi è stato abbattuto è stato trovare una frase nota per essere presente in ogni messaggio in codice. Ancora una volta, riferendosi al film di Turing, se ricordo bene, questa frase era "Heil Hitler" firmata in fondo a ogni messaggio tedesco.

La crittografia di un messaggio di posta elettronica non mi riguarda poiché le intestazioni di posta elettronica tipiche non fanno parte del messaggio che viene crittografato. Tuttavia, se si osserva la struttura interna di un commit Git, contiene sempre "tree", "author" e "committer". E, ad eccezione di un commit, include sempre anche "parent".

Inoltre, possiamo supporre che "autore" e "committer" saranno spesso gli stessi. Nell'esempio sotto "Glen Jarvis". Ecco un esempio di messaggio di commit firmato che ho creato di recente (i messaggi di commit non firmati avevano la stessa struttura dei messaggi di commit firmati - mancano solo la chiave "gpgsig" e il suo seguente valore multilinea):

    tree 29d37a46658eaeb764b587a105be5eabc2d6a641
    parent 45646279562c74461e7237104e9f335ac3054635
    author Glen Jarvis <[email protected]> 1500272497 -0700
    committer Glen Jarvis <[email protected]> 1500272497 -0700
    gpgsig -----BEGIN PGP SIGNATURE-----

     iQIcBAABAgAGBQJZbFd3AAoJEJF24vsEed5ckiEP/26n9kfkwx2i0z+hhlDTytYP
     qlFvHRgv4djOQCZkbDiRU5PS3G5dS9LQpVJ/bHrXLKfUPhB/pux64XEv+mTRqrk3
     ncgGt0sEWoIaZhHhY5Cyc+2MCoNgDCIxSexP7X5bvxRwO1cGeuJ4AfmcL/Fp+xRz
     vFaPINSZJMvXqJBFnnNFltFFSe4HRA+wloTLyk9zpJ7LnOKMHNbkPCxmf2dqBjmL
     ZEi9VFM9r0EYmXmZSF1KThCXy2dZDMPhRhe8VwPXQ8jXMSChhwSD+wFT79+xF/Fg
     hq2vpD9vkqcYUfucobNzz7T17Fr7ICuZvhGXxOwYk079p9SyPpN9U3VuqayEyV6O
     B49J8tcblu1XfrGh151Lhp6Fjr2TbKecnB2q/XgaH7MsaR99xt1UFaKVlMtbTn95
     vqTSieyG3IPSjp+17oXev83IHXMvIKCetx5r3D9vUrKd4HVPAzzjfDjSO99Smz2J
     2UKHep7da0SOpN/bn/x13CzYW9MCtN0FFAYogIuDu61HnlhOik+WqMm+uCvgmtzm
     0BdSEPAn9udvpAkHRcEd3a2JYABvheEjgDhqWLy9iL1Z+wKP9Sz5Mh9xYVI6AA8V
     Cs6vyYJqoS5GRGh0UNR26hafpCcIbXZLjXVkxWVzZGYqHpf+adBOiOmrtRF87Fz4
     3hgDVlhzTagHBw3HEmWD
     =juvL
     -----END PGP SIGNATURE-----

    Switch to Wheel format

La mia preoccupazione è che, utilizzando la stessa chiave GPG per firmare questi messaggi di commit e codificare / firmare i messaggi di posta, sto indebolendo la mia chiave in modo che i miei messaggi di posta elettronica possano essere più facilmente decifrati. I miei commit Git sono disponibili pubblicamente su GitHub. Il mio modo di pensare suona?

CREAZIONE SUBKEY

Supponendo che il mio pensiero sopra sia corretto e questa è una preoccupazione, ho bisogno di aiuto per creare la sottochiave corretta. Posso crittografare i miei messaggi email con F27C . E, posso firmare i miei messaggi di commit con una sottochiave se riesco a crearlo correttamente. Ho già capito come configurare Git per scegliere quale sottochiave usare nella firma.

Ecco un elenco delle mie chiavi pubbliche (alcune sono chiaramente scadute, sono state ruotate nel tempo e sono qui solo per riferimento):

    $ gpg --list-keys [email protected]
    pub   rsa2048 2012-05-28 [SCEA]
          F27CA351FD010F450D2B1431DBCBDF2F36703FB2
    uid           [ unknown] Glen Jarvis (glenjarvis.com) <[email protected]>
    uid           [ unknown] [jpeg image of size 7125]
    sub   rsa4096 2016-06-05 [S] [expires: 2021-06-04]

    pub   rsa2048 2012-05-07 [SCEA]
          B560A0D698E1E0267AA81F7DACD3887417F3CCD7

    pub   dsa1024 2008-05-25 [SCA]
          8D6D27687BA839C9C88F4FE50B00116142CE11B6

    pub   dsa1024 2010-04-03 [SC]
          63A1BBC8DCC51CA5E7CA1A4889B35CEFA08FF5FD
    uid           [ unknown] Glen Jarvis <[email protected]>
    sub   elg1024 2010-04-03 [E]

Disponibile anche su Keybase

BONUS

Qualsiasi consiglio non richiesto (dai dati esposti in questa domanda) è anche benvenuto.

    
posta Glen Jarvis 21.08.2017 - 05:34
fonte

2 risposte

2

TL; DR: No.

Quando firmi il tuo commit, ciò che stai facendo è crittografare un hash su un testo con la tua chiave privata (consentendo così ad altri di decrittografarlo con la tua chiave pubblica e confrontare l'hash con l'hash che costruiscono sullo stesso testo.

Poiché le funzioni di hash crittograficamente sicure cambiano in modo significativo nei risultati quando piccole parti dell'input cambiano, le ripetute parole nel testo in chiaro firmato non rappresentano un problema.

Inoltre, confrontare la crittografia moderna con l'enigma non è in realtà ragionevole.

Anche se hai crittografato lo stesso testo diverse volte, avresti comunque finito con diverse crittografie. Questo perché la crittografia moderna è progettata per resistere ai cosiddetti attacchi in chiaro (e ogni crittografia è indistinguibile dai dati casuali). Questo ha qualcosa a che fare con le modalità di cifratura a blocchi.

Non sono sicuro se questo è l'impostazione predefinita in GPG, ma in genere i sistemi crittografici asimmetrici come GPG utilizzano effettivamente la crittografia ibrida: si crea una chiave casuale e si cripta quella chiave con la chiave pubblica del destinatario. Il messaggio viene quindi crittografato con un codice a blocchi (come AES) in una buona modalità di funzionamento (come CBC, in cui il risultato di ciascun blocco influenza il blocco successivo) utilizzando la chiave creata in modo casuale da prima.

Quindi, anche lo stesso identico messaggio per lo stesso destinatario non produrrà lo stesso testo cifrato, come con l'enigma. anche i messaggi parzialmente uguali non sono un problema.

Modifica per bonus: le sottochiavi non fanno parte del protocollo OpenPGP e quindi non sono compatibili con tutte le implementazioni di OpenPGP, quindi sii pronto a correre dei problemi quando qualcuno non usa GPG ma PGP.

    
risposta data 21.08.2017 - 06:15
fonte
0

Sono felice che il film di Alan Touring ti abbia fatto pensare alla crittografia! Ma questo è stato 70 anni fa e la crittografia ha fatto molta strada da allora.

Il tipo di attacco di cui parli è un attacco contraffatto della firma digitale . Entrambi gli algoritmi di firma che stai utilizzando, RSA e DSA sono (a mia conoscenza) completamente immuni da questi tipi di attacchi di fuga di dati.

In questo giorno ed età è praticamente impossibile per un utente malintenzionato craccare una chiave privata; è molto più facile trovare sul computer portatile un software senza patch che presenta una vulnerabilità nota, eseguire l'hacking e copiare il file della chiave privata;)

Per essere serio per un minuto, devi anche considerare se valga la pena e il tempo necessario per un aggressore. Essere in grado di falsificare la tua firma ha qualche vantaggio economico per loro? Ad esempio, usi quella chiave per firmare i pacchetti per apt o yum ?

    
risposta data 21.08.2017 - 06:12
fonte

Leggi altre domande sui tag