Overlay Capture Architecture (OCA) pour émettre des attestations multilingues incluant une image de marque (branding)
Voici les travaux réalisés dans le cadre d'une expérimentation visant à démontrer la pertinence d'utiliser le standard Overlay Capture Architecture (OCA) pour émettre des attestations multilingues incluant une image de marque (branding) tel que proposé dans la requête pour commentaires ARIES RFC 0013: Overlays.
-
Comprendre le standard Overlay Capture Architecture (OCA);
-
Modifier le portefeuille ARIES Mobile Agent React Native pour qu'il affiche une attestation en français-anglais incluant une image de marque (branding);
Overlay Capture Architecture (OCA) est une architecture de capture de données. Elle représente un schéma comme un objet multidimensionnel composé d'une base de capture stable et des superpositions liées qui viennent enrichir la base de capture.
Contexte de l'histoire d'Alice
Une superposition de méta-information peut être utilisée pour ajouter des informations contextuelles sur la base de capture, notamment son nom , sa description, etc.
Une superposition d'encodage de caractère peut être utilisée pour définir l'encodage du jeu de caractères (par exemple UTF-8, ISO-8859-1, Windows-1251, Base58Check, etc.). Elle peut être utile pour mettre en œuvre des solutions qui facilitent la saisie de données dans plusieurs langues.
Une superposition de format peut être utilisée pour ajouter des formats, des longueurs de champ ou des schémas de codage de dictionnaire aux attributs de la base de capture.
Une superposition de saisie peut être utilisée pour ajouter des valeurs de champ prédéfinies dans une langue spécifiée aux attributs de la base de capture. Pour minimiser le risque de capture de données PII imprévues, il est préférable d'éviter la mise en œuvre de champs de texte libre. Ce type de superposition permet de saisir des données structurées, ce qui élimine le risque de capturer et de stocker ultérieurement des données dangereuses.
Une superposition de libellé peut être utilisée pour ajouter des étiquettes dans une langue spécifique aux attributs et aux catégories de la base de capture. Ce type de superposition permet d'afficher les étiquettes dans une langue spécifique au niveau de la couche de présentation pour une meilleure compréhension par l'utilisateur final.
Une superposition d'information peut être utilisée pour ajouter une prose pédagogique, informative ou juridique afin de faciliter le processus de saisie des données.
Une superposition de mise en page d'attestation peut être utilisée pour afficher les données capturées par le schéma avec, par exemple, une image de marque (branding). Elle permet le positionnement de texte (données et libellés), l'insertion d'images, etc. Les instructions pour définir la mise en page est un mixte de YAML et de CSS.
La base de capture et les superpositions liées sont définies dans des documents au format JSON. Lors de la sauvegarde, ils sont insérés dans une archive au format zip. Ce dernier représente un paquet (bundle) Overlay Capture Architecture (OCA).
Le base de capture et les superpositions sont liées ensemble par des identifiants auto-adressables. Un identifiant auto-adressable est un identifiant qui est généré de manière déterministe à partir du contenu qu'il identifie et qui y est intégré, ce qui le rend, ainsi que ses données, mutuellement inviolables. Ce type d'identifiant permet de s'assurer que le contenu qu'il identifie n'a pas été altéré. Un identifiant auto-adressable peut être calculé pour identifier un paquet Overlay Capture Architecture (OCA). On peut ainsi s'assurer que ce dernier est authentique et qu'il n'a pas changé depuis sa création.
La besoin initial qui a mené à cette expérimentation était de pouvoir émettre des attestations multilingues incluant une image de marque (branding). On peut penser à une attestation représentant un permis de conduire affichée dans le portefeuille sous forme de carte avec un logo du Québec et une image en arrière-plan. De plus, la traduction des attributs de l'attestation offre implicitement la possibilité de les afficher sous une forme plus lisible par un humain. Tel que décrit dans la requête pour commentaires ARIES RFC 0043: I10n (Locali[s|z]ation), le principal cas d'utilisation de DIDComm est la prise en charge du traitement automatisé, comme dans le cas des messages qui conduisent à la délivrance d'une attestation, à l'échange d'une preuve, etc. Le traitement automatisé peut être le seul moyen pour certains agents de traiter les messages, s'il s'agit de dispositifs ou de logiciels gérés par des organisations sans intervention humaine. Cependant, de nombreuses interactions requièrent une intervention humaine. Par exemple, l'envoi d'une preuve à partir d'un portefeuille mobile. C'est pourquoi, losque des humains sont impliqués, la localisation et la traduction potentielle dans diverses langues naturelles deviennent importantes. Au moment d'écrire ces lignes, le statut de la requête pour commentaires ARIES RFC 0043: I10n (Locali[s|z]ation) est "Démontrée", mais elle n'a pas encore été implémentée. Comme le standard Overlay Capture Architecture (OCA) offre, entre autres, la possibilité de créer des superpositions de libellés dans différentes langues pour modifier le nom des attributs de la base de capture, cela rendait l'exécution de cette expérimentation très pertinente. D'autant plus que le standard Overlay Capture Architecture (OCA) offre beaucoup d'autres possibilités (format, encodage de caractère, valeurs de champ prédéfinies, etc.).
- npm
- CANdy-Dev-Network
- Un téléphone (iPhone ou Android) ou Android Studio
Suivre les instructions d'installation de la version CQEN-QDCE du portefeuille "ARIES Mobile Agent React Native". Utiliser la branche "poc-oca" pour récupérer le code de l'expérimentation.
Pour cette expérimentation, il a été décidé de ne pas modifier le schéma au format anoncred pour lui associer un paquet Overlay Capture Architecture (OCA). Il serait possible (peut-être préférable) d'ajouter le SAI dans un attribut du schéma au format anoncred. C'est plutôt l'identifiant unique de la définition de l'attestation (credential definition) qui a été utilisé pour le récupérer. Par contre, une référence (SAI) permettrait de créer un lien fort entre l'attestation et son paquet Overlay Capture Architecture (OCA).
L'attestation utilisée pour cette expérimentation est une identité numérique citoyenne. Les attributs ont été nommés en anglais et incluent des caractères spéciaux. Deux superpositions de libellés ont été créées pour les traduire en français et en anglais.
{
"schema_name": "QCPERSON",
"schema_version": "1.0",
"attributes": [
"first_name",
"last_name",
"birth_date",
"street_address",
"city",
"province",
"country",
"postal_code",
"issued"
]
}
Il est disponible sur le registre de preuve CANdy-Dev-Network. Son identifiant est Ep31SvFAetugFPe5CGzJxt:2:QCPERSON:1.0. La définition d'attestation utilisée est Ep31SvFAetugFPe5CGzJxt:3:CL:25458:QCPERSON2.
Voici le schéma Overlay Capture Architecture (OCA) utilisé pour l'expérimentation (forme abrégée):
{
"capture_base": {
"@context": "https://odca.tech/v1",
"name": "ANIG",
"type": "spec/schema_base/1.0",
"description": "Attestation Numérique d'Identité Gouvernemental",
"classification": "",
"issued_by": "",
"attributes": {
"first_name": "Text",
"last_name": "Text",
"birth_date": "Date",
"street_address": "Text",
"postal_code": "Text",
"province": "Text",
"country": "Text",
"issued": "Date"
},
"pii_attributes": [
"first_name",
"last_name",
"birth_date",
"street_address",
"postal_code",
"province",
"country"
]
},
"overlays": [
{
"@context": "https://odca.tech/overlays/v1",
"type": "spec/overlay/label/1.0",
"issued_by": "",
"role": "",
"purpose": "",
"schema_base": "hl:beYwDtqVG34LzD9JSEf6oGXQESNMcvcRxjySu2rL7H9w",
"language": "fr_FR",
"attr_labels": {
"first_name": "Prénom",
"last_name": "Nom",
"birth_date": "Date Naissance",
"street_address": "Rue",
"postal_code": "Code Postale",
"province": "Province",
"country": "Pays",
"issued": "Émis"
},
"attr_categories": [
"_cat-1_"
],
"cat_labels": {
"_cat-1_": ""
},
"cat_attributes": {
"_cat-1_": [
"first_name",
"last_name",
"birth_date",
"street_address",
"postal_code",
"province",
"country",
"issued"
]
}
},
{
"@context": "https://odca.tech/overlays/v1",
"type": "spec/overlay/label/1.0",
"issued_by": "",
"role": "",
"purpose": "",
"schema_base": "hl:beYwDtqVG34LzD9JSEf6oGXQESNMcvcRxjySu2rL7H9w",
"language": "en_US",
"attr_labels": {
"first_name": "First Name",
"last_name": "Last Name",
"birth_date": "Date of Birth",
"street_address": "Street Address",
"postal_code": "Postal Code",
"province": "Province",
"country": "Country",
"issued": "Issued"
},
"attr_categories": [
"_cat-1_"
],
"cat_labels": {
"_cat-1_": ""
},
"cat_attributes": {
"_cat-1_": [
"first_name",
"last_name",
"birth_date",
"street_address",
"postal_code",
"province",
"country",
"issued"
]
}
},
...
]
}
Il inclut deux superpositions de libellés, une en français et une en anglais. Les noms des attributs de la base de capture sont les mêmes que ceux du schéma au format anoncred afin d'appliquer les superpositions correctement lors de l'affichage dans le portefeuille.
Création de schéma OCA
Un éditeur de schéma OCA est disponible sur le GitHub de The Humain Colossus Lab. En plus de permettre la création de schéma OCA et offre la possibilité de les publier dans un dépôt commun.
Exemple de mise en page d'attestation: P.S.: L'exemple ci-bas n'est pas fonctionnel. Il a été abrégé pour montrer uniquement les différentes instructions permettant la mise en page.
config:
width: 400px
height: 300px
pages:
- config:
style: \"width: 380px; height: 280px; margin: 10;\"
background_image: SAI:zQmQg7JDptBT4CdfHuJNqfxpXf8AbvgdWes9h2731oF37ak
name: Front
elements:
- type: row
config:
style: \"height: 30px;\"
...
elements:
- type: content
text: DL
config:
style: \"font-size: 14px; color: #1739ba; font-weight: bold; display: inline-block;\"
- type: attribute
name: drivingLicenseID
part: data
config:
style: \"display: inline-block; padding-left: 10px; text-transform: uppercase; font-size: 21px; color: #a62523;\"
...
Plusieurs considérations doivent être prises en compte :
- Quelles sont les fonctionnalités d'OCA qui nous intéressent (portée);
- À quel endroit on va stocker les schémas OCA;
- Comment configurer Bifold pour retrouver le dépôt de schémas OCA;
- Comment Bifold va appliquer le rendu des différentes couches OCA sur une attestation;
- Un schéma au format anoncred et une définition d'attestation associée sont enregistrés dans le registre de preuve CANdy-Dev-Network;
- Un paquet Overlay Capture Architecture (OCA) incluant une base de capture qui possède les mêmes attributs que l'attestation définie au point 1, une superposition de libellés en français, une superposition de libellés en anglais et une superposition de mise en page d'attestation sont publiées dans le dépôt commun;
- L'attestation définie au point 1 est émise dans le portefeuille;
- Lorsque l'attestation est affichée par le portefeuille, le paquet Overlay Capture Architecture (OCA) qui lui est associé est récupéré dans le dépôt commun;
- Le nom des attributs de l'attestation sont remplacés par ceux définis dans la superposition de libellés en français ou en anglais;
- L'image de marque (branding) définie dans la superposition de mise en page d'attestation est affichée;
L'expérimentation a permis de montrer qu'il est possible d'utiliser le standard Overlay Capture Architecture (OCA) pour émettre une attestation multilingue incluant une image de marque (branding) et de l'afficher dans le portefeuille "ARIES Mobile Agent React Native". De plus, standard Overlay Capture Architecture (OCA) offre d'autres possibilités comme l'identification des informations sensibles, l'encodage des caractères, la description d'attributs, etc. qui n'ont pas été explorées. L'intégration dans le portefeuille a été relativement rapide étant donné que des implémentations sont déjà disponibles.
Attestation dans le portefeuille
La création d'un paquet Overlay Capture Architecture (OCA) est très simple en utilisant l'éditeur de schéma OCA. L'alignement des attributs de la base de capture avec ceux du schéma au format anoncred peut représenter une source d'erreurs. L'outil devrait être modifié afin d'enregistrer le schéma au format anoncred et sa définition d'attestation (credential definition) automatiquement dans le registre de preuve (Indy blockchain) au moment de la publication du paquet.
La création d'une superposition de mise en page d'attestation pour ajouter une image de marque (branding) est plus complexe. Son format, basé sur un mixte de YAML et de CSS, est difficile à lire et à écrire. Aucun outil de prévisualisation du rendu n'existe. Il serait pertinent d'en développer un pour valider l'affichage de l'attestation avant la publication du paquet Overlay Capture Architecture (OCA). Idéalement, un éditeur visuel de type What You See - What You Get (WYSIWYG) serait la meilleure solution à fournir aux émetteurs d'attestation dans un environnement de production.
Le rendu de l'image de marque de l'attestation a été implémenté avec la composante React Native WebView. Bien que cette dernière offre une grande compatibilité pour l'affichage d'HTML-CSS-Javascript, le rendu final est assez lent (du moins avec l'émulateur de téléphone Android). Des essais de performance plus poussés devraient être effectués pour confirmer si ce choix est judicieux.
L'expérimentation a permis d'explorer la pertinence d'utiliser le standard Overlay Capture Architecture (OCA) pour émettre des attestations multilingues incluant une image de marque (branding). Le résultat final s'est avéré concluant. Elle a également permis de découvrir que l'intégration du standard offre beaucoup plus (identification des informations personnelles (PII), méta-information, encodage des caractères, valeurs de champ prédéfinies, format d'affichage, etc.). Un outil de création de formulaires de saisie OCA pour la capture de données est également disponible. Il a le potentiel d'être intégré à un coffre à outils plus générique offert aux émetteurs d'attestation. Ce dernier permettrait, par exemple, de créer visuellement une attestation (nom, version et attributs par glisser-déposer), de publier son schéma au format anoncred dans le registre de preuves et son paquet Overlay Capture Architecture (OCA) associé dans un dépôt commun. Et finalement cette attestation pourrait être offerte...
Distribué sous Licence Libre du Québec – Réciprocité (LiLiQ-R). Voir LICENCE pour plus d'informations.