Loriano Storchi's HomePage


[Home] [CV and Research] [Any Other Business] [Where Contact Info] [Lecture Notes]

OpenPGP Card
Brevi note per l'uso della card come chiave di accesso a server SSH.


Avvia knoppix (prima in rete, dopo disconnesso):

# apt-get update
# apt-get install pcscd cryptsetup gpgsm


se vogliamo usare anche un filesystem crittato per la copia su file della chiave:

# apt-get install cryptsetup
# modprobe dm_mod


i.e. monta disco crittato


# DIM = blockdev --getsize /dev/sdc1
# crypsetup -y -b $DIM create usb /dev/sdc1
# mount /dev/mapper/usb /mnt


Crea chiave:

$ gpg --gen-key


scegli chiave RSA 1024 bit. Adesso genera subkey:


$ gpg --edit-key <key ID>


dal prompt selezione addkey e seleziona (6) RSA (encrypt only). Adesso per generare la subkey authetication:


$ gpg --expert --edit-key <key ID>


ancora addkey e seleziona (7) RSA (set your own capabilities) ed a seguire:


Possible actions for a RSA key: Sign Encrypt Authenticate
Current allowed actions: Sign Encrypt


(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished


Your selection? s


Possible actions for a RSA key: Sign Encrypt Authenticate
Current allowed actions: Encrypt


(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished


Your selection? e


Possible actions for a RSA key: Sign Encrypt Authenticate
Current allowed actions:


(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished

Your selection? a

Possible actions for a RSA key: Sign Encrypt Authenticate
Current allowed actions: Authenticate


(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished

Your selection? q


quit per uscire.

Copia su card delle chiavi:

$ gpg --edit-key <key ID>


Command> toggle
Command> keytocard


seleziona: (1) Signature key


Command> key 1
Command> keytocard

seleziona: (2) Encryption key


Command> save


ed ancora:


$ gpg --edit-key <key ID>


Command> toggle
Command> key 2


seleziona: (2) Authentication key


Command> save


salva su filesystem crittato la dir .gnupg da /home/knoppix

Uso della card:

Installare pinentry-gtk e pinentry-qt. Edit ~/.gnupg/gpg.conf aggiungendo use agent. Dalla console digitare:

eval $(gpg-agent --daemon --enable-ssh-support) : avvia agente gpg

a questo punto con ssh-add -L si visualizza la chiave pubblica da appendere al file authorized_keys. E quindi al primo ssh verso la macchina si digita il PIN.

Per usare poi le chiavi della card per crittare e decrittare e' necessario copiarsi il pubring creato durante la generazione della chiave (vedi preparacard.txt)

esportare le vecchie chiavi:

$ gpg --export > oldkeys

copiare il pubring di cui sopra e reimportare le chiavi:

$ gpg --import < oldkeys

script utili. In bash_profile:

come promemoria ricordarsi che questa script potrebbe creare problemi
al forward dell'agent durante accesso da remoto.

if [ -f "${HOME}/.gpg-agent-info" ]; then
  . "${HOME}/.gpg-agent-info"
  export GPG_AGENT_INFO
  export SSH_AUTH_SOCK
  export SSH_AGENT_PID
else
  eval $(gpg-agent --daemon --enable-ssh-support --write-env-file "${HOME}/.gpg-agent-info")
fi


dunque meglio usare:

if [ ! -n "$SSH_CONNECTION" ]; then
  if [ -f "${HOME}/.gpg-agent-info" ]; then
    . "${HOME}/.gpg-agent-info"
    export GPG_AGENT_INFO
    export SSH_AUTH_SOCK
    export SSH_AGENT_PID
  else
    eval $(gpg-agent --daemon --enable-ssh-support --write-env-file "${HOME}/.gpg-agent-info")
  fi
fi


agent-test in bg per rimuovere le identita':

#!/bin/bash

export TEST="The screensaver is active"

while [ 0 -lt 10 ]; do
  export SCREENLOCK=$(gnome-screensaver-command -q | head -n 1)
  if [ "$SCREENLOCK" = "$TEST" ]; then
   if [ -f "${HOME}/.gpg-agent-info" ]; then
    . "${HOME}/.gpg-agent-info"
    export SSH_AGENT_PID
    kill -1 $SSH_AGENT_PID
    killall scdaemon
   fi
  fi
  sleep 10
done


potresti dover rimuovere l'openct:

ububtu bugs


[Home] [CV and Research] [Any Other Business] [Where Contact Info] [Lecture Notes]