gniibe at fsij.org
Wed Nov 16 03:25:01 CET 2016
I am a maintainer of Debian Poldi package. I did package it up, so
that people can stop complaining that it is too difficult to build. I
do that to share the work of building the software.
Although I occasionally push some changes to upstream (to keep it
working), I don't want to put my energy to maintain the upstream.
It is somewhat difficult for me to say I'm working for Poldi, as I am
not that positive for this software. Please understand this unclear
situation of mine.
Basically, I can't imagine useful/effective use cases of PAM
authentication by Poldi with OpenPGP card, while I noticed possible
misuses and possible weakness of the implementation.
Having said that, I recently pushed some changes to Poldi. That's
mainly because GnuPG 2.1 deprecated use of the environment variable
I added following entries in poldi/NEWS file.
Changes since version 0.4.1:
* poldi-ctrl is removed
Please use gpg-connect-agent instead.
* For backward compatibility of sudo and screen unlock
In GnuPG 2.1, the environment variable GPG_AGENT_INFO is gone. And
now, Poldi's default is invoking scdaemon directly. Still, there
are use cases (like sudo and screen unlock) which expect connecting
user's gpg-agent. For this purpose, Poldi now distinguishes a case
where pam_username == username_of_process_uid. Only for such a case,
Poldi tries to find scdaemon under gpg-agent.
* Poldi invokes scdaemon to connect it through pipe
Older Poldi has a feature of connecting to scdaemon with help of
gpg-agent using the GPG_AGENT_INFO enviornment variable. In GnuPG
2.1, the environment variable GPG_AGENT_INFO is gone and scdaemon no
longer keeps locking the reader after card removal, it is good to
always invoke scdaemon for the authentication by default. If there
is an existing scdaemon with card inserted, a failure is expected
and this is safer fallback. That's because Poldi should not connect
to a smartcard which is in use for other purpose and possibly
I got a report that my change breaks a use case:
* In the system, Poldi is configured for su. A public key of auth
key is registered in /etc/poldi/localdb for "root".
That is, the system allows use of "su" service to the holder of
the auth private key.
* A user has an OpenPGP card with signing key, decryption key and
* The card is in use by gpg-agent for a user for signing/decryption.
* When typing "su -" to become superuser, it is the intention of
the user to use the auth key in the card.
I don't know how/if Poldi can support this use case correctly. It's
too difficult to solve for me. I need your help.
(If I were the user and the admin of the system, I'd configure sudo
for Poldi and use "sudo -i".)
I think that it's not good in general for Poldi to connect to existing
scdaemon; The scdaemon could be malicious one to steal other persons
PIN (if it's shared computer).
More information about the Gnupg-devel