Existe alguma cifra de bloco que também seja uma permutação pseudo-aleatória sobre a chave
Como as cifras de bloco são definidas como uma permutação pseudo-aleatória sobre os dados (codificados com a chave), eu queria saber se também existem construções para as quais a chave e os dados podem ser trocados e a cifra é uma permutação sobre o espaço da chave para uma entrada fixa (dados)?
Portanto, a questão é, se o espaço de saída de $E_k(a)$ para tudo possível $k$ cobre todo o espaço de $\{0,1\}^n$
Mais formalmente:
$E_k$ é uma cifra de bloco com tamanho de chave igual ao tamanho do bloco: $\{ 0, 1 \}^n \times \{ 0, 1 \}^n \rightarrow \{ 0, 1 \}^n $
e $\exists a \forall k_1, k_2: E_{k_1}(a) = E_{k_2}(a) \Rightarrow k_1 = k_2$
Ou mais geralmente: com $f$ uma função $\{ 0, 1 \}^n \rightarrow \{ 0, 1 \}^n$
$\forall k_1, k_2: E_{k_1}(f(k_1)) = E_{k_2}(f(k_2)) \Rightarrow k_1 = k_2$
Ou isso é mesmo verdade para cada cifra de bloco?
Respostas
Não estou certo sobre o "mais geral", pois na última definição você está aplicando uma função da tecla. Isso agora o torna relacionado à segurança circular. Quanto à questão básica, isso não é verdade em geral, e não sei se é possível fazer tal construção. O que posso dizer é que existe uma construção em que a propriedade pseudo-aleatoriedade se mantém se a chave for aleatória OU se os dados forem aleatórios. Esta noção é estudada no artigo Symmetric and Dual PRFs from Standard Assumptions: A Generic Validation of an HMAC Assumption por Mihir Bellare e Anna Lysyanskaya. Este artigo seria um bom ponto de partida para a pesquisa.