Man-in-the-middle attack学习

From Wikipedia, the free encyclopediaNot to be confused with Meet-in-the-middle attack.

In cryptography and computer security, a man-in-the-middle attack (MITM) is an attack where the attacker secretly relays and possibly alters the communication between two parties who believe they are directly communicating with each other. One example of man-in-the-middle attacks is active eavesdropping, in which the attacker makes independent connections with the victims and relays messages between them to make them believe they are talking directly to each other over a private connection, when in fact the entire conversation is controlled by the attacker. The attacker must be able to intercept all relevant messages passing between the two victims and inject new ones. This is straightforward in many circumstances; for example, an attacker within reception range of an unencrypted wireless access point (Wi-Fi) could insert himself as a man-in-the-middle.[1]

As an attack that aims at circumventing mutual authentication, or lack thereof, a man-in-the-middle attack can succeed only when the attacker can impersonate each endpoint to their satisfaction as expected from the legitimate ends. Most cryptographic protocols include some form of endpoint authentication specifically to prevent MITM attacks. For example, TLS can authenticate one or both parties using a mutually trusted certificate authority.[2]




An illustration of the man-in-the-middle attack

Suppose Alice wishes to communicate with Bob. Meanwhile, Mallory wishes to intercept the conversation to eavesdrop and optionally to deliver a false message to Bob.

First, Alice asks Bob for his public key. If Bob sends his public key to Alice, but Mallory is able to intercept it, a man-in-the-middle attack can begin. Mallory sends a forged message to Alice that purports to come from Bob, but instead includes Mallory's public key.

Alice, believing this public key to be Bob's, encrypts her message with Mallory's key and sends the enciphered message back to Bob. Mallory again intercepts, deciphers the message using her private key, possibly alters it if she wants, and re-enciphers it using the public key Bob originally sent to Alice. When Bob receives the newly enciphered message, he believes it came from Alice.

  1. Alice sends a message to Bob, which is intercepted by Mallory:

    • Alice "Hi Bob, it's Alice. Give me your key." →     Mallory     Bob

  2. Mallory relays this message to Bob; Bob cannot tell it is not really from Alice:

    • Alice     Mallory "Hi Bob, it's Alice. Give me your key." →     Bob

  3. Bob responds with his encryption key:

    • Alice     Mallory     ← [Bob's key] Bob

  4. Mallory replaces Bob's key with her own, and relays this to Alice, claiming that it is Bob's key:

    • Alice     ← [Mallory's key] Mallory     Bob

  5. Alice encrypts a message with what she believes to be Bob's key, thinking that only Bob can read it:

    • Alice "Meet me at the bus stop!" [encrypted with Mallory's key] →     Mallory     Bob

  6. However, because it was actually encrypted with Mallory's key, Mallory can decrypt it, read it, modify it (if desired), re-encrypt with Bob's key, and forward it to Bob:

    • Alice     Mallory "Meet me at the van down by the river!" [encrypted with Bob's key] →     Bob

  7. Bob thinks that this message is a secure communication from Alice.

  8. Bob goes to the van down by the river and gets robbed by Mallory.

  9. Alice does not know that Bob was robbed by Mallory thinking Bob is late.

  10. Not seeing Bob for a while, she determines something happened to Bob.

This example[3][4][5] shows the need for Alice and Bob to have some way to ensure that they are truly each using each other's public keys, rather than the public key of an attacker. Otherwise, such attacks are generally possible, in principle, against any message sent using public-key technology. A variety of techniques can help defend against MITM attacks.

Defense and detection[edit]

MITM attacks can be prevented or detected by two means: authentication and tamper detection. Authentication provides some degree of certainty that a given message has come from a legitimate source. Tamper detection merely shows evidence that a message may have been altered.


All cryptographic systems that are secure against MITM attacks provide some method of authentication for messages. Most require an exchange of information (such as public keys) in addition to the message over a secure channel. Such protocols often use key-agreement protocols have been developed, with different security requirements for the secure channel, though some have attempted to remove the requirement for any secure channel at all.[6]

public key infrastructure, such as Transport Layer Security, may harden Transmission Control Protocol against Man-in-the-middle-attacks. In such structures, clients and servers exchange certificates which are issued and verified by a trusted third party called a certificate authority (CA). If the original key to authenticate this CA has not been itself the subject of a MITM attack, then the certificates issued by the CA may be used to authenticate the messages sent by the owner of that certificate. Use of mutual authentication, in which both the server and the client validate the other's communication, covers both ends of a MITM attack, though the default behavior of most connections is to only authenticate the server.

Attestments, such as verbal communications of a shared value (as in ZRTP), or recorded attestments such as audio/visual recordings of a public key hash[7] are used to ward off MITM attacks, as visual media is much more difficult and time-consuming to imitate than simple data packet communication. However, these methods require a human in the loop in order to successfully initiate the transaction.

HTTP Public Key Pinning, sometimes called "certificate pinning", helps prevent a MITM attack in which the certificate authority itself is compromised, by having the server provide a list of "pinned" public key hashes during the first transaction. Subsequent transactions then require one or more of the keys in the list must be used by the server in order to authenticate that transaction.

DNSSEC extends the DNS protocol to use signatures to authenticate DNS records, preventing simple MITM attacks from directing a client to a malicious IP address.

Tamper detection[edit]

Latency examination can potentially detect the attack in certain situations,[8] such as with long calculations that lead into tens of seconds like hash functions. To detect potential attacks, parties check for discrepancies in response times. For example: Say that two parties normally take a certain amount of time to perform a particular transaction. If one transaction, however, were to take an abnormal length of time to reach the other party, this could be indicative of a third party's interference inserting additional latency in the transaction.

Quantum Cryptography, in theory, provides tamper-evidence for transactions through the no-cloning theorem. Protocols based on quantum cryptography typically authenticate part or all of their classical communication with an unconditionally secure authentication scheme e.g. Wegman-Carter authentication.[9]

Forensic analysis[edit]

Captured network traffic from what is suspected to be an attack can be analyzed in order to determine whether or not there was an attack and determine the source of the attack, if any. Important evidence to analyze when performing network forensics on a suspected attack includes:[10]

  • IP address of the server

  • DNS name of the server

  • X.509 certificate of the server

    • Is the certificate self signed?

    • Is the certificate signed by a trusted CA?

    • Has the certificate been revoked?

    • Has the certificate been changed recently?

    • Do other clients, elsewhere on the Internet, also get the same certificate?

学习谷歌插件(https://developer.chrome.com/extensions/content_scripts)时,看到Man-in-the-middle attack,花了点时间认真学习一下,总结出大概意思如下:






作者:真爱无限 出处:http://www.pukuimin.top 本文为博主原创文章版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接.
« 上一篇下一篇 »