Slashdot Mirror


A Suite of Digital Cryptography Tools, Released Today, Has Been Mathematically Proven To Be Completely Secure and Free of Bugs (quantamagazine.org)

By making programming more mathematical, a community of computer scientists is hoping to eliminate the coding bugs that can open doors to hackers, spill digital secrets and generally plague modern society. From a report: Now a set of computer scientists has taken a major step toward this goal with the release today of EverCrypt, a set of digital cryptography tools. The researchers were able to prove -- in the sense that you can prove the Pythagorean theorem -- that their approach to online security is completely invulnerable to the main types of hacking attacks that have felled other programs in the past. "When we say proof, we mean we prove that our code can't suffer these kinds of attacks," said Karthik Bhargavan, a computer scientist at Inria in Paris who worked on EverCrypt.

EverCrypt was not written the way most code is written. Ordinarily, a team of programmers creates software that they hope will satisfy certain objectives. Once they finish, they test the code. If it accomplishes the objectives without showing any unwanted behavior, the programmers conclude that the software does what it's supposed to do. Yet coding errors often manifest only in extreme "corner cases" -- a perfect storm of unlikely events that reveals a critical vulnerability. Many of the most damaging hacking attacks in recent years have exploited just such corner cases.

194 comments

  1. Completely secure and free of bugs. by olsmeister · · Score: 5, Funny

    Until it's installed on a computer that uses an Intel (tm) processor, that is....

    1. Re:Completely secure and free of bugs. by phantomfive · · Score: 0

      Or until some programmer reuses the nonce....

      --
      "First they came for the slanderers and i said nothing."
    2. Re:Completely secure and free of bugs. by Anonymous Coward · · Score: 1

      Or a Microsoft operating system.

      It's insane how buggy Windows 7 and its successors are.

    3. Re:Completely secure and free of bugs. by Red_Forman · · Score: 4, Informative

      I am guessing you never used earlier Windows versions.

    4. Re:Completely secure and free of bugs. by Anonymous Coward · · Score: 0

      Or they fail to clear buffers. This isn't required mathematically so their bug free statement still applies.

    5. Re: Completely secure and free of bugs. by phantomfive · · Score: 2

      They claim to have no memory bugs. It was written in F* and compiled to C.

      --
      "First they came for the slanderers and i said nothing."
    6. Re:Completely secure and free of bugs. by Anonymous Coward · · Score: 0

      Testting 101 - Where are the graduates?
      1) Is coverage
      2) Path analysis
      3) Exception handling
      4) Checking return codes after a function call
      5) State testing
      6) Mathematically proven sounds like exhaustive testing -most unlikely
      7) Programmers testing their own code - no bad idea.

      Corner Cases inplies a test stategy, well short of high confidence . One thinks OpenBSD has a better solution, make it expensive, and cut out weak algorithms, prefer the ones that are resiliant to Quantum computers if they ever get good.

      However it is a step forward, and the intent is good.

    7. Re:Completely secure and free of bugs. by thereddaikon · · Score: 1

      Or if it uses any third party APIs or Libraries. Which you know it does. Doesn't matter if internally their program is free of faults if it interacts with something that isn't.

    8. Re:Completely secure and free of bugs. by tepples · · Score: 3, Insightful

      I can imagine a mathematical formalism where every instantiation of a secret key must result in calling a destructor that securely zeroes the key.

    9. Re: Completely secure and free of bugs. by tysonedwards · · Score: 2

      Itâ(TM)s more that an operating system installed on billions of devices with billions of daily users experiencing pain points of the same bugs and vulnerabilities for decades should not have an unexposed attack surface left and all around be sufficiently hardened.

      --
      Thirty four characters live here.
    10. Re:Completely secure and free of bugs. by Farmer+Tim · · Score: 3, Informative

      Incredible...I could actually hear the eyes of everyone who suffered through Windows ME rolling at that.

      --
      Blank until /. makes another boneheaded UI decision.
    11. Re: Completely secure and free of bugs. by Anonymous Coward · · Score: 0

      Sure but WHEN? Program has to use it. Even if you don't zeroize yourself the operating system should not give access to your former memory pages to any other process. Yet we still care about these things.

    12. Re:Completely secure and free of bugs. by Anonymous Coward · · Score: 1, Insightful

      I don't think it makes it as far as being compiled before it loses it's provability. The article says a new language, F* was built that is verifiable. But did they also verify the F* compiler?

      My guess is that their library is only provably correct on a theoretical machine like a turning machine. But once the rubber hits the road, it could have a bunch of problems.

      Still, some formal verification is better than many existing cryptographic libraries.

    13. Re:Completely secure and free of bugs. by Anonymous Coward · · Score: 1

      That's a good point.

      Why isn't there more info and press coverage on the "Spoiler" attack and Intel VISA (Visualization of Internal Signals Architecture)?

    14. Re: Completely secure and free of bugs. by Anonymous Coward · · Score: 0

      That is it math, fool, that is an algorithm.

    15. Re: Completely secure and free of bugs. by Anonymous Coward · · Score: 0

      ME worked incredibly well on my system, and was much much faster than 98 SE

    16. Re:Completely secure and free of bugs. by Z80a · · Score: 1

      Or installed on a computer that for some reason tend to not execute the instructions correctly, or have a weird reset glitch that for some reason skip just the right instructions to unlock everything.

    17. Re:Completely secure and free of bugs. by Anonymous Coward · · Score: 0

      "I don't think it makes it as far as being compiled before it loses it's provability."

      I can prove it's means "it is".

    18. Re:Completely secure and free of bugs. by Anonymous Coward · · Score: 0

      LOL. Exactly.

    19. Re:Completely secure and free of bugs. by Joce640k · · Score: 1

      Testting 101 - Where are the graduates?
      1) Is coverage
      2) Path analysis
      3) Exception handling ...

      What coverage/paths/exceptions?

      This is crypto code, it's a linear sequence of operations. It doesn't get any more easy-to-prove than that.

      --
      No sig today...
    20. Re: Completely secure and free of bugs. by Anonymous Coward · · Score: 0

      That was my experience in the first week, then I installed a few applications and changed my mind

    21. Re:Completely secure and free of bugs. by bluefoxlucid · · Score: 2

      That's what the "integrity" part of encryption does: if you can only interact with a program via an encrypted stream, authenticated by public key, and the encryption code to decrypt and verify authenticity and integrity of the message is faultless, then you know that only those authenticated to the system can attack all other parts of the system. Your attack surface and threat actor set is minimized.

    22. Re:Completely secure and free of bugs. by Anonymous Coward · · Score: 0

      Great, you dirty a page and get COW behavior. Now what? Please don't bother to make the argument that the operating system is at fault. Encryption is a total system and cannot be considered in isolation.

    23. Re: Completely secure and free of bugs. by omnichad · · Score: 1

      If you cherry-pick just the right hardware that doesn't have terrible, buggy drivers it can run great. This was relatively rare, so your experience is not the norm.

    24. Re:Completely secure and free of bugs. by Anonymous Coward · · Score: 1

      "I don't think it makes it as far as being compiled before it loses it's provability."

      I can prove it's means "it is".

      It's been nice proving you wrong.
      SexConker posting as AC to preserve moderation.

    25. Re: Completely secure and free of bugs. by Anonymous Coward · · Score: 0

      I don't recall issues with WinME either. IIRC I had an ABIT board running a Celeron 300A @450 around that timeframe, but with Win2k then XP following in short succession, plus the explosion in hard drive sizes around then, I doubt ME stayed on my PC for long. I build my own PCs so the dodgy cheap stuff was not of interest.

    26. Re:Completely secure and free of bugs. by Anonymous Coward · · Score: 0

      Pentium, does my checkbook balance? Approximately...

    27. Re:Completely secure and free of bugs. by complete+loony · · Score: 1

      I'd much rather something like Trevisor, where the key never leaves CPU registers.

      --
      09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.
    28. Re:Completely secure and free of bugs. by Anonymous Coward · · Score: 1

      C++ compiler: object is never read from after being zeroed, thus by the abstract machine specification the last write does not lead to any observable behaviour and can be skipped.

      Java JIT: No reads between zeroing and freeing/next writes, skip zero writes. This is an important optimization since by specification all objects are zero initialized, leading to large amounts of overhead if the writes cannot be skipped.

      Functional languages: Create a new zeroed buffer, leave the old one unchanged. Mutable state is bad!

      Any modern OS: let me copy that buffer to the swap file.

      Any SSD: you want to override this? Lets do some wear levelling and overwrite that other location instead.

      Mathematician: we have proof that our system is 100% secure on a theoretical Turing machine.

    29. Re:Completely secure and free of bugs. by Anonymous Coward · · Score: 1

      Mathematician: we have proof that our system is 100% secure on a theoretical Turing machine.

      That is not a bad or pointless thing. People here don't seem to be able to distinguish the difference between a conceptual security hole, and an implementational security hole. If you code the entire library in a language not vulnerable to insecure implementation errors (lisp?), it may be possible to have a code library not vulnerable to hacking. Its pretty certain that almost every language that caters to a human (VM based, ASM, C, C++, and even languages like Erlang, Eiffel, etc.) will be inherently insecure & exploitable.

  2. Really, proven free of bugs? by JoeyRox · · Score: 3, Funny
    1. Re: Really, proven free of bugs? by Anonymous Coward · · Score: 1

      Yes. In the mathematical sense. It is a math proof.

    2. Re:Really, proven free of bugs? by Erioll · · Score: 1
    3. Re: Really, proven free of bugs? by Anonymous Coward · · Score: 1

      So the code is free of bugs. What compiler did they use?

    4. Re:Really, proven free of bugs? by Anonymous Coward · · Score: 0

      This is rampant among academics.

      Fucking hate it. When you measure the damn thing and it don't agree with yer theory, you start considerin revisin yer theory.

  3. Aren't they a bit late? by Anonymous Coward · · Score: 1

    It's the 3rd...

  4. How very nice by Anonymous Coward · · Score: 1

    this sounds legit and not like a bullshit slashvertisement! Perhaps it has a nice helping of blockchain, too?

  5. But how do you prove the proof by XXongo · · Score: 2

    Interesting, but how do you prove the proof?

    1. Re: But how do you prove the proof by Anonymous Coward · · Score: 0

      With another proof?

    2. Re:But how do you prove the proof by phantomfive · · Score: 4, Insightful

      Generally, you fall back to some very axioms that everyone agrees on. That's the way math works.

      --
      "First they came for the slanderers and i said nothing."
    3. Re: But how do you prove the proof by Anonymous Coward · · Score: 0

      The original proof proves itself.

    4. Re:But how do you prove the proof by K.+S.+Kyosuke · · Score: 4, Informative

      If it comes from a theorem prover, and includes a trace of the proof, then it can be checked with a proof checker. Proof checkers are generally much simpler than theorem provers, because they only need to mechanically check that the proof trace is consistent, whereas a theorem prover has to *find* that trace. Worst case is that you check the steps yourself.

      --
      Ezekiel 23:20
    5. Re:But how do you prove the proof by Anonymous Coward · · Score: 1

      Generally, you fall back to some very axioms that everyone agrees on. That's the way math works.

      That is also the way math doesn't work. The matematician Kurt Godel proved that way back in 1936.

      Axiomatic systems are never complete, nor could any axiomatic system become complete.

      Working from axioms is insufficient for proof, but very few people, even among the highly educated, are even up to 1930's contemporary mathematics.

    6. Re: But how do you prove the proof by phantomfive · · Score: 2

      It's still how math works. You can't prove everything true based on axioms (as Godel showed), but in practice we just don't prove those things. We prove what we can.

      --
      "First they came for the slanderers and i said nothing."
    7. Re:But how do you prove the proof by omnichad · · Score: 2

      You just aggressively claim it's true and that it proves itself. Otherwise known as a toutology.

      Yes, I know that was a bad joke.

    8. Re:But how do you prove the proof by Anonymous Coward · · Score: 0

      Unprovable but true statement: 95% of people who cite Godel's incompleteness theorem have no fucking idea what it actually says or what its real implications are (and aren't). If you restrict to people with an intense interest in philosophy or religion, the number goes up to 99%.

    9. Re: But how do you prove the proof by Anonymous Coward · · Score: 0

      You misunderstand in the usual way. Any theorem, which is constituted of axioms, can't be complete. That does not mean there is not some theorem possible to prove something true, just that any theorem, or even group of theorems, can never be logically complete.

      The second half of your post is just nonsense to anyone educated in "modern" mathematics and logic. The consequence of Godel is to seek to move away from axioms, not to assume any specific thing can't be proven with a theorem, because we know everything true can be proven by some theorem.

    10. Re: But how do you prove the proof by phantomfive · · Score: 1

      I don't know who taught you about Models incompleteness theorems, but you should not listen to them anymore because they led you far astray.

      --
      "First they came for the slanderers and i said nothing."
    11. Re:But how do you prove the proof by sabbede · · Score: 1
      Just because there will be true but unprovable propositions does not indicate that axiomatic proofs are insufficient.

      What it really means more than anything, is that the Clay Institute won't have to pay out on all the prizes. Goldbach's Conjecture, for example, is obviously true but may never be formally proven.

    12. Re: But how do you prove the proof by Anonymous Coward · · Score: 0

      But can I interest you in some sporting goods from Gödel? (Expect the unicode to fail.)

  6. Naive by tomhath · · Score: 1

    "Our code has no known bugs."

    And we pretend there aren't any unknown bugs.

    1. Re:Naive by Anonymous Coward · · Score: 2, Informative

      From the article:

      Yet while EverCrypt is provably immune to many types of attacks, it does not herald an era of perfectly secure software. Protzenko noted there will always be attacks that no one has thought of before. EverCrypt can’t be proven secure against those, if only for the simple reason that no one knows what they will be.

    2. Re: Naive by jazzoslav · · Score: 2

      The mathematical proof must be translated into code. You're either dumb or naive if you think that can be done flawlessly.

    3. Re: Naive by Anonymous Coward · · Score: 0

      LOL. Basically a cop out saying we can't prove it's secure to everything. But we will say it is anyway and then use weasel words to say it isn't. Genius!!

  7. Article posted one day late... by Anonymous Coward · · Score: 0

    The link to the article indicates the story was posted on April 2nd. I think this article was accidentally posted a day late.

    1. Re: Article posted one day late... by Anonymous Coward · · Score: 0

      No you are just an idiot.

  8. Sidechannel attacks don't exist mathematically by Anonymous Coward · · Score: 1

    And they are one of the most important attack vectors these days. The whole Spectre attack scenario is "mathematically" non-existent: speculative execution is leaking information (through performance impacts on various caching systems) while purporting to be invisible when discarded.

    1. Re:Sidechannel attacks don't exist mathematically by alvinrod · · Score: 2, Informative

      But that's a security issue in the hardware itself. Would you claim that their program is insecure if you had a hardware system that allowed any program full access to the memory of any other program? Of course not, you'd point out that nothing could be considered secure when running on such a system so the question itself is flawed.

    2. Re:Sidechannel attacks don't exist mathematically by Red_Forman · · Score: 2

      If a CPU tells you that 1+1=3, does this mean the math is faulty or the CPU failed?

    3. Re:Sidechannel attacks don't exist mathematically by weilawei · · Score: 1

      They do exist; we know how to treat them using category theory. What else is the IO monad for? We have not done so yet in any meaningful way for the broader class of unintended side channels.

    4. Re:Sidechannel attacks don't exist mathematically by Anonymous Coward · · Score: 1

      But that's a security issue in the hardware itself.

      Good luck running a mathematically proven secure program without hardware.

    5. Re:Sidechannel attacks don't exist mathematically by alvinrod · · Score: 1, Insightful

      If you extend that reasoning further, then absolutely nothing is secure, because even secure hardware will be used by humans who do not practice perfect security. 2048-bit RSA running on a dedicated and verified FPGA is now insecure as well because some idiot human is capable of giving out the key. If there are flaws or vulnerabilities in other layers, it says absolutely nothing about the security of the software. You could argue that perhaps their proof is incorrect, but unless they've made some obvious mistake, we'd have bigger problems were that the case.

    6. Re:Sidechannel attacks don't exist mathematically by Anonymous Coward · · Score: 1

      > then absolutely nothing is secure,
      Nothing is absolutely secure.

    7. Re:Sidechannel attacks don't exist mathematically by Anonymous Coward · · Score: 2, Informative

      Yes.

    8. Re:Sidechannel attacks don't exist mathematically by Anonymous Coward · · Score: 0

      Neither. 11binary=3decimal.

  9. Too late by Anonymous Coward · · Score: 0

    April 1st called. It wants its story about bug-free, invulnerable security back.

    1. Re:Too late by Anonymous Coward · · Score: 0

      Creimer took care of that problem when he bought Slashdot for three pennies last year.

    2. Re:Too late by Anonymous Coward · · Score: 0

      i read that as creimer had three penises last year and did a double take

  10. Proof that it works as intended ... by Alain+Williams · · Score: 1

    which might include the clever/obscure bit of code inserted by a NSA/GCHQ stooge.

    How long before this stuff is banned by various governments or they decide that running it is proof that you are a terrorist or similar.

    1. Re:Proof that it works as intended ... by Actually,+I+do+RTFA · · Score: 2

      I don't see why the NSA would care. They can already get your passwords anyway. My guess is that, if they wanted to, they would just look at every key I type into my computer and save all that data. Which includes my passwords. They could do it by changing my hardware, or putting cameras in my house, or various known remote attacks. Or failing that they could use a wrench to get the passwords out of me.

      Protecting yourself from state level actors is too damn difficult for an individual to do.

      --
      Your ad here. Ask me how!
    2. Re: Proof that it works as intended ... by Anonymous Coward · · Score: 0

      Yet freedom fighters and activist do it everyday and you take it for granted you spineless cuck.

  11. Ok yeah, sure, uhuh, perfect code. by stevenfuzz · · Score: 1

    Obviously an ad, but, wouldn't their magic math-based testing unicorn also be subject to bugs?

    1. Re:Ok yeah, sure, uhuh, perfect code. by Anonymous Coward · · Score: 1

      Not magic by any mean, just based on Curry-Howard isomorphism...

    2. Re:Ok yeah, sure, uhuh, perfect code. by Anonymous Coward · · Score: 0

      Dammit, I perked up when I read "magical meth-based unicorn".

  12. Challenge accepted by Anonymous Coward · · Score: 0

    just saying

  13. April fools! by Anonymous Coward · · Score: 0

    Haha April fools!

  14. With Goedel's incompleteness theorem. by Anonymous Coward · · Score: 0

    Oh, I'm sorry, I thought you meant "disprove".

    That't the problem with "100% complete proof" in mathematics.
    *IN* mathematics. Not in reality!
    Mathematics itself would first require 100% complete proof in the real world. Which Kurt Goedel showe to be completely impossible.

    Mathematics is a useful tool, IF the constructs can offer statisticalle reliable predictions of reality.
    But if not, then it's no better than religion or other beliefs. Not wrong, but merely reliably useless.
    The same thing is true for philosophy, by the way. It's also crossing the division between science and religion.

    1. Re:With Goedel's incompleteness theorem. by k2r · · Score: 3, Informative

      [ ] you understood G”oels incompleteness theorem

    2. Re:With Goedel's incompleteness theorem. by Anonymous Coward · · Score: 0

      Thanks, Goebbels.

    3. Re:With Goedel's incompleteness theorem. by sabbede · · Score: 1

      Well, that's not really how the theorem works. It isn't that proofs can't be 100% complete, it's that there are true propositions that can't be proven in an entirely complete logical/computable system. Basically, that you can either fudge the rules to prove everything (completeness), or unfudgeable (consistent) rules that won't be able to prove everything.

  15. please download! by fluffernutter · · Score: 1

    PLEASE DOWNLOAD:

    the_real_photo_tools_so_don't_run_AV.eve

    --
    Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
  16. the bastards say 'welcome' by david.emery · · Score: 1

    The SPARK community has been doing this for A Long Time. https://en.wikipedia.org/wiki/...

    I'm reminded of a quote from "Soul of a new machine" where another vendor (IBM?) 'legitimized' minicomputers. Data General ran an ad that said, "The Bastards say 'welcome'!"

  17. Overstated Headline by Anonymous Coward · · Score: 1

    It cannot be completely secure so long as it has to run on real-world hardware (this is not a dig at Intel, as there is no such thing as perfect hardware).

    1. Re:Overstated Headline by weilawei · · Score: 1

      That's a (mathematically) strong statement, and an actual problem for research.

      I can see several issues there. What are the minimum requirements for a computable system? (Conditional branching is generally good enough.) How do you prevent attackers from having those? How do you deal with timing attacks? Do you move to a constant time design? Power attacks? What are you going to do about boundary protection, rad hardening?

      It ultimately comes down to: is it possible to build a perfect black box that computes only its intended function f and yields no information beyond the mathematical descriptions of its inputs and outputs?

    2. Re:Overstated Headline by Anonymous Coward · · Score: 0

      That's pretty much what I was thinking, but not elaborating on. I don't think that building such a perfect black box is possible, there are just too many ways of observing the box and affecting it's operation.

  18. Yes, the code is right, only the code. Not "secure by raymorris · · Score: 4, Informative

    That's true. One can prove that a particular function is correct, that their code is correct. In this case, library code.

    Proving the CPU hardware and microcode is a separate step. Proving the code that USES their library is yet another thing.

    All of these can be done. It's just expensive, so you use the simplest thing that will get the job done - prove a little MCU used as a cryto co-processor, not a complex Intel CPU.

  19. The interesting bit... by ath1901 · · Score: 5, Interesting

    Here's the interesting bit about what they actually did:

    The platform needed the capacity of a traditional software language like C++ and the logical syntax and structure of proof-assistant programs like Isabelle and Coq, which mathematicians have been using for years. No such all-in-one platform existed when the researchers started work on EverCrypt, so they developed one — a programming language called F*. It put the math and the software on equal footing.

    “We unified these things into a single coherent framework so that the distinction between writing programs and doing proofs is really reduced,” said Bhargavan. “You can write software as if you were a software developer, but at same time you can write a proof as if you were a theoretician.”

    1. Re:The interesting bit... by Anubis+IV · · Score: 3, Funny

      F* (pronounced "F star") was the grade my university would give to students who failed a course, but not just for any failure. The F* grade was reserved for those who cheated on an exam, plagiarized papers, or were otherwise caught engaging in unethical behavior. It was a scarlet letter that went on their official transcript, forever branding them as someone you couldn't trust (or as someone who wasn't competent enough to NOT get caught, depending on your outlook).

      As a result, it's kinda hard for me to shake the feeling that there's something untrustworthy about this software.

    2. Re:The interesting bit... by Futurepower(R) · · Score: 1

      "F* (pronounced "F star")..."

      Whoever named it that lacks social ability.

    3. Re:The interesting bit... by Anonymous Coward · · Score: 0

      And all this time I thought it was pronounced:

      Faster-risk

    4. Re:The interesting bit... by Anonymous Coward · · Score: 0

      Have they proved their design and implementation of F* is bug free?

    5. Re:The interesting bit... by q4Fry · · Score: 1

      "See Sharp"

  20. Trust Us, We Checked by Anonymous Coward · · Score: 0

    A broken clock is 100% accurate if you look at it at the right time day.

    1. Re:Trust Us, We Checked by bn-7bc · · Score: 1

      Yes but still useless as you never know when it givesthe correct time

    2. Re:Trust Us, We Checked by Wulf2k · · Score: 1

      But still better than those other clocks that are 'never' showing the correct time.

  21. Unless it's *implemented* in reality! by Anonymous Coward · · Score: 0

    Because mathematics is only as correct as the unproven axioms and merely arbitrary definitions it is built upon.
    Goedel's incompleteness theorem was the ultimate death blow to the hopes of perfectly proving mathematics itself.

    So the best you can ever have, is statistically reliable reproducible measurements. Preferably reproduced by you personally.

    Don't get me wrong: Mathematics can be great and certainly is extremery useful.

    But it is not itself defining itself as useful. Reliably predicting reality is what makes it useful.
    And like with philosophy, there is a whole world of mathatics out there that is right on, and often way over the line between dabbling to find things that will be useful in the future, and merely self-made-up arbitraty constructs that are as reliably useless as religion.

    1. Re:Unless it's *implemented* in reality! by Anonymous Coward · · Score: 0

      Goedel's incompleteness theorem was the ultimate death blow to the hopes of perfectly proving mathematics itself.

      It's interesting that you mention religion... Goedel was a monotheist. He had a single God, and thus was wrong. There are Many Gods! What I mean to say is that while a single system of axioms may not prove itself, a patheon of two or more systems may reinforce and complement each other and each prove for the other the bits that the self could not see.

      An eye can not see itself, but mirrors exist, and two eyes can each see each the other. Goedel would look at a recursive function and say it would never terminate. Turing would say, there is no general algorithm to test that any given recursive function would loop infinitely or halt (halting problem), but he would say that you can prove whether specific functions will halt or not. There is are also principles in information theory called lossy compression and fuzzy comparisons. If the system is built upon lossy rules rather than axioms it absolutely may prove itself.

      "I think, therefore I AM" disproves Goedel.

  22. KreMLin by dcollins117 · · Score: 2, Interesting

    Couldn't help but notice the code is built with a compiler named "KreMLin". Isn't that interesting.

    1. Re:KreMLin by robot_dude · · Score: 1

      Pre-processor: "mSs" Compiler: "KreMLin" Linker: "NsA"

    2. Re:KreMLin by Anonymous Coward · · Score: 0

      "Couldn't help but notice the code is built with a compiler named "KreMLin". Isn't that interesting."

      Interesting is the fact that you actually RTFA.

    3. Re:KreMLin by Anonymous Coward · · Score: 0

      Eh, when you write software in ML, you obviously need to include the string 'ML' in your project's name...

  23. First, we posit a spherical cow... by karlandtanya · · Score: 3, Interesting

    It's possible to be mathematically perfect...in fact, mathematically is pretty much the only way to be "completely" or "perfectly" anything.

    The basic problem with mathematical proofs is that math is an abstraction (the model), and the perfect-and-complete nature of the proof can *only* ever apply to the abstraction. The degree of fidelity to which the model reproduces your particular real situation is another story. Mathematically proving your solution is perfect not meaningful by itself.

    It's a huge red flag the the vendor in this ad is directing our attention to a meaningless mathematical proof of perfection in their product. This strongly suggests to me that there is no valid reason to trust their design.

    Even if we stipulate a "perfect" set of cryptographic algorithms implemented in a mathematically "perfect" set of code, the solution is meaningless without proper implementation and user procedures.

    For example: I've got a great VPN (it uses OpenVPN), but when it fails, all my traffic is suddenly exposed. So I adjust my firewall rules so the only traffic allowed besides that needed to establish the vpn link must go through through tun0. Or use wireguard instead. Until next week when I'm in a factory and I need to talk to some PLCs or I/O modules to configure them, then I turn off the firewall or use the "factory" instead of the "office" setting. Now I have to remember to turn it on again or I won't be protected. etc. etc. etc.

    There are no "magic bullets", and somebody claiming to have one has just saved you the trouble of evaluating them any further.

    --
    "Reality is that which, when you stop believing in it, doesn't go away." - Philip K. Dick
    1. Re:First, we posit a spherical cow... by gweihir · · Score: 2

      The basic problem with mathematical proofs is that math is an abstraction (the model), and the perfect-and-complete nature of the proof can *only* ever apply to the abstraction.

      And that is exactly it. Anybody claiming to have shown any real world properties are mathematically proven is either incompetent or a liar or both.

      The degree of fidelity to which the model reproduces your particular real situation is another story. Mathematically proving your solution is perfect not meaningful by itself.

      It's a huge red flag the the vendor in this ad is directing our attention to a meaningless mathematical proof of perfection in their product. This strongly suggests to me that there is no valid reason to trust their design.

      In fact there is strong reason to _not_ trust them. They are lying by misdirection about the security. They may lie about other things as well.

      Even if we stipulate a "perfect" set of cryptographic algorithms implemented in a mathematically "perfect" set of code, the solution is meaningless without proper implementation and user procedures.

      For example: I've got a great VPN (it uses OpenVPN), but when it fails, all my traffic is suddenly exposed. So I adjust my firewall rules so the only traffic allowed besides that needed to establish the vpn link must go through through tun0. Or use wireguard instead. Until next week when I'm in a factory and I need to talk to some PLCs or I/O modules to configure them, then I turn off the firewall or use the "factory" instead of the "office" setting. Now I have to remember to turn it on again or I won't be protected. etc. etc. etc.

      There are no "magic bullets", and somebody claiming to have one has just saved you the trouble of evaluating them any further.

      Indeed. Run screaming or start laughing. But do _not_ buy the snake-oil they are selling.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    2. Re: First, we posit a spherical cow... by c6gunner · · Score: 2

      For example: I've got a great VPN (it uses OpenVPN), but when it fails, all my traffic is suddenly exposed. So I adjust my firewall rules so the only traffic allowed besides that needed to establish the vpn link must go through through tun0. Or use wireguard instead. Until next week when I'm in a factory and I need to talk to some PLCs or I/O modules to configure them, then I turn off the firewall or use the "factory" instead of the "office" setting. Now I have to remember to turn it on again or I won't be protected. etc. etc. etc.

      You could just configure your firewall to exclude private subnets from the rule in the first place. Or if that's too insecure for your needs, add exclusions on a per-IP basis only when you need them (you can even give them an automatic timeout using ipset, so you don't have to remember to remove them). Or have a completely separate interface (USB Ethernet or wireless) which is exempted from the firewall rules, and use that when you don't want to route through your VPN.

      I agree, though, that the "just turn it off for now" mentality tends to cause a lot of security issues. That's exactly why you should plan ahead and implement one of the solutions I've listed above, instead.

    3. Re:First, we posit a spherical cow... by Anonymous Coward · · Score: 0

      The basic problem with mathematical proofs is that math is an abstraction (the model), and the perfect-and-complete nature of the proof can *only* ever apply to the abstraction

      If you want to get philosophical, abstractions are the only things that really exist. The definition of "exists" is only valid relative to our perception as we cannot know anything beyond what we can perceive. Our perceptions are only abstractions. Everything an observer in this universe can observer is abstractions. To disconnect reality from abstractions is to talk about nothing that exists.

    4. Re:First, we posit a spherical cow... by Anonymous Coward · · Score: 0

      Ad slicks written by people that don't understand the theoretical and abstraction that is inherent in mathematics. So we have to ask ourselves, what did the engineers themselves want getting out to the public? You can't trust marketing to tell the truth so all we have proof of here is that some marketroid writing copy lied. Which, frankly, is one of those redundant statements that most people already know is true.

      I'd be curious to find out what the actual brains behind the operation think of what they've done. THAT would be far more telling than what the guy writing ad copy said.

    5. Re:First, we posit a spherical cow... by Dragonslicer · · Score: 1

      The thing is, cryptography is pretty much just simple math, especially compared to most typical user-facing software. Cryptographic algorithms don't have to deal with checking user authentication and authorization at every entry point into the system the way a web site does, they don't have to deal with the types of concurrency issues that databases need to handle, and they don't have to deal with users pressing buttons in an unexpected order that puts the software in a state that the programmers didn't think of.

      Cryptography is probably the (non-trivial) software that's easiest to prove.

    6. Re:First, we posit a spherical cow... by jbengt · · Score: 2

      Anybody claiming to have shown any real world properties are mathematically proven is either incompetent or a liar or both.

      Not that it automatically makes them competent or truth-tellers or both, but they haven't done that in TFA. They claim they have mathematically proved that their code is secure against known attacks. Code is math so it is subject to mathematical proof. TFA didn;t include the proof, and I'm not sure that I could follow it, anyway, but a lot of posts here are assuming they claimed perfect security if you run their code, when they specifically and explicitly stated otherwise.

      Indeed. Run screaming or start laughing. But do _not_ buy the snake-oil they are selling.

      Or, spend some time reading RTFA before getting hysterical.

    7. Re: First, we posit a spherical cow... by karlandtanya · · Score: 1

      You're missing the point. Google "reification fallacy".

      --
      "Reality is that which, when you stop believing in it, doesn't go away." - Philip K. Dick
    8. Re: First, we posit a spherical cow... by Anonymous Coward · · Score: 0

      Blaming the users like you blame the pilots?

      What a cuck you are. I see you have chosen to excuse yourself from all boeing max threads on slashdot after you got called out several times for lying.

    9. Re: First, we posit a spherical cow... by c6gunner · · Score: 1

      Oh, I got your point. It basically boils down to "it doesn't matter how good the security is, I can find a way to fuck it up". No arguments there; I'm sure you can, and I know you're not the only one. I just thought I would offer you a way to avoid fucking it up in that particular scenario. Trying to be helpful rather than disputing your point.

    10. Re:First, we posit a spherical cow... by gweihir · · Score: 1

      They claim they have mathematically proved that their code is secure against known attacks.

      They have a list of all known attacks? Fascinating. Because nobody else has that list, there are just far too many. You are also wrong that code is math in this instance here. Many, many known attacks do use side-channels. And there code stops being math and is very much a physical system executing the code.

      So while they may actually have excluded all that in their paper, what remains after that is pretty meaningless.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    11. Re:First, we posit a spherical cow... by swillden · · Score: 1

      It's a huge red flag the the vendor in this ad is directing our attention to a meaningless mathematical proof of perfection in their product.

      Note that it's not an ad, they're not a vendor, and EverCrypt is not a commercial product. This work is the result of an academic research project, from a Carnegie-Mellon professor, his PhD student, and a researcher employed by Microsoft.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  24. An unsinkable ship by theblkadder · · Score: 1
    I remember many years ago a group of people claimed to have built a ship that was unsinkable. I'm pretty certain we all know how that turned out.

    In fairness the article does add some caveats about currently unknown attack vectors and the like, however anyone claiming a piece of software is completely error-free, especially when they also developed an entire new language to build said software is probably mistaken.

    --
    Earth is a single point of failure.
    1. Re:An unsinkable ship by Anonymous Coward · · Score: 0

      I remember many years ago a group of people claimed to have built a ship that was unsinkable. I'm pretty certain we all know how that turned out.

      To be fair, the marketing folks just omitted the error bounds. The full claim was that it would sink 0 times, plus or minus 1. The outcome still fits with the expectations.

  25. Hey, math... by Anonymous Coward · · Score: 0

    ... Hold my beer.

  26. Bullshit by gweihir · · Score: 1

    There is no way to "mathematically prove" security of software on the confidence-level of a mathematical poof. It starts with the execution model not being fit to be formally represented. It continues with the used compiler not being verified. Then, formal verification is extremely high effort and infeasible for anything besides a really small code base in practice.

    At the end, this is a lie. And the ones lying must know that.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    1. Re:Bullshit by CyberSlugGump · · Score: 3, Funny

      Reminds me of the famous Donald Knuth quotation: Beware of bugs in the above code; I have only proved it correct, not tried it.

    2. Re:Bullshit by Bite+The+Pillow · · Score: 1

      https://en.wikipedia.org/wiki/...

      There is a verified compiler, if they made their language compiler with that then your argument falls apart. Care to detail your knowledge outside of this particular article?

    3. Re:Bullshit by Nkwe · · Score: 2

      While you probably can't prove that the compiler will do what you think it will do, and you probably can't prove that the CPU will execute the compiled code the way you think it will, could you prove that your source code does not have a specific set of common developer introduced programming errors? A quick scan of the article seemed to indicate that this was the actual claim. While not earth shattering, it does seem useful.

    4. Re:Bullshit by thegarbz · · Score: 2

      Of course there is. Code is executed in a logical way. Saying their code is mathematically free of bugs is both valid and provable. Now whether the compiled result, the platform or hardware allows an exploit to run on the final binary is a completely different argument.

    5. Re:Bullshit by k2r · · Score: 1

      There is no way to "mathematically prove" security of software on the confidence-level of a mathematical poof.

      This - on the code level - is exactly what you learned to do at university when learning functional programming languages.
      Yes, there’s still a lot that that can go wrong on deeper layers‘ but at least for their code they proved correctness.

    6. Re:Bullshit by Dragonslicer · · Score: 1

      But every time there's a story posted to Slashdot that's about software patents, at least a dozen people start ranting about how software is just math. Are you telling me Slashdot is wrong?

    7. Re:Bullshit by jbengt · · Score: 1

      There is no way to "mathematically prove" security of software on the confidence-level of a mathematical poof.

      They specifically said in the TFA that they picked Cryptography because it was feasible to mathematically prove the code is secure from known attacks. They also basically said it would be infeasible for them to try it with many types of complex programs.

    8. Re:Bullshit by gweihir · · Score: 1

      A verified C compiler is nice, but they are talking correctness on the level of a very fundamental mathematical proof. Ordinary code verification does not give you that. You need to verify the compiler against the full formal description of the hardware. That is pretty much impossible.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    9. Re:Bullshit by gweihir · · Score: 1

      I agree that his is useful. But it is not "Mathematically Proven To Be Completely Secure and Free of Bugs" by a far cry.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    10. Re:Bullshit by gweihir · · Score: 1

      Bullshit. You must never have heard of Hoare Calculus or "weakest precondition" calculus. I learned both in CS 102. No functional language required. (I know a few too.)

      But that is not my criticism. When they claim to "mathematically prove" some property of a real object, then the lower layers must be included. And they need to "mathematically prove" that Physics is complete and correct as well. That is impossible as mathematics can only work on abstractions, not the real world. Anybody claiming to have "mathematically proven" any property of a real-world object is lying, plain and simple (or incompetent).

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    11. Re:Bullshit by gweihir · · Score: 1

      Software is Math. Software executed on a computer is Physics. Attacks are done against software executed on a computer, not against the software itself.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    12. Re:Bullshit by gweihir · · Score: 1

      They are wrong. This is not possible for crypto code either. When you look at the last few years, many vulnerabilities are information leaks. Spectre and Meltdown are probably the most famous at the moment, but there are many more, for example RSA keys leaking via timing, etc. They can prove absolutely nothing for these attacks. "Secure" most definitely means secure in practice. "Free of bugs", under the assumption the machine is flawless, is something else and that is what they may have done. Of course for this to be "on the level of a mathematical proof", they need to have verified all tools and the compiler on that level as well, and bootstrapping (were you compile the compiler with itself) does not work as the resulting "proof" would be circular.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  27. Not so fast... by XMadtowner · · Score: 1

    Mathematical probability is complete hocum. Not secure and free of bugs until Chuck Norris says so.

    1. Re:Not so fast... by Anonymous Coward · · Score: 0

      Chuck Norris is a senile old self-fingerbanger.

  28. Re:Yes, the code is right, only the code. Not "sec by skids · · Score: 4, Insightful

    Proving the code that USES their library is yet another thing.

    That's the rub. There will be some wrapper written to make parameter exchange automatic, or facilitate finding a VPN gateway, or whatnot, and it'll undo all the hard work in a few lines of hastily coded VB.

    There's a hard and fast requisit for establishing a MITM-proof crypto channel: you have to exchange some keying material safely... whether that's through a CA system or a preshared key or whatever, it simply must be done... and the users will choose the software which skips that step because someone assured them it is taken care of automagically, and well heck, that's much easier.

  29. Wrong headline by Anonymous Coward · · Score: 0

    Shouldn't the headline be "P != NP". I'm pretty sure it's required to prove that encryption works.

  30. And then the Guide said... by magusxxx · · Score: 1

    "...and no one had to be nailed to anything."

    --
    Care killed the cat, but satisfaction brought it back.
  31. Re:Yes, the code is right, only the code. Not "sec by lgw · · Score: 4, Interesting

    It' impossible to prove that your crypto library is invulnerable to side-channel attacks. It is possible, however, to prove it's not vulnerable to common side-channel attacks. That's not nothing.

    Their marketing hyperbole is so over the top, however, that I wouldn't trust them with anything.

    A big problem in general in software crypto is that it's impossible to prove that the random/entropy source provided by the processor is good. There's no software work-around to that - oh, you can try to use I/O timings and so on, but those can be manipulated. Even if the code that generates the mask that is used in the fab is proven correct, we know the NSA is capable of tampering with the mask between code and fab.

    After the Snowden revelations were understood, paranoid crytpo guys reached the point of "I can't only trust a hardware entropy source that I build myself from components I bought myself in person from a random store." That's not exactly productizable, but it's a fair assessment of the threat of the NSA.

    --
    Socialism: a lie told by totalitarians and believed by fools.
  32. Formal verification finally coming of age? by bradley13 · · Score: 2

    Formal verification has huge potential, and can (theoretically, at least), be applied to any software that doesn't have side effects (which mainly means: everything is an input or output parameter - no GUIs, no external input/output, etc..). It's really cool to have something significant that has been formally verified.

    That said, formal verification still only takes you so far. There is no way for them to have proven immunity to side channels, or immunity to processor vulnerabilities, or even immunity to brute-force attacks. So this is an important battle, but it doesn't automatically win the war.

    --
    Enjoy life! This is not a dress rehearsal.
    1. Re:Formal verification finally coming of age? by jfdavis668 · · Score: 1

      Intel used to used formal meathods to prove that their CPUs worked. They had to stop proving the entire CPU as they became too complicated to complete in a reasonalbe time. So they just prove the core functions. That is why the Pentium bug was such a shock for them. Here was a bug missed n a fully proven processor. Oops.

    2. Re:Formal verification finally coming of age? by Anonymous Coward · · Score: 0

      Formal verification is still a near complete time waster. It doesn't prove the verifier is correct or was operated correctly. It doesn't prove your requirements are correct and complete. It doesn't prove the code matches the requirements. It doesn't prove the code has other issues outside of what the verifier knows about. It doesn't prove the code matches the model. Etc...

      It only demonstrates the model passes the verification checks. Assume anything more than that means your 'formally verified code' will eventually fail.

    3. Re:Formal verification finally coming of age? by Anonymous Coward · · Score: 0

      Given formal verification based on an abstract flight sensor and an abstract Boeing 737 Max we can show proof that neither of the planes actually crashed.

    4. Re:Formal verification finally coming of age? by Anonymous Coward · · Score: 0

      but Edsger W. Dijkstra would be so proud!

  33. Oracle 9i Database by 93+Escort+Wagon · · Score: 1
    --
    #DeleteChrome
  34. Very good & it's what spooks me... apk by Anonymous Coward · · Score: 0

    Very good & it's what spooks me when I 'stick my neck out there' like THIS https://science.slashdot.org/c... - how SOLID/SAFE is the underlying compiler code (& I tend to 'steer clear' of 3rd party libs/dlls OR units (.pas), modules (.bas) & headers (.h)).

    * IF you can't write the code YOURSELF & verify it, yourself? You need to as best as is possible - the rest, users will uncover/determine. For my hosts engine?

    I chose Object Pascal because it outright SMOKED MSVC++ in years past (especially in MATH & STRINGS + has NO ISSUE in string related bufferoverflows C/C++ can (latter can avoid via std string use, copied from PASCAL having len in str OR check @ least prior)).

    HOWEVER: "verified design" is a RARE thing (even for compilers & IT SHOULD BE there most of all - they create all else).

    (I don't know if they're "lying" but they ARE taking a hell of a RISK of "EATING THEIR WORDS" given time...)

    APK

    P.S.=> See subject & nice post gweihir + see what I had to do to an UNIDENTIFIABLE LYING TROLL here (NSA 'Ghidra' bs artist who shot his piehole off & couldn't BACK it validly w/ proof https://games.slashdot.org/com... ) in ADDITION to what's in my initial link... apk

  35. April Fool's? by Anonymous Coward · · Score: 0

    I thought April Foo's Day was 3 days ago?

  36. Did they formally prove the compiler they created? by Anonymous Coward · · Score: 0

    They created a custom compiler for this. That could easily introduce bugs if it isn't formally proven...

  37. Check your calendar by Anonymous Coward · · Score: 0

    This story clearly should have been released on Monday.

  38. Re:Yes, the code is right, only the code. Not "sec by ljw1004 · · Score: 2

    Their marketing hyperbole is so over the top, however, that I wouldn't trust them with anything.

    Really? What is the "marketing hyperbole" you're talking about? The only hypebole I've seen in this case comes from journalists.

  39. Re:Yes, the code is right, only the code. Not "sec by Joce640k · · Score: 2

    That's true. One can prove that a particular function is correct, that their code is correct. In this case, library code.

    Crypto library code is very linear, no conditionals, just a sequence of math operations. I don't think it's hard to prove correctness.

    This is just marketing wank.

    --
    No sig today...
  40. BS alert by Anonymous Coward · · Score: 0

    I had to check the date for an obvious April Fool relationship.

    Any sufficiently complicated software system *CANNOT* be proven correct, and the fundemental reason so has to do with the fact that you are USING THE SYSTEM UNDER TEST, to test itself. These computer scientists should know this. I bet their grant or whatever funding source they were working under sure wanted this result, and hey, it paid the eggheads bills for parties and wine for a while, but I hope the rest of us realize the truth... there will always be bugs.

    AND.. who the hell creates a new programming language and calls it ONLY 'F*'?! why not get serious here and call it F*314159 or any other transcendental function reference?

  41. Re:Yes, the code is right, only the code. Not "sec by raymorris · · Score: 2

    Not disagreeing, just clarifying.

    Yes you can prove that it is unaffected by known, enumerated side-channel attacks in the processor / chipset.

    You can't prove it would be unaffected by unknown CPU side-channel.

    ALSO you can prove that there are no side channels in the code itself - you can enumerate the state parameters which affect the functioning of the code, both internal and external state parameters.

    The distinction becomes important when you start proving more than one component of the system. If you prove the library code - including against aide channels in the code, and you prove any kernel - including kernel side channels, and you prove the microcode - including microcode side channels, and you prove the hardware - including hardware side-channels, then you've proved the system to be free of side channels, and the application code, then you've proved the system.

    In proving the system, you prove that the output state is identical *per the specification*. If you specify "identical state" as high and low CMOS output, you'll have no side channels re high vs low - but you could still have a high at 3.28 volts vs a high at 3.29 volts.

  42. Re: Yes, the code is right, only the code. Not "se by Anonymous Coward · · Score: 1

    I've always wondered... exactly what would motivate someone to spend decades building up their career to get to a point where they could be hired by someone like Intel for a high-level position, only to risk having that career UTTERLY and permanently incinerated & destroyed if they "did something" for the NSA and ended up getting caught?

    The NSA's budget isn't small, but it's not like they could afford to properly compensate an engineer for a lifetime of lost earnings and opportunities for self-actualization at a company like Intel. Even if they somehow gave him a new identity afterwards, he'd have ZERO chances of EVER getting hired by someone like AMD or Nvidia, because someone in HR would notice that he didn't have documented experience with a comparable company & toss his resume in the shredder without a second thought... and if he made it far enough to be considered, the company AMD hired to do his background check would run facial recognition on him, find a picture of him at an Intel company picnic posted to Instagram by a former coworker, and tip AMD off.

    Let that sink in. His career, and everything he spent a lifetime working towards, would be *ruined*, and the amount of money it would take to insulate him from the fallout of getting caught would probably exceed its objective value to national security... not to mention the potential harm it would cause to the US economy if Intel were suddenly treated like Huawei by other countries.

  43. Mandatory functional language skills by k2r · · Score: 1

    Maybe learning a single functional language like ML to grasp the concept and a little mathematics should be mandatory for every software developer.
    At least many of the comments suggest this to me.

  44. Looking at project on Github by mrlinux11 · · Score: 2

    I found this issue on github and it appears they are not as good as claimed, this is a security 101 mistake. "Currently the generated C functions don't check for the proper length of the input arrays. Indeed the user can read it from the original F* code, but when they make a mistake the code still executes and reports success (like in #53 ). Would be possible to add bound checks on inputs and return an error code (like 1 in case of aead_encrypt "

  45. Obligatory XKCD: by captaindomon · · Score: 2
    --
    Just because I can hook a shark from a boat, I do no offer to wrestle it in the water.
  46. Not Patentable by Anonymous Coward · · Score: 0

    The Supreme court in the United States is going to love this:

    “We unified these things into a single coherent framework so that the distinction between writing programs and doing proofs is really reduced,” said Bhargavan. “You can write software as if you were a software developer, but at same time you can write a proof as if you were a theoretician.”

    We have been arguing for years that all software could be reduced to mathematical expressions - which are not patentable. Math is discovered, not invented.

  47. comes from a normal distribution by Anonymous Coward · · Score: 0

    Their code is based on assumptions, any one of which may be incorrect.

    Incorrect assumption invalidates their claims.

  48. Re:Yes, the code is right, only the code. Not "sec by Anonymous Coward · · Score: 0

    Crypto library code is very linear, no conditionals,

    Why stop at crypto code? It's possible to avoid branching statements for most logic. Here I avoid a lookup table & branching to eliminate branch prediction vulns (spectre / meltdown) in a bin2hex function:
    // Convert each byte of the input array into two hexadecimal digits: [0..9a..f]
    void * while_jump = &&BinToHex_WHILE;
    void * while_finish = &&BinToHex_WHILE_FIN;
    sintp_t while_mask = -1;
    goto BinToHex_WHILE_TEST
    BinToHex_WHILE:
            cl_sint8 ch = *rPos++;
            cl_sint8 cl = ch & 0xFU;
            ch = (cl_uint8)ch >> 4;

    // Tree Magic can walk multiple branches of The Path. The below are essentially if / then / else statements.
            *wPos++ = 87 - ( ((ch - 10) >> 7) & 39 ) + ch;
            *wPos++ = 87 - ( ((cl - 10) >> 7) & 39 ) + cl;
    BinToHex_WHILE_TEST:
    rPos - end; // sintp is a pointer sized signed int;
    while_mask >>= (sizeof( sintp_t ) << 3) - 1;
    while_jump = (while_jump & while_mask) | (while_finish & (~while_mask);
    goto while_jump;
    BinToHex_WHILE_FIN:

    Note that I have also (somewhat defensively / needlessly) avoided a while loop branches by use of the computed goto. This code must not be placed in memory with the highest bits set. (addr 0x8000000000000000 and above in 64bit); However, by emulating a carry-out operation I could also make it placeable anywhere in memory (but the example would have been even more obtuse). This relies on C (not C++) ability to predictably use the result of an integer overflow on a machine using two's compliment, but a carry-out operation could have also been used to avoid use of the overflowed integer for implementation in C++ etc.

    TL;DR: Branching statements = branch prediction side channel. GOTO has always been our sacrificial savoir!

  49. Re:Yes, the code is right, only the code. Not "sec by Anonymous Coward · · Score: 0

    Oops, HTML escapes ate a bit of code, but it should still suffice for demonstration of the theory...

  50. From the article... by nuckfuts · · Score: 1

    EverCrypt is the first library to be provably secure against known hacking attacks.

    Known hacking attacks.

  51. I'll expand on that further (OS & API)... apk by Anonymous Coward · · Score: 0

    I'll expand on that further (OS & API - were THEY also verified? Probably not & your compilers CALL ON THOSE too) in addition to my reply to gweihir https://science.slashdot.org/c... regarding compiler code as well which YOU hit on also (great minds think alike).

    * ONLY OS I've ever heard of that was iirc is HP-UX @ a B rating?

    (Correct me if I'm off/wrong - it's been YEARS since I looked @ "Orange Book" C2 certified or better ratings... & iirc, they use a diff. std. now too there...)

    APK

    P.S.=> Anyhow there ya go "onwards & UPWARDS"... apk

  52. So when it IS cracked by petes_PoV · · Score: 2
    ... that will cast doubt on every other cryptographic proof.

    If you were going to wave a rag in front of the hacker "bull" then claiming some code was proven secure is just the way to do it.

    --
    politicians are like babies' nappies: they should both be changed regularly and for the same reasons
    1. Re:So when it IS cracked by swillden · · Score: 2

      ... that will cast doubt on every other cryptographic proof.

      If you were going to wave a rag in front of the hacker "bull" then claiming some code was proven secure is just the way to do it.

      Sure, and when some clever hacker shows that there are right triangles whose legs can be squared and summed to something other than the square of the hypotenuse, it will cast doubt on every other mathematical proof.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  53. Re: Yes, the code is right, only the code. Not "se by lgw · · Score: 2

    Consider the case where the guy is working for the NSA out of college, and then, as an NSA employee, applies to Intel or whoever in hopes of getting into position to make such a change. He has a bright future within the NSA, and a second income for a while.

    --
    Socialism: a lie told by totalitarians and believed by fools.
  54. I'd like to learn something by goombah99 · · Score: 1

    Feeling like I'd like to learn today. Could you take a moment and give me some simple examples of what it means to prove an algorithm or whatever it they are saying.

    --
    Some drink at the fountain of knowledge. Others just gargle.
    1. Re:I'd like to learn something by rockmuelle · · Score: 2

      TFA actually does a good job of discussing it in layman's terms. It's surprisingly devoid of hype and hyperbole.

      As a starting point that's not TFA, Formal Verification is the sub-field of CS that this is based on: https://en.wikipedia.org/wiki/...

      -Chris

  55. Re: Yes, the code is right, only the code. Not "s by Anonymous Coward · · Score: 0

    You lack imagination young padawan.

  56. Re:Yes, the code is right, only the code. Not "sec by Anonymous Coward · · Score: 0

    how can you prove that side channels in the code itself? Are you talking source? Compiled?

    Formal proofs are about the correctness of the code -- does it do exactly and only as specified -- and say absolutely *nothing* about security. You can have absolutely, formally proven correct code with side channel attacks. Row hammer laughs at your formal proof. The attack on PGP utilizing known plain text and a microphone as found on a smartphone to expose the private key: no formal proof can defend against that.

    In your last paragraph you start trying to use physical specifications for "proof" and your example illustrates that you have no experience with actual side channel attacks. Many side channel attacks work specifically because it was a side channel not considered by the designer and so was not part of the specification to start with.

    Again, a proof of "meets specification" is only what it is, a proof that the specification was accurately and completely followed. It does nothing for security. For that you need to look to your specification. And hope that you've conceived of all the inconceivables (like a bog standard microphone being a viable exploit for an audio side channel relating to CPU operations).

  57. For very small values of 'completely' by ediron2 · · Score: 1

    Hmm, what's the delta between:
    > Has Been Mathematically Proven To Be Completely Secure and Free of Bugs
    and:
    > The researchers were able to prove -- in the sense that you can prove the Pythagorean theorem -- that their approach to online security is completely invulnerable to the main types of hacking attacks that have felled other programs in the past. "When we say proof, we mean we prove that our code can't suffer these kinds of attacks,"

    Completely, vs narrow. The headline giveth, but the small print taketh away. Science and tech journalism pays so poorly that many practitioners don't understand enough to not make these gaffes.

  58. There is no secure software by jazzoslav · · Score: 1

    Sounds like a bunch of kids, trying to impress some other kids.

  59. Re:Yes, the code is right, only the code. Not "sec by thereddaikon · · Score: 1

    I think formally proving the code does have security relevance. While you are right Rowhammer and the like are unaffected, most vulnerabilities and attacks are centered around failures in the code. Those attacks that exploit poor implementations and lazy programmers are easier to implement. So formally proving your code is valuable. So is taking a security first approach to the project. It's usually impractical or impossible for a dev team to fix or verify security flaws at other levels like the Kernel or hardware. The best they can do is ensure that their bit of responsibility, the application, is written securely. And try as best they can to mitigate what they cant control.

  60. Could have just used by AHuxley · · Score: 1

    Ada.

    --
    Domestic spying is now "Benign Information Gathering"
  61. Comment by Anonymous Coward · · Score: 0

    Challenge accepted!

  62. Re:Yes, the code is right, only the code. Not "sec by flargleblarg · · Score: 1

    Neat trick. But I have to point out that your code:

    *wPos++ = 87 - ( ((cl - 10) >> 7) & 39 ) + ch;
    *wPos++ = 87 - ( ((cl - 10) >> 7) & 39 ) + cl;

    is unnecessarily confusing, unnecessarily complex, and unnecessarily machine-dependent.

    It would be more portable, much easier to understand, and require one fewer operation, while still being branchless, if it were written like this instead:

    *wPos++ = ch + '0' + ((x >= 10) * ('a' - '9' - 1));
    *wPos++ = cl + '0' + ((x >= 10) * ('a' - '9' - 1));

    And if hardware multiplication is slow on your CPU, you can do the following instead, which is also perfectly portable in C and does not rely on any undefined behavior (although it's back to requiring the extra operation):

    *wPos++ = ch + '0' + (-(x >= 10) & ('a' - '9' - 1));
    *wPos++ = cl + '0' + (-(x >= 10) & ('a' - '9' - 1));

    Note that the expression 'a' - '9' - 1 becomes the compile-time integer constant 39.

  63. Re:Yes, the code is right, only the code. Not "sec by flargleblarg · · Score: 1

    EDIT: Damnit, I proofread that twice before submitting, and now noticed several typos: Where I wrote x, I meant to write either ch or cl, as appropriate.

  64. Re:Yes, the code is right, only the code. Not "sec by Anonymous Coward · · Score: 0

    Oops: -(x >= 10) invokes a check of the CPU (carry) flags, which is what the GP was trying to avoid. If The CPU may (probably) trigger parallel (speculative) execution and evaluate both x >= 10 and x < 10, which is what allows Spectre vuln to do mean stuff. It's probably the case that code would be somewhat processor specific to avoid processor specific vulnerabilities. On the Z80 we don't have any spectre or meltdown vulnerabilities, for example, and simple if statements and lookup tables would not result in the vulns since it has no parallel (speculative) execution. The Mill CPU would also be invulnerable to certain Spectre variants.

  65. Re:Yes, the code is right, only the code. Not "sec by Anonymous Coward · · Score: 0

    Note that the expression 'a' - '9' - 1 becomes the compile-time integer constant 39.

    Only if the underlying charset the compiler is build for is based on ASCII, but there's no guarantee of that. Today's code should specify the charset operated within and explicitly emit or accept ASCII / UTF-8 or Unicode use in functions to use a standard representation internally, independent of the compiler's host charset. Perform translation into the target environment's charset upon display.

    That way your BBS code can run on multiple platforms while using a common charset interchange. Also, you don't have to track down charset related bugs because logic changed when you compiled on C64 petscii vs IBM P2 CP437. C takes the opposite approach, its source code files must be translated into the host environment that the compiler is compiled against, and makes no effort to standardize a charset's values so that the C compiler can run on any platform no matter the char layout. However, for code that will be writing/reading data files to/from other machines possibly over a network, you don't want to let C decide what layout the characters will have. That isn't the world we live in today, we're working towards having everything (except slashdot) be Unicode compliant.

  66. Rowhammer is a hardware problem by raymorris · · Score: 1

    Auditing the hardware is important. It's not part of auditing the software. They are two separate processes, both important.

    The eventual goal (dream) is to prove the entire system, we prove as much of it as budget allows. To prove a system, we must identify the components and prove each component. That is, we must prove the hardware, we must prove the microcode, etc.

    Hardware can be vulnerable to Rowhammer.
    Hardware can be proven to be vulnerable to Rowhammer, or not vulnerable. The definition of proving the hardware is that you prove it won't Rowhammer NO MATTER WHAT SOFTWARE IS RUN. Once you know the hardware can't have Rowhammer, you don't have to think about Rowhammer for a particular software, the hardware simply can't Rowhammer, period.

    There is no code that can be vulnerable to Rowhammer when running on hardware that isn't vulnerable to Rowhammer. That seems obvious enough. Rephrasing that obvious fact:
    There is no code that contains a Rowhammer vulnerability.

    Only hardware can be vulnerable to Rowhammer. Therefore we know that if we can prove a particular piece of hardware is not vulnerable, the system is not vulnerable.

    We think about Rowhammer when we prove the hardware, not when we prove the software.

    We know the hardware doing wrong things will cause the system to do wrong things. That's a given. We prove the software without care about any particular hardware because we prove the hardware at a different time, in fact it's a different group of people proving hardware. When proving the software, we know / assume it's running on proven hardware. We don't have to worry about hardware vulnerabilities while we're proving software. It's not that hardware can't have issues. It's that the hardware audit is a separate process.

    1. Re:Rowhammer is a hardware problem by stoborrobots · · Score: 1

      An argument could be made that, given the knowledge of a particular hardware vulnerability, software can eliminate the risk when being run on that hardware by working around that vulnerability (to whatever extent is possible).

  67. Marketing disguised by Anonymous Coward · · Score: 0

    The implication is that all other crypto security is not secure. This is a straight up ploy to try to gain a large user base quickly. The fact that they make such a claim should land them in court cases for fraud when they get proven false, and that will just be a matter of time. In marketing terms, they will find a way to spin it as not their fault, but this is straight up marketing.

  68. Hmm... by Anonymous Coward · · Score: 0

    Yesss! Hmm. Hmm?!

  69. Proven software assumes hardware is sane by manu0601 · · Score: 1

    Proven software makes assumptions on compiler and hardware sanity. This will be exploited through stuff like RowHammer, Spectre, or Meltdown.

  70. Formally verified != bug-free by yellowfroggy · · Score: 1

    It's amazing how many people still wrongly believe that formal verification guarantees that software is bug-free. The proven properties only hold under certain conditions. In a recent study, researchers from the University of Washington analyzed several verified distributed systems and found a total of 16 bugs in them, some of which could cause the systems to crash or corrupt data. The bottom line is that formally verified software does NOT mean bug-free software and you STILL need to test software. Here's a summary of their findings.

  71. Can even prove it by removing constraint by raymorris · · Score: 1

    By defining "correct" or "expected" hardware behavior as allowing Rowhammer to occur, one can even prove that the software (kernel) will do the right thing despite Rowhammer. That would be very interesting.

    Probably more practical would be proving that no code path allows neighboring memory rows to be accessed at a rate faster than X clock cycles, where X is the speed required to Rowhammer.

  72. I have only proved it correct, not tried it by Tough+Love · · Score: 1

    For $2.56, who said it? (Sheesh, young'uns these days.)

    --
    When all you have is a hammer, every problem starts to look like a thumb.
  73. Reinvented the One-Time Pad? by Anonymous Coward · · Score: 0

    The only proven unbreakable cipher is the one-time pad. Anything deterministic (run on a computer) can, with enough time and computing power, be broken. One-time pads depend on having a key made of truly (not pseudo-) random data. So have they really just created a one-time pad system that uses provably correct software? How are they generating their pads? How are they ensuring that they're used only once and completely destroyed after that?

  74. A interesting use of the F* language by ndykman · · Score: 1

    The parts about buffer overruns and other certain common errors were older parts of the system.
    The cool part (and I'll have to read the paper) is how they formalized timing to prove against timing attacks.

    For those curious, this is all based on the Curry-Howard correspondence, which links type checking of programs to proofs. Given this, you can create a language whose type system allows you to prove certain things about the program. You can then use an SMT to prove that a translation from F* to another language is correct.

    There's even formal models of ARM and there's a provable version of L7, a microkernel.

    I honestly think the next big wave is going to be applying formal verification to more practical systems. Bugs and security cost, and these tools are powerful ways to address those issues.

    Granted, given the use of X86-64, there's always hardware issues to be addressed, but even there, formal verification is important.

     

  75. No mention of the real weak spot. by RemoJones · · Score: 1

    Almost always, the weakest part of an encryption system is the key management, including key exchange. Key management and key exchange involve protocols and I doubt that whatever the company uses to prove their code can be used to prove protocols.

  76. memset_s by tepples · · Score: 2

    C++ compiler: object is never read from after being zeroed, thus by the abstract machine specification the last write does not lead to any observable behaviour and can be skipped.

    It isn't skipped if the program uses the memset_s defined in C11 to modulate the compiler's inference that the zeroing "does not lead to any observable behaviour".

    Java JIT: No reads between zeroing and freeing/next writes, skip zero writes. This is an important optimization since by specification all objects are zero initialized, leading to large amounts of overhead if the writes cannot be skipped.

    Even if the char[] holding the secret's UTF-16 encoding is cleared by by Arrays.fill method? Oracle itself uses this in its example for Swing JPasswordField .

    Any modern OS: let me copy that buffer to the swap file.

    A modern OS denies reading swap by nonadministrators within the OS and encrypts swap to protect it from reading outside the OS.

    Any SSD: you want to override this? Lets do some wear levelling and overwrite that other location instead.

    It's as if you think disk encryption is impossible.

    1. Re:memset_s by sjames · · Score: 1

      You seem to have missed the point. Yes, disk encryption is possible, but unless it's use is listed as a precondition to the program's proof of security, the proof is potentially meaningless in the real world where swaps happen and compilers and CPUs may or may not execute the code exactly as written.

      An example of that caveat:

      memset_s is an optional feature of the C11 standard and as such isn't really portable. (AFAIK, there also are no conforming C11 implementations that provide the optional Annex K in which the function is defined.)

      In other words, your compiler may pay lip service to memset_s by not throwing an error and still eliding the code.

  77. cubical cows by hawk · · Score: 1

    Spherical cows are for amateurs.

    Professionals use cubical cows of unit edge length.

    They stack *so* much better . . . :_)

    hawk

  78. Nope by Anonymous Coward · · Score: 0

    Academics and mathematicians love this stuff but they are wrong.

    I don't care what the math says. The history of this business is that there will always be bugs and there will always be security holes. Always. And lots of them! Hasn't anyone been paying attention?!

    Look, I know that certain techniques, languages, and diligence can produce higher quality code. This industry has done it several times and places. However even in those pockets of high quality, are you comfortable saying there were no bugs? No security exploits? The software was perfect?

    This quest reeks of trying to find and use some technical methodology. The trouble is, our methodologies get overruled by politics, money, management, human foibles, and competing priorities. Technical means can only get you so far. The rest is the human condition. We produce our tech with humans, we sell with humans, and humans are our customers.

    The most powerful thing you can do to ensure quality and security is to create a culture and a value proposition that depends on that. Make it so good quality gets managers their bonuses. Make it so that sales depend upon good security. Do that and the rest will follow.

    When you start with the technical means, you are getting the motivations wrong (by implying that motivations don't matter). And thus you started with the wrong thing.

  79. Amending the proof by tepples · · Score: 1

    disk encryption is possible, but unless it's use is listed as a precondition to the program's proof of security, the proof is potentially meaningless in the real world

    Then I hereby propose extending the proof thus to make it more meaningful. A proof can be amended; it need not be discarded outright.

    your compiler may pay lip service to memset_s

    Then replace use of memset_s in the proof with use of each operating system's counterpart to memset_s.

  80. Kerckhoffs's principle by Anonymous Coward · · Score: 0

    It's a huge red flag the the vendor in this ad is directing our attention to a meaningless mathematical proof of perfection in their product. This strongly suggests to me that there is no valid reason to trust their design.

    LoL.

    Kerckhoffs's principle => If the code you are using is unsecure by design the code owner always owns you too, as he wish. If it is open source code, at least you can read it for yourself and immediately follows why not trying to proove it and to programatically check if it is the grail of the open source philosophy itself ?
    https://en.wikipedia.org/wiki/Kerckhoffs%27s_principle

    For ex I use Firefox and I don't trust it because I will never read its code myself. There is a community saying you can use Firefox because it may hold 5 minutes if an hacker targets you and the other browsers are worst. Its okay because I dont specialy trust people I randomly talk to in the street either but I trust there is a shared etiquette in the city that you won't be targeted in the 5 minutes after arrival.

    The article says that the next step is to proove TLS (https) and implement it. I won't really trust the prooven TLS because I cant use EverCrypt. But it is like a public declaration that the CCTV on the streets cannot be tampered by policemen themselves and the videos are write only on a SSD datacenter.

    So we are dumb and we cant read the code nor use EverCryt or Coq or Isabelle but we have the defeasible understanding that a prooven TLS will be trustable.
    https://en.wikipedia.org/wiki/Defeasible_reasoning

    And by the way when I take a plane I assume the theories that Vasco de Gama circled Earth by sail and that Newton's law F= G.m1.m2/r2 holds the plane from being lost in space and the pressure difference on the wings makes the plan fly, without performing ANY experiment before buying the ticket.

    So I trust math, even horribly complicated math I will never check. It a bias for Descartes' math demon but I dont specially have trust in the existence of demons even if my Intel CPU based random generator lurks, waiting me to use a crypto software.
    https://en.wikipedia.org/wiki/Evil_demon

    Of course we are dumb anonymous cowards but researcher always experiment their proofs :
    https://www.quantamagazine.org/formal-verification-creates-hacker-proof-code-20160920/