Score:0

Ensure that ciphertext satisfies a fixed secret polynomial

uz flag

Does there exist an encryption algorithm that can ensure that given an input it will generate a ciphertext in a way that will always satisfy a fixed polynomal ?

I can be flexible in the input side but the output side should be fixed to a finite or infinite set of vectors that satisfy the polynomial of degree $d$.

The polynomial is secret. Those who are encrypting do not know that the exact polynomial is. The plaintext is too small, as large as a single 128 bit integer.

kelalaka avatar
in flag
$X^q-X$ over $\mathbb F_q$. https://en.wikipedia.org/wiki/Finite_field#Polynomial_factorization
uz flag
@kelalaka the problem is I dont need a field/ring of multiple polynomials. I probably need a field of coordinates that satisfy a fixed polynomial.
Score:0
dz flag

We generally want encryption output to look random, so I doubt that any encryption function like you want exists.

But I think you can achieve your goal with a two-stage process.

  1. Encrypt your data using AES, using an appropriate mode such as CBC or GCM. This stage is responsible for security.
  2. Convert each AES ciphertext block to the form you need. Here you can use any algorithm that converts a 128-bit integer to a vector format that fits your goal. It would probably be convenient if this can handle 128-bit blocks, but if that is too large, you can break the block into (say) four 32-bit blocks and handle each of the smaller blocks separately. The recipient would then convert each vector back to 32-bit blocks, and concatenate four successive 32-bit blocks to recreate the original 128-bit AES ciphertext block, and feed that block into the appropriate AES decryption algorithm. This stage only converts the data to the desired format, and is not intended to add any security.

As an example of a stage 2 algorithm, suppose we want our output to be the value y in the polynomial y = x2 + 3. So we take our 128-bit AES ciphertext block c as a integer, calculate o = c2 + 3, then use o as our final output. (I suspect this example is not quite what you are aiming for, but hopefully points you in an appropriate direction).

Note: Make sure your conversion algorithm is invertible (so any incoming o can be uniquely converted back to the original c) or decryption will not work properly.

uz flag
I dont need decryption. But I need to make sure that the cyphertext is generated using the expected plain text. If being a coordinate in the polynomial garuntees that then thats the varifiability.
uz flag
Also, the encryptor must not know what the polynomial is. The plaintext data is small, as large a single 128 bit integer. I think this is not mentioned in the question, so I should update.
mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.