OVH Cloud OVH Cloud

"avalisation" de documents

34 réponses
Avatar
Pierre Goupil
Bonjour =E0 tous !

On me demande actuellement de faire une application qui permettrait de
faire "avaliser" un document =E9l=E9ctronique. La signature
=E9l=E9ctronique, je sais faire mais ce n'est pas ce qu'on me demande. Je
vous explique :

On me demande de faire une application o=F9 un document suit un circuit
pr=E9defini entre diff=E9rents utilisateurs (ce qu'on appelle un
workflow) et o=F9 chaque personne peut "signer" le document qui est
ensuite modifi=E9 par d'autres.

Signer un document signifierait qu'une personne "appose une marque",
qui permettrait ensuite de pouvoir dire de fa=E7on certaine que c'est
bien elle qui a sign=E9, d'une part, et que le document n'a pas =E9t=E9
modifi=E9, d'autre part.

Mais ici on me demande juste d'authentifier le signataire : il faut que
le document puisse ensuite =EAtre modifi=E9, tout en restant sign=E9.

Je ne sais pas comment on appelle ce proc=E9d=E9, aussi lui avons-nous
donn=E9 le nom employ=E9 dans la r=E9alit=E9 : avaliser un document...

Mais plus grave ! Je ne sais pas comment authentifier un document
soumis =E0 modifications. Et on me demande une authentification assez
forte pour pouvoir servir =E0 des administrations.

Je pense actuellement =E0 un syst=E8me o=F9 on signerait (au sens propre)
le document =E0 chaque =E9tape du workflow, puis o=F9 on journaliserait
chaque modification. Deux probl=E8mes :

-D'abord, il faut sauvegarder chaque modification de chaque fichier, ce
qui devient vite lourd, m=EAme en effa=E7ant r=E9guli=E8rement les
"vieilles" versions.

-Ensuite, si on peut effectivement garantir que telle ou telle version
du document a bien =E9t=E9 sign=E9e par telle personne, comment garantir
le circuit ? Car on veut aussi pouvoir certifier qu'apr=E8s que Bob ait
sign=E9, le document a =E9t=E9 re=E7u par Alice.

Voil=E0 ma probl=E9matique. Quelqu'un aurait-il une id=E9e ?


Pierre Goupil

10 réponses

1 2 3 4
Avatar
Pierre Goupil

Excusez moi mais je crois que je comprends mal. Voulez-vous dire
que l'on demande à quelqu'un de SIGNER (donc donner son aval) un
document SANS en connaitre le contenu final ? C'est plutot étrange.


Oui, je suis d'accord le principe est assez étrange. Mais il s'agit
juste d'empêcher quelqu'un de dire qu'il n'a pas eu le document, pas
de garantir ce qu'il a signé.



Ne serait-ce pas plus logique, et sécurisant, de faire effectuer
deux tours au document ? Un premier tour ou chacun apporterait les
modifications puis un second tour "de signature" ou chacun
confirmerait son accord avec le contenu et ou le document serait "non
modifiable" dès que la première signature aurait été aposée.


J'y ai pensé mais le temps de ma maîtrise d'ouvrage doit être trop
précieux : ils refusent qu'un document refasse un deuxième tour s'il
n'est pas modifié.

Comme j'ai dit, le principe est que l'on a confiance en ce que le
document deviendra après soi. L'idée est que l'on définit un circuit
et que l'on contrôle ensuite s'il a été bien suivi. On ne veut donc
pas certifier le contenu du document, juste son circuit.

Tes impressions ?

Avatar
Philippe Martin
Pierre Goupil wrote:


Et bien, j'y ai un peu pensé aussi, mais cela me paraît beaucoup plus
lourd et surtout je n'aime pas trop cette dépendance à un produit
externe.

Pour la dépendance, je peux m'arranger, étant donné que les
solutions libres ne manquent pas..

Mais quand je parle de lourdeur, c'est parce que je travaille sur des
fichiers de virtuellement n'importe quel type : et une analyse de
différence sur un fichier Word, j'avoue que je ne sais pas trop ce que
cela peut donner ! :s

Je vais me renseigner plus avant.

Merci !

Pierre




Est-ce qu'un système de gestion de source genre SubVersion ou Arch
acceptant de faire de la signature ne suffirait pas ?
En le mettant sur un serveur tu dois pouvoir assurer la traçabilité et
en le "customisant" (via les hooks de SubVersion par exemple) tu dois
pouvoir également forcer le fait que le document doivent passer par une
personne avant une autre.



Note que les sources de svn sont disponibles (pour la pérénité).

Philippe


Avatar
Patrick 'Zener' Brunet
Bonjour.

Je réponds à Pierre Goupil
Bonjour à tous !

On me demande actuellement de faire une application qui permettrait de
faire "avaliser" un document éléctronique. La signature
éléctronique, je sais faire mais ce n'est pas ce qu'on me demande. Je
vous explique :

On me demande de faire une application où un document suit un circuit
prédefini entre différents utilisateurs (ce qu'on appelle un
workflow) et où chaque personne peut "signer" le document qui est
ensuite modifié par d'autres.
[...]


J'ai eu une longue journée de ménage binaire, alors je vais essayer de faire
simple mais pas trop simpliste...

En fait si je comprends bien:

- Chaque personne doit signer un état du document à un moment donné.

- Ce qui est demandé, c'est de valider le fait que le document a bien suivi
le workflow.

- Le fait de conserver l'historique des modifications est secondaire, et
peut être sous-traité à une autre partie de l'outil (beaucoup l'embarquent
par défaut, Word par exemple a son mode de gestion des modifications)...
Mais s'il y a litige on peut imaginer de localiser l'erreur en refaisant les
modifications et en comparant avec les signatures...

Dans cette logique il me semble que chaque signature doit être un certificat
attaché au document, et composé:

- d'une clé identifiant le signataire (sa clé publique par exemple),
- d'un hash cryptographique calculé sur l'état courant du document,
- d'un hash cryptogaphique calculé sur la (ou la chaîne de) signature
précédente au sens du workflow,
- l'ensemble de ce certificat étant indissociable et scellé par la clé
privée du signataire,
- les certificats étant en plus numérotés en clair pour un bon enchaînement.

Dans ces conditions, il est a priori garanti que :

- chaque signature est inviolable, non déplaçable, et garde la trace de ce
qu'elle a avalisé,
- le document reste librement modifiable,
- le suivi des modifications peut se faire selon la méthode de votre choix,
- en cas de litige, ce suivi n'est pas nécessaire pour localiser le chaînon
litigieux dans le workflow (parole des précédents contre parole des
suivants),
- si l'enjeu nécessite une preuve formelle de la faute, alors il est
possible de refaire l'historique en validant chaque étape par comparaison
avec les hash signés.

J'espère que je n'ai pas fait la grosse bévue :-)

Votre avis ?

Cordialement,

--
/***************************************
* Patrick BRUNET
* E-mail: lien sur http://zener131.free.fr/ContactMe
***************************************/

Avatar
Pierre Goupil
Bingo ! C'est tout-à-fait ce que je voulais ! Merci beaucoup !
Avatar
godin.v
Je crois comprendre qu'il faut associer un UUID au document et faire
signer cet UUID et la date (inutile de calculer un hash du document).
Mais il nous manque des données importantes pour comprendre le projet
: c'est l'architecture globale du système : où sont placés les
signatures ? Dans le document, dans un flux associé, dans une base de
données...?

Bon courrage
Avatar
Pierre Goupil
Bonjour !

Pourrais-tu, stp, préciser ce que tu appelles un UUID ?

Pour ce qui est des signatures, je prévois qu'elle soient stockées
sur le serveur. Le but est de tout gérer informatiquement, pour
masquer la complexité afin que les utilisateurs aient juste à rentrer
leur mot de passe au moment de signer. Je ne leur demande pas de
s'impliquer en ayant la moindre connaissance de la cuisine interne,
juste en se rendant compte qu'ils prennent un réel engagement, quand
ils signent.

Pierre




Je crois comprendre qu'il faut associer un UUID au document et faire
signer cet UUID et la date (inutile de calculer un hash du document).
Mais il nous manque des données importantes pour comprendre le projet
: c'est l'architecture globale du système : où sont placés les
signatures ? Dans le document, dans un flux associé, dans une base de
données...?

Bon courrage


Avatar
Emile

Bonjour !

Pourrais-tu, stp, préciser ce que tu appelles un UUID ?

Je me posais la même question. En surfant sur internet, on trouve

http://www.zopevillage.com/contributions/index_html/uuidgen
J'ai appris du neuf

Emile

Avatar
Emile

Bonjour !

Pourrais-tu, stp, préciser ce que tu appelles un UUID ?

Je me posais la même question. En surfant sur internet, on trouve

http://www.zopevillage.com/contributions/index_html/uuidgen
J'ai appris du neuf

Emile

Avatar
Patrick 'Zener' Brunet
Bonjour.
(j'ai remis dans l'ordre)

Je réponds à Pierre Goupil

Je crois comprendre qu'il faut associer un UUID au document et faire
signer cet UUID et la date (inutile de calculer un hash du document).
Mais il nous manque des données importantes pour comprendre le projet
c'est l'architecture globale du système : où sont placés les
signatures ? Dans le document, dans un flux associé, dans une base de

données...?

Bonjour !


Pourrais-tu, stp, préciser ce que tu appelles un UUID ?



En principe, c'est Universally Unique IDentifier, c'est à dire un record
garanti unique en lieu et en date.
En pratique on ne peut que l'approximer (probabilité de collision
statistiquement infime), et si on est un puriste on appelle ça un GUID
(Globally...).

Mais ce genre de chose sert à immatriculer de manière garantie unique une
entité dans un écosystème où ont lieu des nommages concurrents et non
concertés (sans distributeur d'ID centralisé).

Ca ne s'applique pas forcément au problème car il est bien nécessaire de
calculer un hash sur l'ensemble du document dans son état courant, afin de
le signer de manière irréversible. Immatriculer la version ne la protègerait
pas d'une correction a posteriori et insérée "au-dessus" de la signature.

Par contre les certificats peuvent être simplement annexés directement ou
virtuellement (et non incorporés) au document, à moins que les perdre au
passage soit un scénario d'attaque crédible.

Pour ce qui est des signatures, je prévois qu'elle soient stockées
sur le serveur. Le but est de tout gérer informatiquement, pour
masquer la complexité afin que les utilisateurs aient juste à rentrer
leur mot de passe au moment de signer. Je ne leur demande pas de
s'impliquer en ayant la moindre connaissance de la cuisine interne,
juste en se rendant compte qu'ils prennent un réel engagement, quand
ils signent.



C'est exactement ce que je voulais dire en écrivant que la reconstitution de
l'historique avec vérification des tags ne serait nécessaire qu'en cas de
litige. A priori l'irréversibilité connue de l'enchaînement des signatures,
mettant en évidence le point d'anomalie (avant même de chercher à la
caractériser) sera dissuasif dans la plupart des cas.

Il vous appartient de décider par quel moyen "light" assurer la sauvegarde
des différentiels de versions. L'algorithme du file compare peut s'appliquer
même à du binaire, sinon on peut imaginer que chacun conserve sur sa machine
et sous forme compressée la dernière version de la copie qu'il a signée,
durant un temps suffisant pour boucler le cycle du document. Si je devais
répondre des éventuelles conneries des autres, j'aurais tendance à le faire
de moi-même !

Cordialement,

--
/***************************************
* Patrick BRUNET
* E-mail: lien sur http://zener131.free.fr/ContactMe
***************************************/



Avatar
Pierre Goupil
Je viens de faire moi aussi des recherches sur les UUID. Et j'avoue ne
pas trop voir le bénéfice : gain de place en n'ayant pas à stocker
chaque version du document ?

Il y a sûrement quelque chose à en faire, mais quoi ?
1 2 3 4