Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Reverse Engineering
#1

[attachment=7282]
[attachment=366]

Presented by:Rajesh M K
Reverse Engineering


Abstract
Cryptographic protocol is a precisely defined sequence of communication and computa tion steps that use cryptographic mechanisms such as message encryption and decryption. But even when strong encryption algorithms are used, information is not safe and flaws have been found in protocols considered to be secure. So it becomes necessary to verify the protocol. A number of methods and tools exist for verifying the protocols, which includes the using automata theory, spi caculus, logic programming etc. Two methods, using concept of strand spaces and using proof theory, for verifying the protocols by logic programing is studied.

Introduction
1.1 What is an Reverse Engineering Network
1.2 Verification using logic programing

it helps to determine the minimum number of messages to achieve a certain set of beliefs;
useless or erroneous message exchanges can be spotted easily;
subtle differences between similar protocols come to the surface.
Despite their many merits, they also have their limitations:
most logics are based on assumptions that are not written explicitly; for instance, many assume that the concatenation of expressions is commutative and that the sender can recognize its own messages; moreover, they assume that the integrity of encrypted (or signed) messages is always preserved (i.e. they withstand message-splicing attacks),
many require an 'idealization' process, or at least the addition of extra annotations; this 'process', which need to be done prior to the analysis, is not fully automated, and therefore error-prone; often, the analyser uses a cumbersome syntax, which makes it harder to non experts to understand the 'subtleties' of the protocol.
In this project the chosen logic constrained first order logic ,or can be easily sepcified as prolog. The two methods studied for first order verification are
Using concept of strand spaces .The strand space approach is based on the Dolev-Yao intruder model. It is a graph-based method that is used to to prove properties of arbitrary combinations of protocols running at the same time.
Proof theortic approach.This is a knowledge - state ,based method. Described later
Since the concept of strand spaces were found conceivably difficult and too much formal the proof theoretic method is adopted.
2 Security Requirements
2.1 The core of the method
2.1.1 Assumptions
In routing the primary security service is authorization. There is two types of autorization,
1. Import authorization :- when a routing update is received from the outside, the router needs to decide whether to modify its local routing information base accordingly. It means that the ultimate authority about routing messages regarding a certain destination node is that node itself. Therefore, we will only authorize route information in our routing table if that route information concerns the node that is sending the information. In this way, if a malicious node lies about it, the only thing it will cause is that others will not be able to route packets to the malicious node. 2. Export authorization :- Router carry out export authorization whenever it receives a request for routing information.
Import authorization is the critical service. In traditional routing systems, authorization is a matter of policy. For example, gated, a commonly used routing program, allows the administrator of a router to set policies about whether and how much to trust routing updates from other routers. In mobile ad hoc networks, such static policies are not sufficient.
Authorization may require other security services such as authentication and integrity. Tech niques like digital signatures and message authentication codes are used to provide these ser vices. 3. Source authentication:- We need to be able to verify that the node is the one it claims to be. 4 Integrity:- we need to be able to verify that the routing information that it is being sent to us has arrived unaltered. The two last security services combined build data authentication, and they are requirements derived from import authorization requirement.

2.1.2 Strategy
2.2 Outline of the method
Specify formally a cryptographic protocol by writing simple prolog rules defining it.
Define the goals of a protocol and verify if they are reachable. Similarly it can be checked that unwanted situations are not reachable.
Define the goals of an intruder, and therefore check the protocol for flaws, by verifying whether they are reachable.
3 Constructing the verifier
The construction of a verifier program for Needham Schroeder Public Key (NSPK) protocol is described.

3.1 Protocol description

A^t B B -)> A A^f B

{A,NA}KB
{Na,Nb}Ka {Nb}Kb


Goal of the protocol is the confidential exchange of two nonces, Na and Nb, which are re spectively created by Alice (A) and Bob (B) and encrypted using keys Ka and Kb.

3.2 Primitive facts and rules involved in the program
3.2.1 Messages
Messages contain keys and nonces, which are both integers. Time stamps can also be viewed as nonces. Message contain a list of objects.

Keys : K := Integer
Nonce : N := Integer
Objects : O := K\N%Key or Nonce
MessageContent : M := [] [OjM] enc(K, M) %K is either public or private key
Message : msg(M)

Facts for creation of nonces and keys

create_key(Z) :- random(Z). create_nonce(Z) :- random(Z).

3.2.2 Principals
Principal has a unique id, and the protocol step it is at (in the bove case either 1, 2 or 3.
Step: S:= Integer
Agent id: Id:=String % like alice, bob, trudy etc.
Agent state: agent(Id,S) %who is at what step

3.2.3 Knowledge
knowledge is stored by facts or objects like key(kl), nonce(n), or my_nonce(N) where kl,n etc are objects. Knowledge is stored in the knowledge base in facts of the form knows(Id,S,D) containing id of the agent that posses it, and the step S at which the knowledge was acquired.
3.2.4 States
a state is a list containing agent states and/or messages .

3.3 Specifying the protocol
The protocol's translation is fully specified by two prolog clauses : expect and compose. The first is for specifying the behavior of the receiving principal and the second is specifies the behavior of the sending principal. The methods are specified below.

3.3.1 Method expect /4
expect(Id, Step, Message, Knowledge) % first three are the given input arguments ,while the last one is the output .The method succeeds when principal Id at step Step can receive message Message and Knowledge is the facts agents learns during the transaction.

3.3.2 Method compose /5
compose(Id, Step, Nonce, Message, Knowledge) %first three are the input arguments and last two are the output. Variable Nonce is added because sometimes we require a Nonce to be passed to the rule for composing message. The method succeeds when agent ID at step Step can produce message Message, possibly using the nonce Nonce, and Knowledge is the list of facts the principal learns during the transaction.

3.4 Specification of Needham Schroeder protocol
3.4.1 First Transaction
A B : {A, Na}Kb

Bob's Role

expect (bob, 1,M,Info) :-
M = msg ([enc(key (Pkb),[key (Pka),nonce(Na)])]),
knows(bob,keypar(_,Pkb)),
knows(bob,key (Pka)),
Info = [other _nonce(Na),other _key (Pka)].

Alice's Role

compose(alice,l,Nonce,M,Info) :-
knows(alice,keypar(_,Pka)),
knows(alice,key(Pkb)),
M = msg([enc(key(Pkb),[key(Pka), nonce(Nonce)])]), Info = [my_nonce(Nonce), other_key(Pkb)].
3.4.2 Second Transaction B A : {NIL Nb}Ka

Alice's Role expect(alice,2,M,Info) :-
M = msg([enc(key(Pka),[nonce(Na),nonce(Nb)])]), knows(alice,keypar(_,Pka)), knows(alice,my_nonce(Na)), Info = [other_nonce(Nb)].

Bob's Role

compose(bob,2,Nb,M,Info) :-
knows(bob,other _nonce(Na)), knows(bob,other _key(Pka)), Info = [my_nonce(Nb)],
M = msg([enc(key(Pka),[nonce(Na),nonce(Nb)])]).

3.4.3 Third Transaction
A B : {Nb}Kb

Bob's Role

expect(bob,3,M,Info) :-
M = msg([enc(key(Pkb),[nonce(Nb)])]), knows(bob,keypar(_,Pkb)), knows(bob,my_nonce(Nb)), Info = [].

Alice's Role

compose(alice,3,_,M,Info) :-
knows(alice,other_nonce(Nb)), knows(alice,other_key(Pkb)), Info = [],
M = msg([enc(key(Pkb),[nonce(Nb)])]).

3.4.4 Specifying the Initial Knowledge and State
It is also required to specify the initial knowledge of the agents, and the initial state. This is done by adding to the specification the definition for initial_state(State) and initial_knowledge(List of facts).
Rules for specifying initial state and knowledge

initial_state ([agent (alice, 1), agent (bob, 1) ]).
initiaLtheory([knows(alice,0,keypar(SKA,PKA),knows(bob,0,key(PKA)),knows(bob,0,keypar(SKB,PKB),
knows(alice,0,key(PKB))]):- create_keys([PKA,SKA,PKB,SKB]).

3.4.5 Specifying the Final Knowledge and States
Specifying the final state of the protocol is straightforward. This is done by checking that both alice and bob are in state 4.
Rule for checking final state
fmal_state(S):-substate([agent(alice,4),agent(bob,4)],S). Fact for checking final knowledge
Suppose that we want to prove that alice and bob eventually exchange nonces, then we do this by adding the rule:
final-knowledge :- knows(bob,_, other_nonce(NA)), knows(bob,_, my_nonce(NB)), knows(alice,_, other_nonce(NA)), knows(alice,_, my_nonce(NB)).
Reply

#2
INTRODUCTION!!
Engineering is the profession involved in designing, manufacturing, constructing, and maintaining of products, systems, and structures. At a higher level, there are two types of engineering: forward engineering and reverse engineering.
Forward engineering is the traditional process of moving from high-level abstractions and logical designs to the physical implementation of a system. It is the quotidian engineering of a product from a design
Reverse engineering is the process of starting with a finished product and working backwards to analyze how the product operates or how it was made.
Reverse engineering can be viewed as the process of analyzing a system to:
1. Identify the system's components and their interrelationships
2. Create representations of the system in another form or a higher level of abstraction
3. Create the physical representation of that system

Reverse engineering:

It is the process of analyzing a system's code, documentation, and behavior to identify its current components and their dependencies to extract and create system abstractions and design information. The subject system is not altered; however, additional knowledge about the system is produced.

Reverse engineering is the scientific method of taking something apart in order to figure out how it works. Reverse engineering has been used by innovators to determine a product's structure in order to develop competing or interoperable products. Reverse engineering is also an invaluable teaching tool used by researchers, academics and students in many disciplines, who reverse engineer technology to discover, and learn from, its structure and design.

The U.S. Supreme Court says "reverse engineering is a fair and honest means of starting with the known product and working backwards to derive the process which aided in its development or manufacture.

Reverse engineering is the general process of analyzing a technology specifically to ascertain how it was designed or how it operates. This kind of inquiry engages individuals in a constructive learning process about the operation of systems and products. Reverse engineering as a method is not confined to any particular purpose, but is often an important part of the scientific method and technological development. The process of taking something apart and revealing the way in which it works is often an effective way to learn how to build a technology or make improvements to it.
Through reverse engineering, a researcher gathers the technical data necessary for the documentation of the operation of a technology or component of a system. In "black box" reverse engineering, systems are observed without examining internal structure, while in "white box" reverse engineering the inner workings of the system are inspected.
When reverse engineering software, researchers are able to examine the strength of systems and identify their weaknesses in terms of performance, security, and interoperability. The reverse engineering process allows researchers to understand both how a program works and also what aspects of the program contribute to its not working. Independent manufacturers can participate in a competitive market that rewards the improvements made on dominant products. For example, security audits, which allow users of software to better protect their systems and networks by revealing security flaws, require reverse engineering. The creation of better designs and the interoperability of existing products often begin with reverse engineering.

Reverse engineering is very common in such diverse fields as software engineering, entertainment, automotive, consumer products, microchips, chemicals, electronics, and mechanical designs. For example, when a new machine comes to market, competing manufacturers may buy one machine and disassemble it to learn how it was built and how it works. A chemical company may use reverse engineering to defeat a patent on a competitor's manufacturing process. In civil engineering, bridge and building designs are copied from past successes so there will be less chance of catastrophic failure. In software engineering, good source code is often a variation of other good source code.

Another reason for reverse engineering is to compress product development times. In the intensely competitive global market, manufacturers are constantly seeking new ways to shorten lead-times to market a new product
Following are reasons for reverse engineering a part or product:

1. The original manufacturer of a product no longer produces a product
2. There is inadequate documentation of the original design
3. The original manufacturer no longer exists, but a customer needs the product
4. The original design documentation has been lost or never existed
5. Some bad features of a product need to be designed out. For example, excessive wear might indicate where a product should be improved
6. To strengthen the good features of a product based on long-term usage of the product
7. To analyze the good and bad features of competitors' product
8. To explore new avenues to improve product performance and features
9. To gain competitive benchmarking methods to understand competitor's products and develop better products
10. The original supplier is unable or unwilling to provide additional parts
11. The original equipment manufacturers are either unwilling or unable to supply replacement parts, or demand inflated costs for sole-source parts
12. To update obsolete materials or antiquated manufacturing processes with more current, less-expensive technologies
People have many reasons why they might wish to reverse engineer software, but two important ones are

1) To make software that can interoperate with the software being studied and
2) To make a product that will compete with it. Why might the knowledge not be visible?

Dan Shearer, Samba Team and open source virtualization specialist, provides some possible reasons:

The original programmer is dead, or the company has died, or otherwise events have buried the explanation for how a technology works from the engineer and perhaps everyone else;

Commercial protection. A company feels its commercial goals would be compromised if the knowledge was published, so it keeps the knowledge secret (and often tries to obscure the knowledge so it is difficult for anyone to find it.)

Encumbrance on the knowledge. The knowledge might be published, but under such terms as anyone who agrees to the conditions under which the publication is made is limited in what he can do with it. A basic encumbrance is sometimes cost for access to the documentation.
ITS USES

Common misperception regarding reverse engineering is that it is used for the sake of stealing or copying someone else's work. Reverse engineering is not only used to figure out how something works, but also the ways in which it does not work.
Some examples of the different uses of reverse engineering include:

Understanding how a product works more comprehensively than by merely observing it
Investigating and correcting errors and limitations in existing programs
Studying the design principles of a product as part of an education in engineering
Making products and systems compatible so they can work together or share data
Evaluating one's own product to understand its limitations
Determining whether someone else has literally copied elements of one's own technology
Creating documentation for the operation of a product whose manufacturer is unresponsive to customer service requests
Transforming obsolete products into useful ones by adapting them to new systems and platforms
Reply

#3

[attachment=5121]

Introduction

Reverse engineering is a process where an engineered artifact (such as a car, a jet engine, or a software program) is deconstructed in a way that reveals its innermost details, such as its design and architecture. This is similar to scientific research that studies natural phenomena, with the difference that no one commonly refers to scientific research as reverse engineering, simply because no one knows for sure whether or not nature was ever engineered.

In the software world reverse engineering boils down to taking an existing program for which source-code or proper documentation is not available and attempting to recover details regarding its design and implementation. Binary reverse engineering techniques aim at extracting valuable information from programs for which source code in unavailable. In some cases it is possible to recover the actual source-code (or a similar high-level representation) from the program binaries, which greatly simplifies the task because reading code presented in a high-level language is far easier than reading low-level assembly language code. In other cases we end up with a fairly cryptic assembly language listing that describes the program. This book explains this process and why things work this way, while describing in detail how to decipher the program s code in a variety of different environments.


Power point presentation by:
Karthik S
[attachment=5123]

Reply

#4
to get information about the topic reverse engineering full report,ppt and related topic refer the page link bellow

http://seminarsprojects.net/Thread-rever...ing--13912

http://seminarsprojects.net/Thread-rever...ull-report

http://seminarsprojects.net/Thread-rever...al-devices

http://seminarsprojects.net/Thread-rever...-nanoscale

http://seminarsprojects.net/Thread-rever...-a-roadmap
Reply

#5
hi friend you can refer these pages to get the details on Reverse engineering

http://seminarsprojects.net/Thread-rever...ull-report

http://seminarsprojects.net/Thread-rever...ring--5297

http://seminarsprojects.net/Thread-reverse-engineering

http://seminarsprojects.net/Thread-rever...-a-roadmap
Reply

#6
Hi friend you can see the details of the project on Reverse engineering in these pages
http://seminarsprojects.net/Thread-rever...ull-report
http://seminarsprojects.net/Thread-rever...ring--5297
http://seminarsprojects.net/Thread-reverse-engineering
http://seminarsprojects.net/Thread-rever...-a-roadmap
Reply

#7
hi friend you can refer these pages to get the details on Reverse engineering

http://seminarsprojects.net/Thread-rever...ull-report

http://seminarsprojects.net/Thread-rever...ring--5297

http://seminarsprojects.net/Thread-reverse-engineering

http://seminarsprojects.net/Thread-rever...-a-roadmap
Reply

#8
I am kannan .i am studing mechanical engi.i have a seminar presentation on next week.i selected few topics from this site. I want a detail report on this topics
Reply

#9
Hi frnd, i am doing my Engg in Mechanical stream, Can i get a ppt on reverse enginnering Topic related to mechanical field?
Reply

#10
HI,
this thread has the answers for you:
http://seminarsprojects.net/Thread-rever...2#pid10862
Reply



Forum Jump:


Users browsing this thread:
1 Guest(s)

Powered By MyBB, © 2002-2024 iAndrew & Melroy van den Berg.