Kebmans blogg

Hvordan kryptere passord i PostgreSQL

Posted in Data, Programmering, Teknologi by kebman on 26/08/2015

PostgreSQL kan med et enkelt håndgrep gjøre passordkryptering for deg. Alt du trenger å gjøre er å legge til en extension i psql, sånn her:

CREATE EXTENSION pgcrypto;

Så er det bare å lage en database for å teste litt:

CREATE DATABASE test;

Og en tabell for å lagre noen data med passord:

CREATE TABLE testusers (
	id SERIAL PRIMARY KEY,
	email TEXT NOT NULL,
	password TEXT NOT NULL,
);

SERIAL er her ekvivalenten til AUTO_INCREMENT i MySQL. Strengt tatt kunne vi sikkert brukt email-feltet som PRIMARY KEY, sånn som her:

CREATE TABLE testusers (
	email TEXT PRIMARY KEY,
	password TEXT NOT NULL,
);

…men jeg synes det er kjekt å kunne kalle opp en god, gammeldags ID, spesielt om det senere kan bli snakk om å utføre SQL joins. Istedenfor kan man gjøre sånn her for å sikre at email-feltet forblir unikt:

ALTER TABLE users ADD CONSTRAINT unique_email UNIQUE (email);

Men så, endelig, kan vi teste med å sette inn noe ordentlig data! For å lage skikkelig gode passord, er det ikke nok med bare en god krypteringsalgoritme. Man trenger også salt. Dette for å hindre såkalte rainbow angrep. Her er årsaken til at vi la til den extensionen i sta, for med den kan vi legge til skikkelig godt salt, sånn her:

INSERT INTO testusers(email, password) VALUES (
	'test@test.com', crypt('det_hemmelige_passordet', gen_salt('md5'))
);

Som du ser så hashes passordet med det samme det legges inn i databasen med en funksjon som heter crypt(). Denne tar to argumenter: Passordet og funksjonen gen_salt() som lager salt. For å sjekke at passordet stemmer, kan man bruke denne spørringen:

SELECT email FROM testusers WHERE id=1 AND
password=crypt('det_hemmelige_passordet', password);

Så, når dette er gjort, burde det være en smal sak å få det til å fungere med et passende serverskriptingspråk. Best av alt, skulle noen uvedkomne få tilgang til databasen, vil de uansett ikke kunne finne ut hva passordene er – ikke lett, i alle fall.

Hvordan enkelt kryptere meldinger med offentlige nøkler

Posted in Data, Internett, Konspirasjonsteorier, Programvare, Sikkerhet, Teknologi by kebman on 19/02/2014

Aldri før har kryptering vært viktigere. Derfor har jeg laget en noen jukselapper for hvordan enkelt bruke ett av de ledende krypteringsprogrammene for å sende og motta krypterte meldinger sikkert over nett. På sikt vil det komme en mer inngående tutorial, men dette burde få deg i gang.

Kryptering med offentlige nøkler fungerer sånn her: Om du vil motta filer sikkert, så oppretter du et nøkkelpar med en offentlig og en privat nøkkel. Den offentlige nøkkelen sender du til dine kompiser eller kollegaer. De kan nå bruke den til å kryptere sine meldinger til deg. Det kule her er at disse meldigene nå kun kan dekrypteres med din private nøkkel. Derfor er det selvsagt viktig at du også holder din private nøkkel hemmelig.

For å sende en fil sikkert til en venn, må du bruke din venns offentlige nøkkel til å kryptere filen før du sender den. Nå kan bare din venn dekryptere filen, og ingen andre.

Datatilsynet krever ved lov at persondata og ting som er unntatt offentligheten krypteres etter visse standarder før det sendes over nett. Det fine er at denne krypteringsmåten langt overstiger Datatilsynets krav, dermed kan du trygt bruke det til å sende slike data med.

Her er instruksjonene:

Jukselapper for GNU Privacy Guard (Kleopatra)

  1. Last ned GNU Privacy Guard fra http://www.gnupg.org/ (det er gratis)
  2. Installer programmet
  3. Hvordan opprette et privat/offentlig nøkkelpar
    1. Åpne Kleopatra
    2. I menyen, velg File > New Certificate…
    3. Velg Create a personal OpenGPG key pair
    4. Skriv inn ditt fulle navn og din e-post
    5. Skriv inn et passord. NB! Dette er det viktigste steget!
    6. Gå videre og sjekk at alt er riktig.
    7. Eksporter nøkkelen. Huk av ASCII Armor slik at den blir enklere å sende over nettet.
    8. Gjør den offentlige nøkkelen din tilgjengelig for dine venner
  4. Hvordan importere en offentlig nøkkel…
    1. …om du må merke og kopiere en offentlig nøkkel:
      1. Merk og kopier en offentlig nøkkel fra nettet eller i en e-post
      2. Lagre den i en egen fil, og pass på at filendelsen er «.gpg». NB! Husk også hvor du lagrer den!
      3. Åpne Kleopatra
      4. I menyen, velg File > Import Certificates…
      5. Finn filen legg den inn
    2. …om du laster ned eller får tilsendt en fil med en offentlig nøkkel:
      1. Lagre filen på et sted du husker (nedlastinger, f.eks)
      2. Åpne Kleopatra
      3. I menyen, velg File > Import Certificates…
      4. Finn filen og legg den inn
  5. Hvordan kryptere en fil med en offentlig nøkkel
    1. Åpne Kleopatra
    2. I menyen, velg File > Sign/Encrypt Files…
    3. Velg filen du vil kryptere (eller signere)
    4. Klopatra spør hva du vil gjøre; huk av Text Output (ASCII Armor) og trykk Next
    5. Legg til (Add) den offentlige nøkkelen du ønsker å kryptere med
    6. Du vil få en advarsel om at bare mottakeren av filen vil kunne dekryptere den. Trykk Continue.
    7. Den krypterte filen lagres med samme navn som originalen, men med filendelsen «.asc»
    8. Bare eieren av den private nøkkelen kan nå dekryptere filen så kopier innholdet i filen og send over nettet, eller legg hele filen med som vedlegg i en e-post
  6. Hvordan dekryptere en fil med din private nøkkel
    1. Lagre mottatt fil, eller opprett en ny fil, kopier det krypterte innholdet inn i den, og lagre den med filendelsen «.gpg»
    2. Åpne Kleopatra
    3. I menyen, velg File > Decrypt/Verify Files…
    4. Finn den krypterte filen
    5. Velg hvor du vil at den dekrypterte filen skal havne
    6. Trykk på Decrypt/Verify
    7. Du kan nå åpne den dekrypterte filen der du la den