La
crittografia funzionale
e un tipo di
crittografia a chiave pubblica
, dove chi e in possesso della chiave segreta puo imparare una funzione di cio che e cifrato nel testo
[1]
. La crittografia funzionale generalizza molte primitive crittografiche, come ad esempio la
crittografia su base identita
(IBE) e la
crittografia su base attributi
(ABE).
La crittografia funzionale e stata introdotta ne 2005 da Amit Sahai e Brent Waters
[2]
e formalizzata successivamente da
Dan Boneh
e Amit Sahai nel 2010
[3]
. Gli schemi proposti, tuttavia, supportano solo un insieme ridotto di funzionalita: per questo motivo nel corso degli anni sono stati effettuati diversi lavori di ricerca per fornire costruzioni universali di crittografia funzionale, in grado cioe di supportare funzioni arbitrarie
[4]
[5]
.
Uno schema a chiave pubblica e composto da tre algoritmi:
![{\displaystyle KeyGen(1^{\lambda })\rightarrow (pk,sk)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6e466bb60b8f60448a7d710a8d740a82d7638fd1)
![{\displaystyle Enc(pk,m)\rightarrow c}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1a2ec03ec136149c293112dc78ab76cbba83d888)
![{\displaystyle Dec(sk,c)\rightarrow m}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7dff49768ab9b4d02107e7f3acf2585a3990c7db)
Solo il proprietario di
puo decifrare
e ottenere
, tutti gli altri non possono ottenere nessuna informazione.
Uno schema di crittografia funzionale aggiunge un quarto algoritmo:
![{\displaystyle Setup(1^{\lambda })\rightarrow (pk,msk)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/a92a2fae9f49276e135231beb7731949cfc48f7b)
![{\displaystyle KeyDer(msk,f)\rightarrow sk_{f}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ce2d6b967b389c599a972cc6651073dd6bcf65b9)
![{\displaystyle Enc(pk,m)\rightarrow c}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1a2ec03ec136149c293112dc78ab76cbba83d888)
![{\displaystyle Dec(sk_{f},c)\rightarrow f(m)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/bc9ad1d7ace8e884de74252bb192e86b2d657f28)
Questo quarto algoritmo permette al possessore della chiave
di decriptare solamente una funzione del messaggio e non il messaggio per intero.
Prendiamo ad esempio in considerazione un messaggio composto da un insieme
di numeri; il possessore della chiave
potra decriptare il valore della media dei valori di
senza avere accesso a nessun'altra informazione sul messaggio originale.
- ^
Dan Boneh, Amit Sahai, Brent Waters,
Functional Encryption: A New Vision for Public Key Cryptography
, in
Communication of the ACM
, vol. 55, n. 11.
- ^
Amit Sahai e Brent Waters,
Advances in Cryptology ? EUROCRYPT 2005
, vol. 3494, Springer Berlin Heidelberg, 2005, pp. 457?473,
DOI
:
10.1007/11426639_27
,
ISBN
978-3-540-25910-7
.
URL consultato il 17 maggio 2020
.
- ^
Dan Boneh, Amit Sahai e Brent Waters,
Functional Encryption: Definitions and Challenges
(
PDF
), n. 543, 2010.
URL consultato il 17 maggio 2020
.
- ^
Shafi Goldwasser
, Yael Kalai e Raluca Ada Popa,
How to Run Turing Machines on Encrypted Data
(
PDF
), n. 229, 2013.
URL consultato il 17 maggio 2020
.
- ^
Amit Sahai e Brent Waters,
Attribute-Based Encryption for Circuits from Multilinear Maps
(
PDF
), n. 592, 2012.
URL consultato il 17 maggio 2020
.