Messages in this thread | | | Date | Tue, 24 Jan 2012 00:03:47 +0400 | From | Cyrill Gorcunov <> | Subject | Re: [patch 2/4] [RFC] syscalls, x86: Add __NR_kcmp syscall v4 |
| |
On Mon, Jan 23, 2012 at 10:48:57AM -0800, H. Peter Anvin wrote: > On 01/23/2012 06:20 AM, Cyrill Gorcunov wrote: > > + > > +static unsigned long cookies[KCMP_TYPES][2] __read_mostly; > > + > > +static long kptr_obfuscate(long v, int type) > > +{ > > + return (v + cookies[type][0]) ^ cookies[type][1]; > > +} > > + > > Arf... when I said to use xor I meant instead of the add, not instead of > the multiply, so: > > return (v ^ cookies[type][0]) * cookies[type][1]; > > Otherwise you have absolutely no source of diffusion at all (symmetric > cryptography is about combinations of diffusion -- spreading the content > -- and confusion -- scrambling individual bits of content.) > > + for (i = 0; i < KCMP_TYPES; i++) { > + for (j = 0; j < 2; j++) { > + get_random_bytes(&cookies[i][j], > + sizeof(cookies[i][j])); > + cookies[i][j] |= (~(~0UL >> 1) | 1); > + } > + } > > Only cookies[1] -- being used as a multiplicative constant -- needs the OR.
OK. Thanks. I'll update.
Cyrill
| |