Guide d`intgration des APIs CPS - esante.gouv.fr, le portail de l`ASIP

Transcription

Guide d`intgration des APIs CPS - esante.gouv.fr, le portail de l`ASIP
GUIDE-51.doc
01/09/2004 2:43
GR
ER
ET
PU B
L IC
Fichier Word :
Enregistré le :
OU
T
’IN
PEM EN T D
GUIDE D'INTEGRATION
des Services Logiciels
de la CPS
Version 5.1 du 09 décembre 2003
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 1 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
SOMMAIRE
1
Introduction ................................................................................................................. 6
2
Bibliographie ............................................................................................................... 6
3
Définitions.................................................................................................................... 7
4
Abréviations................................................................................................................. 9
5
Définitions sur la carte "CPS" .................................................................................. 10
5.1
5.2
Cycle de vie de la carte "CPS"........................................................................................................................... 10
5.1.1
La phase administrative d'une "CPS" .......................................................................................................... 10
5.1.2
La phase d'exploitation de la "CPS" ............................................................................................................ 10
5.1.3
La fin de vie de la "CPS" ............................................................................................................................. 10
Données de la carte "CPS"................................................................................................................................. 11
5.2.1
Le visuel de la carte "CPS".......................................................................................................................... 11
5.2.2
Les données internes de la carte "CPS" ....................................................................................................... 12
5.3
Notions sur l'algorithme RSA à clé publique de la CPS .................................................................................. 14
5.4
Certificat X.509 des clés publiques de la CPS................................................................................................... 15
5.5
La CPS et la confidentialité ................................................................................................................................ 17
6
Les services de la carte CPS.................................................................................... 18
6.1
Procédures liées à la CPS.................................................................................................................................... 18
6.2
Les services de lectures des données .................................................................................................................. 19
6.3
Tables de codification des données de la "CPS" .............................................................................................. 24
6.4
Les services cryptographiques ........................................................................................................................... 25
6.4.1
Services liés à l'authentification de la "CPS"............................................................................................... 25
6.4.2
Services liés à la signature électronique ...................................................................................................... 26
6.4.3
Services de gestion des certificats X.509 des clés RSA .............................................................................. 28
6.5
Services de gestion de la carte ............................................................................................................................ 30
6.6
Services de gestion des sessions .......................................................................................................................... 32
6.7
Services de gestion du code porteur................................................................................................................... 33
6.8
Intégration des services....................................................................................................................................... 35
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 2 / 74
GIP "CPS"
7
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
6.8.1
Structure interne des services ...................................................................................................................... 36
6.8.2
Code retour des services .............................................................................................................................. 38
6.8.3
Paramètre d'état de la carte .......................................................................................................................... 41
6.8.4
Paramètres d'état d'exécutiond'un service .................................................................................................... 41
6.8.5
Performances des services ........................................................................................................................... 41
6.8.6
Recherche d'une solution d'intégration ........................................................................................................ 42
Logiques d'enchaînement des services "CPS" ...................................................... 43
7.1
Définition des types des applications ................................................................................................................. 43
7.1.1
Application "autonome"............................................................................................................................... 43
7.1.2
Applications "intégrées" .............................................................................................................................. 43
7.1.3
Applications "réparties" (poste et central) ................................................................................................... 43
7.2
Services de gestion de la carte ............................................................................................................................ 44
7.3
Services de lecture de données de la carte......................................................................................................... 46
7.4
Services d'authentification de la carte............................................................................................................... 48
7.5
Services de signature électronique ..................................................................................................................... 49
7.6
Services de contrôles de certificat X.509 ........................................................................................................... 50
8
Règles d'installation des logiciels des services "CPS" ......................................... 51
9
Annuaire du GIP "CPS" ............................................................................................ 52
10
Relations entre le Promoteur et le GIP "CPS" ........................................................ 53
10.1
KITs d'intégration et licence d'utilisation des services API........................................................................ 53
10.1.1 Environnements informatiques .................................................................................................................... 53
10.1.2 Description du KIT ...................................................................................................................................... 54
10.1.3 Commande du KIT ...................................................................................................................................... 54
10.2
Formation au GIP "CPS".............................................................................................................................. 55
10.3
Support au GIP "CPS".................................................................................................................................. 55
10.4
Suivi et rapports d'anomalies ........................................................................................................................ 55
11
ANNEXES ................................................................................................................... 56
11.1
Synoptique des services "CPS" ..................................................................................................................... 57
11.2
Synoptique des Codes Retours des services "CPS"..................................................................................... 59
11.3
Performances des Services CPS .................................................................................................................... 61
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 3 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
11.4
Fiche de rapport d'anomalie (RA) ................................................................................................................ 62
11.5
Principales Questions - Réponses .................................................................................................................. 64
11.5.1 Répartition des services sur le poste ou le serveur ?.................................................................................... 64
11.5.2 La carte CPS et la carte VITALE ?.............................................................................................................. 66
11.5.3 Langages de programmation des API's et compilateurs ?............................................................................ 67
11.5.4 Connexion série de lecteurs NF CPS sur le Macintosh ?............................................................................. 69
11.5.5 La CPS et la gestion des dates ? .................................................................................................................. 70
11.5.6 Compatibilités entre les versions de CPS et de KIT ? ................................................................................. 71
11.5.7 Accès à l'annuaire des certificats X.509 ?.................................................................................................... 72
11.5.8 CPS et lecteurs PC / SC ? ............................................................................................................................ 74
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 4 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
FICHE DE SUIVI DU DOCUMENT
Date
Intervenant
Version
11 / 06 / 97
JLB
0.1
18 / 06 / 97
10 / 10 / 97
27 / 10 / 97
31 / 12 / 97
VC
JFL
WI
JLB
JLB
JLB
0.2
0.2
0.2
0.3
0.4
1.0
24 / 08 / 99
JLB
2.1
31 / 05 / 00
30 / 06 / 00
09 / 01 / 01
05 / 02 / 01
04 / 12 / 01
12 / 06 / 02
.. / 06 / 03
LR, JLB
JLB
JLB
JLB
JLB
JLB
JLB
2.2
2.3
4.3
4.3
4.4
5.0
Chapitre(s)
Objet de l'évolution
Création 1ère version
6.2 7.2
9 10 11 annexes
6
7.3
12.5
6.5 7.4.3 8.6
9
11
Refonte
Refonte
Corrections sur V 0.1
Corrections sur V 0.1
Corrections sur V 0.1
Dictionnaire des données de la CPS
Questions / Réponses
La CPS et le chiffrement
Listes d'opposition | blanche
Services de confidentialité
Certificats X.509
Suppression TPC
et toutes leurs conséquences…
Corrections
Remplacement CPDIC par CPTAB
Mise à niveau du KIT 4.3
Corrections éditoriales
Mises à jour KIT 4.45
Corrections éditoriales
CPS2ter ; KIT V 5
1
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 5 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
Introduction
Le présent document a pour objectif de décrire les règles de programmation des Services Logiciels de
la CPS.
Ce document est destiné au Promoteur d'Application qui désire intégrer les Services Logiciels
fournis dans le KIT d'intégration du GIP "CPS".
Les recommandations ou règles décrites sont applicables indépendamment de l'environnement
d'exploitation de l'application.
Le chapitre 5 "Définitions sur la carte "CPS" donne les concepts utiles à connaître pour comprendre
la suite du document.
Le chapitre 6 "Les services de la carte CPS" détaille les fonctionnalités des services.
Le chapitre 7 "Logiques d'enchaînement des services "CPS"" explique au promoteur la logique à
suivre pour l'intégration de ces services dans des procédures.
Les textes écrits en italique sont des compléments ou des précisions donnés à titre informatif
pour une meilleure compréhension générale du sujet.
2 Bibliographie
Les données de la CPS - Allocation des tags et tables de codification.
Les données de la CPS - Fichiers internes après personnalisation.
Manuel(s) de programmation des API des Services CPS
3
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 6 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Définitions
Carte Patient-Assuré : carte pouvant contenir des données administratives et/ou médicales.
Carte de Professionnel de Santé : carte du professionnel de santé, réservée aux Professionnels de
Santé réglementés par le code de la santé publique.
Carte de Professionnel en Formation : carte du professionnel de santé en formation.
Carte de Personnel d'Etablissement : carte émise vers les personnels des établissements de soins :
∗ un établissement de santé répertorié par son N° FINESS,
∗ une société d'exercice libéral répertoriée par son N° SIREN ou SIRET,
∗ un professionnel de santé (exemple : secrétaire médicale, ...) répertorié par son N°
d'identification cabinet.
Carte de Personnel Autorisé : carte destinée aux personnes employées par des établissements qui
ne rentrent pas dans la catégorie d'établissements pouvant déployer des CPE. L'autorisation des
établissements est sous la responsabilité du Ministère de l'Emploi et de la Solidarité.
KIT d'intégration : livré par le GIP "CPS" ce KIT comprend en standard :
- Les logiciels des services "CPS".
- La documentation associée : manuels de programmation.
- Une démonstration de la programmation de ces services.
- L'application de gestion de la CPS.
- [ Un dispositif de lecture de cartes "CPS". ]
- [ Un jeu de cartes "CPS" de tests. ]
Format TLV : méthode de structuration des champs de données de longueurs variables utilisée dans
la carte "CPS". Le premier octet contient le type de donnée, le deuxième la longueur de la donnée
et le troisième la valeur de la donnée.
Masque "CPS" : désigne le "système d'exploitation" des cartes de la famille CPS.
Personnalisation : partie de la Phase Administrative du cycle de vie de la carte qui consiste à
inscrire dans (et à marquer sur) la carte "vierge" les différents éléments (données titulaire et
applicatives, clés secrètes, etc.) pour rendre la carte "opérationnelle" avant sa remise au titulaire.
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 7 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Promoteur d'Application :.le développeur d'applications ou l'intégrateur d'applications qui
exploitent la "CPS" et ses services associés dans ses applications. Il reçoit du GIP "CPS" le KIT
d'intégration.
Service CPS : unité logicielle appelée par l'application pour réaliser des fonctions de la CPS.
Un service est constitué d'une interface API et d'une logique de traitement de la fonction.
4
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 8 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
Abréviations
ASCII
American Standard Code for Information Interchange
API
Application Programming Interface
APDU
Instruction élémentaire exécutée par la carte "CPS"
ATR
Answer To Reset = réponse d'une carte à sa mise sous tension
CPS
Terme générique de la Carte Professionnel du Secteur Santé qui se décline en :
• CPE
Carte Personnel d'Etablissement (obligatoirement de modèle CPE-C)
• CPF
Carte Professionnel en Formation
• CPF-C
Carte Professionnel en Formation dans une structure (le PF est employé de la structure)
• CPS
Carte Professionnel de Santé
• CPS-R
Carte Professionnel de Santé de remplacement (le PS se fait remplacé)
• CPS-C
Carte Professionnel de Santé dans une structure (le PS est employé de la structure)
• CPE
Carte Personnel d'Etablissement dans une structure
• CPA
Carte Personnel Autorisé dans une structure
CS
Clé de Session de chiffrement
FSE
Feuille de Soins Electronique
Kp-aut
Clé publique d'authentification
Ks-aut
Clé secrète d'authentification
Kp-gip
Clé publique de certification par le GIP
Ks-gip
Clé secrète de certification par le GIP
Kp-sgn
Clé publique de signature
Ks-sgn
Clé secrète de signature
Kp-kek
Clé publique d'échange de clé de session
Ks-kek
Clé secrète d'échange de clé de session
PF
Professionnel de santé en Formation
PS
Professionnel de Santé
RSA
Algorithme cryptographique (du nom de ses inventeurs Rivest, Shamir et Adelman)
TLV
Tag Length Value
5
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 9 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Définitions sur la carte "CPS"
5.1 Cycle de vie de la carte "CPS"
5.1.1
La phase administrative d'une "CPS"
La phase administrative de la "CPS" est la phase de création de la carte.
Elle est décomposée en 3 étapes : fabrication du composant, encartage et personnalisation.
Elle aboutit à la mise en exploitation de la carte.
1. Fabrication des composants chez le fondeur, suivi par l'inscription des données du
fondeur.
2. Encartage du composant chez l'encarteur dans un support plastique, suivi par l'inscription
des données de l'encarteur (pré-personnalisation).
3. Personnalisation de la carte chez le personnalisateur : inscription des données porteur et
applicatives. Inscription des secrets (les clés) d'exploitation et de gestion.
5.1.2 La phase d'exploitation de la "CPS"
La phase d'exploitation de la "CPS" correspond à la vie de la carte
Elle est décomposée en 2 étapes : distribution par l'émetteur (le GIP "CPS") et utilisation par le
porteur (le Professionnel de Santé).
Elle se terminera à la fin de vie de la carte.
4. Distribution sous contrôle du centre de gestion de l'émetteur vers le porteur et
gestion de la "liste blanche" des cartes en exploitation et de leurs données publiques.
5. Utilisation par le porteur (vie active de la carte) grâce à des applications développées par
les promoteurs.
Durant son utilisation, la "CPS" peut être mise à jour : des données sont modifiées par le
gestionnaire suivant des procédures sécurisées de télé-actualisation.
5.1.3
La fin de vie de la "CPS"
La fin de vie de la carte "CPS" peut être provoquée accidentellement (panne, perte, vol, opposition)
ou naturellement (renouvellement de carte ou résiliation du contrat du porteur)
6. La fin de vie de la carte "CPS" est un événement qui doit être traité par le centre de gestion
de l'émetteur car il lui permet d'appliquer certaines décisions liées à la sécurité et/ou au
bon fonctionnement du système :
- inscription de la carte en opposition
- gestion de statistiques et suivi du parc distribué, etc...
5.2
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 10 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Données de la carte "CPS"
Chaque carte "CPS" est un objet unique avec une identification bien précise et qui est sous la
responsabilité de son porteur, lui même parfaitement identifié.
Ces identifications carte et porteur se retrouvent sur le visuel et dans les données internes de la
carte.
Il existe 5 types de carte "CPS" correspondant à différentes populations de porteurs :
- la CPS : Carte du Professionnel de Santé réglementé,
- la CPF Carte du Professionnel en Formation,
- la CPE Carte du Personnel d'Etablissement.
La CDE (D=Directeur) est une carte CPE destinée aux responsables d'un établissement.
A ce type CPE destiné aux porteurs du Secteur Santé Social, il faut ajouter les types de cartes
de porteurs autorisés bien que n'appartenant pas à un établissement de soin :
- la CPA : Carte du Personnel Autorisé (GIP "CPS", CPAM, gestion réseau RSS, etc...).
5.2.1 Le visuel de la carte "CPS"
Les cartes CPS, CPF et CPE ont des logos (images) de couleurs différentes suivant le type de carte.
•
Les CPS ont 2 bandeaux d'une couleur associée à leur profession.
•
Les CPF ont 1 bandeau d'une couleur associée à leur future profession.
•
Les autres cartes n'ont pas de bandeau.
Les informations lisibles sur les logos de toutes les cartes sont :
[Raison sociale de la structure (CPE)]
[<Raison sociale>]
cp
Identification de l'émetteur (GIP "CPS")
Identification du porteur
Identité du porteur
Identification de la carte
[Identifiant structure], date d'expiration
80 250 00001 7
{A,D,F,S} 99...99
<code civilité> <NOM> <Prénom>
9999999999
[{A,F,S} 99...99]
expire fin MM/AAAA
L'identification {A,D,F,S} 99...99 du porteur est différente suivant le type de carte
- la CPS A 99999999L
ADELI
- la CPF D 9999999999L
DRASS
- la CPE A 99999999L99/99...99
CABINET + N° Registre (16 c max.)
F 99999999L/99...99
FINESS + N° Registre (16 c max.)
S 99999999L/99...99
SIREN + N° Registre (16 c max.)
S 99999999L 9999L/99...99
SIRET + N° Registre (16 c max.)
(99..99 = caractères alphanumériques ; L = clef de contrôle "Luhn")
5.2.2
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 11 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
Les données internes de la carte "CPS"
5.2.2.1 Structure des données
Les informations inscrites dans la carte "CPS" sont structurées suivant un format "interne" qui
n'apparaît pas au promoteur puisque celui-ci les manipule suivant un format "externe" décrit dans le
manuel de programmation des services "CPS".
La mémoire de la "CPS" est organisée en structure de fichiers, un fichier est référencé par un
identifiant (exemple EF-NOM = 0004).
Chaque fichier se compose d'un en-tête et d'un corps qui contient les données en format TLV.
Il y a plusieurs fichiers dans la "CPS" : chacun est "spécialisé" en fonction des droits d'accès
aux données qu'il contient.
5.2.2.2 Protection d'accès aux données
On peut classer les données de la "CPS" suivant 3 types:
• les données secrètes qui ne ressortent jamais de la carte, comme la valeur du code porteur et les
clés secrètes de calculs de signature, d'authentification…
En plus des clés asymétriques RSA, la "CPS" possède des clés symétriques de gestion qui sont
utilisées (algorithme A3S ou 3DES) pour les opérations de gestion de la "CPS" (mise à jour
sécurisée de données et authentification carte-à-carte).
• les données confidentielles dont la lecture est protégée par la présentation du code porteur.
La lecture de ces données n'est autorisée par la carte que si le code a été présenté avant avec
succès. Dès que la carte est remise sous tension, il faut représenter ce code.
Ces données sont les Situations d'Exercice et de Facturation du porteur.
• les données publiques à lecture libre.
Ce sont toutes les données d'identification de la carte et de son porteur ainsi que les clés
publiques et données de certification de ces clés publiques.
Le promoteur ne dispose d'aucun moyen d'écriture dans la "CPS".
La "CPS" a été conçue pour répondre aux besoins de l'ensemble des promoteurs d'application
qui y trouveront, au travers des services, tous les renseignements nécessaires.
5.2.2.3
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 12 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Les données applicatives
La "CPS" est présentée comme le "passeport" du Professionnel de Santé" : elle contient toutes les
informations caractéristiques d'un acteur du Secteur Santé.
Comme le douanier qui consulte le passeport d'un touriste à la recherche de son identité et du
visa d'entrée dans le pays...
L'application recherchera dans la "CPS" - outre les données d'identification du porteur - la
présence des caractéristiques ou qualités requises pour l'exécution du traitement applicatif
(exemple : recherche de la Situation d'Exercice du porteur dans l'établissement).
Les applications peuvent, par appels des services, récupérer les informations contenues dans la carte
"CPS".
Ces informations sont renvoyées vers l'application sous forme explicite (par exemple, le nom
du porteur) ou sous forme codifiée correspondant à des tables de codification.
Le GIP "CPS" met à disposition des promoteurs un dictionnaire logiciel d'interprétation pour
leur permettre d'afficher "en clair" ces informations codifiées vers l'opérateur mais
l'application doit connaître et exploiter directement ces codes.
5.3
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 13 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Notions sur l'algorithme RSA à clé publique de la CPS
Toutes les "CPS" sont capables d'effectuer des fonctions cryptographiques.
Certaines de ces fonctions sont réservées à la gestion interne de la carte CPS ou à la communication
entre la CPS et d'autres cartes (modules de sécurité ou cartes de patients) et ne sont pas développées
dans ce document.
Ces fonctions sont utilisées durant la personnalisation des CPS et leur actualisation.
Les fonctions cryptographiques mises en jeu par les applications sont l'authentification de la carte par
le monde extérieur et la signature électronique de messages.
Ces fonctions utilisent l'algorithme asymétrique RSA.
Le RSA est un algorithme public qui utilise deux données particulières appelées bi-clés ou couple de
clés : la clé secrète (dite aussi clé privée) Ks et la clé publique Kp :
- la clé Ks est protégée (elle est dans la "CPS" et est utilisée par celle-ci dans les calculs internes),
- la clé Kp est accessible par le monde extérieur et est utilisée pour les vérifications (par les services).
Principe de l'algorithme RSA : il est possible de trouver 3 nombres S, P et M tels que :
Quelque soit a < M, si b = aS Modulo(M) alors a = bP Modulo(M)
Si S et M sont très grands (nombres sur plusieurs centaines de bits), retrouver b et S en
connaissant a et P demande une puissance de calcul colossale !
Le couple de clés généré est Ks = (S,M) et Kp = (P,M).
Dans une "CPS", il y a des couples de clés Ks et Kp correspondant aux fonctions de signature
électronique et d'authentification de la "CPS".
Il est important de bien comprendre le principe de maniement de ces clés secrètes et publiques :
• Lorsque Monsieur "Seul" calcule avec sa clé secrète Ks, lui seul peut le faire et
Monsieur "Tout-le-monde" peut vérifier en utilisant la clé publique Kp de Monsieur "Seul".
...Cas typique des fonctions de signature et d'authentification...
• Lorsque Monsieur "Tout-le-monde" calcule avec la clé publique Kp de Monsieur "Seul",
Monsieur "Seul" est le seul à pouvoir vérifier avec sa clé secrète Ks.
...Cas typique d'une fonction d'échange de clé de confidentialité...
Les clés publiques Kp sont des données accessibles directement dans la carte, ou par le réseau dans
l'annuaire du GIP "CPS" qui publie les certificats X.509 de ces clés.
5.4
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 14 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Certificat X.509 des clés publiques de la CPS
Ce document n'est qu'une introduction à la connaissance des certificats X.509 émis par l'autorité de
certification GIP "CPS" .
En particulier, il ne traite pas de :
•
La Politique de Certification (PC) définissant l’Infrastructure de Gestion de Clés (IGC).
•
La Déclaration des Pratiques de Certification (DPC) énonçant les procédures et pratiques
qu’une autorité de certification utilise dans la gestion des certificats, permettant notamment
de garantir la fiabilité et la sécurité des certificats qu’elle émet.
•
Les règles de vérification de la chaîne de hiérarchie des certificats que doit appliquer
l'application.
La certification de chaque clé publique Kp de chaque carte est une signature RSA calculée par une
autorité (le GIP "CPS") sur un message.
•
Ce message contient les identifications du certificat, de l'autorité, du porteur, de la carte et les
données de la clé publique Kp (règles d'utilisations, dates de validité et valeur de la clé).
•
Le message et sa signature par l'autorité constituent le certificat.
Le calcul de la signature est effectué à l'émission (personnalisation) de la carte par un module
de sécurité qui contient une clé secrète de signature Ks-gip.
La vérification de la signature de ce certificat est effectuée avec la clé publique de signature Kpgip.
La vérification de ce certificat garantit le lien bi-univoque entre Ks, Kp, l'identification de l'autorité,
l'identification du porteur et l'identification de la carte. La vérification d'un certificat consiste en :
1. la vérification de sa signature, suivie de…
2. la vérification que les données signées correspondent à ce que l'on attend.
Cette vérification doit inclure celle de la chaîne de hiérarchie des certificats.
Les certificats des clés Kp de la CPS sont à la norme X.509. Toutes les applications qui intègrent la
sécurité cryptographique et respectent cette norme devraient être capables de s'échanger, vérifier et
exploiter n'importe quel certificat X.509.
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 15 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Le certificat X.509, appliqué à la CPS, est structuré ainsi (au format TLV) :
- Les données du certificat signées (certifiées) :
- Version de référence de la norme X.509 (=V3)
- N° de série du certificat
- Identification de l’algorithme utilisé pour la signature de ce certificat
- Identification de l’émetteur du certificat (GIP "CPS")
- Période de validité du certificat
- Identifications du «sujet» (le porteur)
- Valeur de la clé publique du «sujet»
- Extensions standard, dont :
- Identification de la clé publique de vérification du certificat
- Usage de la clé certifiée (signature, authentification, chiffre)
- Période de droit d'usage de la clé certifiée
- Extensions privées :
- Caractéristiques du PS (code et situation professionnelle...)
- Caractéristiques de la carte (numéro et type...)
- Identification de l’algorithme utilisé pour la signature de ce certificat
- Valeur de signature de ce certificat
La vérification de la signature de ce certificat suppose donc de connaître la valeur de la clé publique
de signature Kp-gip clé correspondant à la clé secrète Ks-gip qui a signé ce certificat.
Cette clé est elle-même certifiée, il faut donc vérifier son certificat, et ainsi de suite jusqu'à
remonter au certificat racine auto-signé de l'autorité de certification : c'est la vérification de la
chaîne de hiérarchie des certificats.
5.5
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 16 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
La CPS et la confidentialité
Les algorithmes cryptographiques permettent d'assurer la confidentialité.
Exemple avec un algorithme asymétrique type RSA :
Monsieur "Tout-le-monde" chiffre un message avec la clé publique Kp de Monsieur "Seul"
Monsieur "Seul" est donc le seul à pouvoir déchiffrer ces messages avec sa clé secrète Ks.
Exemple avec un algorithme symétrique type DES :
Messieurs "Moi" et "Toi" chiffrent et déchiffrent les messages avec une clé secrète C dont ils
se partagent exclusivement la connaissance.
Généralement, des services de confidentialité mettent en œuvre deux types d'algorithmes :
1. L'algorithme asymétrique (ex : RSA) pour s'échanger confidentiellement une clé de session (CS)
grâce à un couple de clés (Kp-kek et Ks-kek) d'échange de clé de session.
2. L'Algorithme symétrique (ex : DES ou 3DES) pour chiffrer et déchiffrer avec cette clé CS les
messages échangés.
Application aux exemples précédents :
Monsieur "Initiateur" génère une valeur de clé CS (une valeur aléatoire) et la chiffre avec la
clé publique Kp de Monsieur "Destinataire" qui est donc le seul à pouvoir déchiffrer cette
information avec sa clé secrète Ks pour retrouver la valeur CS.
Messieurs "Initiateur" et "Destinataire" chiffrent les messages avec la clé secrète CS.
Les chiffrements et déchiffrements sont effectués par des logiciels performants.
Les cartes CPS pouvaient participer à cette confidentialité en étant les gardiennes de ces clés secrètes
Ks-kek. Ce choix n'a pas été fait.
Une des raisons est que seule la carte était alors capable de déchiffrer le message, ceci pouvait
bloquer sa prise en compte pendant toute une absence (ex : congés) de son porteur. Il fallait
alors trouver un moyen de délégation.
Egalement, les produits du marché imposent que les certificats X.509 de confidentialité
possèdent une adresse e-mail. Ceci entraîne des conséquences lourdes à assumer par une carte,
comme la définition d'un couple Clés (Kp, Ks) et certificats pour chaque adresse e-mail…
La solution adoptée est basée sur des clés de confidentialité "partageable" Ks-kek stockées, chiffrées,
sur le poste de travail (ou sur disquette) avec leur certificat. La CPS n'étant nécessaire que pour le
contrôle d'accès à ces clés.
C'est la solution adoptée par les outils de messagerie sécurisée homologués par le GIP "CPS".
6
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 17 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
Les services de la carte CPS
6.1 Procédures liées à la CPS
Les promoteurs d'applications mettent en œuvre une ou plusieurs des procédures suivantes :
• Identification et Authentification du Professionnel de Santé en local sur le poste du Professionnel
de Santé.
L'identification consiste à lire et contrôler les données d'identifications du porteur contenues
dans la carte.
L'authentification - avoir la preuve que l'opérateur présent est bien le porteur de cette carte est réalisée par le contrôle du code porteur.
• Authentification de la carte "CPS" du Professionnel de Santé par une Carte Santé, pour vérifier
l'habilitation d'accès à ses données.
Non implémentée.
• Identification et Authentification du Professionnel de Santé et de sa carte à distance par un serveur
d'un gestionnaire d'applications.
L'identification consiste à recevoir et contrôler les données d'identifications du porteur et de sa
carte lues en local dans la carte.
L'authentification (avoir la preuve que la carte est bien une CPS émise par le GIP "CPS" et
que l'opérateur présent est bien le porteur de cette carte) est réalisée par une procédure
d'authentification (échange de "défi" et "réponse") qui met en jeu l'algorithme asymétrique
RSA.
• Signature de documents électroniques par un Professionnel de Santé en local sur son poste et
vérification d'une Signature par un Professionnel de Santé en local sur son poste ou par un serveur
d'un gestionnaire d'applications.
L'intégrité du message (avoir l'assurance que le message n'a pas été altéré) et la garantie de
non répudiation (être certain de l'identité du signataire de ce message) sont réalisés par la
procédure de signature qui met en jeu l'algorithme asymétrique RSA.
• Confidentialité entre Professionnels de Santé.
La confidentialité de tout ou partie d'un message échangé entre 2 Professionnels de Santé est
assurée par des fonctions de chiffrement / déchiffrement de messages et fichiers.
Certaines de ces procédures sont réalisées par l'enchaînement de services décrits dans ce chapitre.
Chaque service enchaîne des appels à des mécanismes élémentaires du lecteur (commandes au
lecteur) et de la carte (instructions carte).
6.2
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 18 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Les services de lectures des données
• Service CPS_InformationsCarte (informations caractéristiques de la carte)
Identifiant de l’émetteur de la carte
Cet identifiant est unique pour toutes les "CPS" et doit être vérifié par l'application :
" 80 250 00001 7 " = Secteur Santé (80), France (250), GIP "CPS" (0001).
Identification logique de la carte
Cet identifiant est différent et unique pour chaque "CPS" et doit être mémorisé par
l'application.
Catégorie de la carte du Secteur Santé-Social reconnue ("CPS" ou autre, de test ou d'exploitation)
L'application doit contrôler qu'il s'agit bien d'une carte "CPS" et tester s'il s'agit :
- d'une carte d'exploitation ou
- d'une carte de test telle que celles fournies avec le KIT d'intégration.
L'application installée sur une plate-forme d'exploitation doit rejeter les cartes de test.
er
1 jour de validité de la carte
Ce jour correspond à la date de création (personnalisation) de la carte.
Dernier jour de validité de la carte
Une carte est émise pour une certaine durée de validité. La carte n'a aucune notion du temps.
L'application doit tester cette date et rejeter une carte périmée.
La date de fin de validité est actuellement fixée à "3 ans fin de mois" (24 mois à partir de
la date de début, décalée au dernier jour du mois).
• Service CPS_InformationsPorteur (informations caractéristiques du porteur de la carte)
Code civilité
Exemples :
Visuel de la carte
Mme
Mlle
M.
Dr
Valeur dans la carte 22
23
31
13
Libellé (dictionnaire) Madame
Mademoiselle
Monsieur
Docteur
Nom Patronymique
De 2 à 27 caractères.
Nom Marital
De 2 à 27 caractères. Facultatif, non géré actuellement.
Prénoms (1 obligatoirement et 2 autres facultativement)
De 2 à 27 caractères.
Prénom usuel
De 2 à 27 caractères. C'est ce prénom qui figure sur le visuel de la carte
Langues utilisées
De 1 à 4 valeurs maximum et par ordre de préférence, ce code peut être exploité par une
application multilingue.
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 19 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
• Service CPS_InformationsPS2 (informations et caractéristiques professionnelles du porteur)
Type de Carte "CPS" : CPS, CPF, CPE, ou CPA
L'application, ayant reconnu que la carte est une "CPS" (Catégorie de la carte) émise par le
GIP "CPS", mémorise le type de carte : CPS, CPF, CPE, ou CPA
Modèle de Carte "CPS" : carte de remplacement (CPS-R), carte de structure (CPS-C, CPF-C, CPE)
Une carte de remplacement est une carte demandée par un PS en situation libérale qui désire
se faire remplacer (par exemple, durant ses congés).
L'identification du remplaçant sera inscrite dans une Situation d'Exercice par télé mise à
jour sous contrôle du PS et d'un serveur du GIP "CPS".
Une carte de structure est une carte demandée par un établissement pour être utilisée par son
porteur exclusivement dans cette structure.
Cette carte peut être une CPS, une CPF ou une CPE (cas des employés d'un hôpital d'un
laboratoire, d'une officine, d'un cabinet, etc....)
L'identification de la structure est inscrite dans une Situation d'Exercice unique dés la
création (personnalisation) de la carte
Identification nationale du PS (en fait du porteur de la carte)
Cette identification est codifiée (à l'image du visuel de la carte) :
Un entête (1er caractère) précisant le type d'identifiant utilisé (ADELI, DRASS, SIREN,
SIRET...) et codifiée suivant une table GIP "CPS".
La valeur de cet identifiant est structurée en fonction de cet entête.
Code profession
Cette information pour une CPS et une CPF est codifiée suivant une table GIP "CPS".
Code métier
Cette information pour une CPE n'est pas renseignée à ce jour.
Nom d'exercice
2 à 27 caractères. C'est ce nom qui figure sur le visuel de la carte
Spécialité de qualification
Cette information pour une CPS est codifiée suivant une table GIP "CPS".
Une à deux orientations particulières (ex disciplines particulières)
Cette information pour une CPS (médecin) est codifiée suivant une table GIP "CPS".
Spécialisation (ex discipline de spécialisation)
Cette information pour une CPS (sage-femme et d'auxiliaire médical) est codifiée suivant une
table GIP "CPS".
Situation professionnelle
Cette information pour une CPS d'un PS n'exerçant plus est codifiée suivant une table GIP
"CPS".
Une à trois attribution(s) complémentaire(s)
Cette information pour une CPS (médecin et chirurgien-dentiste) est codifiée suivant une table
GIP "CPS".
Une à deux nature de qualification
Cette information pour une CPS (médecin, pharmacien et chirurgien-dentiste) est codifiée
suivant une table GIP "CPS".
Un à deux doublets : compétence et nature de compétence
Cette information pour une CPS (médecin, pharmacien et chirurgien-dentiste) est codifiée
suivant une table GIP "CPS".
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 20 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
• Service CPS_LecSituationPS (informations caractéristiques des situations d'exercices)
Lecture (une à une) des situations d'exercices (accès par numéro physique)
L'exécution de ce service nécessite que le code porteur ait été présenté à la carte "CPS".
Les cartes de modèle C (de structure : CPS-C, CPF-C et CPE) ont obligatoirement une
situation d'exercice décrivant la structure associée.
Une carte de remplacement (CPS-R) à une ou plusieurs situations complétées par l'identifiant
du remplaçant.
Une carte CPF d'un PF qui effectue des remplacements d'un PS à obligatoirement une
situation d'exercice complétée par l'identifiant du remplacé.
Une carte CPS d'un PS qui exerce dans des structures publiques possède des situations
d'exercices décrivant son mode d'activité et éventuellement, sa spécialité dans ces structures.
Une carte CPS d'un PS travaillant dans un cabinet possède une situation d'exercice décrivant
ce cabinet.
Il peut donc exister plusieurs situations d'exercices dans une "CPS". Physiquement,
chacune correspond à un fichier dans la carte.
Chaque fichier (au maximum 15, le nombre réel est donné par le service
CPS_DirSituationPS) est référencé par 2 numéros :
- un numéro logique qui sera utilisé dans les situations de facturation,
- un numéro physique d'accès rendu par CPS_DirSituationPS.
Mode d'exercice
Cette information pour une CPS, CPF ou une CPE est codifiée suivant une table GIP "CPS".
CPS : libéral ou salarié ou remplaçant.
CPF : salarié ou remplaçant.
CPE : libéral (exemple : directeur de laboratoire).
Statut
Cette information est codifiée suivant une table GIP "CPS".
Spécialité d'exercice
Cette information pour une CPS est codifiée suivant une table GIP "CPS".
Nature de qualification
Cette information pour une CPS est codifiée suivant une table GIP "CPS".
Identification de la structure
Cette identification est codifiée comme celle des porteurs :
Un entête (1er caractère) précise le type d'identifiant utilisé (CABINET, FINESS, SIREN,
SIRET)
La valeur de cet identifiant est structurée en fonction de cet entête.
Structure : secteur d'activité
Cette information est codifiée suivant une table GIP "CPS".
Structure : forme juridique
Cette information est codifiée suivant une table GIP "CPS".
Structure : raison sociale
2 à 27 caractères.
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 21 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Tableau des Pharmaciens
Inscription au Tableau du Pharmacien (voir le Code Profession du PS).
Numéro Logique de la Situation
Cette information sera utilisée en liaison avec les situations de facturations.
Identification nationale du PS {remplaçant , remplacé}
Identification du remplaçant pour une CPS-R.
Identification du remplacé pour une CPF d'un PF ou une CPS d'un PS qui effectue un
remplacement.
Cette identification est codifiée :
Un entête (1er caractère) précisant le type d'identifiant utilisé (ADELI, DRASS, etc...) et
codifiée suivant une table GIP "CPS".
La valeur de cet identifiant est structurée en fonction de cet entête.
DateDebSit
Premier jour de validité de cette situation (à contrôler par l'application).
DateFinSit
Dernier jour de validité de cette situation (à contrôler par l'application).
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 22 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
• Service CPS_DirSituationPS
Retourne la liste des différentes situations d'exercices existantes dans la carte.
Références (numéros physiques) des situations d'exercices à utiliser pour leur lecture par le
service CPS_LecSituationPS.
• Service CPS_LecSitFacturation (informations des données liées à la facturation des FSE)
L'exécution de ce service nécessite que le code porteur ait été présenté à la carte "CPS".
Numéro Logique de la Situation
Référence (numéro logique) de la situation d'exercice associée à cette situation de facturation.
Identifiant à utiliser pour la facturation : type d'identifiant - [Identifiant Assurance Maladie]
Suivant le type d'identifiant précisé, prendre pour la facturation :
- soit l'identifiant national du PS lu par CPS_InformationsPS2
- soit l'identifiant de la structure lu par CPS_LecSituationPS
- soit l'identifiant Assurance Maladie qui suit le type.
Informations conventionnelles
Conventionné ou non, avec dépassement ou avec honoraire libre.
Agréments
Pas d'agrément ou code agrément {A,B,C,D,E,F,K,L,M}.
Autorisations de signature des feuilles de soins
Autorisation {oui, non} à signer les FSE et(ou) les lots
• Service CPS_LectureX509
Certificat X.509
La CPS contient 2 certificats X.509 correspondants aux 2 clés RSA
Le certificat est renvoyé sous forme d'une chaîne d'octets binaire pouvant atteindre 2 K octets !
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 23 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
6.3 Tables de codification des données de la "CPS"
Certaines des données retournées par les services de lectures font références à des tables de
codification.
La référence vers ces tables est donnée dans le manuel de programmation.
Le Promoteur trouvera ces tables dans un service logiciel "CPTAB" fourni dans le KIT avec son
manuel de programmation.
Le principe de CPTAB est de retourner à l'appelant un libellé associé à un code dans une table.
Les tables de codification sont externalisées dans un fichier texte (ISO 8859-1) DICO-FR.GIP.
Ce fichier est directement maintenu par le GIP "CPS". Il est ainsi modifiable et diffusable
indépendamment des portages et livraisons des logiciels.
Ce fichier est disponible sur le site du GIP "CPS".
Il est conjointement utilisé comme référence par toute application, dont le logiciel CPTAB,
l'annuaire du GIP "CPS", etc...
Les libellés retournés par CPTAB sont dans du format de la norme ISO 8859-1. Ils ne sont donc pas
systématiquement affichables car chaque OS peut avoir un jeu de caractères différent.
Pour assurer ce service d'affichage dépendant de l'OS, CPTAB offre une fonction de conversion de
chaîne de caractères d'ISO 8859-1 vers l'OS.
Enfin, CPTAB gère 3 index de recherche (1 code principal et 2 sous-codes) dans ses tables.
Si le fichier DICO-FR.GIP est absent sur le poste de travail, CPTAB fonctionne en mode dégradé : il
retourne des valeurs inscrites dans son codage.
Le fichier DICO-FR.GIP est constitué d'un ensemble séquentiel de tables.
Chaque table contient des enregistrements séquentiels constitués de 6 éléments séquentiels :
1.
2.
3.
4.
5.
6.
Code-Table
Code-1
Code-2
Code-3
Lg-Libelle
Libelle
•
Les nombre de tables, nombres d'enregistrements par table, tailles des éléments d'un
enregistrement sont variables.
Chaque enregistrement est terminé par 0x0D0A.
Chaque élément est constitué d'une chaîne de caractères.
Le caractère 0x09 (tabulation) sert de séparateur entre chaque élément.
•
•
•
Nom de référence de la table
1er index d'accès dans la table
2ième index d'accès dans la table
3ième index d'accès dans la table
Nombre de caractères du libellé
Valeur du libellé correspondant au critère d'accès Code-1 Code-2 Code-3
6.4
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 24 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
Les services cryptographiques
6.4.1
Services liés à l'authentification de la "CPS"
La procédure d'authentification de la "CPS" est réalisée par l'enchaînement de 3 services dont le
principe est le suivant :
Le poste et la "CPS" qui veulent accéder à
un système d'information
Le système qui veut authentifier la "CPS"
avant d'ouvrir l'accès
CPS_GenereDefiAuthen
Défi
Défi
CPS_CalculAuthen2
Réponse au défi
Réponse au défi
Défi
Kp-aut (certificat X509)
CPS_VerifAuthen2
Succès ou Echec
Figure 1 : Authentification de la CPS
• CPS_GenereDefiAuthen retourne un défi (valeur binaire aléatoire différente à chaque appel)
Cette valeur est transmise à l'application du poste qui gère la "CPS".
• CPS_CalculAuthen2 fait calculer par la carte la réponse à ce défi.
L'exécution de ce service nécessite que le code porteur ait été présenté à la carte "CPS".
La réponse (calcul cryptographique effectué avec la clé Ks-aut secrète d'authentification) est :
- différente pour chaque valeur du défi,
- différente pour chaque carte.
La réponse est transmise au système qui va la vérifier en temps réel avant d'autoriser l'accès.
• CPS_VerifAuthen2 vérifie la réponse à ce défi.
Le défi, la réponse et la clé Kp-aut (clé publique d'authentification) sont vérifiés par ce service
qui retourne un "diagnostic" VRAI ou FAUX
Cette clé Kp-aut (son certificat X.509) a été lue dans la carte et transmise depuis le poste
ou recherchée par le système dans l'annuaire du GIP "CPS"
6.4.2
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 25 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
Services liés à la signature électronique
La procédure de signature par la "CPS" est réalisée par l'enchaînement de 3 services dont le principe
est le suivant :
L'émetteur et la "CPS" qui signent
Le destinataire qui veut vérifier la signature
[Algorithme à utiliser]
Message
CPS_CondenseMessage
Condensât de l'émetteur
Algorithme utilisé
Condensât de l'émetteur
CPS_CalculSign2
Signature
Algorithme à utiliser
Message
CPS_CondenseMessage
Condensât du destinataire
Condensât du destinataire
Signature
Kp-sgn (certificat X509)
CPS_VerifSign2
Succès ou Echec
Figure 2 : Signature électronique
• CPS_CondenseMessage effectue en local (pas d'accès carte) une empreinte du message à signer.
Le condensât résultat n'est pas une compression, il y a perte d'information. La performance de
l'algorithme de condensation assure que 2 messages cohérents différents ne donneront pas le
même condensât résultat.
Le service retourne à l'application le type d'algorithme de condensât qu'il a utilisé.
Il existe 1 autre service : CPS_CondenseFichier qui effectue ce même calcul de condensât sur
un fichier.
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 26 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
• CPS_CalculSign2 fait calculer par la carte la signature sur ce condensât.
L'exécution de ce service nécessite que le code porteur ait été présenté à la carte "CPS".
La réponse (calcul cryptographique effectué avec la clé Ks-sgn secrète de signature) est :
- différente pour chaque valeur du condensât,
- différente pour chaque carte.
Le message et sa signature ainsi que le type d'algorithme de condensât utilisé sont transmis au
destinataire qui va vérifier (en temps réel ou en temps différé) la signature avant d'accepter et
exploiter le message.
• CPS_CondenseMessage effectue en local (pas d'accès carte) une condensation du message reçu.
Le destinataire effectue le même calcul de condensât supposé que l'émetteur (s'il y a eu
modification du contenu du message le condensât résultat sera différent).
L'application fournit au service le type d'algorithme de condensât a utiliser.
Même chose pour l'algorithme CPS_CondenseFichier.
• CPS_VerifSign2 vérifie la signature sur le condensât calculé.
Le condensât, la signature et la clé Kp-sgn (clé publique de signature) sont vérifiés par ce
service qui retourne un "diagnostic" VRAI ou FAUX
Cette clé Kp-sgn (son certificat X.509) a été lue dans la carte et transmise depuis le poste
ou recherchée par le système dans l'annuaire du GIP "CPS"
6.4.3
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 27 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
Services de gestion des certificats X.509 des clés RSA
La procédure de contrôle des certificats de chaque clé publique Kp d'une carte "CPS" est réalisée par
l'application avant d'effectuer la vérification de la fonction associée à cette clé Kp.
Ceci suppose que le GIP "CPS" ait initialisé ce contrôle durant la personnalisation des "CPS" :
L'émetteur GIP "CPS" de la "CPS"
Commentaires :
Pour chaque carte "CPS"
Génération des couples de clés Ks, Kp
Générateur RSA
Pour chaque couple :
Construction du Certificat X.509
Signature du Certificat X.509
Le GIP "CPS" est l'autorité de certification
Signature RSA avec la clé Ks-gip
Ecriture dans "CPS" :
- Ks
- Certificat X.509
(contient la clé Kp)
Gardée secrète dans la "CPS"
Voir le service CPS_LectureX509
Couple suivant
Sauvegarde dans Annuaire :
- Identifiant de la "CPS"
- Certificats X.509
Carte suivante
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 28 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Le contrôle du certificat X.509 d'une clé Kp par l'application s'effectue en 3 temps :
1.
L'application récupère le certificat X.509 soit par accès à l'annuaire du GIP "CPS" soit par
demande au poste distant qui gère la CPS.
Sur le poste le service CPS_LectureX509 effectue la lecture de ces données.
Le paramètre pValueX509 retourné contient le certificat X.509 sous forme d'une chaîne
d'octets dans laquelle chaque champ (dont la clé Kp publique et la valeur de signature du GIP
"CPS" calculée avec Ks-gip) est présenté sous un format TLV ("Tag", "Length", "Value")
- le "Tag" est l'identifiant du champ,
- la "Value" est la valeur de ce champ sur un nombre d'octets spécifié dans "Length".
2.
L'application effectue le contrôle de la signature de ce certificat par appel du service
CPS_VerificationX509.
Les paramètres pCA_PublicKey_Mod et pCA_PublicKey_Exp contiennent la clé publique de
vérification de la signature. Elle est fournie par l'application (recherchée dans l'annuaire du
GIP "CPS"). Le service retourne un "diagnostic" VRAI ou FAUX. Si FAUX la clé doit être
rejetée.
En fait, il y a 1 autorité "racine" et plusieurs "autorités de certification de classe x" :
Classe 0 = "anonyme" pour les CPE dont les porteurs ne sont pas nominatifs
Classe 1 = les porteurs de CPS et CPF
Classe 2 = les porteurs "mandataires" de CPE et CPA (statut d'exercice = 1)
Classe 3 = les CPE et CPA (statut d'exercice # 1)
Classe 4 = les clés des serveurs applicatifs qui s'enregistrent auprès du GIP "CPS"
Classe 5 = les clés de confidentialité partageable des porteurs de CPS
Ce jeu de classes est aussi dupliqué pour une version de test.
3.
L'application effectue le contrôle des données contenues dans ce certificat.
Le service CPS_InterpretationX509_CPS permet à l'application d'extraire du certificat
pValueX509 chacun des champs de ce certificat pour les contrôler.
Les contrôles dépendent des exigences de l'application. Au minimum, elle doit vérifier si le
certificat est émis par le GIP "CPS" et s'il correspond à une carte réelle ou de test.
6.5
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 29 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Services de gestion de la carte
Les services de lecture de données et les services de calculs cryptographiques effectuent des accès
vers la carte "CPS".
Il est donc nécessaire que l'application, avant d'invoquer ces services, sache piloter une carte dans un
lecteur de carte "CPS".
Les lecteurs de carte CPS sont fabriqués et commercialisés par des industriels.
Ces lecteurs doivent être certifiés conformes aux spécifications par l'AFNOR (marque NF
"CPS").
Sous Windows, Mac OS X et Linux, les lecteurs PC / SC peuvent être utilisés. Se renseigner
auprès du GIP "CPS".
Les services de gestion de la carte dans le lecteur sont :
• CPS_TestPresenceCarte permet à l'application de tester la présence d'une carte dans le lecteur et
l'état de cette carte (voir 6.8.3 Paramètre d'état de la carte) et de prendre des décisions en
conséquence.
Ce service est appelé en précisant l'option de savoir si le code porteur est déjà actif ou non : si
le code porteur a déjà été présenté à la carte par une autre application (voir le champ
EtatCarte), il sera inutile de le redemander à l'opérateur et de le représenter à la carte.
Le service renvoie vers l'application
- un code retour pour indiquer si la carte est présente et exploitable par les services CPS.
- la réponse normalisée (ATR) de toute carte à puce à la mise sous tension.
Si la carte n'est pas exploitable directement par les services CPS, l'application pourra
reconnaître dans cette ATR une autre carte (bancaire ?) qu'elle sait traiter...
L'application utilisera ce service dans 3 cas :
1.
Optionnellement avant d'effectuer l'appel du service CPS_IntroductionCarte pour
éventuellement avertir l'opérateur qu'il doit introduire physiquement sa carte dans le lecteur.
2.
Optionnellement avant d'effectuer l'appel du service CPS_RetraitCarte pour éventuellement
avertir l'opérateur qu'il doit retirer physiquement sa carte dans le lecteur.
3.
Régulièrement (à échéance de "timer") ou ponctuellement (avant d'ouvrir un accès) pour
s'assurer que la même carte est toujours présente.
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 30 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
• CPS_IntroductionCarte permet à l'application de connaître la carte présente et de la mettre sous
tension.
Effectue la mise sous tension de la carte si ce n'est déjà fait (par une autre application) et
renvoie vers l'application les mêmes informations que le service CPS_TestPresenceCarte.
L'application utilisera ce service dans 2 cas :
1.
Une fois avant tout autre appel de services faisant un accès à la carte (sauf l'appel du service
CPS_TestPresenceCarte )
2.
Systématiquement après qu'un service faisant un accès à la carte lui ait indiqué que l'état de la
carte a changé. Dans ce cas, l'application ne sait plus quelle carte est présente et doit appeler
CPS_IntroductionCarte, et relire toutes les données précédemment lues.
• CPS_RetraitCarte est utilisée pour mettre hors tension la carte.
Une application ne doit pas utiliser ce service sauf dans le cas précis où elle veut programmer la
terminaison sur le poste de tout travail avec la carte pour elle-même et pour toute autre
application potentiellement active sur le poste.
Le poste peut être multi applications et ces applications se partager la ressource "CPS". Si une
d'entre elles effectue un retrait de la carte, toutes les autres le détecteront et redemanderont
l'introduction à l'opérateur...
6.6
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 31 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Services de gestion des sessions
Une application qui va travailler avec une carte "CPS" dans le lecteur doit d'abord se faire connaître
du système.
• CPS_OuvertureSession est le premier appel programmé par l'application avec :
Le champ NomRessource qui contient le nom du lecteur tel que décrit dans le fichier de
configuration.
Mettre systématiquement "CPS" (3 caractères ASCII) dans le cas des services CPS.
Le champ NomAppli qui contient le nom symbolique de l'application.
Mettre systématiquement un nom représentatif et spécifique de cette application, et y
ajouter éventuellement un index d'occurrence de cette application.
En retour : Le champ NumSession contient une valeur "HANDLE" que l'application doit
systématiquement rappeler pour tous les autres services.
L'ouverture de session permet au système de réserver et initialiser des zones mémoires.
Ces zones (contextes sessions) permettent des échanges d'informations et des contrôles
entre les divers services.
Ce service ne fait pas d'accès vers le lecteur, il vérifie juste que ce lecteur est bien déclaré
dans le fichier de configuration
Une application qui a terminé de travailler avec la carte "CPS" doit le signaler au système.
• CPS_FermetureSession est le dernier appel programmé par l'application.
La fermeture de session libère ou efface des zones mémoires.
Il est inutile et nuisible en performance d'effectuer une fermeture de session si on doit la
rouvrir ensuite.
Une application de type serveur qui n'utilise pas de services à accès à la carte (elle n'utilise que des
services de type vérification) n'utilise pas ces 2 services de gestion de session.
Le champ NumSession, qui est repris systématiquement dans tous les autres services n'est donc
pas significatif pour les services qui ne font pas d'accès vers la carte. Ces services se repèrent
facilement : ils n'ont pas de champ pEtatCarte en paramètre de retour.
6.7
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 32 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Services de gestion du code porteur
Le code porteur permet à l'application de s'assurer que l'opérateur est bien le porteur de la carte
présente (authentification du porteur par la carte).
Le code de déblocage est utilisé pour débloquer une carte bloquée par 3 présentations erronées du
code porteur.
Ces valeurs des codes sont demandées par l'application (saisie masquée de caractères
numériques), transmises aux services puis effacées de la mémoire
Les services de gestion du code porteur de la carte sont :
• CPS_PresCodePorteur permet de présenter à la carte le code porteur précédemment demandé à
l'opérateur.
L'application authentifiera le porteur dans 2 cas :
1.
Elle ne veut autoriser un accès (à un fichier, à un service applicatif..) que si elle est certaine de
la présence effective du porteur d'une "CPS".:
Dans ce cas elle effectue ce test si le code n'est pas déjà actif (pour éviter des demandes
répétitives au porteur).
2.
Avant un calcul de signature pour s'assurer de la présence effective du porteur de la "CPS".
Ce contrôle peut n'être effectué qu'une fois avant un calcul non interruptible de signature(s) sur
un lot de documents (non interruptible signifiant que l'on ne peut intervenir sur le processus de
calcul mais que l'on peut l'abandonner).
Le code porteur est constitué de 4 caractères numériques ASCII.
Le code porteur de toutes les cartes de tests est "1234"
L'application peut connaître, avant de demander la saisie du code à l'opérateur, le nombre
d'essais de présentations encore permis en exploitant le champ EtatCarte : 3, 2 ou 1.
Lorsque cette valeur est 0, la carte est bloquée et l'application pourra proposer à l'opérateur
de recycler son code (débloquer la carte).
• CPS_ModifCodePorteur permet de modifier la valeur du code porteur.
Cette modification s'effectue en demandant 3 saisies à l'opérateur :
- l'ancien code porteur (4 caractères numériques ASCII),
- le nouveau code porteur (4 caractères numériques ASCII) à appliquer,
- la confirmation du nouveau code porteur (double saisie)
L'application n'est pas obligée d'intégrer ce service. Les règles de gestion du nombre d'essais
de changements sont les mêmes que celles de la présentation.
Pour la carte, la modification consiste en :
- présentation du code et
- si le code est correct, changement de la valeur.
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 33 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
• CPS_RecycleCodePorteur permet de recycler une "CPS" bloquée à la suite de la 3ième
présentation erronée du code porteur par CPS_PresCodePorteur ou CPS_ModifCodePorteur.
Pour effectuer ce recyclage, l'opérateur doit connaître son code de recyclage (appelé aussi code de
déblocage ou super code).
Le code de recyclage est constitué de 8 caractères numériques ASCII.
Le code de recyclage de toutes les cartes de tests est "12345678"
L'application peut connaître, en exploitant le champ EtatCarte si la carte est bloquée et si elle
peut être débloquée.
Dans ce cas, elle peut proposer à l'opérateur de la recycler par 3 saisies :
- le code de recyclage (8 caractères numériques ASCII),
- le code porteur (4 caractères numériques ASCII) à appliquer,
- la confirmation du code porteur (double saisie)
l'opérateur n'est pas obligé de se rappeler la valeur du code porteur avant blocage et peut
fournir une nouvelle valeur.
Pour la carte, le recyclage consiste en :
- présentation du code de recyclage et
- si le code est correct, changement de la valeur du code porteur (la valeur présentée
remplace l'ancienne).
L'application n'est pas obligée d'intégrer ce service.
6.8
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 34 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Intégration des services
Pour intégrer les services de la "CPS" dans son application le promoteur définit les phases de son
projet :
Analyse des besoins
Cette phase d'analyse des besoins sort du cadre de ce document...
Etude des solutions
• Quelle est l'architecture du système existant ?
Les intervenants (opérateurs, applications, plates-formes et environnements).
Les communications (protocoles de connexion et d'échange, volumétrie).
• Quelles sont les procédures à mettre en oeuvre ?
Identification(s), Authentification(s), Signature…
• Quel sera l'impact sur l'existant (faisabilité) ?
Ergonomie du poste et de l'application :
La vision par l'opérateur,
Les performances.
Intégration des nouvelles données liées à la carte :
Modification(s) de l'architecture de l'application,
Modification(s) des protocoles entre applications.
Spécification
C'est durant cette phase que le promoteur qui aura identifié les procédures à mettre en œuvre et
qui possède la "boîte à outils" des services (KIT d'intégration) aura besoin de connaître :
• La fonctionnalité de chaque service.
• La logique d'enchaînements de ces services.
• La logique d'exploitation des informations retournées par les services.
Développement
Pour la programmation des services dans l'application, le promoteur se reportera au manuel de
programmation correspondant à son environnement.
Pour les tests, le promoteur utilisera le jeu de cartes de tests fourni dans le KIT (ou de cartes
spécifiques commandées au GIP "CPS").
Qualification
Cette phase sort du cadre de ce document...
Exploitation
Remarque : avant d'être mise en exploitation, l'application devra avoir reçu l'accord du Collège
de Déontologie.
Cette phase sort du cadre de ce document...
6.8.1
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 35 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
Structure interne des services
L'architecture logique d'une station de travail dans le secteur Santé-Social respecte la structure en
couches logicielles suivante :
APPLICATION
APPLICATION
APPLICATION
API des SERVICES CPS
autres :
API des SERVICES A-M
API de Lectures (Hospitaliers)
GESTIONNAIRE D'ACCES AUX LECTEURS (GALSS)
PROTOCOLE(S) de COMMUNICATION (ex : PSS)
Figure 3 : Architecture du poste du PS
• APPLI 1 APPLI 2 APPLI 3 APPLI 4
Applications utilisant les services des cartes Santé-Social (CPS, A-M, etc...)
• API des SERVICES Carte Santé-Social (CPS, A-M, etc...)
Interfaces spécifiques à chaque type de Carte Santé-Social
• GESTIONNAIRE D'ACCES AUX LECTEURS
Système de gestion des SESSIONS applicatives, des CONTEXTES des applications, des
EXCLUSIVITES d'accès à des ressources périphériques, des PROTOCOLES.
• PROTOCOLE(S) DE COMMUNICATION
Gestionnaire(s) de PROTOCOLE(S) de communication entre station et matériels.
Les protocoles supportés sont PSS et une passerelle vers PC / SC.
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 36 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Les API des Services CPS sont conformes à l'architecture générale suivante :
Interfaces applicatifs d'accès aux services
SERVICES....
Interfaces d'accès vers le GESTIONNAIRE
• Les Interfaces applicatifs d'accès aux services réalisent :
Contrôles sur l'appel.
Activation du service requis.
Génération du Compte-rendu.
• Les SERVICES réalisent :
Traitement du service requis.
• Les Interfaces d'accès vers le Gestionnaire réalisent :
Gestion des ordres au Gestionnaire et de ses réponses.
Les services CPS sont construits suivant l'architecture modulaire suivante :
LOGIQUE des
SERVICES
(Interfaces applicatifs d'accès aux services)
Sous / Programmes Internes Communs...
Algorithmes...
APDU-CPS
COMMANDES Lecteur CPS
(Interfaces d'accès vers le Gestionnaire)
• Les LOGIQUES des SERVICES sont les organigrammes d'enchaînement des modules et d'appels
des modules interfaces.
• Le module Algorithmes contient, par exemple, les fonctions de vérification RSA.
• Le module APDU-CPS contient la bibliothèque des instructions élémentaires des cartes CPS.
• Le module COMMANDES Lecteur contient la bibliothèque des commandes du lecteur CPS.
6.8.2
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 37 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Code retour des services
Les Services CPS renvoient un Compte-Rendu d'exécution (CR) dont la liste des valeurs et libellés
est fournie dans le manuel de programmation.
Cette liste n'est pas limitative : il se peut qu'une nouvelle valeur soit un jour introduite avec
une nouvelle version, la programmation de l'application doit s'en protéger.
Cependant certaines de ces valeurs de CR méritent une explication supplémentaire.
• 'FF' = NOK = L'exécution du service s'est déroulée avec succès mais le résultat est incorrect
Cette valeur est retournée en cas de contrôle négatif par les services de vérification de :
- Valeur de code porteur ou de déblocage,
- Valeur de certification d'une clé publique,
- Valeur de signature,
- Valeur de réponse à un défi d'authentification.
Dans ces cas, l'application doit dénier la conformité (la signature, l'accès, etc...)
Cette valeur est aussi retournée par les services de lectures d'informations dans la carte
lorsqu'ils n'arrivent pas à exploiter les données internes de la carte.
Les données sont stockées dans la carte suivant un format interne (codification TLV) et
sont éclatées et expansées par les services vers les champs de l'application.
Dans ce cas, l'application doit prévenir l'opérateur qu'il y a une anomalie dans sa carte.
• '01' = ETAT_CARTE_CHANGE = L'état de la Carte a été changé depuis le dernier accès, faire
une introduction carte.
Cette valeur est retournée par tous les services qui font un accès vers la carte lorsqu'ils
détectent qu'une autre application a modifié l'état de la carte dans le lecteur.
Ce cas peut se produire sur les plates-formes où plusieurs applications gèrent et utilisent
la carte.
Dans ce cas, l'application doit considérer que la carte n'est peut-être plus celle qu'elle
connaissait. Elle est obligée d'appeler le service d'introduction de la carte.
L'application doit effacer toutes les données de la carte qu'elle connaissait, les relire,
refaire les procédures d'authentification, etc..
• '02' = LECTEUR_INEXISTANT = Le lecteur spécifié n'est pas référencé dans le fichier de
configuration.
Ce cas intervient à l'ouverture de session, l'application doit prévenir l'opérateur que le lecteur
qu'elle utilise n'est pas décrit dans son fichier de configuration (GALSS.INI sous Windows) .
Ce cas ne devrait pas intervenir si l'application respecte le standard suivant :
Le nom du lecteur de carte CPS est "CPS" (3 caractères ASCII).
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 38 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
• '04' = SESSION_DEJA_OUVERTE = Une session est déjà ouverte pour ce nom d'application.
Ce cas intervient à l'ouverture de session, il signifie qu'une session est déjà établie avec ce nom
de lecteur sous ce nom d'application
Ce cas pourrait se produire sur les plates-formes où plusieurs applications gèrent et
utilisent la carte, mais correspond plus souvent à un bogue de l'application qui a
"oublié" qu'elle a déjà ouvert une session.
• '05' = NON REPONSE DU LECTEUR = Le lecteur est absent, en panne ou hors tension.
Ce cas intervient aussi lorsque le lecteur est paramétré avec une adresse PSS différente de
celle déclarée dans le fichier de configuration.
L'adresse du lecteur CPS mono-fente est 0.
• '07' = CARTE_HORS_TENSION = Pas de réponse de la carte (carte muette): mal introduite, en
panne...
Le microprocesseur de la carte est un composant électronique qui est alimenté électriquement
par le lecteur.
La mise sous tension est effectuée dans le traitement du service d'introduction de la carte.
Lorsque l'application reçoit ce code retour, le traitement est différent suivant le service appelé.
En retour du service CPS_IntroductionCarte, l'application doit avertir l'opérateur avant de
faire une deuxième tentative (peut-être la carte est-elle introduite à l'envers !)
En retour des autres services d'accès à la carte, l'application doit alerter l'opérateur que sa
carte est en panne.
• '09' = CARTE_INCONNUE = Cette carte ou les données transmises pour les services qui ne font
pas d'accès vers la carte, ne peuvent pas être traitées par les services.
Typiquement, cela se produit en retour du service CPS_IntroductionCarte et
CPS_TestPresenceCarte lorsque l'opérateur introduit une carte autre qu'une CPS ou une
carte CPS d'ancienne génération qui ne devrait plus être en exploitation.
Cela se produit également en retour du service CPS_InterpretationX509-CPS lorsque le
certificat présenté ne provient pas d'une CPS.
• '0C' = SERVICE_IMPOSSIBLE = La carte ou les données transmises pour les services qui ne font
pas d'accès vers la carte, ne sont pas prévues pour ce service (clé absente, fonctionnalité interdite
ou non prévue, fichier absent...).
En retour du service CPS_LecSituationsPS, ce code signifie que le fichier recherché n'existe
pas. Ce cas ne devrait pas se produire si l'application a bien récupéré la liste des situations
par le service CPS_DirSituationsPS.
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 39 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
• '0D' = LECTEUR_OCCUPE = La ressource lecteur est occupée par une autre application, le
service est momentanément impossible.
Ce code retour des services d'accès au lecteur ou à la carte signifie qu'une autre application
utilise le lecteur.
Les services gèrent, en interne, une boucle d'attente et de reprises pendant environ 5
secondes, ce cas ne devrait pas apparaître en fonctionnement normal.
Il est conseillé à l'application d'avertir l'opérateur de la surcharge du lecteur et de le laisser
décider s'il veut réessayer ou abandonner.
Cependant, une application qui fait de la surveillance de présence carte (contrôle d'accès au
poste) dans un contexte d'applications intégrées doit être alertée car ce peut être une attaque
programmée contre le système.
• '10' = ERREUR_LOGICIELLE = Les API ont détecté une erreur interne (bogue).
Hélas, ce code retour indique une erreur de développement des services !
La conduite du promoteur est différente suivant la phase de son projet d'intégration :
En phase de développement, il est invité à utiliser la procédure de traitement des anomalies
définie dans le chapitre "Suivi et rapports d'anomalies".
En phase d'exploitation des services, l'opérateur suivra la procédure de traitement des
anomalies définie par le promoteur !
Il est demandé au promoteur d'intégrer dans cette procédure la remontée vers le GIP
"CPS" des informations contenues dans le champ CPS_StatusService.
• '11 '= CARTE INVALIDEE = La carte CPS est invalidée
Les lectures sont encore possibles, cependant, l'application doit refuser de traiter cette "CPS".
• '12' = FICHIER INVALIDE = Un fichier de la CPS est invalidé
Les lectures sont encore possibles, cependant l'application doit refuser d'exploiter les
informations renvoyées par le service (exemple : lecture d'un fichier de situation d'exercice).
Ce code d'erreur est aussi possible en retour du service CPS_IntroductionCarte et signifie
qu'une actualisation de la carte s'est mal terminée. Dans ce cas, l'application doit refuser de
traiter cette carte "Une actualisation de cette carte s'étant terminée sur un incident, elle risque
d'être incomplète car des données peuvent être absentes"
• '80' = ERREUR CONFIGURATION = l'installation des logiciels est erronée
Une erreur est intervenue dès le chargement des logiciels API, GALSS et Protocoles PSS ou
PC / SC rendant tout travail impossible. Il faut revoir la procédure d'installation et
particulièrement le fichier de configuration GALSS.INI
Dans le cas d'utilisation de PC / SC, ce statue peut indiquer que l'installation de cette
architecture (driver du lecteur) est mal effectuée.
6.8.3
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 40 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
Paramètre d'état de la carte
Tous les services qui font accès à la carte retournent un champ EtatCarte qui décrit l'état de la carte :
La carte est présente ou absente du lecteur ?
La carte présente est hors ou sous tension ?
La carte présente sous tension est-elle bloquée ?
La carte présente sous tension bloquée est-elle recyclable ?
La carte présente sous tension est-elle invalidée ?
La carte présente sous tension a-t-elle son code porteur actif ?
L'exploitation de ce champ par l'application n'est pas obligatoire dans la mesure ou le traitement du
code retour CR de chaque service lui suffit. Elle permet cependant d'optimiser le traitement :
A combien de tentatives de saisie du code porteur l'opérateur a-t-il le droit ?
A combien de tentatives de saisie du code de recyclage l'opérateur a-t-il le droit ?
6.8.4
Paramètres d'état d'exécutiond'un service
En complément de tous les champs nécessaires aux traitements, les services retournent une structure
d'informations CPS_StatusService. L'application peut ne pas exploiter directement ces données mais
elle doit être capable de les restituer en cas d'anomalies car elles constituent une aide à la
maintenance des services (voir le chapitre "10.4 Suivi et rapports d'anomalies")
Cette structure contient :
• NumVersionAPI
• NumVersionAPI
• NumAPI
• StatusAPI
• StatusGestionnaire
• StatusInterne
• StatusLecteur
• StatusCarteStatus
6.8.5
numéro de version des API
numéro de version du service
numéro du service API
diagnostic précis de l'API
résultat d’exécution des fonctions du Gestionnaire GALSS
étape interne du service (référence dans son code source)
Code retour lecteur d'exécution d'une commande
code retour Carte ME1-ME2 d'une APDU (ISO-7816)
Performances des services
Les accès aux cartes à microprocesseur sont relativement lents.
Les Services CPS enchaînent souvent plusieurs accès vers la "CPS".
Un service = plusieurs instructions cartes traitées par des commandes lecteur et expédiées au
lecteur par le protocole.
En conséquence, les temps d'exécutions des Services CPS sont significatifs et doivent être pris en
compte pendant les analyses et développements de l'application.
Voir les exemples de performances en "11.3 Performances des Services CPS"
6.8.6
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 41 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
Recherche d'une solution d'intégration
Il existe différentes méthodes d'intégration qui vont dépendre des fonctionnalités à implémenter et
de l'architecture du produit à réaliser. Mais le promoteur doit connaître les concepts suivants :
1. La CPS est mono-applicative et ne sait traiter plusieurs transactions simultanées, mais les
services API résolvent cette contrainte.
Exemple sur une transaction de lecture qui nécessite 3 instructions (ou APDU) :
1) se positionner sur un fichier, 2) donner la taille du fichier, 3) lire les données.
Si plusieurs applications exécutent sans précaution cette transaction sur des fichiers différents,
les résultats seraient erronés.
Les services API savent gérer cette situation par :
• Sérialisation des appels des applications : prise d'exclusivité de l'accès à la carte pour
toute la transaction, accès à la carte et libération de l'exclusivité.
Une application peut récupérer le code retour CR ='0D' = LECTEUR_OCCUPE
lorsque les API ont bouclé 5 fois (sur timer variable de 1 à 2 secondes) sur la prise
d'exclusivité.
• Mémorisation d'un contexte par session qui décrit l'état et l'avancement d'une
transaction pour cette session.
2. Les services API sont réentrants entre tâches (ou process) puisqu'ils travaillent sur des données
locales créées dans la pile de l'appelant et des données contextuelles par session.
Remarques importantes :
•
2 tâches ne doivent pas travailler simultanément sur une même session, par contre, elles peuvent
se partager cette session si elles savent se synchroniser.
•
Il ne faut pas espérer améliorer les performances en multipliant les tâches qui accèdent à la carte.
•
Sur un serveur où N process gèrent N Clients, les 2 logiques suivantes sont possibles :
1. Les N process accèdent à la carte sur N sessions différentes.
2. Les N process se synchronisent sur un unique process d'accès en session avec la carte.
Cette solution 2 est même préférable dans la mesure où elle permet :
- une gestion de file d'attente personnalisée (à charge du promoteur),
- de gérer plusieurs cartes sur le serveur (un process par carte),
- une gestion simple par ce process de l'arrachage de carte.
•
Lorsqu'un service API ne fait pas d'accès vers la carte, il n'a pas besoin de s'appuyer sur une
session, donc l'application n'a pas à faire d'ouverture de session et peut s'appuyer sur la réentrance
naturelle des API (pas de nécessité de synchronisation entre tâches).
7
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 42 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
Logiques d'enchaînement des services "CPS"
7.1 Définition des types des applications
7.1.1
Application "autonome"
Il s'agit d'une application monolithique, ou autonome, ou indépendante sur le poste du PS. Cette
application s'installe, se charge et exploite des données et la carte "CPS" indépendamment d'autres.
Paradoxalement, cette application doit considérer qu'elle ne sera pas forcément "seule" sur le
poste du PS. Elle doit adapter le traitement de la carte en conséquence pour ne pas perturber
les autres (par exemple, ne pas systématiquement mettre la carte hors tension en fin
d'exploitation).
7.1.2
Applications "intégrées"
Il s'agit :
• Soit d'un ensemble d'applications - à la base du type autonome - mais dont le promoteur réalise
une intégration.
• Soit d'une application composée de plusieurs tâches (ou process) qui se partagent les services de
la CPS.
Dans ces cas, le promoteur aura la possibilité d'optimiser des traitements dans une unité
dédiée à la "CPS" et chargée de :
- lire 1 seule fois les données de la carte et les stocker en interne à disposition des autres tout
en surveillant la présence de cette carte,
- faire effectuer par la CPS les calculs cryptographiques...
7.1.3
Applications "réparties" (poste et central)
Dans les applications "Client-Serveur" ou les applications fonctionnellement réparties entre le(s)
poste(s) et un central, le promoteur sera amené à répartir en conséquence les services.
Exemple de répartition :
Le central ou serveur est accessible par des postes intelligents en réseau, il engage une
procédure d'authentification de la CPS dans le poste.
Les services de lecture de données et de calcul d'authentification seront sur le poste qui
pilote la "CPS".
Les services de vérification d'authentification seront sur le central.
Remarque :
ce simple exemple n'est pas neutre pour le promoteur si les postes et le central sont
sous 2 systèmes d'exploitation différents ; il doit alors disposer des 2 KITs.
7.2
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 43 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Services de gestion de la carte
L'application pourra très simplement réaliser ce type de schéma :
L'opérateur
L'application
Commentaires
Lance l'application
CPS_OuvertureSession
- du lecteur "CPS"
- par l'application = XX...XX
Test du CR = ?
CR = '02'
Message vers l'opérateur :
Votre fichier de configuration GALSS.INI est erroné
(pas de lecteur CPS).
Corrigez la configuration et relancez l'application
Abandon
Lecteur inexistant
CR = '04'
Message vers l'opérateur :
L'application XX...XX existe déjà.
Validez pour abandonner le traitement
Abandon
Session déjà ouverte
BOUCLE:
CPS_IntroductionCarte
Délai = 0
Test du CR = ?
09 décembre 2003
CR = '0D'
Message vers l'opérateur :
Une ou des applications monopolisent le lecteur
Fermez ces applications puis validez
Retour en Boucle
Lecteur occupé
(effectuer une deuxième
tentative avant d'alerter
l'opérateur ?)
CR = '05'
Message vers l'opérateur :
Le lecteur CPS ne répond pas :
(hors tension, en panne)
Vérifiez qu'il est bien connecté et sous tension
puis validez
Retour en Boucle
Non réponse du lecteur
CR = '06'
Message vers l'opérateur :
Le lecteur CPS répond mal (erreur de protocole)
Vérifiez qu'il est bien configuré puis validez
Retour en Boucle
Erreur de transmission
CR = '08'
Carte absente
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 44 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Message vers l'opérateur :
Introduisez votre CPS puis validez
Retour en Boucle
CR = '09'
Message vers l'opérateur :
La carte n'est pas une CPS
Introduisez votre CPS puis validez
Retour en Boucle
Carte inconnue
CR = '07'
Message vers l'opérateur :
La carte ne peut être mise sous tension :
- en panne ?
- mal introduite ?
Vérifiez que la carte est bien introduite puis validez
Retour en Boucle
Carte hors tension
CR = '11'
Message vers l'opérateur :
Cette carte est invalidée
Introduisez une carte valide puis validez
Retour en Boucle
Invalidée
CR = '0A'
Message vers l'opérateur :
Votre carte est bloquée par 3 erreurs sur code.
Certaines fonctions seront impossibles
Voulez-vous la débloquer avant de continuer ?
Si réponse opérateur = oui, DEBLOCAGE
Si réponse opérateur = non,, continuer
Carte valide et bloquée
CR <> '00'
Message vers l'opérateur :
Erreur dans l'application XX...XX
Contactez votre Promoteur d'Application
Abandon
A introduit une "CPS"
Ceci est optionnel
Erreurs impossibles !
Constituer le "dossier" ou
"fiche" d'anomalie
Carte valide
ENTREE dans le traitement de l'application...
- SORTIE PROVISOIRE sur anomalie CR
(dont CR = '01' = l'état de la carte a changé)
Retour en Boucle
- SORTIE DEFINITIVE sur décision opérateur
CPS_FermetureSession
7.3
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 45 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
Services de lecture de données de la carte
Tous ces services sont indépendants, il n'y a donc pas d'ordre obligatoire d'enchaînement. Seuls la
logique, le besoin applicatif et le souci de performance guideront le promoteur.
La règle à respecter pour une application "minimum" est de tester le service
CPS_InformationsCarte
La logique d'enchaînement est la suivante :
Service
Informations retournées
Commentaires
- Emetteur de la carte
- Catégorie de la carte
- Numéro d'identification unique
de la carte
L'application contrôle :
- Carte émise par le GIP "CPS"
- CPS de test ou d'exploitation
- Le numéro sert d'index d'accès
dans une recherche dans les listes
noires ou blanches
CPS_InformationsCarte
La lecture et mémorisation de ce numéro d'identification de la carte (champ IdCarteLog) permet
d'optimiser la performance des traitements applicatifs : tous les autres services de lectures qui suivent
n'ont pas a être reconduits systématiquement si l'application a su stocker dans un environnement
protégé les données retournées par ces services.
Cette possibilité ne doit cependant être utilisée que dans un intervalle de temps limité (comme
une suspension temporaire d'une activité ou session applicative de l'opérateur) !
En effet, les vraies données de la "CPS" (actuellement les situations d'exercice) peuvent être
mises à jour par téléchargement. Dans ce cas, les données stockées par l'application sont
devenues caduques.
CPS_InformationsPorteur
Identité civile du porteur
CPS_InformationsPS2
L'application contrôle en fonction
de ses besoins de contrôles
d'accès à des fonctions ou des
fichiers :
- Type de carte ("CPS" "CPE" ou - cette carte est-elle acceptée ?
"CPF")
- Identification unique du porteur - ce porteur est-il autorisé ?
- cette profession est-elle
- Caractéristiques
autorisée ?
professionnelles du PS
- etc...
CPS_DirSituationPS
- liste des fichiers de situations
La carte peut contenir jusqu'à 8
d'exercices présentes dans la carte situations d'exercice.
- L'application peut décider
d'ouvrir un accès que si une
situation bien précise existe
09 décembre 2003
Ce service n'est pas obligatoire
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 46 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
(exemple :Le PS travaille dans
l'hôpital BEAULIEU, la
pharmacie CAILLOT)
- L'application peut rechercher la
situation correspondante à la
situation de facturation.
Boucle de...
Dans ces cas, elle va lire
séquentiellement les situations
jusqu'à rencontrer celle qui
l'intéresse
CPS_LecSituationPS
- mode(s) d'exercice
- structure(s) d'exercices
- libéral ? salarié ?...
- bonne identification de la
structure ?
- Numéro logique de situation
Rappel : durant cette boucle de lecture, le service CPS_LecSituationPS peut retourner le code
retour CR = '12' = Fichier invalidée pour indiquer que la situation d'exercice lue est invalidée.
L'application doit ignorer cette situation (ne pas l'exploiter).
...fin de boucle
CPS_LecSitFacturation
- Données de facturation AM
- Numéro logique de situation
Réservé aux applications de FSE
CPS_LectureX509
Certificat X.509 contenant la
valeur de clé publique (Kp-xxx)
Ces informations peuvent être
lues et transmises à l'application
du correspondant éloigné durant
les procédures cryptographiques.
Note : une application qui sait
exploiter un certificat X.509 peut
se satisfaire de cet unique API de
lecture puisqu'elle y trouvera
toutes les informations
caractéristiques de cette CPS et
de son porteur et certifiées
(signées) par l'autorité GIP "CPS"
7.4
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 47 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Services d'authentification de la carte
Le schéma d'enchaînement des services est décrit au chapitre 6.4.1 Services liés à l'authentification
de la "CPS" et rappelé ici :
Le poste et la "CPS" qui veulent accéder à
un système d'information
Le système qui veut authentifier la "CPS"
avant d'ouvrir l'accès
La procédure de contrôle du certificat X.509 a été effectuée avec succès
défi
CPS_CalculAuthen2
CPS_GenereDefiAuthen
réponse
CPS_VerifAuthen2
Figure 4 : Services d'authentification
Le service CPS_VerifAuthen2 utilise pour effectuer ce contrôle la clé publique Kp-aut de la "CPS".
Le système aura cette information :
• Soit parce qu'il la recevra directement du poste (CPS_LectureX509), ce qui suppose que les 2
correspondants aient prévu cette information dans leur protocole d'authentification.
• Soit parce qu'il dispose d'une liste locale des "CPS".
La procédure d'authentification ne peut être engagée que si la procédure de contrôle du certificat de
la clé publique Kp-aut a précédemment été effectué avec succès.
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 48 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
7.5 Services de signature électronique
Le schéma d'enchaînement des services est décrit au chapitre "6.4.2 Services liés à la signature
électronique" et rappelé ici :
L'émetteur et la "CPS" qui signent
Le destinataire qui veut vérifier la signature
La procédure de contrôle du certificat X.509 a été effectuée avec succès
CPS_CondenseMessage
CPS_CalculSign2
message +
signature
CPS_CondenseMessage
CPS_VerifSign2
Figure 5 : Services de signature
Le service CPS_VerifSign2 utilise pour effectuer ce contrôle la clé publique Kp-sgn de la "CPS". Le
système aura cette information :
• Soit parce qu'il la recevra directement du poste (CPS_LectureX509), ce qui suppose que les 2
correspondants aient prévu cette information dans leur protocole d'authentification.
• Soit parce qu'il dispose d'une liste locale des "CPS".
La procédure de signature ne peut être engagée que si la procédure de contrôle du certificat de la clé
publique Kp-sgn a précédemment été effectué avec succès.
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 49 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
7.6 Services de contrôles de certificat X.509
Le contrôle de certification doit être effectué pour chacune des clés publiques d'une "CPS" :
Kp-aut et Kp-sgn.
Le schéma d'enchaînement des services est :
La "CPS"
Le destinataire qui veut contrôler
CPS_LectureX509
CPS_VerificationX509
CPS_InterpretationX509-CPS
Contrôles de conformité des données
certifiées en fonction de l'attente
Figure 6 : Services de contrôle de certification
8
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 50 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Règles d'installation des logiciels des services "CPS"
Ici ne sont présentés qu'un exposé de ces règles et de la logique qui a amené à les éditer.
Règle 1 :
Pour chaque composant à installer, il est nécessaire de respecter sa compatibilité avec
les autres composants.
Deux composants existent sous une application "CPS" : le composant CPS et le
composant GALSS-PSS.
Cette règle ne s'applique que pour le composant GALSS-PSS car le composant CPS
est compatible avec tous les autres composants.
Elle devient pour le promoteur qui installe son application "CPS" :
Ne pas réinstaller le composant GALSS-PSS s'il est déjà présent sur le poste de travail
et qu'il subsiste un doute sur l'existence sur ce poste d'autres application de type FSE.
Règle 2 :
Un fichier ne doit pas être remplacé par un fichier de version inférieure.
Cette règle est classique. Chaque composant est constitué de plusieurs fichiers.
Son corollaire est impératif pour le composant CPS :
C'est le composant CPS de dernière version qui doit toujours être installé.
Règle 3 :
Un composant incomplet ou incohérent doit être réinstallé.
Incomplet ou incohérent (versions de fichiers incohérentes), le composant ne
fonctionne pas et il doit donc être réinstallé.
Un composant est incohérent lorsque les fichiers qui le composent ne sont pas de la
même Version. (VV.xx, quelque soit xx)
Règle 4 :
Avant toute installation, il est nécessaire de décharger les applications en mémoire.
Cette règle est classique. Penser en particulier à tuer les process GALSS (exemple
Windows : GALSVW32).
Règle 5 :
Vérifier les autorisations d'accès aux répertoires d'installation (droits d'administration).
Cette règle est classique.
Règle 6 :
Chaque composant doit être unique et installé dans le répertoire spécifié.
Cette règle est fondamentale pour le bon fonctionnement du poste et sa mise à jour
dans un contexte multi-applicatif.
Les répertoires d'installation sont spécifiés, pour chaque environnement, dans le
manuel de programmation correspondant (exemple : "WINDIR" en Windows).
9
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 51 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Annuaire du GIP "CPS"
Dans le cadre de la mise en place de l'Infrastructure de Gestion de Clés (IGC), l'Annuaire du GIP a
pour objectifs :
•
la publication des certificats X.509 et des listes de révocation de certificats (CRL),
•
la mise à disposition des utilisateurs du Système CPS, de requêtes d'accès aux informations
disponibles sur les porteurs de cartes (recherches selon les principes de "pages blanches" et de
"pages jaunes"),
•
d'offrir des prestations spécifiques, comme par exemple :
- l'aide à la gestion de parcs de cartes pour les structures,
- des requêtes dans le cadre d'alertes sanitaires,
- l'interconnexion de l'Annuaire du GIP avec d'autres annuaires.
Pour répondre aux souhaits des Professionnels de Santé et des Autorités Compétentes dans le
domaine de la Santé et de la CNIL, certaines requêtes nécessitent des autorisations préalables
et seront réservées aux personnes autorisées nommément identifiées suivant les procédures
validées par la CNIL et le CODEON.
Tous les porteurs d'une carte de la famille CPS peuvent accéder à l'annuaire.
L'interrogation de l'annuaire se fait selon 2 modes :
1. interrogation directe par le porteur d'une carte qui se connecte sur le serveur WEB de l'annuaire
avec son navigateur et formule des requêtes au travers de formulaires électroniques dans des
pages HTTP. Il peut intégrer les réponses dans son annuaire local.
2. interrogation au travers d'une application qui présente ses requêtes LDAP qui consultent
l'annuaire local et, si besoin, l'annuaire du GIP "CPS". L'application peut stocker les réponses
dans l'annuaire local au travers d'API d'accès à l'annuaire local.
L'alimentation de l'Annuaire du GIP est assurée par l'Autorité de Certification (certificats et leurs
révocations) et le Centre de Gestion (autres données).
Normes & Standards utilisés :
• structure annuaire
• format des certificats
• sécurisation des flux
• protocole d'accès à l'annuaire
• protocole inter-annuaire
: X.520 (standard ISO),
: X.509v3 (norme ISO & standard IETF),
: SSL puis TLS (standard IETF),
: LDAP (standard IETF),
: DISP (standard ISO).
10
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 52 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Relations entre le Promoteur et le GIP "CPS"
10.1 KITs d'intégration et licence d'utilisation des services API
10.1.1 Environnements informatiques
Il existe plusieurs environnements informatiques dans le Secteur Santé. Le GIP "CPS" a développé
les logiciels des services dans les environnements les plus représentés :
Plates-formes Windows :
• Windows 95, release 4.00.950 B
• Windows 98, seconde édition, release 4.10.2222 A
• Windows NT4.0, service pack 5
• Windows 2000, service pack 1, release 5.00.2195
• Windows XP.
Plates-formes Macintoch :
• MacOS version FU1-7.5.3, révision 2.2
• MacOS version 9.04
• MaxOS X, version 10.1 (10.2 recommandée)
Plates-formes Unix :
• Unix AIX version 4.2
• Unix SCO Openserver version 5
• Unix SCO UnixWare 7, release 5, version 7.1.1
• Unix SUN Solaris version 7
• Unix HP-UX version 11.0
• Unix Linux RedHat 6.2
Des tests de compatibilité ont été réalisés avec succès sous :
• Unix OpenUnix 8 (utilisation des API SCO UnixWare 7)
• Unix OpenLinux (utilisation des API Linux RedHat)
Plate-forme Prologue : Twin Server 2.2b/D2a
Si un Promoteur a un besoin d'environnement non couvert, il est invité à contacter le GIP
"CPS".
10.1.2
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 53 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
Description du KIT
Le KIT (adapté pour chaque environnement) est constitué en standard des éléments suivants :
• Les logiciels "CPS"
• les services "CPS", le gestionnaire (GALxxx...) et le protocole (PSSxxx...)
• une ou des applications de démonstration de la programmation des services (CPPGxxx...)
• l'application de Gestion "CPS" sur le poste du PS (CPGESxxx...)
• Les documentations "CPS"
• le guide d'intégration des services
• les manuels de programmation des services
• Optionnel : un dispositif de lecture (lecteur) de cartes "CPS",
Le lecteur est un lecteur mono-fente "CPS" du marché certifié "NF-CPS".
• Optionnel : un jeu de cartes "CPS" de tests.
Ce jeu comprend un lot de cartes représentatif des différentes "CPS" : CPS, CPF et CPE.
10.1.3 Commande du KIT
Le KIT est à commander auprès du GIP "CPS". Dans la commande, le Promoteur précise le ou les
environnements souhaités.
Les livraisons s'effectuent en fonction des disponibilités.
Le promoteur dispose de ce KIT pour effectuer ses travaux d'intégration.
Pour mettre en exploitation son application, le Promoteur doit présenter une demande au
Collège de Déontologie du GIP "CPS". Après avoir obtenu l'avis favorable du Collège, il devra
contracter une licence d'usage auprès du GIP "CPS".
10.2
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 54 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Formation au GIP "CPS"
Le GIP "CPS" communique régulièrement aux Promoteurs les dates de sessions de formation sur la
"CPS" et ses services.
Cette formation d'une journée est faite au GIP "CPS", mais il est possible de planifier des
formations sur site.
10.3 Support au GIP "CPS"
Le GIP "CPS" assure une aide technique aux Promoteurs ([email protected]).
Une "hot line" est assurée pour les PS.
Il n'y a pas d'intervention sur site sauf cas majeurs.
10.4 Suivi et rapports d'anomalies
Dans l'annexe 11.4, une Fiche de rapport d'anomalie (RA) est à la disposition du Promoteur pour
communiquer avec le GIP "CPS" sur les anomalies de fonctionnement des services (bogues).
Les modifications résultantes de corrections d'anomalies seront intégrées dans la version suivante du
KIT.
Il peut y avoir des diffusions restreintes de ces corrections en cas d'anomalie bloquante...
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 55 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
11 ANNEXES
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 56 / 74
GIP "CPS"
Version 5.1
Guide d'Intégration des Services Logiciels de la CPS
11.1 Synoptique des services "CPS"
N°
lig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
OuvertureSession
FermetureSession
TestSession
Ce service est indispensable à l'application pour une utilisation "minimale" de la CPS °
Accès vers la carte durant l'exécution de ce service
Le code porteur doit être actif pour exécuter ce service
Des calculs RSA sont mis en jeu dans ce service
Ouvre une session entre l'application et le gestionnaire d'accès et réserve les ressources locales à la station (pas d'accès au lecteur).
4
Ferme la session référencée après avoir libéré les ressources locales à la station..
4
Renvoie le nom de l'application bloquée en exclusivité d'accès à une ressource en empêchant tout accès à la session (contexte multi-applications).
IntroductionCarte
RetraitCarte
TestPrésenceCarte
InformationsCarte
Demande au lecteur l'introduction et la mise sous tension de la carte (si ce n'est déjà fait). Avec ou sans attente.
Demande au lecteur la mise hors tension de la carte et son retrait. Avec ou sans attente.
Demande au lecteur si une carte est présente, si elle est sous tension et si le code porteur est actif (réponse immédiate).
Renvoie les informations caractéristiques de la carte : son émetteur, son type (MS, CPS, PA), son numéro et sa date de fin de validité.
InformationsPorteur
ListeApplications
PresCodePorteur
ModifCodePorteur
RecycleCodePorteur
InformationsPS2
LecSituationPS
GénèreDéfiAuthen
CalculAuthen2
VérifAuthen2
CondenseMessage
CondenseFichier
CalculSign2
VérifSign2
Renvoie les informations génériques sur le porteur de la carte (civilité, nom, prénoms et langues du porteur).
Liste les applications disponibles dans la carte (responsable du domaine commun et des domaines applicatifs).
Présente le code porteur à la carte.
Modifie le code porteur par présentation de l'ancien et du nouveau.
Recycle un code porteur par présentation du code de recyclage et du nouveau code.
Renvoie les informations caractéristiques du PS (profession, spécialité, disciplines...) et son type de carte (CPS, CPF, CPE, CPA).
Lit les différents fichiers de situation d'exercice du PS (accès par identifiant de fichier).
Génère un défi (valeur aléatoire).
Calcule la valeur d'authentification sur un défi fourni de l'extérieur.
Vérifie la cohérence entre une valeur d'authentification et un défi.
Condense un message en vue d'un calcul et / ou d'une vérification de signature.
Condense un fichier en vue d'un calcul et / ou d'une vérification de signature.
Calcule la valeur de signature sur un condensât.
Vérifie la cohérence entre une valeur de signature et un condensât.
DirSituationsPS
LecSitFacturation
Renvoie la liste des identifiants des différents fichiers de Situation d'exercice du Professionnel de Santé
Renvoie les informations du Fichier des Facturations du domaine Assurance Maladie
Nom du service
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
4
4
4
4
4
4
°
°
°
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
N°
lig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Page 57 / 74
GIP "CPS"
N°
lig
27
28
29
30
31
32
33
34
Guide d'Intégration des Services Logiciels de la CPS
Ce service est indispensable à l'application pour une utilisation "minimale" de la CPS °
Accès vers la carte durant l'exécution de ce service
Le code porteur doit être actif pour exécuter ce service
Des calculs RSA sont mis en jeu dans ce service
Nom du service
LectureX509
VerifX509
InterpreteX509_CPS
GenereAleaCPS
09 décembre 2003
Lit le certificat X.509 d'une Clé publique (dont la valeur de la clé)
Vérifie la signature d'un certificat X.509 d'une Clé publique.
Extrait les champs d'un certificat X.509 d'une Clé publique.
Fait générer une valeur aléatoire par la CPS
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Version 5.1
°
°
°
4
4
4
4
N°
lig
27
28
29
30
31
32
33
34
Page 58 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
11.2 Synoptique des Codes Retours des services "CPS"
Hors le code retour 0x80 signifiant une erreur de configuration à l'ouverture de la session, les
services retournent l'un des codes suivants :
Hex
12 FICHIER INVALIDE
11
CARTE INVALIDEE
10
ERREUR_LOGICIELLE
0F
ERREUR_PARAMETRAGE
0E
MANQUE_RESSOURCE_SYSTEME
0D LECTEUR_OCCUPE
0C SERVICE_IMPOSSIBLE
0B CODE_INACTIF
0A CARTE_BLOQUEE
09
CARTE_INCONNUE
08
CARTE_ABSENTE
07
CARTE_HORS_TENSION
06
ERREUR_TRANSMISSION
05
NON_REPONSE_DU LECTEUR
04
SESSION_DEJA_OUVERTE
03
SESSION_NON_OUVERTE
02
LECTEUR_INEXISTANT
01
ETAT_CARTE_CHANGE
FF
NOK
Liste des Services CPS
CPS_Ouverture_Session
CPS_Fermeture_Session
CPS_Test_Session_
CPS_Introduction_Carte
CPS_Retrait_Carte
CPS_Test_Présence_Carte
CPS_Informations sur le Porteur
CPS_Informations sur la Carte
CPS_Liste_Applications
CPS_Pres_Code_Porteur
CPS_Modif_Code_Porteur
CPS_Recycle_Code_Porteur
CPS_Informations_PS
CPS_Lec_Situation_PS2
CPS_Calcul_Authen2
CPS_Condense_Message
CPS_Condense_Fichier
CPS_Calcul_Sign2
CPS_Vérif_Authen2
CPS_Vérif_Sign2
CPS_DirSituationsPS
CPS_LecSitFacturation
F
F
X
X
X
X
0
1
0
2
0
3
0
4
X
0
5
0
6
0
7
0
8
0
9
0
A
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
0
B
0
C
0
D
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
0
E
X
X
X
X
X
0
F
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
1
0
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
1
1
1
2
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
…/…
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 59 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
12
FICHIER INVALIDE
11
CARTE INVALIDEE
10
ERREUR_LOGICIELLE
0F
ERREUR_PARAMETRAGE
0E
MANQUE_RESSOURCE_SYSTEME
Version 5.1
0D LECTEUR_OCCUPE
0C SERVICE_IMPOSSIBLE
0B CODE_INACTIF
0A CARTE_BLOQUEE
09
CARTE_INCONNUE
08
CARTE_ABSENTE
07
CARTE_HORS_TENSION
06
ERREUR_TRANSMISSION
05
NON_REPONSE_DU LECTEUR
04
SESSION_DEJA_OUVERTE
03
SESSION_NON_OUVERTE
02
LECTEUR_INEXISTANT
01
ETAT_CARTE_CHANGE
FF
NOK
Liste des Services CPS
CPS_Lecture_X509
CPS_Vérif_X509
CPS_Interpretation_X509_CPS
CPS_GenereAleaCPS
F
F
0
1
X
0
2
0
3
X
0
4
0
5
X
0
6
X
0
7
X
0
8
X
0
9
X
X
X
X
0
A
0
B
X
X
X
X
X
X
X
0
C
X
X
X
X
0
D
X
0
E
X
X
X
0
F
X
X
X
X
1
0
X
X
X
X
1
1
1
2
X
X
11.3
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 60 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
Performances des Services CPS
Moyennes de mesures de performances de Services :
Station :
Lecteur :
KIT :
PC pentium II
NF CPS, connecté au port série à 9600 bds et PC/SC USB
Version 5.0 Windows 32 bits
Performances de l'API V5 de gestion d'introduction / éjection carte :
API (s)
Ejection
T1 mesuré
Introduction + Ejection
T2 mesuré
Introduction
T3=T2–T1
T4 mesuré
Lecteur
PSS
PC/SC
PSS
PC/SC
PSS
PC/SC
CPS2ter
0,22 s
0,89 s
1,79 s
1,73 s
1,57 s
0,84 s
0,29 s
0,15 s
CPS2bis
0,21 s
0,97 s
2,09 s
2,17 s
1,88 s
1,20 s
0,38 s
0,28 s
CPS2
0,21 s
0,97 s
2,47 s
2,42 s
2,26 s
1,45 s
(actualisée)
0,68 s
0,46 s
CPS2
0,22 s
1,00 s
2,46 s
2,45 s
2,24 s
1,45 s
0,65 s
0,45 s
T1 = éjection (mise en tension) mesurée avec une carte présente et hors tension.
T2 = introduction + éjection mesurée avec une carte présente.
T3 = introduction d'une carte présente mais hors tension (calculé).
T4 = introduction d'une carte présente sous tension.
Performances de l'API V5 de calcul de signature (CPS_CalculSign2) :
Clé
96
128
Lecteur
PSS
PC/SC
PSS
PC/SC
CPS2ter
1,90 s
1,25 s
CPS2bis
1,95 s
1,75 s
(*)
(*)
CPS2
1,45 s
1,45 s
(*) CPS_CalculAuthen2 pour la clé 128 de la CPS2ter,
256
PSS
3,35 s
PC/SC
2,30 s
Performances de l'API V5 de lecture de certificat (CPS_CalculLectureX509) :
Clé
Lecteur
CPS2ter
CPS2bis
CPS2
96
128
PSS
PC/SC
3,55 s
2,60 s
1,70 s
1,30 s
PSS
3,90 s
256
PC/SC
1,80 s
PSS
4,45 s
PC/SC
2,15 s
11.4
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 61 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
Fiche de rapport d'anomalie (RA)
Cette fiche est à compléter et à retourner au GIP "CPS" (par E-mail par exemple) :
Fiche de rapport d'anomalie
Société :
Interlocuteur :
Tél :
E-mail :
Adresse :
IDENTIFICATION DE L'EMETTEUR (remplir la colonne de gauche)
GIP "CPS"
Service Technique
Fax :
Tél :
01 44 53 36 53 Fax :
01 40 16 90 15
E-mail :
[email protected]
Adresse : 8 bis, rue de Châteaudun - 75009 - PARIS
IDENTIFICATION DU RA (remplir la colonne de gauche)
N° interne chez l'émetteur :
N° interne au GIP :
AAAAMMJJ-NN-XXX
Date d'envoi au GIP :
JJ/MM/AAAA
Date d'envoi de la réponse : JJ/MM/AAAA
… Bloquant
… Urgent
… Information
Date de clôture du RA:
JJ/MM/AAAA
QUALIFICATION DU RA
Titre du RA :
<<Phrase courte mnémotechnique>>
PIECES JOINTES :
… Disquettes
… Cartes
<<Préciser>>
Anomalie Constatée :
… Documents
… Autres
DESCRIPTION DU RA :
<<décrire l'anomalie et les valeurs relevées>>
Comment la reproduire : <<décrire s'il est possible de reproduire l'anomalie>>
Proposition de solution : <<décrire les besoins>>
INFORMATIONS TECHNIQUES SUR LE RA :
1) Compte rendu d'exécution de l'API testée :
CR renvoyé par l'API : <<??>> décimal ou Hexa (rayer la mention inutile)
Structure CPS_StatusService renvoyée par l'API :
NumVersionAPI
<<??>>
décimal ou Hexa (rayer la mention inutile)
NumVersionAPI
<<??>>
décimal ou Hexa (rayer la mention inutile)
NumAPI
<<??>>
décimal ou Hexa (rayer la mention inutile)
StatusAPI
<<??>>
décimal ou Hexa (rayer la mention inutile)
StatusGestionnaire <<??>>
décimal ou Hexa (rayer la mention inutile)
StatusInterne
<<??>>
décimal ou Hexa (rayer la mention inutile)
StatusLecteur
<<??>>
décimal ou Hexa (rayer la mention inutile)
StatusCarte
<<??>>
décimal ou Hexa (rayer la mention inutile)
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 62 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
2) Versions des logiciels (affichées par CPPGCW32.exe, Menu Lectures, Information Poste)
CPSW32
<<??>>
SSCASW32
<<??>>
GALINW32
<<??>>
GALCLW32
<<??>>
GALSVW32
<<??>>
PSSINW32
<<??>>
3) Joindre (si possible) :
N° logique de la carte testée :
N° du certificat X509 testé :
<<??>>
<<??>>
4) Questions (si possible) :
L'API fonctionne-t-elle avec CPPGCW32.exe ?
L'application CPGESW32 fonctionne-t-elle ?
… non … oui … oui, mais <<préciser>>
… non … oui (joindre CPS-DIAG.TXT et CPS-TRAC.TXT)
5) Autres :
<<Compléter...>>
11.5
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 63 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
Principales Questions - Réponses
11.5.1 Répartition des services sur le poste ou le serveur ?
Poste :
Serveur :
le matériel et le programme qui gèrent la "CPS" (là ou se situe le porteur)
le système informatique qui se protège grâce aux sécurités liées à la "CPS"
sans nécessité de présence d'une "CPS".
Attention, le poste du PS peut aussi être considéré comme serveur dès qu'il sécurise une
communication avec un autre PS :
• Vérification d'une signature sur un message reçu.
• Authentification de la "CPS" distante avant d'engager un dialogue.
La lecture de ce manuel répond explicitement à la question : l'analyse des procédures et des
services associés permet d'étudier la répartition des services entre les 2 entités.
En première approximation :
• Tous les services qui font accès à la carte sont sur le poste (voir annexe "Synoptique des
services "CPS"") et ont donc un champ EtatCarte !
• Tous les services de lectures dans la "CPS" et de calculs par la "CPS" (RSA) sont sur le poste.
• Tous les services de vérifications RSA (de certification, de signature, d'authentification) sont
sur le serveur. Attention, dans la procédure de signature, les services CPS_CondenseFichier
et CPS_CondenseMessage sont utilisés sur les 2 entités.
Le tableau de la page suivante donne la répartition Poste et Serveur
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 64 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Services sur le Poste (la CPS)
Services sur le Serveur
Version 5.1
Commentaires
CPS_OuvertureSession
CPS_FermetureSession
Gestion des sessions
CPS_IntroductionCarte
CPS_RetraitCarte
CPS_TestPrésenceCarte
Gestion de la carte
CPS_PresCodePorteur
CPS_ModifCodePorteur
CPS_RecycleCodePorteur
Gestion du code porteur
CPS_InformationsCarte
CPS_InformationsPorteur
CPS_ListeApplications
CPS_InformationsPS2
CPS_LecSituationPS
CPS_DirSituationsPS
CPS_LecSitFacturation
Lectures carte
CPS_LectureX509
CPS_VerificationX509
CPS_InterpretationX509-CPS
Contrôles de certification
CPS_GénèreDéfiAuthen
Procédure
d'authentification
CPS_CalculAuthen2
CPS_VérifAuthen2
CPS_CondenseMessage
CPS_CondenseFichier
CPS_CalculSign2
09 décembre 2003
CPS_CondenseMessage
CPS_CondenseFichier
CPS_VérifSign2
Procédure de signature
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 65 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
11.5.2 La carte CPS et la carte VITALE ?
La carte CPS est la carte du Professionnel de Santé et la carte VITALE est la carte de l'Assuré
Social.
La CPS est utilisée par toutes les applications du Secteur Santé.
Les cartes CPS et VITALE sont utilisées par les applications de gestion de la Feuille de
Soin Electronique (FSE).
Le GIP "CPS" est responsable de l'émission, la gestion et la promotion de la "CPS" auprès des
utilisateurs et de la disponibilité auprès des Promoteurs d'Applications de logiciels d'accès à la
"CPS" (services).
Le GIP "CPS" a publié vers les industriels les spécifications techniques des lecteurs de
cartes CPS. L'industriel fait certifier son matériel auprès de l'AFNOR. Le Promoteur et
l'utilisateur choisissent le lecteur "CPS" dans la liste des lecteurs certifiés.
Le GIP "CPS" fournit aux promoteurs d'applications les logiciels des services CPS et un
jeu de cartes CPS de tests.
L'intégration dans une application de la gestion de la Feuille de Soin Electronique est de la
responsabilité technique du GIE SESAM-VITALE.
Le GIE SESAM-VITALE fournit aux Promoteurs les Modules Logiciels à intégrer dans
l'application et les lecteurs "Intelligents", double fente CPS et VITALE ainsi que les jeux
de cartes de tests.
Les 2 organismes ont défini en commun la structure technique de la plate-forme d'accueil de ces
diverses applications.
Spécifications du Gestionnaire d'accès aux lecteurs (GALSS), du protocole de
communication des lecteurs (PSS) et du Jeu de commande minimum du lecteur de "CPS".
La "fente" CPS du lecteur SESAM-VITALE est accessible directement par une application
comme un simple lecteur CPS.
En conséquence :
• Le cahier des charges du lecteur bi-fente CPS-VITALE et de l'intégration des logiciels FSE
est à rechercher auprès du GIE SESAM-VITALE.
• Les spécifications techniques des lecteurs CPS et des services CPS sont à rechercher auprès
du GIP "CPS"
• La diffusion du KIT "CPS" seul est assurée par le GIP "CPS".
• La diffusion du KIT "FSE+CPS" est assurée par le CNDA.
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 66 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
11.5.3 Langages de programmation des API's et compilateurs ?
Les API's CPS (et les logiciels GALSS et PSS) sont développées en langage C.
Les compilateurs utilisés sont :
Windows
Prologue
MAC
UNIX SCO
LINUX
HP
Sun Solaris
UnixWare
AIX
Visual C++ Microsoft
Visual C++ Microsoft
Code Warrior de MetroWERKS
SCO UNIX Development System
GCC
HP C Compiler
Forte Developper
CCS
AIX Compiler
Les API's CPS peuvent être activées à partir de tout langage X dès lors que le compilateur ou
interpréteur X utilisé offre la possibilité d'interface avec le C (essentiellement le respect de règles
d'empilage et de dépilage des paramètres) ce qui est le cas - à priori - des compilateurs actuels.
Par exemple, le KIT CPS livré dans l'environnement Microsoft (Visual C++) contient des
programmes de démonstration de la programmation des API CPS en langage C et en
langage Visual-Basic.
Les règles et options de compilation des API CPS sont explicitées dans les manuels de
programmation.
Si certaines imprécisions existent, le Support du GIP "CPS" doit être contacté et les
manuels de programmation seront enrichis.
Exemple extrait du fichier CPSAPI.H de déclaration des types et prototypes des APIS CPS
typedef struct
UINT16
UINT16
UINT16
UINT16
UINT16
UINT16
UINT16
UINT16
UINT16
CPS_StatusService {
NumVersionAPI;
/* numero de version des API */
NumVersionAPI;
/* numero de version du service */
NumAPI;
/* numero du service API */
StatusAPI;
/* code retour de l'API */
StatusGestionnaire; /* resultat d’execution des fonctions du Gestionnaire. */
StatusInterne;
/* etape interne du service */
StatusLecteur;
/* Code retour lecteur */
StatusCarte;
/* Status Carte ME1-ME2 */
StatusCarte;
} CPS_StatusService;
typedef struct
UINT8
UINT8
UINT8
UINT8
UINT8
CPS_InfosCarte {
IdEmetteur
IdCarteLog
CategorieCarte
DateEmis
DateFinVal
} CPS_InfosCarte ;
[11];
[10];
[2];
[8];
[8];
UINT16 API_ENTRY CPS_InformationsCarte( /* Prototype API */
UINT16
NumSession,
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 67 / 74
GIP "CPS"
struct
Guide d'Intégration des
Services Logiciels de la CPS
CPS_InfosCarte PTR
CPS_StatusService PTR
PUINT16
09 décembre 2003
Version 5.1
pIC,
pStatusService,
pEtatCarte);
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 68 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
11.5.4 Connexion série de lecteurs NF CPS sur le Macintosh ?
Les lecteurs CPS fournis par les différents constructeurs doivent pouvoir s'interconnecter (chaînage
de lecteurs). Le standard de connexion "DB9" a été choisi. Tous les lecteurs NF CPS ont donc une
prise de raccordement DB9 femelle.
• Pour les PCs et beaucoup d'autres machines, cette prise se raccorde sur la sortie DB9 mâle du
Port Série.
• Pour les Macintosh, le GIP "CPS" livre dans son KIT un câble de raccordement DB9-DIN8.
La solution, pour l'utilisateur final de l'application, appartient au constructeur du lecteur
et au promoteur d'application.
Schéma du câble de raccordement du lecteur CPS sur Macintosh (attention : ce schéma ne
prend pas en compte l’alimentation électrique du lecteur) :
Lecteur CPS
DB9
M
DB9
M
DB9
F
PC
ou
DB9
M
3
5
2
MAC
DIN8
3
4
5
Le lecteur CPS de base (simple lecteur transparent) est livré configuré d'adresse PSS = 0 et de
vitesse = 9600 bauds.
• Avantage : pas de manipulation.
• Inconvénient : une mise à jour se fait par intervention physique sur le lecteur (une mise à jour ne
serait nécessaire qu'en cas de modification de spécifications).
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 69 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
11.5.5 La CPS et la gestion des dates ?
Les données concernant les dates dans les cartes de la famille CPS, ainsi que dans la base du Centre
de gestion du GIP "CPS", sont représentées sous la forme AAAAMMJJ (AAAA= Année,
MM=Mois, JJ=Jour) où l'année est enregistrée sur quatre chiffres.
Les API CPS ne font que lire dans la carte les dates et les mettre sous la forme précisée, à la
disposition des applications.
Les API CPS ne font aucun traitement sur les dates (ni calcul, ni comparaison, ni tri).
Le GIP "CPS" rappelle qu'il est de la responsabilité de tout Promoteur d'Application et/ou de
l'exploitant de l'application intégrant les Services CPS, de traiter dans ses applications et/ou de
stocker, les dates fournies par les API-CPS sous leur forme intégrale.
Périodes de validité des cartes CPS :
• La date de début de validité d'une carte correspond à sa date de fabrication.
• La date de fin de validité d'une carte correspond à sa date de début de validité + 2 ans, cadrée
au dernier jour du mois.
Périodes de validité des certificats X.509 :
• La durée de validité des clés (droit d'utilisation) est égale à celle de la carte.
• La durée de validité des certificats d'authentification est égale à celle de la carte.
• La durée de validité des certificats de signature est égale à celle de la carte + 1 mois.
Ce décalage d'un mois laisse un délai entre le moment où un porteur signe un message et
le moment ou le destinataire récupère le certificat lui permettant de vérifier cette
signature.
Ce décalage ne se justifie pas pour l'authentification qui s'effectue "à l'instant t".
11.5.6
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 70 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
Compatibilités entre les versions de CPS et de KIT ?
La CPS contient un ensemble de données. La liste de ces données ainsi que leurs structures internes
(formats et valeurs de codification) sont décrites dans un document référencé par une valeur de PIX
(Propriety application Identifier eXtension).
Ce PIX permet d'établir un lien entre la version de la carte et la version des API CPS.
La valeur de PIX est inscrite dans la carte CPS et les API sont programmées pour des traitements
adaptés aux différentes valeurs de PIX existants. Ainsi, le PIX = 01 est aujourd'hui refusé par les
API CPS et les cartes CPS sur le terrain ont un PIX = 02.
Il ne peut exister au maximum que 2 versions de CPS sur le terrain :
• la plus récente en cours d'émission pour les nouveaux porteurs et pour les renouvellements ;
• la précédente pour un délai de 3 ans de période de validité d'une CPS.
Ceci dans la mesure ou le GIP "CPS" ne change pas de version de CPS avant 3 ans.
Les API de version N+1 sont un sur ensemble des API de version N.
Il en résulte une totale compatibilité illustrée dans le schéma suivant :
Application basée sur API N
Application basée sur API N+1
API N
API N+1
CPS N
CPS N+1
11.5.7
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 71 / 74
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
Accès à l'annuaire des certificats X.509 ?
Tout public a un accès à l'annuaire du GIP "CPS" : http://annuaire.gip-cps.fr/ pour une recherche
limitée. (voir aussi l'accès par le site du GIP "CPS" : http://www.gip-cps.fr)
Au delà de cette limite, l'annuaire déclenche une procédure de contrôle de présence d'une CPS.
Une application peut présenter des requêtes LDAP vers l'annuaire CPS. Ces requêtes sont
présentées au format URL défini dans [RFC 2255]. Voici quelques exemples :
Objectif
Fiche de l'AC racine
Fiche de l'AC CPS2
Fiche de l'AC
Classe1
Liste de révocation
Delta de la liste de
révocation
Certificat(s) AC
Liste des médecins
porteurs d'une CPF
Liste des
établissements dans
un département
Etablissement dans
un département
Fiche PS (structure)
Fiche PS
Fiche PS (structure)
Fiche PS
Fiche PS
Fiche PS
Fiche PS
09 décembre 2003
Requête
ldap://annuaire.gip-cps.fr/o=gip-cps,c=fr
ldap://annuaire.gip-cps.fr/ou=ac-cps2,o=gip-cps,c=fr
ldap://annuaire.gip-cps.fr/ou=ac-classe-1,o=gip-cps,c=fr
ldap://annuaire.gip-cps.fr/ou=ac-classe-1,o=gipcps,c=fr?certificateRevocationList;binary
ldap://annuaire.gip-cps.fr/ou=ac-classe-1,o=gipcps,c=fr?deltaRevocationList;binary
ldap://annuaire.gip-cps.fr/ou=ac-classe-1,o=gipcps,c=fr?caCertificate;binary
ldap://annuaire.gip-cps.fr/ou=médecin,o=gipcps,c=fr?cn,sn,gn,typecarte?sub?(typecarte=CPF)
ldap://annuaire.gip-cps.fr/l=Paris (75),o=gip-cps,c=fr??one?
ldap://annuaire.gip-cps.fr/l=Paris (75),o=gip-cps,c=fr?raisonsociale?one?
ldap://annuaire.gipcps.fr/sn=DUPONT+givenname=Jean+cn=0751012344,ou=075101234400,l
=Paris (75),o=gip-cps,c=fr
ldap://annuaire.gipcps.fr/sn=DUPONT+givenname=Jean+cn=0751012344,ou=médecin,o=gipcps,c=fr
ldap://annuaire.gip-cps.fr/o=gipcps,c=fr??sub?(&(serialnumber=2000123456)(objectclass=cpsStructuralPers
on))
ldap://annuaire.gip-cps.fr/o=gipcps,c=fr??sub?(&(serialnumber=2000123456)(objectclass=cpsPersonne))
ldap://annuaire.gip-cps.fr/ou=médecin,o=gipcps,c=fr??sub?(cn=0751012344)
ldap://annuaire.gip-cps.fr/ou=médecin,o=gip-cps,c=fr??sub?(&(sn=
DUPONT)(cn=0751012344))
ldap://annuaire.gip-cps.fr/ou=médecin,o=gip-cps,c=fr??sub?(&(sn=
DUPONT)(givenname=Jean))
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 72 / 74
GIP "CPS"
Guide d'Intégration des
Services Logiciels de la CPS
Version 5.1
Documentation GIP "CPS"
Page 73 / 74
11.5.8
09 décembre 2003
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Guide d'Intégration des
Services Logiciels de la CPS
GIP "CPS"
Version 5.1
CPS et lecteurs PC / SC ?
L'architecture PC / SC existe dans les environnements Windows, Mac OSX et Linux.
Il a été développé une passerelle de communication de l'architecture GALSS vers PC / SC afin de
permettre l'utilisation de ces lecteurs par les API CPS et les API de lecture Vitale.
API des SERVICES CPS
autres :
API de Lectures Vitale (Hospitaliers)
GESTIONNAIRE D'ACCES AUX LECTEURS (GALSS)
Protocole PSS
Protocole PC / SC =
Passerelle de communication vers
L'architecture PC / SC
Attention toutefois :
1. Cette passerelle est incompatible avec les lecteurs bi-fente de gestion des FSE.
Il ne peut donc être question d'installer cette passerelle chez un PS équipé de logiciels de
gestion de FSE…
2. Elle suppose que l'installation de PC / SC (Resource Manager et Driver) est correcte.
Suivant les environnements, l'installation de PC /SC est native ou doit être effectuée,
l'installation et la reconnaissance du lecteur sont automatiques ou non.
Il est impératif de vérifier ces installations avant d'utiliser cette passerelle.
3. Elle nécessite une mise à jour particulière du fichier de configuration GALSS.INI
Limitations : cette passerelle effectue une conversion entre 2 architectures de types différents
(synchrone et asynchrone) ; certains traitements d'erreurs en cas de manipulations "sauvages"
peuvent être non optimum !
09 décembre 2003
Documentation GIP "CPS"
© GIP "CPS" : Ce document est la propriété du Groupement d'intérêt Public CPS.
Page 74 / 74