Construcția nu poate fi asigurată de CCA
Algoritmul pe care l-ați scris nu spune cum algoritmul de decriptare obține cheia de verificare a semnăturii.
Dacă cheia de verificare face parte din cheia publică, atunci nimeni nu poate cripta, deoarece nimeni nu are acces la cheia de semnare (după cum a observat Mark în comentariile de mai sus). De asemenea, acest lucru nu pare să se potrivească cu propunerea dvs. de a utiliza o semnătură unică.
Dacă cheia de verificare este inclusă în textul cifrat (în clar), atunci nici aceasta nu funcționează. Acum textele cifrate au forma $$(c=\textsf{Enc}(pk,m), vk, \sigma=\textsf{Semn}(sk,c\|vk))$$ Unde $(sk,vk)$ este o pereche de chei cu semnătură unică. Pot lua un text cifrat de această formă, pot modifica $c$ în orice fel și înlocuiți $vk,\sigma$ cu ale mele $vk',\sigma'$ pe care o generez. Acest lucru îmi permite să efectuez direct orice atac cu text cifrat ales împotriva $\textsf{Enc}$ pe această nouă schemă.
Dacă cheia de verificare se află în interiorul criptării, aceasta este mai bună, dar tot nu este sigură. Acum textele cifrate au forma $$(c=\textsf{Enc}(pk,m\|vk), \sigma=\textsf{Semn}(sk,c))$$ Scopul este ca noua schemă să fie sigură pentru CCA orice alegerea CPA-secure $\textsf{Enc}$. Cu toate acestea, este posibil să se construiască o schemă patologică de securitate CPA, în care este posibil să se schimbe $\textsf{Enc}(pk,m\|vk)$ în $\textsf{Enc}(pk,m\|vk')$ pentru orice $vk'$ la alegerea atacatorului și fără cunoștință de $m$ sau $vk$. Deci, un atac CCA asupra noii scheme implică schimbarea $c$ în $c'$ în acest fel, cu $vk'$ ales de atacator.Apoi atacatorul poate genera semnătura corectă pe noul $c'$ și cereți ca acesta să fie decriptat pentru a fi dezvăluit $m$.
Nu există nicio construcție „simplu” care să completeze securitatea CPA la CCA
Există o problemă deschisă celebră în criptografie:
Există o construcție neagră a unei scheme de criptare cu cheie publică securizată CCA dintr-o schemă arbitrară de criptare cu cheie publică securizată CPA, în modelul simplu?
Este posibil să construim o schemă securizată CCA dintr-o schemă securizată CPA dacă modificăm parametrii acestei probleme deschise:
Dacă părăsim modelul simplu și permitem oracole aleatorii, atunci transformarea Fujisaki-Okamoto atinge securitatea CCA.
Dacă permitem construcții non-black-box, atunci putem obține securitatea CCA folosind transformarea Naor-Yung. Non-black-box înseamnă că schema de securitate CCA folosește cumva cod sursa a schemei CPA-secure. În cazul lui Naor-Yung, aveți nevoie de codul sursă al schemei de securitate CPA pentru a dovedi o afirmație de zero cunoștințe despre textele cifrate.
Este ceva progres parțial demonstrând această problemă deschisă -- în special, nu poate exista o astfel de construcție dacă algoritmul de decriptare CCA nu folosește algoritmul de criptare CPA.
Tehnicile pe care le utilizați în această întrebare sunt toate cutie neagră și, prin urmare, este puțin probabil să fie utile în construirea unei scheme de securitate CCA.
Tehnici similare funcționează dacă schema CPA este bazată pe identitate
Construcția ta îmi amintește de Transformarea Canetti-Halevi-Katz de la un CPA-secure bazate pe identitate schemă la o schemă securizată CCA (nebazată de identitate).
Lăsa $\textsf{Enc}(pk,id,m)$ denotă criptarea bazată pe identitate (IBE) a $m$ la identitate $id$, folosind parametri globali publici $pk$. Atunci construcția CHK este:
$$ \textsf{Enc}^*(pk,m) = (vk, c = \textsf{Enc}(pk, vk, m), \sigma = \textsf{Semn}(sk,c)) $$
Cu alte cuvinte, pentru a cripta:
- generați o pereche de taste cu semnătură unică $(sk,vk)$.
- criptați textul simplu cu IBE, folosind $vk$ ca identitate
- semnați textul cifrat IBE cu $sk$
- da $vk$, textul cifrat IBE și semnătura
Rezultatul este CCA-secure, iar intuiția brută este că IBE securizat CPA ar putea fi maleabil în ceea ce privește textele clare, dar trebuie să fie nemaleabil în ceea ce privește identități.