Beskrivelse
Et repo som inneholder kode for en modul som gjør at man kan interagere med kryptert data, som er delt via f.eks Delta Sharing.
Bruk
For å installere biblioteket kjører man bare
pip install kv-dataplatform-consumer
Testet med versjon 3.13.1
Generer en egen nøkkel
Som konsument av kryptert data vil du trenge en egen asymmentrisk nøkkel for å dekryptere Kartverkets datakey (symmetriske nøkkel i steg1 under). Den kan du generere på følgende måte
from kv_dataplatform_consumer import crypto_utils
crypto_utils.generate_public_private_key()
Ta vare på private_key og lagre denne et sikkert sted hos deg selv, og del public_key med Kartverket. I første omgang kan den sendes manuelt til dine kontaktpersoner i Kartverket.
Om du ikke kan bruke biblioteket kan du bruke følgende kommandoer
# Generer RSA 4096 private key
openssl genrsa -out private.pem 4096
# Print public key til fil
openssl rsa -in private.pem -pubout > public.pem
Komme i gang med utvikling
- Man må ha pipx og poetry installert
- Deretter er det bare å kjøre
poetry install - Så kan man kjøre testene via
poetry run pytest
Forklaring på kryptoflyten
- Generer en unik symmetrisk nøkkel =
key - Generer en tilhørende unik UUID =
key_id - Lagre denne et sikkert sted, slik at man senere kan slå opp på
key_id - Oppretter / rekrypterer en tabell, der man for hver rad i gjenbruker nøkkelen key og genererer en unik nonce for (kolonne,rad) som skal krypteres. Tabellen vil lagres inn i et gjenbrukbart schema, f.eks pii_schema. Gitt en tabell kalt person med kolonnene navn og alder, og man skal kryptere navn, så vil man da ende opp med en tabell som ser slik ut:
| navn_enc | navn_nonce | alder | key_id |
|---|---|---|---|
| qwkeoqwke | 12mkqqwek | 20 | ce-232 |
| qwkej123j | 1kocmmqwe | 30 | ce-232 |
| koko2k313 | cmk2kpqeq | 40 | ce-232 |
- Deretter så vil man for hver consumer c ta inn deres public key =
pkc, og da lage et entry, der man kryptererkeymed konsumenten sin offentlige nøkkelpkc. Da kan man lage et entry i__keys__c__pii_schemaog en tabell som også heterperson, som vil se slik ut:
| key_id | key |
|---|---|
| ce-232 | wqkeo123koq |
- Konsumenten kan da ta i bruk pakken i repoet, og bruke
consume_table_from_sharefunksjonen iconsume_share.py. Den tar inn en gitt tabell i et skjema, og den asymmetriske private nøkkelen til konsumenten =pc.consume_table_from_sharevil da gitt person-tabellen, joine sammenpii_schema.personog__keys__c__pii_schema.person. Deretter henter den ut en rad, der den fisker ut den gjeldende nøkkelenkey. Den dekrypteres medpc. Deretter går den gjennom hver rad, og gittnavn_encognavn_nonceså dekrypterer den raden med den symmetriske nøkkelen. Får da ut tabellen slik:
| navn | alder |
|---|---|
| August | 20 |
| Jonas | 30 |
| Joachim | 40 |
Metadata
Release files for kv-dataplatform-consumer 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kv_dataplatform_consumer-0.2.0.tar.gz | 4.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kv_dataplatform_consumer-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.6 kB
Release files / kv_dataplatform_consumer-0.2.0.tar.gz
| Download URL | kv_dataplatform_consumer-0.2.0.tar.gz |
|---|---|
| Size | 4.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dc54a9f0df0260a943c9c4031bc298b4006d9642453b5b12d17c31eacca0e67a
|
|
BLAKE2b-256 checksum How to use checksums |
fe203c07b090aa34aee69c5f7e3abdbab363dcf85a58c4aa96d59371acc5aaf4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.0.1 CPython/3.13.2 Darwin/24.3.0
|
Release files / kv_dataplatform_consumer-0.2.0-py3-none-any.whl
| Download URL | kv_dataplatform_consumer-0.2.0-py3-none-any.whl |
|---|---|
| Size | 5.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ec28de1e14f8429d4bc4100aa8c8d51b8cdefcdcbce8d75eee9101148283e388
|
|
BLAKE2b-256 checksum How to use checksums |
5bb5f95362509b4f93ff2c7f48e85269728f742710ab4d5b29b67bd3853221e6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.0.1 CPython/3.13.2 Darwin/24.3.0
|