3,435 reputation
1522
bio website
location Wellington, New Zealand
age
visits member for 2 years, 2 months
seen 2 hours ago

I am an undergraduate computer science and mathematics student in New Zealand. My fields of interest are computer graphics, in particular the physics of light transport, and to some extent cryptography, as well as programming and software development in general.


Jul
27
reviewed Approve suggested edit on terminology tag wiki excerpt
Jul
23
comment Toy encryption system that provides “hints”
One thing that comes to mind is the Vigenere cipher. If you get a few of the key characters right, some of the plaintext characters are revealed. Eventually you can work out the rest of the key by taking guesses at possible plaintext words (though a more powerful and general solution exists). That said the "key distance" isn't like the one in your example (e.g. you'd have keys "CRYPTO" and "CRYPTA" instead of 1234 and 1288) but their Hamming distance should do fine as a metric.
Jul
22
comment How is input message for SHA-2 padded?
Perhaps you should mention where the $448$ and $896$ values come from (it's to have enough space to fit the message length on 32/64 bits at the end of the padding block)
Jul
22
comment SIMON implementation, decryption issues
I haven't read the spec in detail but one thing that often gets people with this type of algorithm is, for instance, in your line y = f(x, N), not realising that x is no longer the original one as it was modified above. This looks like a good candidate, so have you checked that?
Jul
22
comment AES: keylength and password length?
@user129789 If your password was provided by a user, it won't be uniformly distributed, which may open the door to related key attacks. Always feed it into the proper type of key derivation function.
Jul
20
comment How difficult is it to find the “pre-image” of a block cipher?
Pick any key $k_2$ and decrypt $C_1$ to obtain $M_2$.
Jul
20
comment Parallel-resistant proof-of-work scheme?
@rath What about the RSA timelock proof of work protocol? It is also chained, believed as hard to cheat as integer factorization, and allows the verifier to check the result very efficiently, so that could work for you, perhaps.
Jul
18
comment estimating entropy/randomness as fail-safe mechanism
I can see this working somewhat as a one-off implementation test bench, but it just doesn't seem doable to do those verifications constantly with any degree of accuracy. The old quote rings true: "that's the problem with randomness - you can never be sure".
Jul
18
comment estimating entropy/randomness as fail-safe mechanism
@JohnDeters I think he means e.g. check that something has gone wrong with the entropy supply algorithmically, in the same way that TRNG's need to do some tests on their output periodically to verify they haven't failed. It's an interesting question but it seems unlikely such an estimator exists, unless you are willing to run statistical tests on terabytes of data to detect a potential flaw. The problem is there just isn't enough data to assert that "this IV is not random, abort the mission", you need a lot more samples to conclude anything about what you are seeing.
Jul
17
reviewed Approve suggested edit on How to prove a cipher resistant to differential cryptanalysis?
Jul
16
comment Generating a secure random number in javascript
Over-engineered. Collect all mouse samples over some time $t$ (massively overestimate the time needed - better too much than not enough) instructing the user to furiously move the mouse around (do not record samples which occur more than twice in a row, it means he isn't moving his mouse), and feed it all into a hash function to distill 256 or 512 bits of entropy. Stretch as needed. That said you might look into existing frameworks to generate cryptographic numbers in Javascript - some already exist, and creating your own algorithm is generally not the answer.
Jul
16
comment Primality testing (deterministic vs. non-deterministic)
@CodesInChaos This argument in general is true if and only if an attacker cannot control the inputs to the algorithm (e.g. in an attempt to make it fail), fortunately most modern primality tests (including Rabin-Miller) are immune to this to an arbitrary number of rounds.
Jul
15
comment Primality testing (deterministic vs. non-deterministic)
Because asymptotic complexity isn't the whole story.
Jul
14
comment Technical feasibility of decrypting https by replacing the computer's PRNG
@CodesInChaos That is sad news indeed. So much for auditing.
Jul
14
comment What is the purpose of update() in popular hash APIs?
@CodesInChaos Technically on 64-bit modern operating systems you can map an arbitrarily large file into the virtual address space and let the OS stream the data in and out but I agree it's much better to have this functionality built into the API itself, so it works everywhere the same (and works everywhere period). Plus it isn't that hard to implement..
Jul
14
reviewed Approve suggested edit on Length of data to hash for PGP
Jul
14
comment What operations are used in symmetric cryptography and why?
@Reid AFAIK this is true of any bijective operation (the argument goes that as a bijective operation does not lose information, the entropy of the output must be equal to the maximum of the entropy of both inputs). If the two inputs are independent, of course. I could be wrong, though.
Jul
14
comment Technical feasibility of decrypting https by replacing the computer's PRNG
I think it wouldn't be that hard for hardware experts to reverse-engineer the RdRand algorithm so as to establish whether it is a legitimate TRNG or is doing something strange like generating some kind of keystream to introduce a backdoor (publishing their research, of course). Though again, as said in the question's link, entropy pool poisoning is rather difficult to exploit.
Jul
14
comment What operations are used in symmetric cryptography and why?
@SmitJohnth Addition with overflow isn't an involution. $\left ( x + x \right ) \mod{n} \ne 0$ in general.
Jul
14
comment What operations are used in symmetric cryptography and why?
Also, XOR being an involution makes it very convenient to use in some schemes, for instance in embedded situations it means you don't need to waste space implementing a decryption routine - decryption is exactly (or almost exactly) the same as encryption. Not that relevant today but some elements of DES were in fact designed with this in mind (also, stream ciphers)