Extending IPv4 with source translation/source privacy.

Hello,

The internet protocol version 4 could be extended with source translation/source privacy.

The idea is as follows:

The ip.source is translated into something else/arbitrary along the path's routers to it's destination.

Each router selects a random available ip from a table which is to replace the ip.source of the packet.

A bit is set in the packet indicating the privacy option. This bit could be bit 0 of the ip.flag, alternatively it could also be an add-on option, the flag bit is to be preferred because it would require little changes to simple ip implementations.

If the router does not support this new option then the ip.source is left intact.

Packets with the bit cleared are routed as normal.

Packets with the bit set indicate a special privacy packet and have to be treated in a special way.

if ip.flag.bit0 is set it indicates a privacy packet then if ip.TypeOfService.bit6 is set it indicates the ip.source is translated. if ip.TypeOfService.bit7 is set it indicates the ip.dest is translated.

Bit6 of ip.TypeOfService is used to indicate the ip.source is translated. Bit7 of ip.TypeOfService is used to indicate the ip.destination is translated.

These two bits are used to indicate if it's a regular/normal ip or a translated ip.

Based on this information the router can make a decision if the packet is to be routed freely/normally or if certain restrictions apply.

If the ip.TypeOfService.bit7 is set then a restriction applies. The router can only route the packet towards the router which had the ip.dest as an ip.source during previous transmissions/reception at the current router.

Therefore each router on reception of a privacy packet must also remember from which router it came. Therefore each ip.source (ip translated source) is unique per router and needs a seperate entry into the router's hash table/data structure.

All translated ip's remain valid for a certain period of time which needs to be standardized for example 5 minutes might be ok.

The goal of the idea is to keep the ip.source secret from end points of the internet and also of other routers. At each stage/hops/router that supports it translation happens, stages/hops/routers that don't support it should function normally and still work:

A->B->C->D->E

C does not support translation.

A sends to E along path BCD.

Packet at A looks like: ip.source = A ip.dest = E ip.flag.bit0 = 1 ip.tos.bit6 = 0 ip.tos.bit7 = 0

Packet at B looks like: ip.source = Z (z selected from ip_seen_table, (z not in ip_seen_table, z not in translation tables)) (forward_translation_table[A].replacement = Z) (backward_translation_table[Z].replacement = A) ip.dest = E ip.flag.bit0 = 1 ip.tos.bit6 = 1 ip.tos.bit7 = 0

Packet at C looks like: ip.source = Z ip.dest = E ip.flag.bit0 = 1 ip.tos.bit6 = 1 ip.tos.bit7 = 0

Packet at D looks like: ip.source = G (G selected from ip_seen_table, (G not in ip_seen_table, G not in translation tables)) (forward_translation_table[Z].replacement = G) (backward_translation_table[G].replacement = Z) ip.dest = E ip.flag.bit0 = 1 ip.tos.bit6 = 1 ip.tos.bit7 = 0

Packet at E looks like: ip.source = G ip.dest = E ip.flag.bit0 = 1 ip.tos.bit6 = 1 ip.tos.bit7 = 0

EndPoint E will believe the packet came from G.

EndPoint E wishes to communicate back to G which is actually A and proceeds as normal and sends messages back:

EndPoint E does also not support privacy option therefore Packet E will send the following:

Packet at E looks like: ip.source = E ip.dest = G ip.flag.bit0 = 0 ip.tos.bit6 = 0 ip.tos.bit7 = 0

Packet at D looks like:

Router at D detects G and knows it was a translated IP, meanwhile it could also have become the real G this is where it gets a little tricky. if the real G was received by router at D and was also transmitted to E a conflict has occured. This could be solved by translating conflicts as well... therefore the real G could get a different IP for the time being... which could further confuse E which is not desirable... so instead the privacy "connection" is lost and the real G will prevail over the fake G. The fake G can be removed and replaced with something else, resulting in a short loss of a packet possibly a tcp connection and other udp related connections... future protocols might need to be aware of suchs drops and take it into account that it might happen, if clients start supporting priacy option as well this might not be a problem anymore since the flags will indicate if it was a translated ip or a real ip.

Anyway let's go on for a moment since these conflicts could be rare in practice and might not really present that big of a problem...

As I was writing... the router at D detects G and translates it back via it's backward translation table. G is replaced with Z.

Since the router support privacy option, the E is also translated.

ip.source = Q (Q selected from ip_seen_table, (Q not in ip_seen_table, Q not in translation tables)) (forward_translation_table[E].replacement = Q) (backward_translation_table[Q].replacement = E) ip.dest = Z ip.flag.bit0 = 1 ip.tos.bit6 = 1 ip.tos.bit7 = 1

Packet at C looks like:

ip.source = Q ip.dest = Z ip.flag.bit0 = 1 ip.tos.bit6 = 1 ip.tos.bit7 = 1

Router at C does not support privacy option and ignores it and routes the packet forward to Z which came from the router at B.

Here another potential problem exists... if C does not copy over the tos bits then B could get confused... I am not sure what routers do and if they are allowed to modify tos bits from packets. If they are allowed to modify tos bits than a solution will have to be found, and some other kind of bits might have to be used. If no solution can be found then perhaps this idea could be implemented for ipv6 instead.

Packet at B looks like:

Router at B supports privacy option and applies it to the source as well... Q is replaced with L

ip.source = L (L selected from ip_seen_table, (L not in ip_seen_table, L not in translation tables)) (forward_translation_table[Q].replacement = L) (backward_translation_table[L].replacement = Q) ip.dest = A (Z is found in translation table) (Z is replaced with A via backward translation table) ip.flag.bit0 = 1 ip.tos.bit6 = 1 ip.tos.bit7 = 0

Bit7 could be turned off since it detected/found Z in table... and thus can translate it back.

ip.tos.Bit7 could there prevent confusion among routers and to make them understand if something is a real ip or a translated ip as to be able to properly route real ip's. I am not completely sure if bit7 is really required but I think so...

Further experimentation with this idea would give further insights if it's required and I would expect so.

To me this idea seems usuable and workable in practice... so far I have described two little potential problems and possible solutions... conflicts between translated ip's and real ip's which would be rare, in such case the privacy option/path could be dropped.

Copieing of the tos bits. Perhaps this is not really that big of a problem... since B will find the translated IP in it's tables... it only again becomes a problem if a translated IP and a real IP is received at B, without the proper tos bits set B might not have a way to determine if it was a translated or real ip, however it might still be able to understand it by looking at from which router it received !

So additional solutions are thinkable and might still be available/possible.

Therefore I think this idea has merit, requires no changes to the packet format itself. Only requires reinterpretation of the flag.bit0 which was marked as reserved, therefore it could be used.

Plus tos.bit6 and tos.bit7 is usually indicated as reserved/not used so also seem free to be used especially in combination with flag.bit0 set.

The motivation for this idea is to protect internet users from harrassment and lawsuits relating to copyright infringement and such.

Also to give internet users more privacy, and less snooping into their lifes, and perhaps also to enlighten the role of internet service providers so that they in all honesty can say that they don't know who sent what...

Bye, Skybuck.

Reply to
Skybuck Flying
Loading thread data ...

There's your mistake. You cannot talk about "the" path from source to destination because in general there are multiple paths and different packets in the same TCP flow might travel by different routes.

NAT, which you mention in a later post, only works because everyone in the private address space is behind a single router. (One could presumably implement some sort of co-operative NAT if you had multiple boundary routers, but this certainly isn't how it works in the average home or small office.) That single router is, of course, also a single point of failure, so your proposal actually depends on something that some people would reckon was a problem.

Reply to
Ken Hagan

The gateway protocols 4to6 and 6to4 perform such translations in a low-state fashion, and have provisions for permanent translations.

We are burying the world in NAT, and yet more NAT. It is time to set the net free, and get bigger addresses.

The error that people do when they try this is to do ipv6 over ipv4. You have to convert, and run ipv4 on ipv6. The entire address room of ipv4 fits in a little corner of ipv6, so you can do this. Linux and FreeBSD do this almost automatically if there is 6to4 support somwhere in the network.

You can then run privacy schemes in the ipv6 backbone. You just make an extension header to a private protocol. Or you could run ipsec.

-- mrr

Reply to
Morten Reistad

In comp.dcom.lans.ethernet Morten Reistad wrote in part:

Perhaps. But why go from 32-bits all the way to 128? It goes against the grain to agree with Skybuck Flying, but aside from the additional overhead, there are serious privacy concerns -- some of these bits will get used for persistant identifiers (MAC) and some governments may mandate some for social numbers.

The nice thing about IPv4 is it _has_ all this DHCP and NAT. It is difficult to identify any particular user, and impossible once logs expire (1wk-2yr). With IPv6, it would be possible for anyone to do so, and long after the fact.

-- Robert

Reply to
Robert Redelmeier

I voted for Tuba (64 bits) in the Big Vote. We lost. So

128 bits it is, and all options moved to extension headers. Apart from that, and some dns etc support to handle it there is not a big change.

It is easier to translate ipv4 "half-nat" nat64 into ipv4 than it is to do ipv4 NAT, expecially when the two are stacked. One big difference is that ipv6 has addresses to burn so you can map stuff to addresses instead of to internal tables.

This is purely "anonymity by obscurity". If we really want an anonymous service we have to use tor-like techniques; and then we need more adresses for it to resist attacks.

"security by obscurity" does not work, nor does it provide anonymity.

There are bit scramblers for the ipv6 visible mac address. These are trivial to deploy in the router OS'es I use, and they can be configured not to have persistent state (surviving a reboot) easily.

rtadvd does not assign an ip address, it just tells you what the network is, where the routers and core servers are. You then assign yourself your own IP address based on some transformation of your IP address. This transformation can be a one-way trap door function; there are enough bits available for that. Supported in windows since xp sp2, openbsd since 3.6, freebsd since 5.something, linux since some early 2.4 kame.

So, it you want to deploy an IPv6 network where no server carries state from the endpoints it is possible to do so. Just as it was on the IPv4 network up until 1992 or so.

Whenever there is persistant server state, there will be logs. DHCP to mac assignments that must be somewhat persistent, NAT tables; and these usually follow some quite predictable patterns.

I am more than willing to allow for twice as big a header for that. Actually, about 2/3rds the traffic out of my home office is ipv6 now. It was a liberation to be able to squander addresses again.

And, remarkably, the ipv6 implementatons are generally better. They handle ip fragmentation a lot better, and source quenches etc are respected. Even if the ipv6 network is tunnelled on top of ipv4 access lines, it is noticably faster.

-- mrr

Reply to
Morten Reistad

Hello,

Robert Redelmeier a écrit :

What's so nice about NAT and DHCP ? IPv6 has its own version of DHCP too, DHCPv6.

Maybe you haven't heard about IPv6 privacy extensions and temporary addresses.

Reply to
Pascal Hambourg

I disagree with this meme. There is no absolute security or anonymity by _any_ means. All can be penetrated by sufficiently advanced countermeasures. Security is a continuum, not discrete. The point is to elevate the cost of the attack such that it is not in widespread use, especially long after the fact.

I have no particular problem with law enforcement violating security or anonymity, preferably with probable cause under the supervision of some court. But if not, simply making it difficult will achieve much the same ends. If it is difficult, even the most nefarious police will have trouble doing much.

In this sense the horrible mixup that is DHCP and NAT are useful obscurants. Furthermore, they are pretty much obligatory under IPv4. Under IPv6, an interventionist government (who else controls the police?) could easily ban all the privacy extentions and refuse to pass/flag packets with scrambled MACs.

Sorry about Tuba, but I don't think IPv6 is inevitable. Newer-better does not always win. Blu-ray isn't so healthy.

-- Robert

Reply to
Robert Redelmeier

With "security by obscurity" you make a dent in the continuum. It may work for a while, until someone finds out what you are doing, and then the "security" implodes. Much like a virus attack.

So, tell me, how are they to avoid this; considering that this is a default behaviour in the latest windows versions?

And, if you use something like openbsd, there are no bits saying "this is a scrambled mac address". You cannot filter what isn't tagged in the first place.

For obscuring an address, a 4to6, a tranmission section to a different jurisdiction, and then a 6to4 are way better.

No, ipv6 will live in the fringes, just like ipv4 did from

1986 to 1995. Meanwhile ipv4 will decay to become a nightmare for anyone doing stuff that is only slightly beyond mainstream.

Already you can expect your external IP to flap wildly on some carrier implementations.

-- mrr

Reply to
Morten Reistad

"Obscurity" is not a single thing -- even crypto keys may be said to be only obscure and not secure. Obscurity may be very obscure when humans have to get involved to retrieve logs. Not at all like an automated attack.

I would be _very_ surprised if MAC scrambling were part of MS-Windows in any default config. A number of [cable] ISPs still use MAC for authentication, as do a number of corporate router security schemes. MS may be many things, but they usually default in favor of their direct customers (PC mfrs) interests -- reducing support calls.

Sure you can -- whitelist rather than blacklist on border routers. No good MAC -- bitbucket or worse.

And only when IPv4 becomes totally unworkable for a critical mass of users (~30%?) will the switch happen.

"wildly" is a vague adjective -- how fast? I've seen some DHCPs last _years_ although most last only days/week. For current services, I see little problem and in fact _benefits_ for the ISP

-- they charge more for static IPs, and relatively few users need external accessiblity. For those few, DDNS and proprietary DNS (Pogoplug/Cloud) work OK. Most other users would rather _not_ have external access if they ever thought about it. Perhaps some compeling service will come along, but I don't see it.

-- Robert

Reply to
Robert Redelmeier

The point about this saying is that you should be able to publish your methods; software etc and rely on easily changable keys for your security and privacy.

RFC3041. Generating random identifiers for use outside the current subnet. Enabled by default in windows server >= 2003, and in xp at some service pack level (ISTR sp1). So, you _cannot_ use the EUI-64 as a path to the mac address.

The local administrator can do so. But outside the local LAN such schemes will not work with rfc3041. This is on purpose.

We are already in the morass of decay. Corporate users should think hard about a switch already. Simple deployment and some router intelligence using already 5 year old standards will solve a lot of problems, keeping the ipv4 stack on local machines if they need it.

I have seen flapping on the several tens of minute level.

ISPs are in the squeeze too. The timers are made tighter and tigher.

ssh sessions through wireless broadband is pretty useless without a tunnel of some sort.

Yes, you can pile up the cludges. You can make ipv4 work, sort of, with a clueful administrator. The trouble is, 90% of administrators are totally clueless. The technical head of a _large_ isp I have the pleasure of communicating with us unable to make the connection between a prefix (i.e. 1.2.3.192/28) and the addresses this prefix represents. When such people gets to administer stuff that needs thinking you can smell disaster.

At a recent project of deploying a stock SIP platform about 38% of the work was directly related to solving NAT and private address space issues. 38%. Going up. How much more such pain before we do the relatively minor upgrade to v6?

-- mrr

Reply to
Morten Reistad

In comp.dcom.lans.ethernet Morten Reistad wrote in part:

... and those keys remaining private. Well, DHCP logs are private in much the same way as keys. I do not know of any ISP that puts them on-line for all to see. Most will not even give them to the public even on specific request. Some will even insist the police have court authorization. A nefarious government might force an ISP to provide their police with continuous access, but they will still have to search them.

No, but you can use the first 64 bits, especially if they don't change much. RFC3041 is not without controversy:

formatting link
the more anonymity, the more you are vulnerable to DDoS. Put another way, if RFC3041 goes general, it is like having Tuba with the extra overhead. The EUI-64 will be ignored or used for other things (msg signing?)

So control-minded govts/corps will either ban RFC3041 (force users to turn it off), it is not compulsory or required. Or use the first 64bits.

Sorry, I don't see it. You may well be on the bleeding edge. My sympathies.

Which timers? An ISP that is short on addresses will have problems, sure. But there is a solution -- NAT the customers! Give them a private address, not public. There are still lots of ports available, and browsers will work fine.

Of course this will break some applications, but this is by no means undesireable. You can make people pay more for better service, including an external addr. "Browser/email only" service for e20/mo, vs full "gaming" serive for e50/mo! Whether you like it or not, market segmentation is a route to profits.

I suppose that depends on the ISPs involved. I've had no trouble, and I've used lots of direct ssh over wireless. At least halft the time, the connection stays up overnight. But addr changes several times per hour might get annoying.

From where do you get that statistic? I expect most netadmins to be fully clued in to problem areas they currently face, and probably ignorant of any problem they have not faced or any new service. Most netadmins are not charged or paid as architects and are kept extremely busy just keeping existing networks and services running.

"Technical Head" is a contradiction in terms. "Technical" implies a knowledge of technology. "Head" implies a manager. These are totally different skill sets. Some people like knowing about things and manipulating them. Other people like knowing about people and motivating/manipulating them. People are not things, we do not react according to physical laws.

The American [Harvard MBA] theory that management is fungible (ie. manager can manage anything) has some serious flaws, but separation of specialities is not one of them. The [frequently] European practice of promoting excellent technologists into managment has even more basic flaws (lack of people skills, micromanagement).

I am shocked it was only 38% . Why do you expect RFC3261 to be painless? You are inflicting pain upon long-distance voice revenues of telcos and governments. Nevermind that they are being stupid and greedy, they also usually control datalines. I expect most of your problems were with the mess of different router workings. WHen/if this gets solved, you may expect more active VoIP countermeasures. UAE & India vs RIM is just a start.

-- Robert

Reply to
Robert Redelmeier

They are still on some disk and in some logs where a court backed cop can get to them.

formatting link
Generally, the more anonymity, the more you are vulnerable

I would think getting promoted to default behaviour in windows would qualify as "going general" ? You have to give an ifconfig-command in a console window to turn it off.

Yes, there was a reason I campaigned and voted for tuba. (that would have been version 5, btw)

The first 64 bits tell you the LAN. OK, home users can get on the hook, but not completely. For Wifi, corporate users etc this is far from a complete identification.

NAT, NAT and more NAT. Lots of code to compensate.

Yep, NATint customers is old hat. Now the external NAT addresses are scarce, so they tighten timers for how long a session lasts.

If they had a clue. Most of these schemes are deployed by people without an incling of a clue. Hint: The lead technician in a large corporation was unable to make a route/netmask out of 15 single IP addresses for a filter.

This means that garbage configs for cheap home deployment makes it onto large, corporate installations.

VPN, or 6to4. Problem solved. My ip use went to 65% almost overnight. All repos, microsoft included, are ipv6 enabled. So are the gateway sites I use. It just makes the world so much barable. No more hanging sessions. And it is noticably faster, too.

The huge problem is with the ISPs of large telcos. They just deploy vendor services without a clue.

This was where the case got escalated. The endpoint of escalation. Customer was large corporate entity with 24x7 contract and several gigabit connections.

This was just CPE and router workarounds. This was for a large integrator, working closely with an incumbent telco, so counter- measures was not in the equation. The 38% was just the work getting everything to work with several layers of flapping nat devices.

-- mrr

Reply to
Morten Reistad

In comp.dcom.lans.ethernet Morten Reistad wrote in part:

Sure. Nothing obscure about it. Just not easy for everyone to do. I did not claim this was undesireable.

Or as part of ubiquitous startup scripts.

Again, you expect too much of people. Sure, it would be good if they knew. But they don't have to, so they don't. They've lasted this long without, and may have achieved considerable success reinforcing their ignorance. It would be nice if people who maintained machines & systems also knew enough to build them, but they don't. They know different things, often things the builders do not know.

If it can be made to work for now, that is often good enough. Cost pressures prohibit investing for the future. Of course corners are cut. It looks stupid in hindsight, but might not be in foresight--alot of futureproofing is thrown away when _that_ future doesn't show up an a different one does instead.

But I do not have these problems! I see no advantage with VPN, and only use it when port fwding config require it. I am a bit surprised at your speedup. Could it be going through better router [software]? IPv4 is somewhat the victim of its' own success -- droped/mangled packets cause fairly silent retransmits. So you get alot of them at a cost in speed.

One thing I do to help IPv4 is work on MTU to minimize fragmentation downstream. My current favorite is 1454 octets.

-- Robert

Reply to
Robert Redelmeier

Yep. You have to enable it on Linux, but it is a single command. Some Linux distros may have it on by default. Apple are making privacy noises, so they may turn it on by default, too.

Sure, they make networks that work, sort of. But combined with address squeeze, lots of NAT, a steady stream of new services it does not fly.

The consequence is that incumbent ip offerings raise an increasing level of problems. That may be a market opportunity for small operations to deliver it done right; on top of the incumbent's (regulated) infrastrucure.

I have analysed the speedup. It is noticable, and measurable.

Reason #1 is that MTUs are negotiated properly. No network- generated fragmentation. MTU discovery is mandatory. Around

40% of packets on my ipv4 links arrive fragmented by the network.

Reason #2 is that there is no NAT, and routers just switch packets and do filter lists. Otherwise we are deploying NAT devices with lame cpus and memory interfaces on pretty high packet rates. Not rewriting packets mean a great deal. The latency differences are easily measurable.

Reason #3 is that I am pretty much alone on the ipv6 network, so I get the route caches all for my packets, and the few others using the network.

46 octets? Two tunnels and a pptp?

I have tested this on large numbers of networks, and it seems 1440 is safe everywhere. But the difference to

1454 is negligable. I see bigger effects from 1460 up.

-- mrr

Reply to
Morten Reistad

Cabling-Design.com Forums website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.