Anonymity on the Internet Over Proxy Servers Final Product Fábio Rodrigues ei08116@fe.up.pt Matej Bulić ei12010@fe.up.pt
Introduction user always leaves digital sign need for security and anonymity Proxy servers can "hide" users
Privacy and anonymity Websites gets information from users: from browsers users forms cookies techniques of tracing User should protect himself: strong paswords well-guarded usernames SSL etc.
Privacy Policy clearly visible on webpage clearly saying what information is collected, for what it will be used and whether it will be shared with anyone
Proxy server Proxy is a computer that acts intermediary between the client and the server
Proxy server Proxy servers are used for various purposes such as: anonymity of client computers (end users) accelerating access to resources using the method of temporary storage (caching) ban access to certain websites, ban access to websites with specific keywords, ban certain protocols, ban access to certain ports ban certain users to proxy server, tracking customer requirements, avoiding the ban, search content that is transmitted removing sections of the website such as advertisements.
HTTP proxy servers support only HTTP protocol (rare of them use FTP) used mostly for tunnelling, anonymous proxy
Types of proxy servers Transparent cache, simple IP bans Anonymous hiding IP, visible proxy Elite hiding IP, hiding proxy High Anonymous Reverse Intercepting Distorting
Solutions to increase anonymitiy necessary to exclude the following functionality: Cookies (Eng. cookies) JavaScript / VBScript, Java and ActiveX controls. create a local network in which all computers have a local IP address 192.168.1.X shape
Solutions to increase anonymitiy linking CGI proxy servers elite proxys also don't guarantee absolute anonymity
Program Specification The software developed for the project would be a program that acts as a proxy like a: Normal proxy server; High anonymity proxy server. Purpose: Try to see if it was possible to identify the client when he was using the proxy server as well as identify differences between using a normal proxy and a high anonymity proxy.
Program Specification The server application would run on a computer and act as a proxy. It would be possible to start in either normal mode or high anonymity mode; An ip checker and analyzer would be used to analyze the connection when we are using the proxy on both modes and when we are not using it. The objective was to prove that clients using the proxy cannot be identified by comparing the results given by the analyzer when using and not using the proxy.
Unfortunately... Implementing a proxy is no easy task...
Difficulties Encountered Each site has it's own login forms, very hard to make the proxy work with generic POST requests; Sites use several authentication methods; Different encoding in different sites, from Unicode (UTF-8) to Western (ISO-8859-1); Different sites might use several ports; Each problem requires a particular solution (e.g. ftp proxy, http proxy); A combination of firewall rules, web filtering rules and local policy settings or appropriate software can block most proxies.
Proxy Functionalities Forward all of the client's GET requests and process them, this lets them browse the web anonymously; Can be used to bypass country restrictions anonymously. Support for many concurrent clients at the same time (multi-threading); Java Swing Interface with built-in log and options menu; Modular design to make future developments easier to implement; Can block specific sites (e.g. : facebook.com), specified on the "Restrictions" text file;
UML Class Diagram Simplified UML diagram of our proxy implementation
How Does It Work? Program Start Interface Thread Socket Thread Request Handling Thread Request Handling Thread Request Handling Thread
How Do We Run It? From the server host point of view: Start server Specify port Running server with live log
How Do We Run It? From the client point of view: Change browser settings to work with a proxy Specify port and server IP Use the broswer normally
Video http://www.youtube.com/watch? v=n4kcq9nzpkc&feature=em-uploademail
Results
Results
Possible Future Developments Implement support for POST requests to the most commonly used sites (e. g. : gmail, facebook, webmail); Implement different kinds of proxy into one (e.g. : ftp proxy, https proxy, proxies to play games, etc...); Save logs in a database for statistical purpouses; Support for youtube.
Conclusions Proxies are very useful both for good and bad reasons; Particular problems require particular proxies (e.g. : http, https, playing online over a proxy, ftp); The internet uses an amalgamation of different technologies that must be taken into consideration when implementing a proxy; The implementation of a proxy is an ideal project to learn more about sockets, networking, multi-threading and patience.
Questions?