Utiliser PGP avec Java et Bouncy Castle

Linux Gazette n�98�—�F�vrier 2004

Graham Jenkins


Table des mati�res
1. Pourquoi le feriez-vous�?
2. Le faire vite et sans affiner
3. The legion of Bouncy Castle
4. Le faire avec Bouncy Castle
5. Am�liorations � venir
6. � essayer

1. Pourquoi le feriez-vous�?

Les derni�res versions (1.4.x) de Java contiennent � la fois les paquetages java.security et javax.crypto, ainsi que leurs sous-paquetages associ�s. Ceux-ci vous permettent de signer un objet et/ou de le crypter. Un outil standard est inclus pour acc�der aux cl�s enregistr�es dans un fichier de cl�s de format propri�taire. Si vous avez une version plus ancienne de Java, il est probable qu'elle comprenne java.security et qu'une version de JCE (Java Cryptography Extension) soit disponible pour celle-ci (visitez le site http://java.sun.com/security). Pourquoi souhaitez-vous utiliser PGP�? Il y a deux raisons�: tout d'abord, vous pouvez �tre amen� � signer ou crypter des informations susceptibles d'�tre �ventuellement lues par un programme non Java. En second lieu, maintenir deux types s�par�s de fichiers de cl�s peut �tre fastidieux.


2. Le faire vite et sans affiner

Si vous avez une version de gpg sur votre ordinateur, utilisez la classe Java Runtime pour l'ex�cuter dans un thread s�par� et lisez le r�sultat par l'interm�diaire d'un objet ��InputStreamReader�� Cette op�ration ne demande pas une grande quantit� de m�moire et vous n'aurez pas besoin d'allouer des fichiers temporaires. Toutefois, le r�sultat est difficilement portable et ce n'est pas la mani�re dont il faut �crire des programmes Java.


3. The legion of Bouncy Castle

The legion of Bouncy Castle a un site web � l'adresse http://www.bouncycastle.org, qui se d�clare lui-m�me comme un ��endroit agr�able o� rester��. Ses membres sont vraiment passionn�s par le cryptage. Ils ont cependant acquis la r�putation d'avoir fourni un bon logiciel de cryptage Java open source. Une de leurs plus r�centes cr�ations est un paquetage qui offre un support d'Open PGP. Les versions concernant JDK�1.2, 1.3 et 1.4 sont disponibles en t�l�chargement sur leur site web.


4. Le faire avec Bouncy Castle

Dans un article intitul� ��Impression s�curis�e avec PGP��, j'ai pr�sent� quelques programmes Perl pour envoyer des t�ches d'impression sign�es avec PGP. Il existe des versions plus r�centes de ces programmes � l'adresse http://www.cpan.org/scripts.

Le probl�me ici �tait qu'il n'y avait pas de mani�re simple d'envoyer des t�ches depuis quelque chose commme un dispositif de r�seau Java. Le paquetage Bouncy Castle offre une solution. Un listing de SEPclient.java y est attach�. Il fonctionne comme son �quivalent Perl trouv� sur le site de CPAN et il serait judicieux que vous lisiez la documentation qu'il contient.

Le programme commence par lire un fichier de configuration d�taillant les adresses auxquelles les t�ches doivent �tre envoy�es, la taille pouvant �tre attribu�e, l'adresse qualifi�e de l'exp�diteur et les h�tes SMTP susceptibles d'�tre employ�s. Il lit aussi la phrase confidentielle GPG de l'utilisateur. Il est normalement ex�cut� par cet utilisateur.

Il copie ensuite une entr�e standard dans un fichier temporaire (pour faciliter le traitement par les routines de Bouncy Castle), extrait la cl� priv�e de l'utilisateur et �crit une sortie sign�e sur un second fichier temporaire. Le message sign� obtenu est alors divis� en deux parties, dont chacune est transmise tour � tour � un ensemble de routines Javamail � fins de r�partition.


5. Am�liorations � venir

Le programme SEPclient.java a �t� cod� dans un but de simplicit� plut�t que d'efficacit�. La partie de l'extraction de la cl� priv�e devra �tre �tendue de fa�on � pouvoir recevoir de multiples cl�s priv�es sur un jeu de cl�s. La copie du fichier et les parties de la mise � jour de la signature devront �tre �tendues pour traiter plus d'un caract�re � la fois. Il y a eu pr�c�demment quelques probl�mes avec des versions pr�c�dentes du fichier bcpg.jar, et vous devrez vous assurer d'avoir au moins la version�1.22b04.


6. � essayer

J'ai constat� que SEPclient.java dans sa forme actuelle fonctionne bien avec ses �quivalents Perl. N�anmoins, ce programme n'emploie qu'un sous-ensemble des capacit�s disponibles avec les paquetages Bouncy Castle OpenPGP. Je vous sugg�re donc de t�l�charger les paquetages OpenPGP, de jeter un coup d'�il � la documentation et de voir ce que vous pouvez en faire.

T�l�charger le listing des programmes.

Copyright � 2004, Graham Jenkins.

Copying license http://www.linuxgazette.com/copying.html.

Paru dans le n�99 de la Linux Gazette de f�vrier 2004.

Traduction fran�aise par Simon Depiets .

Relecture de la traduction fran�aise par Jo�lle Cornavin .