Computational complexity


 
Thread Tools Search this Thread
Special Forums Cybersecurity Computational complexity
# 1  
Old 12-04-2009
Computational complexity

This is a general question about the practical use of computational complexity in security. Wikipedia has a good article about the theoretical background of computational complexity. In the course of conversation with colleagues, a topic that is brought up occassionally is the security of any algorithm in relation to the security of any other algorithm, and I would like to make sure I have an accurate understanding of computational complexity for these situations.

Suppose I have an encryption algorithm like AES that can use a 256-bit key. My understanding is that the computational complexity would then be 2^256 for a brute force attack to recover the key. A "crack" of the algorithm would be anything that can reduce this complexity to less than 2^256. It would seem to make sense that this means a program would have to guess a maximum of 2^256 passwords before it has guessed every possible key, and therefore should have gained access at some point along the way. Is this the correct way to think about computational complexity in this context?

To explain my line of thinking in an example: While reading about the 256-bit AES "crack" published a few months back, one of the things I remember was that while the computational complexity of guessing 256-bit AES keys could be reduced to 2^119, this additionally required a size complexity of 2^119. (To my understanding, the size complexity of brute force attacks on any algorithm can be as low as 1 -- one key is guessed, rejected, and iterated at a time, so only storage space for one key is necessary since that space is re-used for each key.) My understanding of a "size complexity of 2^119" is that 2^119 keys need to be stored at one time in order for the attack to work. Given this, if I assume a key length of 256 bits and I need to store 2^119 keys simultaneously, I should be able to calculate the total storage size required to make an attempt at this particular attack:

In bits: 256 bits * 2^119 = 1.7 * 10^38 bits (rounded)

Converted to terabytes: 1.9 * 10^25 terabytes (rounded)

My question is this: When someone says "computational complexity" and "size complexity" in relation to the strength of an algorithm, am I thinking about the meaning correctly from a practical perspective?

Thanks for the help.
# 2  
Old 12-04-2009
I would read this by Bruce Schnier:
Schneier on Security: New Attack on AES

His real point:
large computational complexities - even though reduced by cracks, still mean that cracking a given given algorithm is way, way beyond practical.

People who don't get what encryption is really used for are going to assume
that greater complexity == better protection. Security trancends computational complexity - people and procedures are the weakest points, not decent algorithms. (From one of Schnier's books).

So "strength" beyond a reasonable limit is pointless. I know this is not what you asked, but implied.
# 3  
Old 12-04-2009
jim,

Thanks for the reply. The point you and Schneier make is an excellent one; the human is certainly the weakest link of the equation, and the recently published 256-bit AES "crack" referred to in the article has no reason to dissuade people from the use of AES. (Another interesting reference to the security vulnerability posed by the human factor is one of Kevin Mitnick's books on social engineering, The Art of Deception.)

The point you make is that the computational complexity requirements of cracking such encryption is beyond feasability -- and that a high level of "infeasibility" is what is important where the algorithm is concerned. To someone asking about a practical measure of "safety" given by an algorithm, like I did in my original post, this is a good answer -- it is plenty safe!

My real interest is to understand the degree to which such a task is infeasible. From my example, if the 256-bit AES crack required 1.9 * 10^25 terabytes (rounded) of storage in some combination of RAM and/or disk space, plus the amount of computation required to perform the attack, that would certainly be well beyond the realm of feasibility. If I am to say that something is infeasible, I have to learn the "why" behind it -- otherwise, I have no personal understanding of it; I would be reciting "something I heard on the Internet". Not very convincing in conversation, even if there has never been a truer statement! Having a quantifiable amount like the above so I can say something like, "You would need 1.9 * 10^25 Terabytes of storage to implement the attack" is how one knows that something is infeasible. For educational purposes, I am trying to find the ground where the theory meets reality.

So, for example, am I arriving at the figure "1.9 * 10^25 terabytes" correctly, from this explanation in my first post? I know I did the math correctly, but am I missing any fundamental ideas, or would this be a correct derivation?

Quote:
... if I assume a key length of 256 bits and I need to store 2^119 keys simultaneously, I should be able to calculate the total storage size required to make an attempt at this particular attack:

In bits: 256 bits * 2^119 = 1.7 * 10^38 bits (rounded)

Converted to terabytes: 1.9 * 10^25 terabytes (rounded)
Similarly, is my statement of 2^256 password guesses to completely guess all possible keys (using a key length of 256 bits) where the idea of a computational complexity of 2^256 comes from? For instance, this would let me figure out how many processing cycles a single guess attempt might take using a specific piece of software on a given platform, then crunch out some numbers to arrive at a measure of time (however obscene and unimaginable it might be).

Thanks again for your help.
Login or Register to Ask a Question

Previous Thread | Next Thread

6 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Shell script for %computational memory & % non computational memory

Dear, How to calculate %computational memory and %non computational memory from AIX server. What command used to find out %computational memory and % non computational memory except topas. Regards Nowshath (1 Reply)
Discussion started by: Nowshath
1 Replies

2. Shell Programming and Scripting

Capturing computational/non computational memory from topas

Hi Friends, How to capture the value of %Comp and %Noncomp values from AIX using topas command. I tried lot, but i cannot capture the value. (4 Replies)
Discussion started by: Nowshath
4 Replies

3. UNIX for Advanced & Expert Users

Passphrase Complexity

Hi, How to configure minimum passphrase (Not UNIX password) requirements on any UNIX box? Passphrase - the one user enteres while generating pub/pvt keys using ssh-keygen. Thanks! Reddy (3 Replies)
Discussion started by: reddyr
3 Replies

4. AIX

topas - computational memory 95% : Any Impact?

Hello Gurus, I am using AIX 5 and on running topas command. I can see the computational memory is 93.3% with Swap Paging memory at 2.2%. Could you please advise if there is any impact by the growth of computational memory? Below is the stat: MEMORY Real,MB 22528 % Comp 93.3 %... (12 Replies)
Discussion started by: panchpan
12 Replies

5. Emergency UNIX and Linux Support

Appending the contents of two files in computational manner

Hi, I have two files say file 1 file 2 File1 1 2 4 5 File 2 asdf adf How to get the ouput something like asdf1 adf1 asdf2 adf2 asdf4 adf4 asdf5 (5 Replies)
Discussion started by: ecearund
5 Replies

6. UNIX for Advanced & Expert Users

Need Help installing a Computational Tool Kit

Hi ! I have been trying to install IMSL Computational Tool Kit on a server. It is a Lunix Redhat V.4 with Intel pentium d processor and Intel fortran compiler 8.1 and the type of command shell we run is bash. I dont know if the problem is with the Installation or the Lunix system. I have... (1 Reply)
Discussion started by: dsmv
1 Replies
Login or Register to Ask a Question