01:56
@MaartenBodewes What's the main reason crypto isn't or can't be fast? The reasons I can think of are all due to the inability to use certain processor instructions. No vectorization. No AES-NI. Sometimes there's no way to access the high bits after multiplying two 64 bit numbers.
You don't get that out of standard C or C++ either though. You need to use unstandardized compiler extensions or inline assembly.
... Would there be any issues (that aren't currently already a thing when trying to write portable C code) if some future C standard said "From now on a plain int is always 32 bits, a long is always 64 bits, and a short is always 16 bits and all signed/unsigned integer types are required to be two's complement."?
x86 is the outlier. it's pretty much always sucked as an ISA. Most everyone else fell heavily into standardization, but that was likely due to UNIX. I loathe x86. I only use it on my laptop because it's a Mac because the language support is just so good compared to everything else.
Actually I'm usually more on the anarchist side of whether computers should make heavy use of standards. Bad decisions can harm us for far longer than they should if everyone keeps using bad practices because a standard demands it. x86 is really scary though.
Programming languages I don't want to be ill-defined. And that's what I'm looking for in a standard. I don't think people notice the metaphor behind programming languages. They're meant for communication. Developer to machine. Developer to developer. Unlike natural languages, ambiguity in these kinds of languages are always a bad thing.
But people have disagreed on that idea historically I suppose. C was called "The portable assembler language". Even though generic code snippets might do different things from one version of the PDP to the next because basic arithmetic isn't handled the same way.
@FutureSecurity who does "portable" mean that for? as an example: en.wikipedia.org/wiki/Portable_Executable I can pretty much assure you that no one in CS knows that actual definition of portable. :P
I'm thinking of CS as in the formal study of computing. Not all software developers are computer scientists, so there is variability in different the sub-cultures of programming.
So we mean that code is portable if it doesn't depend on platform specific quirks. More like the old Java slogan of "write once, run everywhere". But maybe it's more accurately "capable of running anywhere".
So in CS it means that your code will be interpreted the same way regardless of who is doing the interpreting. That's why it's import to computer scientists that a language has no ambiguity in its specification. The spec tells you how to read source code and there should only be one correct way to read it.
And to CS people something would technically still be portable if the software necessary to interpret it (currently) only existed on one platform. But if code is portable it means that when a compiler comes out for a second platform, then no changes would be required to make your code work on that other platform. (As long as both platforms have similar capabilities. There is no working around something like limited RAM or missing communication ports.)
> Anyone with half a brain can see that object-oriented programming is counter-intuitive, illogical and inefficient.
> C++ is dying off now, but programmers still get high salaries - especially those poor devils who have to maintain all this crap. You do realise, it's impossible to maintain a large C++ software module if you didn't actually write it?
Lol. Really dated. C is so so so much worse in that regard too. It's one of the biggest "write once, run away" programming languages that's still really popular. Javascript is really bad, too, though. PHP was too. But those other two have at least evolved.
Coding is needlessly unpleasant. It also really scares me because our health, money, and freedom is tied up in a broken computing infrastructure.
That was part of the motivation for my username. I was feeling optimistic at the time. We've got a lot of legacy junk holding us back. It's going to take a lot of work and cost a lot of money to replace the old broken systems, but it would be really promising for humanity not to be held back by software ineffeciencies and dangerous bugs.
I knew that replacing old infrastructure was something people will hesitate to invest in, so my hopes aren't too high for the near term future. On the other hand putting programmers out of work is another ethical concern I have. On the other other hand I also consider the ethical implications of software putting non-programmers out of work.
4 hours later…
2 hours later…
09:23
@FutureSecurity @FutureSecurity Yeah, no the Java low level instructions are just not as fast, and the bytecode overhead is huge for such low level instructions. Yes, AES-NI is not available to the Java PL, but that's not a problem, as it is certainly used by Java intrinsics, where bytecode (of a specific method) is replaced by specialized pieces of native code by the VM.
3 hours later…
12:18
2 hours later…
1 hour later…
16:50
1

We're working with a microcontroller that is not secure enough to store secrets. The ROM could be dumped in a properly equiped lab.
This is why we considered integrating a certified Secure Element that would store the secrets we need for our infrastructure (some keys and certificates). This way ...
2 hours later…
« first day (3142 days earlier) ← previous day next day → last day (1830 days later) »
Transcript for
Feb17
Feb '2018
Feb19
The Side Channel
Mostly randomly generated noise. – crypto.stackexchange.com