U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

Versleutel kolommen met confidentiƫle informatie

0000003085     -      28-06-2022

Mercator 10.10 of later biedt extra beveiliging voor kolommen die confidentiële gegevens bevatten zoals bijvoorbeeld pincodes, vertrouwelijke informatie met betrekking tot een klant of een artikel, ... Deze beveiliging gebeurt in de vorm van versleuteling in de SQL-database. Deze gegevens zullen pas leesbaar worden als Mercator gestart wordt op een computer met het certificaat dat gebruikt wordt voor de versleuteling.
Samengevat, deze kolommen

  • zullen onleesbaar zijn als Mercator uitgevoerd wordt zonder dit certificaat
  • zullen onleesbaar zijn in een ander programma dan Mercator (bijvoorbeeld SQL Server client tools)
  • zullen onleesbaar zijn in een ander programma dan Mercator, zelfs met het certificaat op de computer
  • zullen leesbaar zijn als Mercator uitgevoerd wordt met dit certificaat
  • zullen leesbaar zijn in een externe applicatie die MercatorUi.Main initialiseert op een computer met het certificaat en met behulp van de Mercator Tools (Api.Zselect).

Versleuteling en ontsleuteling wordt uitgevoerd door Mercator. Er mag dus niets veranderd worden aan de configuratie of programmering in Mercator behalve als er rechtstreeks back-ups worden gemaakt van deze kolommen.

Deze functionaliteit mag geen reden zijn om de beveiliging van het netwerk, dat toegang heeft tot de SQL-database, te verwaarlozen. Deze toegang mag nooit openbaar gemaakt worden op het internet.

 

Installatie van het certificaat

Op elke computer met Mercator en voor elke gebruiker moet een SSL-certificaat met openbare sleutel en persoonlijke sleutel geïnstalleerd worden. De herkomst van dit certificaat kan men zelf kiezen. Het wordt echter aanbevolen om een 2048-bits RSA-sleutel te gebruiken:

  • niet minder, anders is het onvoldoende beveiligd.
  • niet meer, anders kan het de prestaties bij het ontsleutelen schaden.

Het certificaat moet geïnstalleerd worden in het persoonlijke certificaatarchief van de huidige gebruiker. Dit archief is beschikbaar via

  • Windows Uitvoeren
  • MMC
  • Bestand / Module toevoegen - verwijderen (Files / Add snapin)
  • Certificaten -> Toevoegen
  • Mijn gebruikersaccount -> Voltooien

We raden aan om dit certificaat te installeren zonder de mogelijkheid om de persoonlijke sleutel exporteren. Dit voorkomt dat het certificaat kan verplaatst worden naar een andere computer.

Er wordt geen rekening gehouden met certificaten die zijn toegevoegd onder "Computeraccount". Dit zorgt ervoor dat men selectief gebruikers op een server kan toegang verlenen tot de beveiligde informatie.

Dit certificaat kan geleverd worden door Mercator. Dit kan door

  1. Het certificaat aan te vragen
  2. Het certificaat te downloaden wanneer aangemaakt via het menu "Geavanceerde Tools > SQL Database > Versleutelde kolommen > Certificaat installeren". (Als deze procedure een foutmelding geeft "Accès refusé - acces denied" dan moet het voldoende zijn om het certificaatarchief van de huidige gebruiker één keer te openen zoals hierboven beschreven.)

Wanneer deze procedure succesvol voltooid wordt, zal er voorgesteld worden om Mercator te herstarten en wordt het certificaat automatisch geplaatst in "Anderen > Thumbprintcertificaat voor gegevensversleuteling".

Als het certificaat niet wordt geleverd door Mercator, kan men deze manueel installeren in het persoonlijk certificaatarchief. Vervolgens moet men de vingerafdruk (thumbprint) ingeven in de hierboven vermelde optie.

thumbprint_nl

 

Verifiëren van de installatie van dit certificaat

Eenmaal het certificaat geïnstalleerd is, kan men dit verifiëren via "Tools > Systeem Informatie".

|certificate_status_nl

Het certificaat is in gebruik als de vingerafdruk wordt getoond. Anders zou er een foutmelding getoond worden.

Als de melding vermeldt dat de persoonlijke sleutel niet toegankelijk is, moet men nakijken in het certificaat of de persoonlijke sleutel zelfs bestaat.

private_key_nl

Als dit niet zo is, kan het certificaat niet gebruikt worden.

 

Configuratie van de versleuteling van kolommen

De versleuteling van kolommen is gelimiteerd tot kolommen van het type varchar(MAX) (memo) en varbinary(MAX). De kolommen van volgende tabellen kan men versleutelen:

De kolommen kunnen versleuteld worden via "Geavanceerde Tools > SQL Database > Versleutelde kolommen > Versleutelen". Vervolgens kan men een tabel en kolom kiezen om te versleutelen.

crypt_column_nl

Mercator moet herstart worden na deze versleuteling. Versleutelde kolommen zijn herkenbaar in de Database Viewer (van de code editor) door het kleine slotje:

crypt_db_viewer_nl

U mag geen kolommen versleutelen die gebruikt worden om te zoeken in de database. Men mag ook geen kolommen versleutelen die bijgewerkt worden door berekeningen (bv. triggers). Met andere woorden, er mogen alleen kolommen versleuteld worden die statisch zijn.

Wat betreft char-of varchar-kolommen: men mag de char kolommen ook omzetten naar varchar(MAX) om deze versleutelbaar te maken.

Een versleutelde waarde zal nooit ontsleutelbaar zijn buiten Mercator (of zonder de tools van Mercator).  Met andere woorden, men kan de gegevens niet ontsleutelen met enkel de SQL Database. Deze bevat niet genoeg informatie om dit uit te voeren. Deze werking zorgt ervoor dat de gegevens beschermt blijven bij diefstal van de database of een van de backups.

Bij een string met een lege of null waarde, wordt er geen versleuteling uitgevoerd. Deze blijft dus leeg of null. Volgende test blijft dus ook geldig na een versleuteling:

where c_memo <> '' 

Bij binaire kolommen blijven null waarden of waarden met een bytearray grootte van nul, ongewijzigd na versleuteling. Deze test blijft dus geldig:

where (c_imgbin is not null) and (DATALENGTH(c_imgbin) > 0)

Het is mogelijk om de versleuteling te verwijderen via het menu "Geavanceerde Tools > SQL Database > Versleutelde kolommen > Versleuteling Verwijderen".

Het is onmogelijk om de optie "Anderen > Thumbprintcertificaat voor gegevensversleuteling" (id = CERT_THUMB) te wijzigen als er nog versleutelde kolommen aanwezig zijn.

 

Belangrijke voorzorgsmaatregelen

  • De betrouwbaarheid van versleuteling hangt af van de bescherming van het certificaat. Als dit certificaat en zijn wachtwoord worden "gestolen", kunnen de versleutelde gegevens op elk moment ontsleuteld worden door een onbevoegd persoon. Het certificaat en het bijhorend wachtwoord moeten dus bewaard worden op een veilige plaats en zoveel mogelijk beschermd worden.
  • De ontsleuteling is strikt onmogelijk zonder dit certificaat. Het certificaat en het bijhorend wachtwoord moeten dus bewaard worden op een veilige plaats en zoveel mogelijk beschermd worden.
  • Als meerder Mercators gemeenschappelijk gegevens delen, bijvoorbeeld klantgegevens met een trigger, met verschillende databases (bijvoorbeeld: centralisatie van de boekhouding tussen verschillende dossiers), dan
    • moeten deze verschillende Mercators hetzelfde certificaat gebruiken
    • moeten de gesynchroniseerde tabellen dezelfde versleutelde kolommen hebben
  • Wat betreft uitwisseling tussen sites via McdServerServices, is het niet verplicht om een gemeenschappelijk certificaat in te stellen (maar het is ook niet verboden). Het is wel steeds nodig om de McdServerService te herstarten na installatie of configuratie van het certificaat in de optie CERT_THUMB (min. versie van McdServerServices.exe: 1.0.5.0)
  • Het is noodzakelijk om te analyseren welke kolommen versleuteld kunnen worden met betrekking tot externe programma's die deze niet zouden kunnen ontsleutelen.

 

Versleutelen van gegevens via code in Mercator

Als de te versleutelen gegevens door de algoritmes van Mercator worden bewaard in de database, dan kunnen deze ontsleuteld in de database gezet worden. De code van Mercator zal deze dan bewaren met de juiste versleuteling. Daarentegen, als de gegevens in een versleutelde kolom geplaatst worden via code, is het nodig om deze vooraf te versleutelen.

Hieronder een voorbeeld van zo'n code:

Zoom
string c_memo = "Inhoud van de memo die versleuteld wordt.";
using (SqlCommand cmd = new SqlCommand("update CLI set c_memo=@c_memo where c_id=..."))
{
    cmd.Parameters.AddWithValue("@c_memo", MercatorCryptorEngine.CryptorEngine.MercatorEncryptRsaAes(c_memo)).SqlDbType = System.Data.SqlDbType.VarChar;
    Api.SqlExec(MercatorUi.Globals.RepData, cmd);
}

 

Ontsleutelen van gegevens via code in Mercator

Er mag geen aanpassing aan velden in code plaatsvinden. De ontsleuteling is inbegrepen in alle methodes van Api.ZSelect: Zselect, ZselectDirect, ZSelect<T> en hun async tegenhangers. De ontsleuteling wordt ook uitgevoerd door alle xFunctions.

 

Versleutelen van gegevens via code buiten Mercator

Het is mogelijk om gegevens te versleutelen in een programma dat niet verbonden is met Mercator maar  die wijzigingen moet uitvoeren in een versleutelde kolom van de Mercator database. Hiervoor moeten men beschikken over de publieke sleutel van het versleutelingscertificaat. Men kan deze sleutel verkrijgen op volgende manier:

  • ga naar het certificatenarchief van de gebruiker
  • zoek het certificaat in de map "Persoonlijk" (als het een door Mercator verstrekt certificaat is, heeft het een naam die bestaat uit de naam van de licentie, de site en het type van Mercator, gescheiden door @)
  • klik rechts op het certificaat en kies "Alle taken > Exporteren"
  • Nee, de persoonlijke sleutel niet exporteren
  • Kies het formaat DER Encoded Binary X.509
  • Voltooi de export door een bestandsnaam te kiezen voor het bestand dat gemaakt wordt

Hieronder een voorbeeld van de code:

Zoom
byte[] certifContent = System.IO.File.ReadAllBytes(@"c:\...\mycertif.cer");
using (System.Security.Cryptography.X509Certificates.X509Certificate2 certif = new X509Certificate2(certifContent))
{
    string c_memo = "Inhoud van de memo die versleuteld wordt.";
    using (SqlCommand cmd = new SqlCommand("update CLI set c_memo=@c_memo where c_id='AGK'"))
    {
        cmd.Parameters.AddWithValue("@c_memo", MercatorCryptorEngine.CryptorEngine.MercatorEncryptRsaAes(c_memo, certificate: certif)).SqlDbType = System.Data.SqlDbType.VarChar;
        bool b = Api.SqlExec(@"K:\MercatorDev\Data\", cmd);
    }
}

 

Ontsleutelen van gegevens via code buiten Mercator

Dit is onmogelijk en zal ook nooit lukken.

 

Versleutelde kolommen bekijken

Om dit te doen, moet men een Excel export document installeren. Dit zal vervolgens beschikbaar zijn via het menu "Klanten > Documenten".



Te laden : 0000003085.zip (1 Kb - 13-06-2022)