Main » 2011 » Март » 16 » The concept of Internetservice distributed password guessing
12:08
The concept of Internetservice distributed password guessing
Everyone knows that in spite of the current development of computing power and technology of their use, the problem of complete enumeration of possible values ??for a known password hash is often very resource-intensive (particularly with respect to time). The complexity of the problem consists of the dictionary size and complexity of the hash algorithm. The size of the dictionary in turn depends on the number of words in the alphabet and the maximum and minimum password length. Course combinatorics tells us that for an alphabet of length C characters and a maximum length of the word N size of the dictionary will be equal to C ^ N. At the same the task of the exhaustive search is well parallelized, and the idea of ??distributed hash bruteforce is not new and even has a public implementation. However, I still did not meet the public service, and a wide selection of hash algorithms, and built on the idea of ??crowdsourcing. Next, I outlined the concept of such a service.

Architecture


The architecture is very simple and consists of three main components:
  • task - a task comparing hashes of all the words given dictionary (defined by an alphabet and a maximum length of the word) with the standard;
  • agent - a program on the client computer, allowing you to create and execute tasks;
  • server - part of the system, the distribution of tasks between the agents and do not hold direct calculations.

Requirements for the agent


The agent should be as portable as possible and at the same time, effectively utilize the hardware resources of the client. The optimal solution I see a program designed to nekompiliruemom language, such as Python, are used to calculate hashes OpenCL. True, choosing portability have to pay a performance as OpenCL behind specialized frameworks. One of comparing the performance of a specific task in different frameworks here.

Server Requirements


server role is relatively simple and limited to the distribution of tasks, monitor progress, and making the preservation of found pairs of hash password. Therefore there are no special requirements. The server can be easily implemented for example on Google App Engine.

Algorithm


algorithm for solving a specific problem iterate the following:
  1. When launching any agent connects to the server, reporting their willingness to perform tasks.
  2. When creating a new task, client server system distributes it evenly among all connected agents, but agent-initiator, after having carried out a search of the accumulated steam hash password.
  3. Agents begin to work on tasks raportuya periodically on progress.
  4. In case of disconnection of an agent from the system (other than an agent-initiator) by the redistribution of tasks.
  5. Task is done in finding solutions to any of the agents - a password hash from which coincides with the reference.
  6. All found a pair of hash the password stored in a database accessible to all, including non-registered participants.

Motivation and monetization


Obviously, for the efficient operation of the service, participants must be motivated to address not only their tasks. The first thing that occurred to me at the moment - it's "points" that require the customer to solve their own problems by employing a distributed network, and that it receives for participating in the tasks initiated by other clients. The ensuing monetization - "points" you can buy.

Implementation


My competence is sufficient for the implementation of the core server and agent framework (without OpenCL functions). However, I have no skills of web design, layout, JavaScript and OpenCL. All competent and concerned friends are kindly invited to joint implementation!
Views: 364 | Added by: w1zard | Rating: 0.0/0
Total comments: 0
Имя *:
Email *:
Код *: