# Signatura digital

La signatura digital és un bloc de dades obtingut per mètodes matemàtics i informàtics, aplicats sobre un missatge, que permeten de verificar i de demostrar l'autenticitat i l'autor d'aquest missatge. Es diu també signatura electrònica com a sinònim de signatura digital, tot i que la signatura electrònica inclouria també altres mecanismes per identificar l'autor d'un missatge electrònic que no són purament criptogràfics.

## Usos

Hi ha tres motius per utilitzar signatures digitals en les comunicacions:
* Autenticitat: Un sistema criptogràfic de clau pública permet a qualsevol enviar missatges utilitzant una clau pública. La signatura permet al receptor d'un missatge estar segur que el remitent és qui diu ser. Tot i així, el receptor no pot estar completament segur que el remitent és qui diu ser, ja que el sistema criptogràfic es pot haver trencat.
* Integritat: Emissor i receptor voldran estar segurs que el missatge no s'ha alterat durant la transmissió.
* No repudiació: En un context criptogràfic, la paraula repudiació fa referència a l'acció de negar la relació amb un missatge (per exemple dient que ha estat enviat per un tercer). El receptor d'un missatge pot insistir que l'emissor adjunti una signatura per prevenir que més endavant l'emissor pugui repudiar el missatge, així, el receptor pot mostrar el missatge a un tercer i provar el seu origen.

## Terminologia

Terminologia associada al concepte:
* Un algoritme de generació de signatura digital, també anomenat simplement algoritme de generació de firma, és un mètode per a produir signatures digitals.
* Un algoritme de verificació de signatura digital, també anomenat simplement algoritme de verificació és un mètode que permet la verificació de que una firma digital és autèntica.
* Un esquema o mecanisme de signatura digital consisteix en un algoritme de generació de firma i el seu algoritme de verificació associat.
* Un procés o procediment de signatura digital és un algoritme de generació de signatura digital juntament amb un mètode per formatar les dades en missatges que puguin ser firmats.

## Propietats necessàries

S'han establert una sèrie de propietats necessàries que ha de complir un esquema de signatura perquè pugui ser utilitzat. La validesa d'una signatura s'empara en la impossibilitat de falsificar qualsevol tipus de signatura radica en el secret del signatari. En el cas de les signatures escrites el secret està constituït per característiques de tipus grafològic inherents al signatari i per això difícils de falsificar. Per la seva banda, en el cas de les signatures digitals, el secret del signatari és el coneixement exclusiu d'una clau (secreta) utilitzada per generar la signatura. Per garantir la seguretat de les signatures digitals és necessari al seu torn que aquestes siguin:
* Úniques: les firmes han de poder ser generades únicament pel signant i, per tant, infalsificable. En conclusió, la firma depèn del signant.
* Infalsificables: per falsificar una firma digital l'atacant ha de resoldre problemes matemàtics d'una complexitat molt elevada, és a dir, les firmes han de ser computacionalment segures. Per tant, la firma ha de dependre del missatge en si.
* Verificables: les firmes han de ser fàcilment verificables pels receptors de les mateixes i, si és necessari, també pels jutges o autoritats competents.
* Viables: les firmes han de ser fàcils de generar per part del firmant.

## Firma segura cap endavant

La idea bàsica d'aquests esquemes de signatura és estendre els algoritmes de signatura digital amb un algoritme d'actualització de clau que faci que la clau secreta pugui ser canviada freqüentment mentre la clau pública roman sent la mateixa. L'esquema resultant és segur cap endavant si el coneixement de la clau secreta en un moment del temps no ajuda a falsificar signatures relatives a un període anterior de temps.

## Firma multipartita d'adhesió dinàmica

La signatura multipartita d'adhesió dinàmica, també coneguda per les sigles DMMS (de l'anglès Dynamic-Membership Multi-party Signature), és l'abstracció del tipus de signatura proposat pels sistemes amb cadena de blocs en els quals nodes signataris no confiables, anomenats miners, s'encarreguen de signar transaccions a canvi d'una retribució. Estableixen una signatura d'informació a través del consens dels miners. Per establir el consens utilitzen diferents tipus d'algorismes com a prova de treball o prova de participació.

## Implementació

La signatura digital es basa en criptografia de clau pública. En aquest tipus de criptografia cada usuari té un parell de claus: una pública i una privada. La clau pública es distribueix lliurement, però la clau privada és secreta i no és deduïble a partir de la clau pública. Normalment un mecanisme de signatura digital defineix tres algorismes: un per generar la clau, un per signar i l'altre per verificar la signatura.
Quan un usuari A vol enviar un missatge a un usuari B i vol que l'usuari B estigui segur que el missatge prové d'ell se segueixen els següents passos: L'usuari A envia el seu missatge a l'usuari B i adjunta una signatura digital. Aquesta signatura es genera usant la clau privada de l'usuari A i pren la forma d'un valor numèric. En rebre el missatge, l'usuari B pot confirmar la procedència del missatge utilitzant la clau pública de l'usuari B, la signatura i el missatge. Si la verificació és correcta l'usuari B pot estar segur que el missatge procedeix de l'usuari A, ja que l'algorisme de signat està dissenyat perquè sigui molt difícil crear una signatura que encaixi amb un missatge concret(sinó es coneix la clau privada).
Normalment, per raons d'eficiència, s'utilitza una funció de hash criptogràfica amb el missatge abans de signar-lo. D'aquesta manera s'aconsegueix una signatura més curta i s'estalvia temps, ja que generar un hash és molt més ràpid que signar digitalment.

## Classificació
### En funció del mode en el que es construeix la firma

Podem construir esquemes de firma digital basant-nos en diferents tipus de tècniques:
* Basant-nos en la suposada seguretat de dispositius físics
* Basant-nos en Criptografia simètrica
* Basant-nos en Criptografia de clau pública

#### Basant-nos en la suposada seguretat de dispositius físics

Un dispositiu, com una targeta intel·ligent, es diu que és resistent a modificacions (en anglès tamper resistant) si es creu que és difícil accedir a la clau secreta emmagatzemada en ell. Per tant, podem usar una targeta intel·ligent amb un algoritme criptogràfic per construir una signatura digital de la següent forma:
El signatari tenen una targeta intel·ligent que pugues només xifrar amb una clau secreta k1i cada verificador té una targeta intel·ligent que pugues només desxifrar amb una clau secreta k2 de forma que allò xifrat per k1 només pot ser verificat per k2 k1 i k2 poden ser iguals (clau simètrica) o diferents (claus asimètriques). En aquest tipus de mecanisme cal abordar el problema d'instal·lar i emmagatzemar de manera segura les claus en les targetes intel·ligents. Falsificar una signatura és difícil si el dispositiu és resistent a modificacions.

#### Basant-nos en criptografia de clau simètrica

S'han proposat diferents protocols de signatura basats en la criptografia de clau secreta. No obstant això, a partir de l'aparició de la criptografia asimètrica estan en recessió a causa de la seva superioritat tant conceptual com a operacional en la majoria dels contextos d'ús.
Els esquemes de signatura digital de clau simètrica són els següents:
* Firma de Desmedt
* Firma de Lamport-Diffie
* Firma de clau simètrica de Rabin
* Firma de Matyas-Meyer
Aquests esquemes estan basats en l'ús una funció d'un sol sentit (en anglès one-way function). El gran desavantatge d'aquest tipus d'esquemes és la grandària de les claus i de les signatures i del fet que només poden ser usades un nombre fix de vegades (freqüentment una sola vegada). Merkle ha proposat optimitzacions per a aquest tipus d'algorismes. Bleichenbacher i Maurer han proporcionat una generalització d'aquests mètodes. Aquests esquemes han servit com a primitives usades en construccions més complexes

#### Basant-nos en criptografia de clau asimètrica

S'han proposat diferents protocols de firma basats en la criptografia de clau asimètrica. Els més importants són els següents:
* Firma RSA
* Firma DSA
* Firma ESING
* Firma de clau asimètrica de Rabin
* Firma ElGamal
* Firma amb corbes el·líptiques
* Firma de Guillou-Quisquater
* Firma de Ohta-Okamoto
* Firma de Schnorr
* Firma de Okamoto
* Firma de Feige-Fiat-Shamir
L'ús de criptografia asimètrica per a signatura digital es basa en el concepte de funcions d'un sol sentit amb parany (en anglès trapdoor one-way functions). Són funcions fàcils de computar en una sola adreça i difícils de computar en una altra adreça, excepte para algú que conegui la informació 'parany'. La informació pot llavors ser signada digitalment si el signatari transforma la informació amb la seva clau secreta (la informació parany). El verificador pot verificar la signatura digital aplicant la transformació en el sentit fàcil usant la clau pública.

### En funció de si utilitza informació aleatòria

Alguns esquemes de signatura són deterministes i uns altres usen bits aleatoris. Les signatures que usen bits aleatoris probablement revelen menys informació sobre la clau secreta, no obstant això, d'altra banda, obliguen al signatari a tenir una font segura de bits aleatoris. Observar que si la font de bits aleatoris és revelada, no només la signatura sinó també la clau secreta pot ser que sigui compromesa.

### En funció de si necessita el missatge original per la verificació de la firma

Podem classificar els esquemes de signatura digital en funció de si és necessari tenir el missatge original per verificar la signatura, donant lloc als següents tipus:

#### Esquemes de firma digital amb recuperació de missatges

Per verificar la signatura aquest tipus d'esquemes no requereixen el missatge original, ja que el missatge original es pot recuperar a partir de la pròpia signatura digital.

#### Esquemes de firma digital amb apèndix

Aquest tipus d'esquemes requereixen el missatge original per poder verificar la signatura. Això és a causa que al que s'aplica l'algoritme de signatura no és realment el missatge original sinó el resultat d'aplicar una funció hash amb certes propietats que les fan resistents enfront d'atacs per trobar la seva inversa, és a dir, no és possible, a partir del valor resumeixen, calcular les dades originals. Són els anomenats codis de detecció de modificacions.
Algunes de les motivacions per fer això són:
* Reduir la mida de la firma reduint la mida de la informació a firmar.
* Augmentar la velocitat de firma
* Si els missatges a firmar poden tenir certa estructura algebraica i l'algoritme de firma es comporta de forma que el sistema resultant pot ser vulnerable a criptoanàlisi amb atacs de text escollits, podem utilitzar funcions hash per destruir aquesta estructura algebraica
* Quan s'utilitza per signar algorismes de signatura per blocs on els missatges són més llargs que el bloc, no és segur signar missatges bloc a bloc, ja que un enemic podria esborrar blocs del missatge signat o inserir blocs de la seva elecció en el missatge abans que sigui signat. En usar una funció hash fem una transformació que fa a la signatura depenent de totes les parts del missatge.
* Fa que el protocol de signatura no sigui útil perquè un atacant obtingui el text en clar corresponent d'un missatge que ha estat transmès de forma xifrada.

### En funció de la intervenció o no d'una entitat àrbitre

Existeixen dos mètodes per establir protocols de firma digital: firma digital àrbitre o sense.

#### Firma digital amb àrbitre

En aquest tipus de signatura s'aprofita el fet que dos usuaris (X i I) amb desconfiança mútua admeten tenir confiança en un tercer anomenat àrbitre (A). L'àrbitre posseeix una clau secreta amb cadascun dels usuaris. Aquestes claus determinen les funcions de xifrat i desxifrat que s'estableixen entre l'àrbitre i cadascun dels usuaris.Tota la transmissió de la informació entre els usuaris ha de passar forçosament per l'àrbitre..

#### Firma digital sense àrbitre

En aquest esquema l'usuari signatari envia directament la signatura al destinatari, aquest ha de poder comprovar la signatura sense necessitar una tercera entitat com l'àrbitre.

## Aplicacions

* Missatges amb autenticitat assegurada
* Missatges sense possibilitat de repudi
* Contractes comercials electrònics
* Factura Electrònica
* Desmaterialització de documents
* Transaccions comercials electròniques
* Invitació electrònica
* Diner electrònic
* Notificacions judicials electròniques
* Vot electrònic
* Decrets executius (govern)
* Crèdits de seguretat social
* Contractació pública
* Segellat a temps

## Alguns algoritmes utilitzats en la signatura digital

* Full Domain Hash, RSA-PSS, etc., basat en RSA
* DSA
* ECDSA
* ElGamal
* Secure Hash Algorithm (normalment SHA-1) amb RSA

## Referències

* ↑ «signatura digital». A: Diccionari de telecomunicacions. Barcelona: TERMCAT - Cercaterm, 2017 (Diccionaris en Línia: Ciència i Tecnologia) [Consulta: 17 abril 2022].
* ↑ Josep Domingo Ferrer, Jordi Herrera Joancomartí. Criptografia: Per als serveis telemàtics i el comerç electrònic. Editorial UOC, 2009, p. 237. ISBN 9788497888714.
* ↑ Patel, Dhiren R. PHI Learning Private. Information Security. Theory and Practice, 2008.

## Vegeu també

* AutoFirma
* Segell (autenticació).
* Signatura Electrònica a Catalunya