Ukens faktumI 1977, ved å bygge på arbeidet til Diffie og Hellmann, fant tre MIT Professorer Ronald Rivest, Adi Shamir and Len Adleman, en metode for å kryptere informasjon, som nå er blitt en standard for privatkommunikasjon. Metoden heter RSA kryptering. Metoden er patentert i USA og et firma ble stiftet for å lisensiere teknologien. |
I gamle dager, brukte man å ta backup av disker til tape. Tape ble brukt fordi det er et relativt billig medium som lett kan transporteres. Dersom vi vil beskytte backup mot den samme ulykken som evt. ødelegger originalen, må vi passe på å oppbevare den ved et annet sted enn originalen. I dag er de økonomiske forholdene noe anderledes: data kan speiles til en disk som ligger et annet sted, ved hjelp av et nettverk. Tape er et notorisk upålitelig medium. Diskspeiling er et sikrere og mindre arbeidsintensiv måte å ta backup på.
Ulike operativsystemer har hver sin spesielle programvare for å ta backup, men noen ting er felles for alle. Det sentrale prinsippet i backup er overflødighet (redundancy). Overflødighet betyr at vi lager flere kopier av data enn det vi trenger (i den perfekte verden), slik at vi alltid har en alternativ kilde. Vi snakker mest om backup av data, men vi kan også snakke om backup av tjenester, i tilfelle vi mister en viktig maskinressurs. Overflødighet er en strategi, en slags forsikring.
Naturligvis, tar det lang tid å lage backup av store datamengder. Det fins hovedsaklig to typer backup:
Dag Level
----------
Mon 0
Tir 1
Ons 2
Tor 3
Fre 4
Lør 1
Legg merke til hvordan dette virker. Vi begynner med en full dump
på mandag kveld. På tirsdag dumper vi filene som ble modifisert
siden mandag, på onsdag dumper vi alt som er forandret siden tirsdag,
og så videre fram til fredag. På lørdag, oppsummerer vi hele uken ved
å ta et level 1 dump, som kopierer alt som er forandret siden mandag.
Dersom vi kopiere hvert dump til en ny tape, har vi flere kopier av
de samme filene, dvs et høyt nivå av overflødighet. Det kan være viktig
med et upålitelig medium som tape.
En annen kjent sekvens som tilbyr et høyt nivå av overflødighet heter Towers of Hanoi algoritmen. Mønsteret over flere uker ser slik ut:
0 -> 3 -> 2 -> 5 -> 4 -> 6
1 -> 3 -> 2 -> 5 -> 4 -> 6
1 -> 3 -> 2 -> 5 -> 4 -> 6
1 -> 3 -> 2 -> 5 -> 4 -> 6
(til slutten av måneden)
Du bør regne ut for deg selv, som en opgave, hvordan mange
kopier av alle filene some blir lagret med dette mønsteret.
Det er en del ting vi kan gjøre for å øke vår tillit til data som vi mottar fra fremmede kilder, men når det kommer til stykket så er det slik at det beste vi kan gjøre er å sjekke integriteten til dataene. Med andre ord, vi kan si med en rimelig sikkerhet hvem som sendte en beskjed og at beskjeden ikke ble endret p&arong; veien. Utover det må tilliten være implisitt.
Sjekksummer eller Message digests er digitale signaturer som ikke kan forfalskes. Tanken er det at vi lager en algoritme som fordøyer innholdet i en fil og dermed produserer en verdi eller hash som oppsummerer innholdet. Dersom vi forandrer en bit av innholdet i filen, forandrer sjekksummen seg på en unik måte. Populære algoritmer inkluderer:
MD4
MD5 (Sterkere enn md4)
SHA1
MD5 algoritmen kan brukes fritt i et hvilket som helst program,
i følge lisensen til RSA
som fant på den. The Secure Hash Algorithm (SHA) er en proprietær
algoritme som eies av US Department of Commerce. Det er derfor litt
uklart hvorvidt det kan brukes utenfor USA.
MD5 programmet kan hentes og installeres på et hvilket som helst system
som har en C kompilator. Funkjoner for å regne ut MD5 finnes i dag i de
fleste språk.
Algoritmen genererer en 128 bits hash verdi,
som representeres som en ASCII sekvens. F. eks.
cube% md5 .cshrc
MD5 (.cshrc) = 519ab7d30dba4a2d16b86328e025ec72
MD5 signaturer siteres ofte ved software baser som innholder sikkerhets
relatert software, slik at det er mulig å verifisere hvorvidt softwaren
er autentisk (gitt at sjekksummen er autentisk!).
En annen type signatur er den som brukes av PGP (se nedenfor). Denne kalles også Message Authentication Code (MAC). Dette er lik en message digest, men inkluderer også en kryptering ved hjelp av en hemmelig nøkkel, slik at mottageren kan bruke en offentlig nøkkel til å verifisere kilden til avsenderen.
We shall use the GNU Privacy Guard program, for this course, since PGP has become poorly documented and difficult to understand. The principles are the same. PGP is called "pretty good privacy" because it explores the use of public, private key methods to enable encryption and signing. This allows users to send private messages to one another using strong cryptographic methods. Why not perfect security then? The reason is that, while the cryptographic methods might work well, users can still be tricked into trusting false data, so the security of even cryptographic methods is not perfect.
To begin using GPG, you have to create a pair of keys: a private key and a public key. To do this you use:
gpg --gen-keyand follow the prompts (and defaults). You will need to think of a pass-phrase which is long but easy to remember: e.g.
I could tell you my pass-phrase but then I would have to kill youThis will be used to encrypt your private key, so that only you can read it. Of course you should not reveal the pass-phrase to anyone. When the key pair is created, it is hidden in private files. If you want to make your public key available for others, so that they can send you encrypted files, you must extract it as text and mail it to them. The keys are complicated and can be used in binary form, or ASCII form. My public key is extracted with
gpg --export -a mark > filenameand looks something like this:
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v0.9.10 (SunOS) Comment: For info see http://www.gnupg.org mQGiBDtdcNkRBACN4xRpVDv0Zx7tbv5JhD+W1uDJKfiBO7DtZ8IXz2Nv1iuhyCFb QIXAd3zBd6sBrYkMk15bKeNj9hcEnZXtK1gVXPYIi2s03aVhq6fEFdigNlD3qWBE vP5rMg1sa5uxcHd813FQC8LJPjRsHwUQ7lk7wkXcY/djXhn9JmLf9RDARwCgybj0 b+D4IChXz7afqhbiynuPOJMD/01ZWl3REmLg/nt29VPot50ufMyEts4K2h9z3h0b 3eS4ZjqdcwCr6d69PlXhuhp3a6bfPDfCdZ3IMs4U8mtMpkdOA7LAbm2SXwCW+pT5 KT6pW3Hv8jjAJdsVc/EoPB8JlvyViW5HJW+oz+NdQydgohSXtm4vtTvPwV5Bvufr b93NA/9zwFz8QbuI+VWfjQx1aLKg+xTiOS0zJaG2IdacjvLVmFwzFec/Yv87mojb 31kg7zb5z/nn/JskZx9vvekbgSJknsTik+nJs3UDdLMIM+Ol0A632XeasYIKjwyZ U/IOwHXtZ1Aeo1AR7MIoTMOLLn6hEffnv059J9bIXGOudfpPmrRBTWFyayBCdXJn ZXNzIChBc3NvY2lhdGUgUHJvZmVzc29yLCBPc2xvIENvbGxlZ2UpIDxtYXJrQGl1 Lmhpby5ubz6IWwQTEQIAGwUCO11w2QUJCWYBgAMLCgMDFQMCAxYCAQIXgAAKCRA+ kjZW5jiA7NIwAJ9Td7rTBEVAV0dTZoZX6qsNaBXN5gCgjbTw2dK1yecZQeCdBtfz ZYZN+/a5AQ0EO11xCxAEAK69w0z0Ec/Ba0VFeYPSOj+VPTuvCBqMdQsAPmpquV3P QB2UX/4mFCFrEzvERJeWuZy0cwJRoANtFGXLee/nD0hP+XstpFYmq4GwNODbcFHf +9t5oiOnS6Hv8VlaVTjaZ/xwD3jj2LiVd1uQ5qqb12zLFVYjw1ZxBzlxdnmDzEUH AAMFA/9cM8zAt5342zgk4bxZ7SkOMhtb+cZyI8Q2QOp2SZ98FPY1/qbCbaL+pe4y 9dd1VmasIpiXcnMPKessD3CL9LBLWR2EaS44hqkZlrpCDJpPgDE0pvvzI9xoiWfU 5V5OWLZsQIbmOISMGT1E29ks2x1a0CZVhPBMtUpQSFJYHZWctIhLBBgRAgAMBQI7 XXELBQkJZgGAAAoJED6SNlbmOIDsY14AmO0lDn0Lvhs9cf4exxDUH6u/WwIAoMRL 3vBRzQ9ZGYCtvu35++wYl7o+ =ZzKN -----END PGP PUBLIC KEY BLOCK-----When you receive a key from someone else, you can add it to your key-ring by saving the key to a file (exactly as above). GPG looks for the lines
-----BEGIN PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK-----and takes what lies between them, so you don't have to strip away the rest of the message. You should be careful not to get any extra spaces or characters into the file, or the key will be read incorrectly (i.e. don't cut and paste from the screen, save to a file). To add the key from a file, then:
gpg --import filenameIn order to indicate to others that you are sure you know whose key it is, you can sign keys and say how much you trust them, so that others can share in your private knowledge. You should only sign keys that you know to be authentic. Use of signatures is a way of telling others that you think they should trust the information you send them. You can also sign your own public key so that others can verify that it has not been tampered with between you and them.
To sign a key in your keyring,
nexus$ gpg --edit-key sigmund
gpg (GnuPG) 0.9.10; Copyright (C) 1999 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
pub 1024D/BB3B5564 created: 2001-07-24 expires: never trust: -/q
sub 1024g/EEF5CD48 created: 2001-07-24 expires: never
(1) Sigmund Straumsnes <sigmund@example.org>
Command> sign
pub 1024D/BB3B5564 created: 2001-07-24 expires: never trust: -/q
Fingerprint: 2962 8834 FAF4 7684 0E08 1B7B 87E8 916C BB3B 5564
Sigmund Straumsnes <sigmund@example.org>
Are you really sure that you want to sign this key
with your key: "Mark Burgess (Associate Professor, Oslo College) <mark@iu.hio.no>"
Really sign? y
You need a passphrase to unlock the secret key for
user: "Mark Burgess (Associate Professor, Oslo College) <mark@iu.hio.no>"
1024-bit DSA key, ID E63880EC, created 2001-07-24
gpg -r recipient --encrypt filename --output newfile e.g. gpg -r sigmund --encrypt sig.msgThis results in a file called filename.gpg which I can then mail or give to that person. Note that with asymmetric encryption, I encrypt specially for one recipient.
gpg --decrypt filename --output newfileSince I need my private key to decipher the message, I have to type in my pass-phrase. The result is a newfile.
PGP occasionally warns us that a public key might not be trustworthy. How do we really know that it is the right key for the right person? For instance, suppose I receive an encrypted file from Sigmund. I decrypt it like this:
gpg --decrypt filenameHow do I know it came from Sigmund? The answer is I don't really know, unless I watched Sigmund send me the message, and I am sure that the message was not altered in passage. Anyone could claim to be Sigmund.
We decide which keys are to be trusted or not. Our trust is conferred by signing a key with our own. If we find a key which has been signed by several trustworthy individuals, we might be more inclined to trust the authenticity of the key, assuming that we trust them. (This leads to a so-called Web of Trust) For instance, I have just received Sigmund's public key. Since I watched him send it to me, I believe that it is his. I can sign the key with my signature like this:
nexus% gpg --clearsign filename (or just -s for a binary file)When ever you sign something (and use you private key) you have to give your passphrase, in order to unlock it. (This is because, on most systems, others can access your files -- e.g. anyone on Windows 95, or the superuser on Unix). This results in a new file filename.asc. (Ascii, signed message)
This is a service to me and to anyone else who trusts my signature. Now when I try to decode a message from him:
nexus$ gpg sig.msg.asc gpg: Signature made Tue Jul 24 15:39:27 2001 MET DST using DSA key ID E63880EC gpg: Good signature from "Mark Burgess (Associate Professor, Oslo College) "
Let's define some notation for representing encrytion and signing.
| Public keys: | capital letters |
| Private keys: | small letters |
| Encryption with public key A: | { "message" }A |
| Signing with private key b: | ( "message" )b |
A -> B : {( "I love you!!" )a}B
Alas, Bob does not like Alice and wants to embarrass her. He
decrypts Alice's message, leaving her signed message,
{( "I love you!!" )a}B -> ( "I love you!!" )a
and re-encrypts the message for Charlie to read:
B -> C : {( "I love you!!" )a}C
Now, when Charlie descrypts the message, he sees Alice's
signature and believes that Alice loves him. The very security
assured by signing will now incriminate Alice.
This is more serious if the message is "I.O.U. $1,000,000".
A -> C : ({"My patent...." }B)a
Chalie laughs, knowing he is now rich. He strips off Alice's
signature and signs the message himself.
({ "My patent" }B}a -> { "I love you!!" }B
{ "I love you!!" }B -> ({ "I love you!!" }B)c
He then sends it to Bob, the patent lawyer:
C -> B: ({"My patent...." }B)c
It now appears that the idea comes from Charlie.
We see that encryption mechanisms, while useful, are not an assurance of security.
Ukens tankeDersom du vil at andre skal holde på din hemmelighet, må du først holde på den selv. |