Slashdot Mirror


Phony TCP Retransmissions Can Hide Secret Messages

Hugh Pickens writes "New Scientist reports that a team of steganographers at the Institute of Telecommunications in Warsaw, Poland have figured out how to send hidden messages using the internet's transmission control protocol (TCP) using a method that might help people in totalitarian regimes avoid censorship. Web, file transfer, email and peer-to-peer networks all use TCP, which ensures that data packets are received securely by making the sender wait until the receiver returns a 'got it' message. If no such acknowledgment arrives (on average 1 in 1000 packets gets lost or corrupted), the sender's computer sends the packet again in a system known as TCP's retransmission mechanism. The new steganographic system, dubbed retransmission steganography (RSTEG), relies on the sender and receiver using software that deliberately asks for retransmission even when email data packets are received successfully (PDF). 'The receiver intentionally signals that a loss has occurred,' says Wojciech Mazurczyk. 'The sender then retransmits the packet but with some secret data inserted in it.' Could a careful eavesdropper spot that RSTEG is being used because the first sent packet is different from the one containing the secret message? As long as the system is not over-used, apparently not, because if a packet is corrupted, the original packet and the retransmitted one will differ from each other anyway, masking the use of RSTEG."

27 of 188 comments (clear)

  1. Does it matter which data you send first? by drinkypoo · · Score: 3, Insightful

    Does it matter if you send the real data or the masking data first, if you're just going to "fail" it and resend with the other data?

    --
    "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    1. Re:Does it matter which data you send first? by evanbd · · Score: 4, Informative

      You send the masking data first, since the recipient is the one who controls *which* masking data they ask for a retransmit on. Then the sender retransmits the real data. If you send the real data first, you have to know which piece to ask to resend. That requires some sort of framing or similar protocol, which would make it easier to spot.

    2. Re:Does it matter which data you send first? by DontBlameCanada · · Score: 5, Informative

      I believe the procedure will be something like this:

      Msg1: "The next character is part of a secret msg: /" --> Reciever NACK
      Msg2: "The next character is part of a secret msg: ." --> Reciever NACK
      Msg3: "The next character is part of a secret msg: R" --> Reciever NACK
      Msg4: "The next character is part of a secret msg: o" --> Reciever NACK
      Msg5: "The next character is part of a secret msg: x" --> Reciever NACK
      Msg6: "The next character is part of a secret msg: {ascii null}>"

      Secret msg: /.Rox

      It works because each tcp retransmission updates several fields in the tcp header as part of correct operation (check sum etc). So brute force comparison of the previous datagram to the new datagram will always fail. In order to detect this, the eavesdropper would need to strip the headers. That in itself isn't too hard, however since 1:1000 normal packets get a retransmit, the device doing the snooping will be hugely overwhelmed with noise.

      It be like trying to overhear whispered conversations in a huge auditorium with loudspeakers blaring a static hiss (white noise) at high volume.

    3. Re:Does it matter which data you send first? by ta+bu+shi+da+yu · · Score: 3, Insightful

      Ummm... hopefully the stenographers have a good solid connection with no data corruption!

      --
      XML is like violence. If it doesn't solve the problem, use more.
    4. Re:Does it matter which data you send first? by DontBlameCanada · · Score: 5, Insightful

      >> you'd get an insanely poor data rate

      The target application is busting through mass censorship by government entities. Even the equivalent throughput of a 300baud modem is better than no connectivity at all. Heck, I bet most of the /. readers over the age of 35 spent a goodly portion of their youth msging each other on local BBs at 1200baud or less --> and we thought it was lightning speed (compared to pen n'paper over snail mail).

    5. Re:Does it matter which data you send first? by camperdave · · Score: 4, Insightful

      I think you'd want that the other way around. Send the ecrypted data first, then retransmit the true data. That way, when an eavesdropper assembles all of the packets they will overwrite the "damaged" cipher packets with true data packets. They'll wind up with a perfectly clean file.

      --
      When our name is on the back of your car, we're behind you all the way!
    6. Re:Does it matter which data you send first? by Opportunist · · Score: 3, Funny

      Ooooo OOOOOO Weeeeee, oodle, oodle, TSSSSSSSSSSSSSSSSSSS.

      WHAT? How dare you, my mother was a saint!

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  2. Might be a little obvious... by vintagepc · · Score: 3, Insightful

    Doesn't anyone think it might be a bit obvious if your system suddenly starts re-requesting/re-sending a large number of its packets?
    And, would your bandwidth not also double, if you use this and re-send one secret packet for every 'normal' packet?

    --
    Evolution - Est. 4500000000 B.C. Don't piss in the gene pool.
    1. Re:Might be a little obvious... by Exitar · · Score: 5, Insightful

      They probably have another paper ready "Detecting RSTEG use through resent packets frequency statistical analysis"...

    2. Re:Might be a little obvious... by caffeinemessiah · · Score: 4, Informative

      They probably have another paper ready "Detecting RSTEG use through resent packets frequency statistical analysis"...

      Parent is correct. arXiv is full of papers that have really poor methodology, and quite often the authors "improve" upon their earlier papers. This is also common in the field of data mining, where crap is initially packaged to look shiny and then Crap++ is sold as an improvement, all the while racking up the author's publication count. And that, unfortunately, is the currency of research in computer science.

      --
      An old-timer with old-timey ideas.
    3. Re:Might be a little obvious... by wjh31 · · Score: 5, Insightful

      no, because you can simulate the normal faliure rate, and so send 1kB of steganographised data per 1MB of real data (on average). While this isnt a particularly high rate, it means that you can send a few kB of text to your friend when it seems you are just sending some photos of your holiday/party/whatever. A few kB of text sounds like a pretty reasonable amound of information to be sending, especially if compressed first.

    4. Re:Might be a little obvious... by click2005 · · Score: 3, Informative

      Doesn't anyone think it might be a bit obvious if your system suddenly starts re-requesting/re-sending a large number of its packets?
      And, would your bandwidth not also double, if you use this and re-send one secret packet for every 'normal' packet?

      From TFA...

      "Could a careful eavesdropper spot that RSTEG is being used because the first sent packet is different from the one containing the secret message? As long as the system is not over-used, apparently not,"

      This isnt designed to hide bittorrent traffic but should be able to hide someone posting on a web bog or some other low bandwidth activity.
      The downside seems to be it hides what you're sending but not who you're sending it to.

      --
      I am a free slashdotter. I will not be modded, blogged, DRM'd, patented, podcasted or RFID'd. My life is my own.
    5. Re:Might be a little obvious... by Anonymous Coward · · Score: 3, Funny

      So this is how "C++" got created in the first place!

    6. Re:Might be a little obvious... by hal2814 · · Score: 4, Interesting

      I can tell you right now this research will get savaged in peer review. At my university, we were working on delaying ACKs to get a server to push the full window all at one time so a wireless device could power down between transmissions. Even though the server sent the packet and we sent the ACK, we were absolutely demolished in peer review because what we were doing wasn't proper TCP. If what we were doing isn't proper TCP even though it technically didn't violate the protocol at all, there's no way in hell this will fly.

    7. Re:Might be a little obvious... by Spaham · · Score: 3, Insightful

      I believe this is not intented to be rfc compliant, but
      rather cloak and dagger stealth message sending...
      so you can't compare what you tried to accomplish
      to what they offer.

  3. Real errors? by PhireN · · Score: 5, Interesting

    What happens when one of the packets actually gets corrupted?

    1. Re:Real errors? by evanbd · · Score: 5, Insightful

      Then your stego channel detects an error thanks to its checksumming. And it retransmits. Much like TCP. In fact, your stego channel could just be another layer of TCP.

  4. Security through Obscurity by ShadowRangerRIT · · Score: 4, Insightful

    I realize that all forms of steganography are basically security through obscurity, but this one is even more inane. Unless subjected to additional protection, anyone aware of this form of steganography could easily track it, and more importantly, it would look suspicious in traffic logs (drastically increased retrans requests, but only for a small subset of the TCP connections logged). Steganography should look innocuous, in addition to hiding information, if you want it to work.

    --
    $_ = "wftedskaebjgdpjgidbsmnjgcdwatb"; tr/a-z/oh, turtleneck Phrase Jar!/; print
    1. Re:Security through Obscurity by grommit · · Score: 4, Insightful

      Who said anything about drastically increased retrans requests? The method is meant for short messages to the effect of "Dmitry was arrested on false charges yesterday." that are hidden inside a transmission of a much larger file such as a picture.

    2. Re:Security through Obscurity by Ephemeriis · · Score: 3, Interesting

      Or you could just hide the message inside the picture with one of a number of different techniques

      Or you could do both. Or you could do neither. Or you could put a decoy message inside the picture with shoddy obfuscation, and the real message in the TCP stream. Or you could use the message in the TCP stream to decrypt the message in the picture. Or you could completely bypass the Internet entirely and use a telephone, or radio, or written letter, or whatever else.

      It's another option. Nothing more, nothing less.

      and get you more data transfer capacity for the buck.

      I'm not sure this is really necessary. The summary indicates that 1 in 1000 packets are normally corrupted... Which lets you put about 1KB data in a 1MB transmission... How many KB does it take to send a meaningful message? And just how much data do you want to risk if a single transmission is compromised?

      Assuming you don't want others to see your message, you can't put more than a bit or two per retrans request, and even your message would require quite a lot of retrans requests, such that statistical techniques would reveal the existence (if not the content) of the message

      Again, they're talking about duplicating what normally occurs - about 1 retransmission per 1000 packets. Which would not show up as anything terribly unusual statistically.

      unless it was hidden in an absolutely huge transmission.

      Again, just how much data do you need to transmit?

      If you were to employ this technique on a website like DeviantArt or flickr you'd have plenty of data being transmitted... Plenty of room to hide a message or two.

      --
      "Work is the curse of the drinking classes." -Oscar Wilde
    3. Re:Security through Obscurity by the+phantom · · Score: 4, Funny

      How many KB does it take to send a meaningful message?

      64. Because that should be enough for anyone.

  5. Re:torrents by ShadowRangerRIT · · Score: 3, Informative

    Or you could just run your torrents over an unblocked port, with protocol encryption... Nah, I'm sure reducing your bandwidth by multiple orders of magnitude is the way to go...

    --
    $_ = "wftedskaebjgdpjgidbsmnjgcdwatb"; tr/a-z/oh, turtleneck Phrase Jar!/; print
  6. crimilization of ambiguity by epine · · Score: 4, Interesting

    For the purpose of this discussion it helps to bear in mind the criminalization of ambiguity. If I have a source of physical randomness and I use this source to write a multi-GB file to my hard drive, when the Mounties show up to repo my computer system (on false allegations under the Canadian DCMA soon to be shoved down our throats), and I'm unable to provide a password which unlocks my monolith of randomness into something with a lot less entropy, I expect I'll be successfully charged with obstruction of justice.

    Ignorance of law is no excuse. No one in the legal system has the balls to state this point blank, but it appears as things are shaping up that ambiguity of circumstance is no defense either.

    1. Re:crimilization of ambiguity by phoenix321 · · Score: 3, Insightful

      If ambiguitiy of circumstances is no defense anymore, you have eliminated "in dubio pro reo". Which means you have reached THE definition - and hallmark - of repression, because everyone does ambiguos things sometimes with no ill intent at all and nobody is free when they have to judge their entire day if they're doong something ambiguous.

      And no, that's no slippery slope but the bottom of it. Rock bottom.

  7. Even 1 bit per 1 megabyte might be a problem by Etylowy · · Score: 5, Informative

    With the packet size of ~1500 bytes a 1MB send means ~700 packets. With an average of 0.1% packets lost even sending a single bit of information (a single 0 or 1) per 1MB transfered gives you a 150% increase in lost packets
    With dialup and it's default packet size of ~500 bytes combined with much higher packet loss you might be able to sneak in 1-2 bytes per MB without making it possible at all to detect. Considering 56kbps modem upload speed and need for some error/fault correction in the protocol sending an equivalent of SMS (160 characters) would take more than 2 days.

    All that is assuming that someone is looking for that type of transmissions. If not it looks like a very nice method to send very short messages.

  8. A dozen better stega strategies: by Ancient_Hacker · · Score: 3, Interesting

    Heh, I can think up a half dozen better stegas:

    (1) Encode the data as the packet length.
    (2) Encode the data as the packet checksum
    (3) Encode the data as the fragment offset.
    (4) Encode the data as the number of extra ACKS.
    (5) Encode the data as the starting connection sequence number.
    (6) Encode the data as the window size.
    (7) Encode the data as the inter-packet delay.

    Steganography has the fatal flaw that the method has to remain secret. One basic rule of encryption is to assume the method is discernible and
    the security must be all in some secret key.

  9. Asymmetric bandwidth border crossings by tlambert · · Score: 4, Interesting

    Whoever your peers were, they weren't familiar with best common practices for asymmetric bandwidth border crossings.

    We did this in 1996 for the Whistle InterJet, back when the idea was relatively new, but it's now common practice. The problem is that if you have a border router with a relatively fast network inside the border and a slow connection to the Internet, with a faster connection for the router on the other side of the slow connection (e.g. for a DSLAM, for example, then what you're going to end up with is any larger transmission starving interactive traffic (for example, an update download vs. transient mail traffic, or a large file download vs. an ssh session.

    The only reasonable way t deal with this situation from a bandwidth management perspective is to manage how full the buffer is on the routers on the other side of the slow connection, and that means banging the window size larger or smaller than it actually is in order to allow bandwidth control. Otherwise, your fast connection packs the router buffers full of data packets for the large transfers, and there's no room for packets not specifically related to the large data transfers, unless your router decides to do RED queueing. And that has its own performance issues (specifically, it increases the effective bandwidth delay product until it's the same as if it had been multiplied by your actual queue size divided by your high watermark at which pint you RED 50% of your incoming packets).

    PS: This is why I always laugh at things like AltQ, which try to flow rate limit in order to do traffic shaping, since you can do that, but unless you adjust the window size, you're still going to pack up your router buffers with data unrelated to the flows that you wanted to prefer.

    -- Terry