Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re^3: Truly randomized keys() in perl 5.17 - a challenge for testing?

by BrowserUk (Pope)
on Oct 01, 2013 at 16:25 UTC ( #1056505=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Truly randomized keys() in perl 5.17 - a challenge for testing?
in thread Truly randomized keys() in perl 5.17 - a challenge for testing?

In demerphq's own words:

bulk88> I disagree there is a measurable cost to the current implementation of

bulk88> REHASH. If the rehash code is so rare, maybe it should be removed from

bulk88> hv_common and placed in its own func, but looking at the asm, the

bulk88> overhead is so tiny I dont think the rehash code even matters compared

bulk88> to the rest of the design of hv_common. I don't see any performance

bulk88> gains by removing it.

demerphq Yes, I am unable to show any actual performance gains either.

So, not for performance (gain) reasoning.

Also in his own words:

demerphq So I think that the current rehash mechanism is about as secure as the random hash seed proposal.

And:

demerphqPersonally I dont think its worth the effort of doing much more than thinking about this until someone demonstrates at least a laboratory grade attack. IMO in a real world environment with multi-host web sites, web servers being restarted, load balancers, and etc, that simple hash randomization is sufficient. Seems like any attack would require large numbers of fetch/response cycles and in general would just not be effective in a real production environment. I would assume that the administrators would notice the weird request pattern before an attacker could discover enough information to cause damage. Same argument for non-web services IMO.

And it doesn't make anything more secure.

And Dave_the_m said:

Indeed, based on the thread starting at

Message-ID: <2003101002...@perlsupport.com>

it looks like the primary motivation for moving to rehash was to restore the binary compatibility within the 5.8.x branch inadvertently broken by 5.8.1.

I'm not particularly keen on having hashes always randomised - it makes debugging harder, and reproducing a reported issue nigh-on impossible; but if Yves can show a measurable performance gain without the rehash checks, then I'll approve, as long as the hash seed can still be initialised with the env var PERL_HASH_SEED=0 - otherwise debugging becomes impossible.

Which mirrors the OPs objections.

So, significant consequences

So, why? What did Perl gain?


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.


Comment on Re^3: Truly randomized keys() in perl 5.17 - a challenge for testing?
Re^4: Truly randomized keys() in perl 5.17 - a challenge for testing?
by ikegami (Pope) on Oct 05, 2013 at 01:02 UTC
    Why do you tell me this? I know all of that. Do you somehow think it contradicts what I said? Please reread the post to which you replied. It mentions neither performance nor making things more secure. It only mentions code simplification and maintaining the level of security.
      Do you somehow think it contradicts what I said?

      You're not very good at this are you.

      1. "Code simplification."

        What is the justification for "simplifying" code that has worked perfectly well for a dozen or more releases?

        • Does is improve performance? No.
        • Does make things more secure? No.
        • Does it radically reduce compilation time? No.
        • Does it reduce the number of tests that are needed? No.
        • Does the simplification remove a dependency upon some external library or tool or exotic skillset? No.
      2. "maintaining the level of security"

        You mean, as far as its been considered, it probably didn't make things any worse.

      3. You omitted to mention: "broke a bunch of other people code for no good reason"

        A huge, resounding, emphatic: YES!

      Contradict? No.

      Show up for the pointless, meaningless, politically motivated, incomplete and non-useful diatribe it is. Abso-frickin-lutely.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

        What is the justification for "simplifying" code that has worked perfectly well for a dozen or more releases?

        Maintainability and testability. Why else would you simplify code?

        You omitted to mention: "broke a bunch of other people code for no good reason"

        It didn't break any code. It made existing bugs occur more often. That's actually a good thing!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1056505]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (5)
As of 2014-11-26 04:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (162 votes), past polls