Skip to main content

No project description provided

Project description

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

  1. Generer en unik symmetrisk nøkkel = key
  2. Generer en tilhørende unik UUID = key_id
  3. Lagre denne et sikkert sted, slik at man senere kan slå opp på key_id
  4. 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
  1. Deretter så vil man for hver consumer c ta inn deres public key = pkc, og da lage et entry, der man krypterer key med konsumenten sin offentlige nøkkel pkc. Da kan man lage et entry i __keys__c__pii_schema og en tabell som også heter person, som vil se slik ut:
key_id key
ce-232 wqkeo123koq
  1. Konsumenten kan da ta i bruk pakken i repoet, og bruke consume_table_from_share funksjonen i consume_share.py. Den tar inn en gitt tabell i et skjema, og den asymmetriske private nøkkelen til konsumenten = pc. consume_table_from_share vil da gitt person-tabellen, joine sammen pii_schema.person og __keys__c__pii_schema.person. Deretter henter den ut en rad, der den fisker ut den gjeldende nøkkelen key. Den dekrypteres med pc. Deretter går den gjennom hver rad, og gitt navn_enc og navn_nonce så dekrypterer den raden med den symmetriske nøkkelen. Får da ut tabellen slik:
navn alder
August 20
Jonas 30
Joachim 40

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kv_dataplatform_consumer-0.2.0.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kv_dataplatform_consumer-0.2.0-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

Details for the file kv_dataplatform_consumer-0.2.0.tar.gz.

File metadata

  • Download URL: kv_dataplatform_consumer-0.2.0.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.13.2 Darwin/24.3.0

File hashes

Hashes for kv_dataplatform_consumer-0.2.0.tar.gz
Algorithm Hash digest
SHA256 dc54a9f0df0260a943c9c4031bc298b4006d9642453b5b12d17c31eacca0e67a
MD5 36bf2937c55b00fc08c742a106fc03f0
BLAKE2b-256 fe203c07b090aa34aee69c5f7e3abdbab363dcf85a58c4aa96d59371acc5aaf4

See more details on using hashes here.

File details

Details for the file kv_dataplatform_consumer-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for kv_dataplatform_consumer-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ec28de1e14f8429d4bc4100aa8c8d51b8cdefcdcbce8d75eee9101148283e388
MD5 769584b255f0545b72211e21cd0e2245
BLAKE2b-256 5bb5f95362509b4f93ff2c7f48e85269728f742710ab4d5b29b67bd3853221e6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page