planlosindarmstadt hat geschrieben:Jetzt bin ich mir nicht sicher, ob ich deine Antwort verstehe und ob du vielleicht die Verfahren vertausch hast?
Um meine Probleme vielleicht etwas deutlicher zu formulieren:
Meinen Angriff bei der b) würde ich folgendermaßen gestalten:
Sei \(A^*\) ein Angreifer eff. erf. gegen IND-CCA Sicherheit von \(\epsilon_2(\epsilon_1)\). Konstruiere daraus einen Angreifer \(A\) gegen IND-CCA Sicherheit von \(\epsilon_1\) wie folgt:
Zunächst generiert sich \(A\) das Schlüsselpaar \((sk_2,pk_2)\) aus \(KGen_2(1^n)\). Bei Anfragen von zwei Nachrichten \(m_0,m_1\), schickt \(A\) diese direkt weiter an seine Verschlüsselungsbox, wo eine der beiden zufällig gewählt und durch \(Enc_1\) verschlüsselt wird. Den erhaltenen Ciphertext, verschlüsselt er mit \(Enc_2(pk_2,\cdot)\) und leitet in an \(A^*\) weiter.
Bis hierhin funktioniert das auch, aber dann gibt es ein Problem:
Ciphertextanfragen werden erst entschlüsselt durch \(Dec_2(sk_2,\cdot)\) und dann an die Entschlüsselungsbox geleitet, die erhaltene Nachricht dann an \(A^*\) weitergeleitet.
Du bekommst hier einen ciphertext
\(c^*\). DIeser unterscheidet sich von allen
\(c\), die du zurückgegeben hast.
Wenn du
\(c^*\) aber mit
\(Dec_2(sk_2,c^*)\) entschlüsselst, erhälst du einen ciphertext
\({c^*}'\), den du an dein Orakel schicken möchtest.
Das Problem ist nun, dass nicht garantiert ist, dass sich
\({c^*}'\) von den
\(c\) unterscheidet, die dir dein Orakel geliefert hat.
Demnach kannst du das Decryption Orakel nicht korrekt simulieren.