Conceptes/OpenPGP per a principiants

From KDE UserBase Wiki
Revision as of 19:52, 15 May 2013 by Abella (talk | contribs) (Created page with "Si algú signa tots els seus missatges de correu electrònic (per evitar la falsificació d'adreces), llavors el pur fet d'enviar un cert document dins d'un correu electrònic...")

Introducció

La seguretat efectiva amb una solució de criptografia depèn més de conèixer el que feu i el que signifiquen certes dades tècniques (i el que no!) en la llargària de la clau i el mateix programari. Així, aquest article donarà una introducció als conceptes bàsics d'OpenPGP.

Aquesta guia d'aprenentatge és per a principiants, de manera que qualsevol cosa massa complicada quedarà fora. A més, no trobareu explicacions de com fer quelcom amb un cert programari. Per això ja disposeu de la documentació del programari. Això us ajudarà a entendre millor les accions que s'expliquen allà.

Hi ha un article que us prepara per a la generació de la clau i un altre que explica conceptes avançats .

Claus asimètriques

OpenPGP utilitza parells de claus. Això vol dir que sempre hi ha una clau secreta i una clau pública juntes. En contrast amb el concepte intuïtiu d'encriptatge simètric (és a dir, la mateixa contrasenya encripta i desencripta les dades) això és fa difícil d'entendre. No penseu en això, només accepteu-ho. Les matemàtiques al seu darrere són un malson per a la majoria de les persones, entrar en els detalls seria una pèrdua de temps estressant.

Com el nom suggereix: La clau secreta sols és coneguda pel seu propietari, i la clau pública és coneguda de manera ideal per tothom. Amb l'encriptatge simètric el problema està en compartir de forma segura la contrasenya amb el destinatari d'un missatge. Amb les claus públiques el problema canvia: Ara la part difícil és assegurar-vos que esteu utilitzant la clau pública correcta (i no una forjada per un atacant que intenta enganyar-vos).

Encriptatge

Una de les dues funcions d'OpenPGP és l'encriptatge. Encripteu les dades per a una o més claus públiques (encriptatge simètric, és a dir, utilitzant una contrasenya, és possible, però s'utilitza poques vegades). Per desencriptar les dades es necessita la clau secreta d'una de les claus del destinatari.

Excepte pel problema amb l'encriptatge ja esmentat «Quina és la clau correcta per encriptar?» - el desencriptatge és una operació molt senzilla, perquè no hi ha lloc per a malentesos: Encripteu quelcom i ningú excepte el propietari(s) de la clau del destinatari(s) ho podrà llegir. I aquí teniu com desencriptar o no podeu. Les pròpies dades desencriptades poden ser difícils d'entendre, però l'operació de desencriptatge no ho és. Però: Part de la qüestió «Quina és la clau correcta per encriptar?» no és només «Qui és el propietari d'aquesta clau?» sinó també «És aquesta clau prou segura per a encriptar les dades?». No es tracta de la longitud de clau o similar, sinó del lliurament de les claus. Per tant, abans d'enviar la informació crítica: Pregunteu al propietari de la clau sobre el nivell de seguretat de la clau!

Signatures digitals

L'encriptatge de dades pot ser una mica invers: En lloc de crear dades que només pot entendre una clau, podeu crear dades que tothom pugui entendre, però que només les pot haver creat una clau. Aquesta impossibilitat de crear les mateixes dades sense accés a la clau secreta corresponent fa que d'aquestes dades una signatura. Una vegada més: No pregunteu com és això possible llevat que realment us agradin les matemàtiques.

Una de les millors coses de la criptografia digital és: En contrast amb una signatura manuscrita, la qual és molt fàcil per a tothom (Bé, pera l'ordinador de tothom) per comprovar que aquesta signatura ha estat feta per una determinada clau. Si podeu relacionar una clau específica amb una persona, llavors també podreu relacionar una signatura digital amb aquesta persona -a menys que, per descomptat, la clau hagi estat compromesa-. Us haureu adonat: En aquest punt, la tasca esdevé organitzativa i legal.

La tecnologia no resol tots els vostres problemes. I és molt important que sempre esteu assabentat d'on es troba la frontera entre els problemes tècnics i d'organització.

Relacionar una clau amb una persona no és la part més difícil! Això és: «Què significa exactament la signatura?» És la vostra interpretació d'una signatura, jurídicament vinculant per al seu creador? El significat pot ser tan baix com una marca de temps (el qual és perfectament vàlid en una aplicació seria per a signatures criptogràfiques!), proporcionant res més que la certesa que un cert document existeix en un moment determinat (i que no s'ha creat més tard).

Si algú signa tots els seus missatges de correu electrònic (per evitar la falsificació d'adreces), llavors el pur fet d'enviar un cert document dins d'un correu electrònic signat no significarà res a excepció que probablement us el volia oferir. Si l'adreça de correu electrònic (la part signada, no l'assumpte sense signar) diu alguna cosa així com «Accepto l'acord adjunt», llavors el significat serà clar i el risc restant del destinatari de caràcter tècnic (baix nivell de seguretat i clau compromesa).

Thus it makes sense to have different keys at different security levels: One for reasonably securing everyday tasks and another one for signing agreements (where the key policy documents explain the limits and privileges of the respective key).

In contrast to encryption the signature of data does not (technically) have an addressee. Everyone with access to the public key can check the signature. In many cases that is not a problem (or in contrast: It may even be a requirement). Instead of selecting an addressee you select the secret key which shall be used to create the signature (if you have more than one).

The big "Which is the right public key?" problem occurs with signatures, too. Not with creating signatures but when interpreting a successful signature validation. The real life question is: "What does a signature mean?" Obviously a signature by "any" key does not mean anything. Everyone can have created it. The signature itself does not state more than: "Somebody with access to the secret key decided to create this signature." This is a technical fact without relevance in real life.


Vincles de les claus per a la gent

This is another hard and complicated part. And because only few people do this correctly the whole system is much less secure than most people believe. You have to tell apart four components of this check. The first is the easiest: the key itself. You have to be sure that you are using the right key material (just the huge random number itself).

As keys are to big to be compared manually a secure hash is used instead. Once again: Evil math stuff you fortunately need not understand. A hash function does this: You throw any kind and amount of data at it (from a single digit to a DVD image file) and it outputs a "number" of fixed length. If it is (considered) impossible to create two different inputs which create the same output then the hash function is secure.

OpenPGP currently uses the hash function SHA-1 for identifying keys. SHA-1 has security issues but they do not affect the usage in OpenPGP. A SHA-1 value looks like this:

   7D82 FB9F D25A 2CE4 5241  6C37 BF4B 8EEF 1A57 1DF5

This is called the fingerprint of the key. There are two ways of being safe about the identity of a key (the raw key material) without third parties involved: You get either the key itself from a secure source (USB stick handed over by the key owner) or you get the fingerprint from a secure source (which is obviously much easier as you can print is on small pieces of paper, even on your business card, and spread them).

Your OpenPGP application shows you the fingerprint of the key you got from an insecure source and you compare "what is" with "what it should be". If that is the same then you can be sure about the key itself. Thus: Always have small slips of paper with your fingerprint with you.

A public OpenPGP key (a "certificate") consists of two parts: the key material and the user IDs. A user ID is just a text string. The typical usage of this string is:

   Nom Sobrenom (comentari) <adreça de correu electrònic>

Many user IDs do not have a comment, some do not have an email address and there are keys without a (real) name, too (e.g. for anonymous usage). Even if you are sure about the fingerprint the name, email, and comment can be wrong.

Email is rather easy to check (send an encrypted message to the address and wait for a response which guarantees your message to be decrypted).

Checking the identity of unknown persons is not easy. At keysigning parties this is done by checking passports and the like. But would you recognize a well forged passport?

Fortunately for your own purposes the identity is usually not so important. "The one I met on that event who calls himself Peter" is usually enough. So this is more a problem for the web of trust (see below).

Comments can be critial, too: The comment "CEO of whatever inc." may make a real difference (if not to you then to somebody else). The question when to accept (and certify) a user ID is a really complicated one.

Most people don't understand this problem and thus reduce their own security and that of others. You can make this decision for others easier by having user IDs which consist of just your name or just your email address. This may be easier acceptable by someone checking your user IDs.

If you are sure about a user ID you should certify it. This means that you make a digital signature over the public key and this user ID. You can make this certification for yourself only (called a "local signature") or for the public (the "web of trust"). If a key has several user IDs then you can decide which ones you certify.

You can give a rough hint how well you have checked the user ID and key, too. It makes a big difference to OpenPGP applications (and so should it to you!) whether they recognize a key as "valid" or not.

The keys you have the secret key for are considered valid automatically. The others can become valid by signatures of your own keys. And by keys of others.

El web de confiança (web of trust -WoT-)

In connection with OpenPGP you will often hear about the web of trust. This in an indirect method for relating people to keys, a mighty but complicated technology. Beginners should not use the web of trust but first become familiar with verifying and certifying keys directly. The WoT is explained in the article OpenPGP For Advanced Users.


Resum de l'ús de la clau

you need in order to
the public key of another person encrypt data for him
check those key's signatures (technical correctness, not key validity)
your secret subkeys decrypt data that has been encrypted for you
create signatures for data
your secret main key manage your key (add user IDs or subkeys, change settings like expiration date)
certify other keys (i.e. some or all of their user IDs)
the fingerprint of the key of another person ensure that you have imported the right key (before certifying the key either locally or for the public)


Altres lectures