Reputation
21,859
Next tag badge:
98/100 score
23/20 answers
Badges
4 29 79
Impact
~464k people reached

Dec
16
comment Combining two hashing functions
possible duplicate of Guarding against cryptanalytic breakthroughs: combining multiple hash functions
Dec
16
comment Combining two hashing functions
Are you using cryptographic hash functions? If not, this is off-topic for Cryptography.SE.
Dec
15
comment Randomized stream cipher using multivariant quadratic equations
@Antimony, yeah, $n^2/2$ should suffice. I wasn't trying to optimize the constant factors (just laziness). Thank you.
Dec
11
comment Block Cipher Mode Amicable to Fast Key Change/Rotation Like XOR?
@DrLecter, thanks for the elaboration -- good point. If the document changes, you can consider the new version a new document (with its own key). I've edited my answer correspondingly. Thank you!
Dec
11
comment Do test vectors ensure a cipher is free of backdoors?
@CodesInChaos, yup, absolutely. But, I don't think mikeazo ever claimed that's the best or only way to insert a backdoor. To answer the question in the negative, it suffices to show one example of a backdoor -- it doesn't have to be the best possible backdoor.
Dec
11
comment Block Cipher Mode Amicable to Fast Key Change/Rotation Like XOR?
@noloader, It's not a problem. Think about it this way: What does knowledge of the document key for document $D$ let you do? It lets you decrypt document $D$. But if you give that key to everyone who should be able to read $D$, then you're not allowing them to do anything they shouldn't be able to do. It's not the same "everyone shares the wireless gateway password" because my answer shows how to communicate the document key to a person. There is no revocation: once you've allowed someone to download document $D$, you're done, there's no going back: they've got a copy of $D$, period.
Dec
10
comment Slow one-way pseudo-random permutation?
@K.G., cool! Would you care to add that as a separate answer, so we can upvote it? Also, do you know anything about the security of the discrete log on such curves? Is it also the case that the best currently-known algorithm is a square-root algorithm (i.e., we don't know how to do better than the generic algorithms for square roots in a black-box group)?
Dec
9
comment Slow one-way pseudo-random permutation?
Why do you need to store the permutation as $2^m$ words of $m$ bits, rather than just using any short-block cipher on $m$-bit blocks? Also: what's the security gap you expect from this? (i.e., the ratio in workfactor to break vs the workfactor for the legitimate parties to compute this function.) My rough back-of-the-envelope estimate suggests you should expect a very small security gap. If we precompute the discrete log of all primes up to $2^{21}$ (about $2^{17}$) of them, the time to compute a single discrete log is about 200 smoothness tests (sieving + ECM on a $\le 84$-bit number).
Dec
8
comment Slow one-way pseudo-random permutation?
Right. This answer doesn't work. If the matrix is non-invertible, then this won't be a permutation. The original question asks for a one-way permutation. (If it didn't need to be a permutation, this question would be easy to solve: you could just use SHA256 truncated appropriately.)
Dec
7
comment PRP representation size
@Bush, your question still has the same problems. Have you tried answering the questions in the last paragraph of my question? They are intended to get you thinking along lines that enable you to clear up your confusion on your own.
Dec
7
comment Slow one-way pseudo-random permutation?
@fgrieu, excellent point. OK, I guess I don't know how to make this slow after all (unless each person will only use the key once -- but that's probably a relatively rare situation). Thank you for catching that.
Dec
7
comment Slow one-way pseudo-random permutation?
@RickyDemer, yup, either do that (i.e., iterate: a standard way to make something slow), or make the key expansion of $k \mapsto (k_0,k_1)$ slow (if each person will only use the key $k$ once -- which might not apply here, but I mention it just for completeness).
Dec
6
comment Keyed digest function with odds of collision below the birthday bound?
Is there any reason to think that the polynomial given here is hard to invert? It looks to me like that paper shows that these polynomials are easy to invert. In particular, it looks like the proofs of Propositions 1 and 2 give an explicit algorithm to find $x$ such that $p(x)=d$ (where $p$ is one of these permutation polynomials). For instance, equation (9) shows how to solve $(x^{2^k}+x+a)^{-l}+x=d$ for $x$, and the displayed equation at the end of Proposition 2 shows how to solve $(x^{2^k}+x+a)^s+x=d$ for $x$. (Cc:ing @fgrieu)
Dec
6
comment Slow one-way pseudo-random permutation?
I still don't think I understand the requirements, but I suspect if you took a step back and allowed yourself to admit other solutions you could find better, simpler solutions. For instance, something using a trusted server or HSM. P.S. I think there's a solution to the mobile app issue you mentioned. Suppose there's a 256-bit SHA256 hash. You can ask the user to enter in the first 64 bits of the hash, then look it up in the database of items and see if that's to uniquely identify the item; if it isn't, have them enter in the rest. It will be extremely rare that a user needs to enter more.
Dec
6
comment Can insecure algorithms be combined to form a secure algorithm?
Also, they are hoping it will be safe, but there is no proof that this is safe.
Dec
6
comment Slow one-way pseudo-random permutation?
Also, why does your application require such a complex construct? Why not just store a unique random serial number in the 2-D barcode, and have a back-end database that maps the serial number to whatever data is associated to that card (of course, the data can be encrypted under one merchant's key if you wish). Perhaps I haven't quite understood the application yet.
Dec
6
comment Slow one-way pseudo-random permutation?
Why do you need the output to be the same length as the input? If you're willing to have (say) a 256-bit output, your goals are easy to achieve; just use the SHA256 hash. If the output is going to be stored in a database but not stored on the card, that'd suffice. Also, why do you need it to be bijective (i.e., a permutation)? If collisions are non-trivial to find, is that good enough?
Dec
6
comment Enhance CSPRNG output
@user1028028, it doesn't matter if the PRNGs are independent. What matters is that their seeds (their keys) are independently chosen. That's how you can tell: check how you've generated them.
Dec
6
comment Enhance CSPRNG output
"Unrelated" is NOT the criterion. The criterion is that the keys be independently chosen, not that the algorithms be "unrelated" or "independent" (whatever that would mean). You can even use the same CSPRNG algorithm, as long as you have two independent keys.
Dec
6
comment Enhance CSPRNG output
How are they keyed? With two independent keys? Also, if one is a CSPRNG, then it cannot be biased (to be cryptographically secure means that it can't be biased).