"RasmusT" <coorasmus@hotmail.com> wrote in message news:adabe9$1eoc$1@news.cybercity.dk...
>
> Programmet skrives i C++, og du har ret i at det ikke er en hel disk der
> skal krypteres men en fil (som pgp-disk). Jeg er klar over at det vil blive
> nødvendigt med noget asymetrisk kryptering, men jeg er kun bekendt med dette
> i forbindelse med netværks-kryptering, er ikke klar over hvordan dette
> fungere internt.
Den tingest har jeg faktisk implementeret en gang før..
Du kan sandsynligvis komme nemt om ved det ved
at lave et par PGP nøgler, gemme den ene, og bruge
kommandolinjeversionen af gpg til at kryptere med.
Ellers kan du jo altid lave det selv:
Du skal bruge 3 komponenter:
Noget asymmetrisk, Diffie-Hellman er simpelt. Tag
bignum biblioteket fra
www.openssl.org
Noget hash, SHA-256 f.eks.
Noget symmmetrisk, Rijndael eller (A)RC4 f.eks.
Sådan implementeres en 'digital sparegris':
DH delen foregår således:
du vedtager en generator g (2 eller 3) og et primtal p
(4096 bit eller så), det er sikrest at bruge dem Colin
Plumb lavede til SKIP, de er blevet studeret.
Dernæst finder du på et tilfældigt tal xa på nogle
hundrede bit. Du beregner
ya= (g^xa) mod p
og lægger xa i bankboksen. Det skal ikke bruges
foreløbig. ya hardkoder du i din applikation.
Når applikationen skal gemme en fil:
den finder på et tal xb (igen et par hundrede bit)
og beregner
yb=(g^xb) mod p
Den gemmer yb i filen. Dernæst skal den
symmetriske nøgle laves:
dhsecret=(ya^xb) mod p
symkey=sha256(dhsecret)
Dataene krypteres med symkey og gemmes i filen.
Når du engang vil læse dataene finder du xa frem fra
boksen, læser yb fra filen og beregner
dhsecret=(yb^xa) mod p
symkey=sha256(dhsecret)
og dekrypterer dataene.
(vi kan nøjes med DH her fordi vi ikke har noget
ønske om at signere dataene)
/Kasper