# How to determine number of tests performed by CPU per second?

My context is that for exam on encryption methods I need to calculate estimated time taken for brute force attack to succeed. Therefore I need make an assumption about the system used to crack the algorithm.

As an example in lecture I have:

• Assume one millions of tests per second (fast)
• And then DES has 2^56 number of keys

I would like to contrast modern pc and complex systems(many processors - like 90 billions of tests/keys per second)

How is it possible to roughly convert say 4 cores 3.5 GHz processor into number of operations per second?

And one millions of tests per second is equivalent to 800 Mhz / 3k mhz ?

Sorry if sounds dumb, but better to appear stupid rather than wrong.

I suspect that you are misinterpreting your lecturers question.

When the Q writes “the Assume one millions [sic] of tests per second”, that means “assume it can do test one million keys per second”. The actual physical implementation is not important.

Which makes the answer rather trivial:
256 number of keys / 1.000.000 keys per second

72057594037 second needed for the whole keyspace.
(which is equal to 833999 days or 2283 years).

Which, is for the whole keyspace. On average you will only need to check half of it which makes the answer 1141 years.

For bonus points:

1. That is assuming PC speeds to not increase during those 1141 years.
2. That is with a single system working on the problem. (See dnetc and similar to see how you can work around that problem)
3. And it assumes the same architecture. Standard dumb PCs, good at general purpose tasks, doing nothing but a very specialised set of operations for a a thousand years.
This is clearly not the way to go for these task.
Nice to watch: Large CCC recording

I would like to contrast modern PC and complex systems(many processors - like 90 billions of tests/keys per second)

The easiest way to get the practical (very much NOT the theoretical) speed of doing this on a modern PC is to just run across part of a key space. Measure how many keys are actually checked in and hour. (Or any period long enough to average things out).

This is not a very scientific solution, but it will give you very good practical answers.

How is it possible to roughly convert say 4 cores 3.5 GHz processor into number of operations per second?

It is not. Different operations take a different number of cycles. A simple addition might take only one clock cycle. A multiplication might take 80. So you would need to know what you are going to use in advance. And to make things even more complication you will need to adjust for pipe-lining, you will need to assume no thermal throttling. You will need to compensate for the initial turbo-boost which will make the first few seconds of the calculations faster. You will need to compensate for the environment temperature, for the quality of the cooling, ...

And one million of tests per second is equivalent to 800 MHz / 3k MHz ?

Neither since MHz does not tell you how fast the CPU is.

The closest non-technical analogy I have is comparing it to en engine RPM or how fast your legs rotate when cycling. Without specifying in which gear you are or if you use a 10CC engine or a huge 10 liter engine.

• very interesting to read too :-) Aug 17 '13 at 16:46