<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.cas.mcmaster.ca/skins/common/feed.css?207"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.cas.mcmaster.ca/index.php?feed=atom&amp;target=Manselnj&amp;title=Special%3AContributions</id>
		<title>Computing and Software Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.cas.mcmaster.ca/index.php?feed=atom&amp;target=Manselnj&amp;title=Special%3AContributions"/>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Special:Contributions/Manselnj"/>
		<updated>2026-04-15T01:23:49Z</updated>
		<subtitle>From Computing and Software Wiki</subtitle>
		<generator>MediaWiki 1.15.1</generator>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-14T02:52:23Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=Security=&lt;br /&gt;
There are several ways in which security is a major concern when using the X Windowing system.  These can concerns can be broken up into two major categories: interception of communications between the X client and X host, and having a malignant client connect to your host.  The communication security can be handled by tunneling the communication between the X host and X client through a more secure protocol such as ssh.  The malignant client concern can be handled by using tools distributed with the X Windowing system: XAuth and XHosts.&lt;br /&gt;
==Communication Security and Tunneling Through SSH==&lt;br /&gt;
Depending on how an X Client connects to an X Host, there can be some major security issues.  When used by itself through a non-secure connection, the X Windowing system will send all of it's data unencrypted across the network you are using.  Depending how many people have access to the network, this can be a huge security issue.  Everything from passwords to possibly confidential documents are sent essentially unencrypted across the network which allows anyone to view them. &lt;br /&gt;
&amp;lt;BR&amp;gt; One possible solution to this problem is to tunnel through a more secure communication medium, such as ssh.  By embedding X Window messages in SSH datagrams, the X Window messages will then be encrypted within the SSH message. To see more on tunneling, please see one of the following articles: [[Applications_of_SSH#SSH_Tunneling | Applications of SSH]], [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
==XAuth==&lt;br /&gt;
One utility to help with security which comes with the X Windowing system is xauth.  This tool operates works with MIT Magic Cookies.  The way it works is when you start up an X Windowing host, it will create a Magic Cookie which is just a hexidecimal string.  This cookie is stored in the file $HOME/.Xauthority  of the client machine.  This file contains a list of hosts, displays and magic cookies.  When the client connects to the host on a specific display, it sends the corresponding Magic Cookie.  If the Magic Cookie matches the host's cookie, then the host accepts the connection.&lt;br /&gt;
&lt;br /&gt;
==XHosts==&lt;br /&gt;
Another utility to help with security of the X Windowing system is the xhost tool.  This tool operates in two modes called plus(+) and minus (-).  Plus mode will allow any X Client to connect to the X Host.  Obviously this is a very insecure mode.  A more secure mode is the minus mode.  Using this mode, only hosts on the trusted list are allowed to connect.  Hosts can be added and removed from the trusted list through xauth +/-&amp;lt;host name&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
# [http://www.xfree86.org/4.4.0/xauth.1.html http://www.xfree86.org/4.4.0/xauth.1.html]&lt;br /&gt;
# [http://www.xfree86.org/current/xhost.1.html http://www.xfree86.org/current/xhost.1.html]&lt;br /&gt;
# [http://ptolemy.eecs.berkeley.edu/~cxh/sapub/Xsecurity.html http://ptolemy.eecs.berkeley.edu/~cxh/sapub/Xsecurity.html]&lt;br /&gt;
# [http://www.xfree86.org/current/Xsecurity.7.html http://www.xfree86.org/current/Xsecurity.7.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
* [http://www.xfree86.org/ http://www.xfree86.org/]&lt;br /&gt;
* [http://www.x.org/wiki/ http://www.x.org/wiki/]&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [[Applications of SSH]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-14T02:50:02Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* XHosts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=Security=&lt;br /&gt;
There are several ways in which security is a major concern when using the X Windowing system.  These can concerns can be broken up into two major categories: interception of communications between the X client and X host, and having a malignant client connect to your host.  The communication security can be handled by tunneling the communication between the X host and X client through a more secure protocol such as ssh.  The malignant client concern can be handled by using tools distributed with the X Windowing system: XAuth and XHosts.&lt;br /&gt;
==Communication Security and Tunneling Through SSH==&lt;br /&gt;
Depending on how an X Client connects to an X Host, there can be some major security issues.  When used by itself through a non-secure connection, the X Windowing system will send all of it's data unencrypted across the network you are using.  Depending how many people have access to the network, this can be a huge security issue.  Everything from passwords to possibly confidential documents are sent essentially unencrypted across the network which allows anyone to view them. &lt;br /&gt;
&amp;lt;BR&amp;gt; One possible solution to this problem is to tunnel through a more secure communication medium, such as ssh.  By embedding X Window messages in SSH datagrams, the X Window messages will then be encrypted within the SSH message. To see more on tunneling, please see one of the following articles: [[Applications_of_SSH#SSH_Tunneling | Applications of SSH]], [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
==XAuth==&lt;br /&gt;
One utility to help with security which comes with the X Windowing system is xauth.  This tool operates works with MIT Magic Cookies.  The way it works is when you start up an X Windowing host, it will create a Magic Cookie which is just a hexidecimal string.  This cookie is stored in the file $HOME/.Xauthority  of the client machine.  This file contains a list of hosts, displays and magic cookies.  When the client connects to the host on a specific display, it sends the corresponding Magic Cookie.  If the Magic Cookie matches the host's cookie, then the host accepts the connection.&lt;br /&gt;
&lt;br /&gt;
==XHosts==&lt;br /&gt;
Another utility to help with security of the X Windowing system is the xhost tool.  This tool operates in two modes called plus(+) and minus (-).  Plus mode will&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
# [http://www.xfree86.org/4.4.0/xauth.1.html http://www.xfree86.org/4.4.0/xauth.1.html]&lt;br /&gt;
# [http://www.xfree86.org/current/xhost.1.html http://www.xfree86.org/current/xhost.1.html]&lt;br /&gt;
# [http://ptolemy.eecs.berkeley.edu/~cxh/sapub/Xsecurity.html http://ptolemy.eecs.berkeley.edu/~cxh/sapub/Xsecurity.html]&lt;br /&gt;
# [http://www.xfree86.org/current/Xsecurity.7.html http://www.xfree86.org/current/Xsecurity.7.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
* [http://www.xfree86.org/ http://www.xfree86.org/]&lt;br /&gt;
* [http://www.x.org/wiki/ http://www.x.org/wiki/]&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [[Applications of SSH]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-14T02:15:42Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* XAuth */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=Security=&lt;br /&gt;
There are several ways in which security is a major concern when using the X Windowing system.  These can concerns can be broken up into two major categories: interception of communications between the X client and X host, and having a malignant client connect to your host.  The communication security can be handled by tunneling the communication between the X host and X client through a more secure protocol such as ssh.  The malignant client concern can be handled by using tools distributed with the X Windowing system: XAuth and XHosts.&lt;br /&gt;
==Communication Security and Tunneling Through SSH==&lt;br /&gt;
Depending on how an X Client connects to an X Host, there can be some major security issues.  When used by itself through a non-secure connection, the X Windowing system will send all of it's data unencrypted across the network you are using.  Depending how many people have access to the network, this can be a huge security issue.  Everything from passwords to possibly confidential documents are sent essentially unencrypted across the network which allows anyone to view them. &lt;br /&gt;
&amp;lt;BR&amp;gt; One possible solution to this problem is to tunnel through a more secure communication medium, such as ssh.  By embedding X Window messages in SSH datagrams, the X Window messages will then be encrypted within the SSH message. To see more on tunneling, please see one of the following articles: [[Applications_of_SSH#SSH_Tunneling | Applications of SSH]], [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
==XAuth==&lt;br /&gt;
One utility to help with security which comes with the X Windowing system is xauth.  This tool operates works with MIT Magic Cookies.  The way it works is when you start up an X Windowing host, it will create a Magic Cookie which is just a hexidecimal string.  This cookie is stored in the file $HOME/.Xauthority  of the client machine.  This file contains a list of hosts, displays and magic cookies.  When the client connects to the host on a specific display, it sends the corresponding Magic Cookie.  If the Magic Cookie matches the host's cookie, then the host accepts the connection.&lt;br /&gt;
&lt;br /&gt;
==XHosts==&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
# [http://www.xfree86.org/4.4.0/xauth.1.html http://www.xfree86.org/4.4.0/xauth.1.html]&lt;br /&gt;
# [http://www.xfree86.org/current/xhost.1.html http://www.xfree86.org/current/xhost.1.html]&lt;br /&gt;
# [http://ptolemy.eecs.berkeley.edu/~cxh/sapub/Xsecurity.html http://ptolemy.eecs.berkeley.edu/~cxh/sapub/Xsecurity.html]&lt;br /&gt;
# [http://www.xfree86.org/current/Xsecurity.7.html http://www.xfree86.org/current/Xsecurity.7.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
* [http://www.xfree86.org/ http://www.xfree86.org/]&lt;br /&gt;
* [http://www.x.org/wiki/ http://www.x.org/wiki/]&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [[Applications of SSH]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-14T01:34:49Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* XAuth */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=Security=&lt;br /&gt;
There are several ways in which security is a major concern when using the X Windowing system.  These can concerns can be broken up into two major categories: interception of communications between the X client and X host, and having a malignant client connect to your host.  The communication security can be handled by tunneling the communication between the X host and X client through a more secure protocol such as ssh.  The malignant client concern can be handled by using tools distributed with the X Windowing system: XAuth and XHosts.&lt;br /&gt;
==Communication Security and Tunneling Through SSH==&lt;br /&gt;
Depending on how an X Client connects to an X Host, there can be some major security issues.  When used by itself through a non-secure connection, the X Windowing system will send all of it's data unencrypted across the network you are using.  Depending how many people have access to the network, this can be a huge security issue.  Everything from passwords to possibly confidential documents are sent essentially unencrypted across the network which allows anyone to view them. &lt;br /&gt;
&amp;lt;BR&amp;gt; One possible solution to this problem is to tunnel through a more secure communication medium, such as ssh.  By embedding X Window messages in SSH datagrams, the X Window messages will then be encrypted within the SSH message. To see more on tunneling, please see one of the following articles: [[Applications_of_SSH#SSH_Tunneling | Applications of SSH]], [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
==XAuth==&lt;br /&gt;
One utility to help with security which comes with the X Windowing system is xauth.  This tool operates works with MIT Magic Cookies.  The way it works is when you start up an X Windowing host, it will create a Magic Cookie which is just a hexidecimal string.  This cookie is stored in the&lt;br /&gt;
&lt;br /&gt;
==XHosts==&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
# [http://www.xfree86.org/4.4.0/xauth.1.html http://www.xfree86.org/4.4.0/xauth.1.html]&lt;br /&gt;
# [http://www.xfree86.org/current/xhost.1.html http://www.xfree86.org/current/xhost.1.html]&lt;br /&gt;
# [http://ptolemy.eecs.berkeley.edu/~cxh/sapub/Xsecurity.html http://ptolemy.eecs.berkeley.edu/~cxh/sapub/Xsecurity.html]&lt;br /&gt;
# [http://www.xfree86.org/current/Xsecurity.7.html http://www.xfree86.org/current/Xsecurity.7.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
* [http://www.xfree86.org/ http://www.xfree86.org/]&lt;br /&gt;
* [http://www.x.org/wiki/ http://www.x.org/wiki/]&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [[Applications of SSH]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-14T01:31:30Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=Security=&lt;br /&gt;
There are several ways in which security is a major concern when using the X Windowing system.  These can concerns can be broken up into two major categories: interception of communications between the X client and X host, and having a malignant client connect to your host.  The communication security can be handled by tunneling the communication between the X host and X client through a more secure protocol such as ssh.  The malignant client concern can be handled by using tools distributed with the X Windowing system: XAuth and XHosts.&lt;br /&gt;
==Communication Security and Tunneling Through SSH==&lt;br /&gt;
Depending on how an X Client connects to an X Host, there can be some major security issues.  When used by itself through a non-secure connection, the X Windowing system will send all of it's data unencrypted across the network you are using.  Depending how many people have access to the network, this can be a huge security issue.  Everything from passwords to possibly confidential documents are sent essentially unencrypted across the network which allows anyone to view them. &lt;br /&gt;
&amp;lt;BR&amp;gt; One possible solution to this problem is to tunnel through a more secure communication medium, such as ssh.  By embedding X Window messages in SSH datagrams, the X Window messages will then be encrypted within the SSH message. To see more on tunneling, please see one of the following articles: [[Applications_of_SSH#SSH_Tunneling | Applications of SSH]], [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
==XAuth==&lt;br /&gt;
&lt;br /&gt;
==XHosts==&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
# [http://www.xfree86.org/4.4.0/xauth.1.html http://www.xfree86.org/4.4.0/xauth.1.html]&lt;br /&gt;
# [http://www.xfree86.org/current/xhost.1.html http://www.xfree86.org/current/xhost.1.html]&lt;br /&gt;
# [http://ptolemy.eecs.berkeley.edu/~cxh/sapub/Xsecurity.html http://ptolemy.eecs.berkeley.edu/~cxh/sapub/Xsecurity.html]&lt;br /&gt;
# [http://www.xfree86.org/current/Xsecurity.7.html http://www.xfree86.org/current/Xsecurity.7.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
* [http://www.xfree86.org/ http://www.xfree86.org/]&lt;br /&gt;
* [http://www.x.org/wiki/ http://www.x.org/wiki/]&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [[Applications of SSH]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-14T01:31:10Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* External Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
====MIT  Magic-Cookie-1====&lt;br /&gt;
====XDM Authorization====&lt;br /&gt;
=Security=&lt;br /&gt;
There are several ways in which security is a major concern when using the X Windowing system.  These can concerns can be broken up into two major categories: interception of communications between the X client and X host, and having a malignant client connect to your host.  The communication security can be handled by tunneling the communication between the X host and X client through a more secure protocol such as ssh.  The malignant client concern can be handled by using tools distributed with the X Windowing system: XAuth and XHosts.&lt;br /&gt;
==Communication Security and Tunneling Through SSH==&lt;br /&gt;
Depending on how an X Client connects to an X Host, there can be some major security issues.  When used by itself through a non-secure connection, the X Windowing system will send all of it's data unencrypted across the network you are using.  Depending how many people have access to the network, this can be a huge security issue.  Everything from passwords to possibly confidential documents are sent essentially unencrypted across the network which allows anyone to view them. &lt;br /&gt;
&amp;lt;BR&amp;gt; One possible solution to this problem is to tunnel through a more secure communication medium, such as ssh.  By embedding X Window messages in SSH datagrams, the X Window messages will then be encrypted within the SSH message. To see more on tunneling, please see one of the following articles: [[Applications_of_SSH#SSH_Tunneling | Applications of SSH]], [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
==XAuth==&lt;br /&gt;
&lt;br /&gt;
==XHosts==&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
# [http://www.xfree86.org/4.4.0/xauth.1.html http://www.xfree86.org/4.4.0/xauth.1.html]&lt;br /&gt;
# [http://www.xfree86.org/current/xhost.1.html http://www.xfree86.org/current/xhost.1.html]&lt;br /&gt;
# [http://ptolemy.eecs.berkeley.edu/~cxh/sapub/Xsecurity.html http://ptolemy.eecs.berkeley.edu/~cxh/sapub/Xsecurity.html]&lt;br /&gt;
# [http://www.xfree86.org/current/Xsecurity.7.html http://www.xfree86.org/current/Xsecurity.7.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
* [http://www.xfree86.org/ http://www.xfree86.org/]&lt;br /&gt;
* [http://www.x.org/wiki/ http://www.x.org/wiki/]&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [[Applications of SSH]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-14T01:30:28Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* External Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
====MIT  Magic-Cookie-1====&lt;br /&gt;
====XDM Authorization====&lt;br /&gt;
=Security=&lt;br /&gt;
There are several ways in which security is a major concern when using the X Windowing system.  These can concerns can be broken up into two major categories: interception of communications between the X client and X host, and having a malignant client connect to your host.  The communication security can be handled by tunneling the communication between the X host and X client through a more secure protocol such as ssh.  The malignant client concern can be handled by using tools distributed with the X Windowing system: XAuth and XHosts.&lt;br /&gt;
==Communication Security and Tunneling Through SSH==&lt;br /&gt;
Depending on how an X Client connects to an X Host, there can be some major security issues.  When used by itself through a non-secure connection, the X Windowing system will send all of it's data unencrypted across the network you are using.  Depending how many people have access to the network, this can be a huge security issue.  Everything from passwords to possibly confidential documents are sent essentially unencrypted across the network which allows anyone to view them. &lt;br /&gt;
&amp;lt;BR&amp;gt; One possible solution to this problem is to tunnel through a more secure communication medium, such as ssh.  By embedding X Window messages in SSH datagrams, the X Window messages will then be encrypted within the SSH message. To see more on tunneling, please see one of the following articles: [[Applications_of_SSH#SSH_Tunneling | Applications of SSH]], [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
==XAuth==&lt;br /&gt;
&lt;br /&gt;
==XHosts==&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
# [http://www.xfree86.org/4.4.0/xauth.1.html http://www.xfree86.org/4.4.0/xauth.1.html]&lt;br /&gt;
# [http://www.xfree86.org/current/xhost.1.html http://www.xfree86.org/current/xhost.1.html]&lt;br /&gt;
# [http://ptolemy.eecs.berkeley.edu/~cxh/sapub/Xsecurity.html http://ptolemy.eecs.berkeley.edu/~cxh/sapub/Xsecurity.html]&lt;br /&gt;
# [http://www.xfree86.org/current/Xsecurity.7.html http://www.xfree86.org/current/Xsecurity.7.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
* [http://www.xfree86.org/ http://www.xfree86.org/]&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [[Applications of SSH]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-14T01:29:40Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
====MIT  Magic-Cookie-1====&lt;br /&gt;
====XDM Authorization====&lt;br /&gt;
=Security=&lt;br /&gt;
There are several ways in which security is a major concern when using the X Windowing system.  These can concerns can be broken up into two major categories: interception of communications between the X client and X host, and having a malignant client connect to your host.  The communication security can be handled by tunneling the communication between the X host and X client through a more secure protocol such as ssh.  The malignant client concern can be handled by using tools distributed with the X Windowing system: XAuth and XHosts.&lt;br /&gt;
==Communication Security and Tunneling Through SSH==&lt;br /&gt;
Depending on how an X Client connects to an X Host, there can be some major security issues.  When used by itself through a non-secure connection, the X Windowing system will send all of it's data unencrypted across the network you are using.  Depending how many people have access to the network, this can be a huge security issue.  Everything from passwords to possibly confidential documents are sent essentially unencrypted across the network which allows anyone to view them. &lt;br /&gt;
&amp;lt;BR&amp;gt; One possible solution to this problem is to tunnel through a more secure communication medium, such as ssh.  By embedding X Window messages in SSH datagrams, the X Window messages will then be encrypted within the SSH message. To see more on tunneling, please see one of the following articles: [[Applications_of_SSH#SSH_Tunneling | Applications of SSH]], [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
==XAuth==&lt;br /&gt;
&lt;br /&gt;
==XHosts==&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
# [http://www.xfree86.org/4.4.0/xauth.1.html http://www.xfree86.org/4.4.0/xauth.1.html]&lt;br /&gt;
# [http://www.xfree86.org/current/xhost.1.html http://www.xfree86.org/current/xhost.1.html]&lt;br /&gt;
# [http://ptolemy.eecs.berkeley.edu/~cxh/sapub/Xsecurity.html http://ptolemy.eecs.berkeley.edu/~cxh/sapub/Xsecurity.html]&lt;br /&gt;
# [http://www.xfree86.org/current/Xsecurity.7.html http://www.xfree86.org/current/Xsecurity.7.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [[Applications of SSH]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-14T01:28:57Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
====MIT  Magic-Cookie-1====&lt;br /&gt;
====XDM Authorization====&lt;br /&gt;
=Security=&lt;br /&gt;
There are several ways in which security is a major concern when using the X Windowing system.  These can concerns can be broken up into two major categories: interception of communications between the X client and X host, and having a malignant client connect to your host.  The communication security can be handled by tunneling the communication between the X host and X client through a more secure protocol such as ssh.  The malignant client concern can be handled by using tools distributed with the X Windowing system: XAuth and XHosts.&lt;br /&gt;
==Communication Security and Tunneling Through SSH==&lt;br /&gt;
Depending on how an X Client connects to an X Host, there can be some major security issues.  When used by itself through a non-secure connection, the X Windowing system will send all of it's data unencrypted across the network you are using.  Depending how many people have access to the network, this can be a huge security issue.  Everything from passwords to possibly confidential documents are sent essentially unencrypted across the network which allows anyone to view them. &lt;br /&gt;
&amp;lt;BR&amp;gt; One possible solution to this problem is to tunnel through a more secure communication medium, such as ssh.  By embedding X Window messages in SSH datagrams, the X Window messages will then be encrypted within the SSH message. To see more on tunneling, please see one of the following articles: [[Applications_of_SSH#SSH_Tunneling | Applications of SSH]], [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
==XAuth==&lt;br /&gt;
&lt;br /&gt;
==XHosts==&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
# [http://www.xfree86.org/4.4.0/xauth.1.html]&lt;br /&gt;
# [http://www.xfree86.org/current/xhost.1.html]&lt;br /&gt;
# [http://ptolemy.eecs.berkeley.edu/~cxh/sapub/Xsecurity.html]&lt;br /&gt;
# [http://www.xfree86.org/current/Xsecurity.7.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [[Applications of SSH]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-14T01:15:16Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* Communication Security and Tunneling Through SSH */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
====MIT  Magic-Cookie-1====&lt;br /&gt;
====XDM Authorization====&lt;br /&gt;
=Security=&lt;br /&gt;
There are several ways in which security is a major concern when using the X Windowing system.  These can concerns can be broken up into two major categories: interception of communications between the X client and X host, and having a malignant client connect to your host.  The communication security can be handled by tunneling the communication between the X host and X client through a more secure protocol such as ssh.  The malignant client concern can be handled by using tools distributed with the X Windowing system: XAuth and XHosts.&lt;br /&gt;
==Communication Security and Tunneling Through SSH==&lt;br /&gt;
Depending on how an X Client connects to an X Host, there can be some major security issues.  When used by itself through a non-secure connection, the X Windowing system will send all of it's data unencrypted across the network you are using.  Depending how many people have access to the network, this can be a huge security issue.  Everything from passwords to possibly confidential documents are sent essentially unencrypted across the network which allows anyone to view them. &lt;br /&gt;
&amp;lt;BR&amp;gt; One possible solution to this problem is to tunnel through a more secure communication medium, such as ssh.  By embedding X Window messages in SSH datagrams, the X Window messages will then be encrypted within the SSH message. To see more on tunneling, please see one of the following articles: [[Applications_of_SSH#SSH_Tunneling | Applications of SSH]], [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
==XAuth==&lt;br /&gt;
&lt;br /&gt;
==XHosts==&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [[Applications of SSH]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-14T01:14:02Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* Communication Security and Tunneling Through SSH */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
====MIT  Magic-Cookie-1====&lt;br /&gt;
====XDM Authorization====&lt;br /&gt;
=Security=&lt;br /&gt;
There are several ways in which security is a major concern when using the X Windowing system.  These can concerns can be broken up into two major categories: interception of communications between the X client and X host, and having a malignant client connect to your host.  The communication security can be handled by tunneling the communication between the X host and X client through a more secure protocol such as ssh.  The malignant client concern can be handled by using tools distributed with the X Windowing system: XAuth and XHosts.&lt;br /&gt;
==Communication Security and Tunneling Through SSH==&lt;br /&gt;
Depending on how an X Client connects to an X Host, there can be some major security issues.  When used by itself through a non-secure connection, the X Windowing system will send all of it's data unencrypted across the network you are using.  Depending how many people have access to the network, this can be a huge security issue.  Everything from passwords to possibly confidential documents are sent essentially unencrypted across the network which allows anyone to view them. &lt;br /&gt;
&amp;lt;BR&amp;gt; One possible solution to this problem is to tunnel through a more secure communication medium, such as ssh.  To see more on tunneling, please see one of the following articles: [[Applications_of_SSH#SSH_Tunneling | Applications of SSH]], [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
==XAuth==&lt;br /&gt;
&lt;br /&gt;
==XHosts==&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [[Applications of SSH]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-14T01:13:51Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* Communication Security and Tunneling Through SSH */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
====MIT  Magic-Cookie-1====&lt;br /&gt;
====XDM Authorization====&lt;br /&gt;
=Security=&lt;br /&gt;
There are several ways in which security is a major concern when using the X Windowing system.  These can concerns can be broken up into two major categories: interception of communications between the X client and X host, and having a malignant client connect to your host.  The communication security can be handled by tunneling the communication between the X host and X client through a more secure protocol such as ssh.  The malignant client concern can be handled by using tools distributed with the X Windowing system: XAuth and XHosts.&lt;br /&gt;
==Communication Security and Tunneling Through SSH==&lt;br /&gt;
&amp;lt;P&amp;gt; Depending on how an X Client connects to an X Host, there can be some major security issues.  When used by itself through a non-secure connection, the X Windowing system will send all of it's data unencrypted across the network you are using.  Depending how many people have access to the network, this can be a huge security issue.  Everything from passwords to possibly confidential documents are sent essentially unencrypted across the network which allows anyone to view them. &lt;br /&gt;
&amp;lt;P&amp;gt; One possible solution to this problem is to tunnel through a more secure communication medium, such as ssh.  To see more on tunneling, please see one of the following articles: [[Applications_of_SSH#SSH_Tunneling | Applications of SSH]], [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
==XAuth==&lt;br /&gt;
&lt;br /&gt;
==XHosts==&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [[Applications of SSH]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-14T01:13:18Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* Communication Security and Tunneling Through SSH */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
====MIT  Magic-Cookie-1====&lt;br /&gt;
====XDM Authorization====&lt;br /&gt;
=Security=&lt;br /&gt;
There are several ways in which security is a major concern when using the X Windowing system.  These can concerns can be broken up into two major categories: interception of communications between the X client and X host, and having a malignant client connect to your host.  The communication security can be handled by tunneling the communication between the X host and X client through a more secure protocol such as ssh.  The malignant client concern can be handled by using tools distributed with the X Windowing system: XAuth and XHosts.&lt;br /&gt;
==Communication Security and Tunneling Through SSH==&lt;br /&gt;
&amp;lt;P&amp;gt;Depending on how an X Client connects to an X Host, there can be some major security issues.  When used by itself through a non-secure connection, the X Windowing system will send all of it's data unencrypted across the network you are using.  Depending how many people have access to the network, this can be a huge security issue.  Everything from passwords to possibly confidential documents are sent essentially unencrypted across the network which allows anyone to view them. &lt;br /&gt;
&amp;lt;P&amp;gt;One possible solution to this problem is to tunnel through a more secure communication medium, such as ssh.  To see more on tunneling, please see one of the following articles: [[Applications_of_SSH#SSH_Tunneling | Applications of SSH]], [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
==XAuth==&lt;br /&gt;
&lt;br /&gt;
==XHosts==&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [[Applications of SSH]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-14T01:12:53Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* Communication Security and Tunneling Through SSH */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
====MIT  Magic-Cookie-1====&lt;br /&gt;
====XDM Authorization====&lt;br /&gt;
=Security=&lt;br /&gt;
There are several ways in which security is a major concern when using the X Windowing system.  These can concerns can be broken up into two major categories: interception of communications between the X client and X host, and having a malignant client connect to your host.  The communication security can be handled by tunneling the communication between the X host and X client through a more secure protocol such as ssh.  The malignant client concern can be handled by using tools distributed with the X Windowing system: XAuth and XHosts.&lt;br /&gt;
==Communication Security and Tunneling Through SSH==&lt;br /&gt;
&amp;lt;P&amp;gt;Depending on how an X Client connects to an X Host, there can be some major security issues.  When used by itself through a non-secure connection, the X Windowing system will send all of it's data unencrypted across the network you are using.  Depending how many people have access to the network, this can be a huge security issue.  Everything from passwords to possibly confidential documents are sent essentially unencrypted across the network which allows anyone to view them. &lt;br /&gt;
&amp;lt;P&amp;gt;One possible solution to this problem is to tunnel through a more secure communication medium, such as ssh.  To see more on tunneling, please see one of the following articles: [[Applications of SSH | Applications_of_SSH#SSH_Tunneling]], [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
==XAuth==&lt;br /&gt;
&lt;br /&gt;
==XHosts==&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [[Applications of SSH]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-14T01:12:38Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* Communication Security and Tunneling Through SSH */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
====MIT  Magic-Cookie-1====&lt;br /&gt;
====XDM Authorization====&lt;br /&gt;
=Security=&lt;br /&gt;
There are several ways in which security is a major concern when using the X Windowing system.  These can concerns can be broken up into two major categories: interception of communications between the X client and X host, and having a malignant client connect to your host.  The communication security can be handled by tunneling the communication between the X host and X client through a more secure protocol such as ssh.  The malignant client concern can be handled by using tools distributed with the X Windowing system: XAuth and XHosts.&lt;br /&gt;
==Communication Security and Tunneling Through SSH==&lt;br /&gt;
&amp;lt;P&amp;gt;Depending on how an X Client connects to an X Host, there can be some major security issues.  When used by itself through a non-secure connection, the X Windowing system will send all of it's data unencrypted across the network you are using.  Depending how many people have access to the network, this can be a huge security issue.  Everything from passwords to possibly confidential documents are sent essentially unencrypted across the network which allows anyone to view them. &lt;br /&gt;
&amp;lt;P&amp;gt;One possible solution to this problem is to tunnel through a more secure communication medium, such as ssh.  To see more on tunneling, please see one of the following articles: [[Applications of SSH Applications_of_SSH#SSH_Tunneling]], [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
==XAuth==&lt;br /&gt;
&lt;br /&gt;
==XHosts==&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [[Applications of SSH]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-14T01:12:08Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* Communication Security and Tunneling Through SSH */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
====MIT  Magic-Cookie-1====&lt;br /&gt;
====XDM Authorization====&lt;br /&gt;
=Security=&lt;br /&gt;
There are several ways in which security is a major concern when using the X Windowing system.  These can concerns can be broken up into two major categories: interception of communications between the X client and X host, and having a malignant client connect to your host.  The communication security can be handled by tunneling the communication between the X host and X client through a more secure protocol such as ssh.  The malignant client concern can be handled by using tools distributed with the X Windowing system: XAuth and XHosts.&lt;br /&gt;
==Communication Security and Tunneling Through SSH==&lt;br /&gt;
&amp;lt;P&amp;gt;Depending on how an X Client connects to an X Host, there can be some major security issues.  When used by itself through a non-secure connection, the X Windowing system will send all of it's data unencrypted across the network you are using.  Depending how many people have access to the network, this can be a huge security issue.  Everything from passwords to possibly confidential documents are sent essentially unencrypted across the network which allows anyone to view them. &lt;br /&gt;
&amp;lt;P&amp;gt;One possible solution to this problem is to tunnel through a more secure communication medium, such as ssh.  To see more on tunneling, please see one of the following articles: [[Applications_of_SSH#SSH_Tunneling]], [[SSH Tunneling]&lt;br /&gt;
&lt;br /&gt;
==XAuth==&lt;br /&gt;
&lt;br /&gt;
==XHosts==&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [[Applications of SSH]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T23:48:29Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* Security */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
====MIT  Magic-Cookie-1====&lt;br /&gt;
====XDM Authorization====&lt;br /&gt;
=Security=&lt;br /&gt;
There are several ways in which security is a major concern when using the X Windowing system.  These can concerns can be broken up into two major categories: interception of communications between the X client and X host, and having a malignant client connect to your host.  The communication security can be handled by tunneling the communication between the X host and X client through a more secure protocol such as ssh.  The malignant client concern can be handled by using tools distributed with the X Windowing system: XAuth and XHosts.&lt;br /&gt;
==Communication Security and Tunneling Through SSH==&lt;br /&gt;
&lt;br /&gt;
==XAuth==&lt;br /&gt;
&lt;br /&gt;
==XHosts==&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [[Applications of SSH]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T23:43:42Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* Communication Security and Tunneling through SSH */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
====MIT  Magic-Cookie-1====&lt;br /&gt;
====XDM Authorization====&lt;br /&gt;
=Security=&lt;br /&gt;
==Communication Security and Tunneling Through SSH==&lt;br /&gt;
&lt;br /&gt;
==XAuth==&lt;br /&gt;
==XHosts==&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [[Applications of SSH]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T23:42:12Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
====MIT  Magic-Cookie-1====&lt;br /&gt;
====XDM Authorization====&lt;br /&gt;
=Security=&lt;br /&gt;
==Communication Security and Tunneling through SSH==&lt;br /&gt;
==XAuth==&lt;br /&gt;
==XHosts==&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [[Applications of SSH]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T23:40:28Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
====MIT  Magic-Cookie-1====&lt;br /&gt;
====XDM Authorization====&lt;br /&gt;
=Security=&lt;br /&gt;
==Communication Security and Tunneling through SSH==&lt;br /&gt;
==XAuth==&lt;br /&gt;
==XHosts==&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
[Applications of SSH]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T23:20:22Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
====MIT  Magic-Cookie-1====&lt;br /&gt;
====XDM Authorization====&lt;br /&gt;
=Security=&lt;br /&gt;
==Communication Security and Tunneling through SSH==&lt;br /&gt;
==XAuth==&lt;br /&gt;
==XHosts==&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T23:18:38Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
----&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.javvin.com/protocolXWindow.html http://www.javvin.com/protocolXWindow.html]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T23:17:56Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
----&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.x.org/wiki/XSessionManagementProtocol http://www.x.org/wiki/XSessionManagementProtocol]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T23:17:42Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
----&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
----&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.x.org/wiki/XSessionManagementProtocol http://www.x.org/wiki/XSessionManagementProtocol]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T23:17:06Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
The X Windowing system is a windowing system which has been around since the mid-80’s.  Being designed mainly for a UNIX environment, the X Windowing System lends itself to work in a client/server environment.  This means that applications themselves may reside on a foreign host machine while the display is being taken care of by a local client.  When X was first developed, CPU power was expensive.  It was a lot more common for people to be working at client terminals logged into a powerful host where they did their work.  X allowed them to run a GUI on their local machine while still taking advantage of the processing power of the server machine.  This meant that the server could “focus” on processing while their local machines would take care of the graphical part of the application.&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= How to use the X Windowing System =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
----&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.x.org/wiki/XSessionManagementProtocol http://www.x.org/wiki/XSessionManagementProtocol]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T23:02:16Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* Communication Protocols */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= How to use the X Windowing System =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
----&lt;br /&gt;
=== Authorization Protocols ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.x.org/wiki/XSessionManagementProtocol http://www.x.org/wiki/XSessionManagementProtocol]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T23:01:02Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= How to use the X Windowing System =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# [http://www.x.org/wiki/XSessionManagementProtocol http://www.x.org/wiki/XSessionManagementProtocol]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T22:59:22Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* Communication Protocols&amp;lt;ref&amp;gt;Gould, Ted (2008). X Session Management Protocol. Retrieved April 3, 2008, from X.org Web site: http://www.x.org/wiki/XSessionManagementProtocol?highlight=%28protocol%29&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= How to use the X Windowing System =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T22:58:18Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= How to use the X Windowing System =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
&lt;br /&gt;
== Communication Protocols&amp;lt;ref&amp;gt;Gould, Ted (2008). X Session Management Protocol. Retrieved April 3, 2008, from X.org Web site: http://www.x.org/wiki/XSessionManagementProtocol?highlight=%28protocol%29#head-3468bf993138d6615cde00017beb573b087b3448&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T22:49:14Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* Definitions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
*'''Host''': The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
*'''Client''': The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
= How to use the X Windowing System =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T22:48:54Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
= What is the X Windowing System? =&lt;br /&gt;
&lt;br /&gt;
=Definitions=&lt;br /&gt;
	Host: The machine which is displaying the X Windowing application. The host must be listening for client X Windowing application requests.&lt;br /&gt;
	Client: The machine which is running the logic of the X Windowing application.  The client must send a request to the host in order to display an X Windowing application on it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= How to use the X Windowing System =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T22:48:15Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The X Windowing System’s main purpose is to provide an interface between a client application (such as a desktop environment), which can take advantage of the client CPU’s power, and a host, which takes advantage of the host’s native system’s display hardware.  It provides basic functionality like… in a standardized API which allows developers to relatively easily create GUI applications.  In short, the X Windowing System will run all the logic behind an application on one client machine while displaying the results on and poling for input from another host machine.  This leads to some major security concerns about the communications between the client and host themselves and also how to run an X Windowing host in such a way that does not open a huge security hole in your system. Today, the client machine can be, and often is, the same machine as the host machine.  However, the focus of this article will be on the networking side of the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
== What is the X Windowing System? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to use the X Windowing System ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T22:47:52Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is the X Windowing System? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to use the X Windowing System ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T22:47:13Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is the X Windowing System? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to use the X Windowing System ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Designing an X Window Application===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 18:47, 13 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T22:43:55Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* Basic Protocols */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is the X Windowing System? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to use the X Windowing System ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Designing an X Window Application===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]]&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T22:43:28Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* Communication Protocols */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is the X Windowing System? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to use the X Windowing System ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
[[Image:Protocols.GIF|frame|left|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Designing an X Window Application===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]]&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T22:43:10Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* Communication Protocols */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is the X Windowing System? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to use the X Windowing System ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
[[Image:Protocols.GIF|frame|left|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Designing an X Window Application===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]]&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T22:42:59Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* Communication Protocols */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is the X Windowing System? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to use the X Windowing System ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Designing an X Window Application===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]]&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T22:42:42Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* Basic Protocols */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is the X Windowing System? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to use the X Windowing System ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
----&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
----&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Designing an X Window Application===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]]&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T22:41:16Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is the X Windowing System? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to use the X Windowing System ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
[[Image:Protocols.GIF|frame|right|Figure 1: Communication Between an X Host and X Client]]&lt;br /&gt;
&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Designing an X Window Application===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]]&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T22:39:50Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== What is the X Windowing System? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to use the X Windowing System ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Client Server Relationship =&lt;br /&gt;
&lt;br /&gt;
== Communication Protocols ==&lt;br /&gt;
[[Image:Protocols.GIF]]&lt;br /&gt;
&lt;br /&gt;
The basic idea behind the communication protocols between clients running the logic of the application and hosts displaying the application is to provide a way for the client to send information about what needs to be displayed on the host to the host while the host will send any input from the user, such as mouse clicks and keyboard strokes, back to the client for the client to interpret.  &lt;br /&gt;
=== Basic Protocols ===&lt;br /&gt;
* The X client makes a request, which is 4 bytes long, for a certain event to happen on the host.  This event can be anything from creating a window to changing what’s being displayed in a window to closing the window.  In order to make this process more efficient, there is no response sent from the host to the client saying that the request has been successfully executed.  It is left to the network layer, which can be unreliable, and is assumed to get the packets to the host.  Some updates will not make it from the client to the host and hence there can be some strange screen artifacts which occur as some requests are processed and others aren’t.&lt;br /&gt;
* There are some requests for which the X host must respond to the client, also in multiples of 4 bytes, with information.   When an expected event occurs, such as a mouse click or key stroke, the X host must send information about that event back to the client.  Again, in order to keep network traffic to a minimum, the X host will only send information back to the client about expected events.  However, the expected event which occurred may have been on a different part of the X Windowing hosts screen.  This can lead to some major security breaches which the user of the X Windowing system could be unaware of.  For example, if the user is expected to enter a password in one application that’s running on the user’s host, the keystrokes of that password could be “intercepted” by another application running on the host which would then be sent back to whatever client machine is running the other application.&lt;br /&gt;
* There is one last message which is sent between X clients and X hosts.  If there is any error on the X host, there needs to be a way for the host to tell the client that the error occurred.  This is taken care of by the error response message.  This message is the same size as a normal event response message, but is sent to the error handling routine of the X client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Designing an X Window Application===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]]&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/File:Protocols.GIF</id>
		<title>File:Protocols.GIF</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/File:Protocols.GIF"/>
				<updated>2008-04-13T22:37:48Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System</id>
		<title>The X Windowing System</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/The_X_Windowing_System"/>
				<updated>2008-04-13T18:28:03Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;New page:   == What is the X Windowing System? ==   == How to use the X Windowing System ==   == Client Server Relationship ==  ---- === Protocols ===  ---- === Designing an X Window Application=== ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== What is the X Windowing System? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to use the X Windowing System ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Client Server Relationship ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Protocols ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Designing an X Window Application===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]]&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Payment_Card_Industry_Data_Security_Standard</id>
		<title>Payment Card Industry Data Security Standard</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Payment_Card_Industry_Data_Security_Standard"/>
				<updated>2007-12-06T18:18:38Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* T.J. Maxx */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Payment Card Industry Data Security Standard (PCI DSS) is a security document created by the Payment Card Industry Security Standards Council (PCI SSC) in order to unify the security requirements of the Payment Card Industry.  In order to tie this in with what was taught in [http://www.cas.mcmaster.ca/~wmfarmer/CS-3IS3-07 Comp Sci 3IS3] (taught at [http://www.mcmaster.ca McMaster University]), the PCI DSS will be presented as an Industry Wide Security Policy and as such will be evaluated by tracing its development through the Security Life Cycle.  The first step in the Security Life Cycle is to identify threats.  The main threat to the PCI is that of Card Holder data being stolen.  The next step is Policy Creation.  In order to create one coherent document for Merchants to follow, the five major brands of the PCI (Visa, Mastercard, American Express, Discover and JCB) formed the Payment Card Industry Security Standards Council (PCI SSC).  Next comes the requirements specifications.  The PCI SSC created a detailed document of 12 major requirements for Merchants and any company which deals with Card Holder data to comply with.  These requirements focused on the ability of the Merchant to protect Card Holder data, in both electronic and physical form.  The next phase includes the design and implementation of a security system to enforce the afore stated requirements.  For a company wide security policy, this is possible.  However, for an industry wide security policy it does not make sense to specify implementation because of varying Merchant sizes.  Finally comes the Operation and Maintenance phase.  The operation of each Merchants security system depends on their implementation of the requirements stated in the PCI DSS.  These operations can be assured to be PCI DSS compliant through the use of QSA's and ASV's.  The important part of this phase is the Maintenance part.  The PCI DSS has gone through a few updates since it's creation as direct results of problems with the first version of it or new security issues that may have arisen.&lt;br /&gt;
&lt;br /&gt;
== Terms Used In This Article ==&lt;br /&gt;
* '''PCI''' ('''P'''ayment '''C'''ard '''I'''ndustry): A Payment Card is any &amp;quot;card&amp;quot; form of payment.  This can cover everything from credit cards to debit cards.  The Payment Card Industry consists of all the companies which make up the many different brands of payment cards in use today.  (ie Visa, Mastercard, ect..)&lt;br /&gt;
* '''PCI SSC''' ('''P'''ayment '''C'''ard '''I'''ndustry '''S'''ecurity '''S'''tandards '''C'''ouncil): A council made up of Visa, Mastercard, American Express, Discover and JCB (Japan Credit Bureau) created in order to align their individual security goals into one document - the PCI DSS.&lt;br /&gt;
* '''PCI DSS''' ('''P'''ayment '''C'''ard '''I'''ndustry '''D'''ata '''S'''ecurity '''S'''tandard): The document created by the PCI SSC in order to align each companies security goals.&lt;br /&gt;
* '''Card Holder''': Any customer of a Payment Card company.&lt;br /&gt;
* '''Merchant''': Any company which accepts Payment Cards as a form of payment. The definition also includes any other companies which may deal with Card Holder data without necessarily dealing directly with the Card Holder.&lt;br /&gt;
&lt;br /&gt;
== What is a Security Policy? ==&lt;br /&gt;
A Security Policy is a statement that partitions the states of a system into sets of authorized, or secure, states and a set of unauthorized, or nonsecure, states. &amp;lt;SUP&amp;gt;[ [[Payment Card Industry Data Security Standard #References|1]] ]&amp;lt;/SUP&amp;gt;  A security policy is the bases on which all the rest of a companies security mechanisms are based on.  Obviously, having a good company wide security policy is important.  The next logical step is to incorporate an industry wide security policy.  The Payment Card Industry Data Security Standard could be viewed as an example of an industry wide security policy.&lt;br /&gt;
&lt;br /&gt;
== Security Life Cycle ==&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Image:SecurityLifyCycle.GIF|frame|right|Figure 1: The Security Life Cycle&amp;lt;SUP&amp;gt;[1]&amp;lt;/SUP&amp;gt;]]&lt;br /&gt;
The Security Life Cycle consists of the following phases: Threats, Policy, Specification, Design, Implementation and Operation and Maintenance (See Figure 1).  As you can see, the security life cycle relies heavily upon later phases giving input to previous phases so that they can be updated.  This keeps the security system up to date and hence keeps what the security system is protecting more secure too.&lt;br /&gt;
----&lt;br /&gt;
=== Identify Threats ===&lt;br /&gt;
&amp;lt;P&amp;gt;The main threat to the Payment Card Industry as a whole is more of a threat to the Card Holders than the industry itself.  The Card Holders are taking a chance every time they use their credit cards to make a purchase.  This threat is not only present when purchasing online, but also when purchasing in stores (or at the &amp;quot;point of purchase&amp;quot;).  The threat originates from a lack of industry wide standards on how card holder information should be stored, processed or transmitted.&amp;lt;/P&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;P&amp;gt;This security threat directly affects the Payment Card Industry because if cardholders don't trust that their information is secure, then they will not use their credit cards and hence the payment card vendors loose business.  This is why the Payment Card Industry is moving forward with their industry wide standard for security, the Payment Card Industry Data Security Standard.&amp;lt;/P&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Image:PCICouncil.JPG|frame|right|Figure 2: Formation of the PCI SSC]]&lt;br /&gt;
----&lt;br /&gt;
=== Policy Creation===&lt;br /&gt;
&amp;lt;P&amp;gt;Before December 14th 2004, the 5 major Payment Card companies (Visa, Mastercard, American Express, Discover and JCB (Japan Credit Bureau)) each had their own set of Information Security Standards.  This meant that retailers had 5 different security policies to comply with. After December 14th 2004, these 5 brands of cards collaborated to create the Payment Card Industry Security Standards Council (PCI SSC).  The purpose of this council is to align the goals of each of the Payment Card companies in an industry wide security policy for merchants to follow.&amp;lt;/P&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=== Requirements Specifications ===&lt;br /&gt;
An overview of the list of requirements needed to maintain Payment Card Industry Data Security Standard (PCI DSS) compliance is available here [https://www.pcisecuritystandards.org/tech/index.htm About the PCI Data Security Standard (PCI DSS)]. The full list of requirements is available here: [https://www.pcisecuritystandards.org/tech/download_the_pci_dss.htm Download the PCI DSS].  Below is the summarized list and an explanation of what each item means.  There are 12 major requirements which can be broken up into 6 categories.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Build and Maintain a Secure Network''&amp;lt;BR&amp;gt;&lt;br /&gt;
1.)Install and maintain a firewall configuration to protect cardholders' data&amp;lt;BR&amp;gt;&lt;br /&gt;
2.)Do not use vendor-supplied defaults for system password and other security parameters&amp;lt;BR&amp;gt;&lt;br /&gt;
* This set of requirements is meant to keep any network of computers which contain Card Holder information in a secure state&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Protect Card Holder Data''&amp;lt;BR&amp;gt;&lt;br /&gt;
3.)Protect stored Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to protect the card holder data while it is stored on merchant computers&amp;lt;BR&amp;gt;&lt;br /&gt;
4.)Encrypt transmission of Card Holder data across open, public networks&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to protect Card Holder data when it might be necessary to transmit it across a public network (ie when contacting the Payment Card server)&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Maintain a Vulnerability Management Program''&amp;lt;BR&amp;gt;&lt;br /&gt;
5.)Use and regularly update anti-virus software&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that all merchants do take advantage of some form of anti-virus software.&amp;lt;BR&amp;gt;&lt;br /&gt;
6.)Develop and maintain secure systems and applications&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to put security as a priority during the development of software. This is an important requirement because many times when software is being designed, security is tacked on as an afterthought.  By at least making developers aware of security as being a requirement of their software, this ensures better quality of any security mechanisms built into the software.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Implement Strong Access Control Measures''&amp;lt;BR&amp;gt;&lt;br /&gt;
7.)Restrict access to Card Holder data by business need-to-know&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that only people who need to know about Card Holder data have access to it.  This is similar to the principle of least privilege.  &amp;lt;BR&amp;gt;&lt;br /&gt;
8.)Assign a unique ID to each person with computer access&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to add a level of accountability to all users on the system.  If each user has their own unique ID on the merchant's system, then actions can be tracked on linked to the person who did them.&amp;lt;BR&amp;gt;&lt;br /&gt;
9.)Restrict physical access to Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to extend the coverage of the PCI DSS to any form of Card Holder data which may not be on a computer.  Hence, the PCI DSS is extended to cover not only digital information but also physical copies of the information.  However, this does not prevent the threat of customer data being stolen entirely.  There is nothing to prevent an employee from copying down information with a pencil and paper.  Though this is a problem, it is partially alleviated by requirement 7: Restrict access to Card Holder data by business need-to-know.  If only a small number of employees can access the Card Holder data, then it is much easier to track down who may have stolen Card Holder data if there is a security breech from the inside.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Regularly Monitor and Test Networks''&amp;lt;BR&amp;gt;&lt;br /&gt;
10.) Track and monitor all access to network resources and Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is designed to catch any unauthorized accesses to Card Holder data.  If an anomaly is detected, then the system should be able to detect it and steps should be taken to fix the problem&amp;lt;BR&amp;gt;&lt;br /&gt;
11.) Regularly test security systems and processes&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that merchants don't just set and forget their security systems.  It reminds them that security is a full time job and must constantly be maintained.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
''Maintain an Information Security Policy''&amp;lt;BR&amp;gt;&lt;br /&gt;
12.) Maintain a policy that addresses information security&amp;lt;BR&amp;gt;&lt;br /&gt;
* Though this may seem a bit redundant, this is an important requirement.  It means that every merchant that deals with Cardholder Data must have their own security policy as well in order to protect Card Holder data.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Design/Implementation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;P&amp;gt;There is no design or implementation specified in the PCI DSS.  This is because the application of this security policy is so broad that it is impossible to have one design that will work for every company.  For example Soney, which may handle millions of transactions a year, will need a different implementation than a small &amp;quot;mom and pop&amp;quot; company, who may handle only a few hundred transactions a year.  However, requirements must still be met to some degree depending on the volume of Payment Card transactions which occur per given merchant. This makes the PCI DSS sound rather weak.  However, there is a way which the Payment Card Industry Security Standards Council can keep track of whether or not the requirements are being met.  This is through the use of QSA's and ASV's.&amp;lt;/P&amp;gt;&lt;br /&gt;
*[https://www.pcisecuritystandards.org/programs/qsa_program.htm Qualified Security Assessors (QSA's)] are companies who have been approved by the PCI Security Standards Council to assess the compliance of merchants to the PCI DSS.  The way the PCI Security Standards Council does this is through a certification program.  This requires not only the company to be certified, but also all of it's employees to be certified on a yearly bases.&lt;br /&gt;
*[https://www.pcisecuritystandards.org/programs/asv_program.htm Approved Scanning Vendors (ASV's)] are companies who are approved by the PCI Security Standards Council to assess merchants' networks for security vulnerabilities.  They accomplish this by simulating both normal and abnormal processes on the merchants networks.  Again, ASV's must also be certified by the PCI Security Standards Council on a yearly basis.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Operation and Maintenance ===&lt;br /&gt;
The final step of the Security Life Cycle is Operation and Maintenance.  Though this is the final step, it is by far not the least and the life cycle does not end here.  This step requires that any time a security breach is detected, steps must be taken to improve the security system.  The PCI DSS has definately entered this phase.  There are two examples of such maintenance and updating occuring in the PCI DSS:&lt;br /&gt;
* Version 1.1&lt;br /&gt;
* TJ Max&lt;br /&gt;
&lt;br /&gt;
====Version 1.1====&lt;br /&gt;
Version 1.1 of the PCI DSS was releases on September 2006.  This was only a year and a half after the release of the version 1.0 of the PCI DSS, which is pretty fast considering the PCI DSS is meant to be a security wide standard. Version 1.1 clarified many of the requirements and wording of Version 1.0 and also included suggestions on how to achieve compliance.  A full summary of the changes between PCI DSS Version 1.1 and PCI DSS Version 1.0 are available[[http://www.procheckup.com/PDFs/ProCheckUp_PCIDSS_SummaryOfChanges.pdf|here]].&lt;br /&gt;
&lt;br /&gt;
====T.J. Maxx====&lt;br /&gt;
In Mid-December of 2006, the company computer systems were compromised and customer data was stolen.  Everything from credit card numbers to street addresses were stolen from 45.7 million customers&amp;lt;SUP&amp;gt;[3]&amp;lt;/SUP&amp;gt;.  The attack did not come from the internet, but rather from an inadequate secure wireless network.  As you can see from the screen shot of the [http://www.tjmaxx.com/index.asp  T.J.Maxx website] figure 3, this even it still affecting the company today, December of 2007.  The highlighted link links to an explanation to the customers about what happened, why it happened and what steps are being taken to fix the problem.  &lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
As a direct result of this, the PCI DSS was updated to included better guidelines about wireless networks. Specifically, section 4.1.1 added specifications about implementing Wireless Encryption Protocol Correctly and provided better guidelines for key rotation. For Specifics, see https://www.pcisecuritystandards.org/pdfs/pci_dss_v1-1.pdf.&lt;br /&gt;
[[Image:TJMaxxCustAlert.jpg|frame|center|Figure 3: Notice to T.J.Maxx customers]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# Bishop, Matt. ''Introduction to Computer Security''. Boston: Addison-Wesley, 2006.&lt;br /&gt;
# (2007). About the PCI DSS - PCI Security Standards Council. Retrieved December 2, 2007, Web site: https://www.pcisecuritystandards.org/tech/index.htm &lt;br /&gt;
# T.J. Maxx. (2007). In ''Wikipedia'' [Web]. Retrieved December 2, 2007, from http://en.wikipedia.org/wiki/T.J._Maxx &lt;br /&gt;
# PCI DSS. (2007). In ''Wikipedia'' [Web]. Retrieved December 2, 2007, from http://en.wikipedia.org/wiki/PCI_DSS &lt;br /&gt;
# PCI DSS Compliance Demystified. Retrieved December 2, 2007, Web site: http://pcianswers.com/ &lt;br /&gt;
# PCI DSS Compliance, Payment Card Industry Data Security Standard and Credit Card Security. Retrieved December 2, 2007, from PCI Data Security Standard Web site: http://www.itgovernance.co.uk/pci_dss.aspx&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* https://www.pcisecuritystandards.org/&lt;br /&gt;
* http://en.wikipedia.org/wiki/PCI_DSS&lt;br /&gt;
* http://pcianswers.com/&lt;br /&gt;
* http://www.itgovernance.co.uk/pci_dss.aspx&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
[[Random Number Generators and Information Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Security and Storage Mediums]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Piggybacking]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Honeypot]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Biometric Systems Regarding Security Design Principle]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Phishing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Email Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Biometrics in Information Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Smart Card Technology to Prevent Fraud]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Electronic Voting Systems]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Anti-spam systems and techniques]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[The Mitnick Attack]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Operating Systems Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Autocomplete]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Internet Cookies and Confidentiality]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Social Engineering]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Identity Theft]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Information Security Awareness]]&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 11:54, 5 December 2007 (EST)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Payment_Card_Industry_Data_Security_Standard</id>
		<title>Payment Card Industry Data Security Standard</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Payment_Card_Industry_Data_Security_Standard"/>
				<updated>2007-12-06T18:18:02Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* T.J. Maxx */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Payment Card Industry Data Security Standard (PCI DSS) is a security document created by the Payment Card Industry Security Standards Council (PCI SSC) in order to unify the security requirements of the Payment Card Industry.  In order to tie this in with what was taught in [http://www.cas.mcmaster.ca/~wmfarmer/CS-3IS3-07 Comp Sci 3IS3] (taught at [http://www.mcmaster.ca McMaster University]), the PCI DSS will be presented as an Industry Wide Security Policy and as such will be evaluated by tracing its development through the Security Life Cycle.  The first step in the Security Life Cycle is to identify threats.  The main threat to the PCI is that of Card Holder data being stolen.  The next step is Policy Creation.  In order to create one coherent document for Merchants to follow, the five major brands of the PCI (Visa, Mastercard, American Express, Discover and JCB) formed the Payment Card Industry Security Standards Council (PCI SSC).  Next comes the requirements specifications.  The PCI SSC created a detailed document of 12 major requirements for Merchants and any company which deals with Card Holder data to comply with.  These requirements focused on the ability of the Merchant to protect Card Holder data, in both electronic and physical form.  The next phase includes the design and implementation of a security system to enforce the afore stated requirements.  For a company wide security policy, this is possible.  However, for an industry wide security policy it does not make sense to specify implementation because of varying Merchant sizes.  Finally comes the Operation and Maintenance phase.  The operation of each Merchants security system depends on their implementation of the requirements stated in the PCI DSS.  These operations can be assured to be PCI DSS compliant through the use of QSA's and ASV's.  The important part of this phase is the Maintenance part.  The PCI DSS has gone through a few updates since it's creation as direct results of problems with the first version of it or new security issues that may have arisen.&lt;br /&gt;
&lt;br /&gt;
== Terms Used In This Article ==&lt;br /&gt;
* '''PCI''' ('''P'''ayment '''C'''ard '''I'''ndustry): A Payment Card is any &amp;quot;card&amp;quot; form of payment.  This can cover everything from credit cards to debit cards.  The Payment Card Industry consists of all the companies which make up the many different brands of payment cards in use today.  (ie Visa, Mastercard, ect..)&lt;br /&gt;
* '''PCI SSC''' ('''P'''ayment '''C'''ard '''I'''ndustry '''S'''ecurity '''S'''tandards '''C'''ouncil): A council made up of Visa, Mastercard, American Express, Discover and JCB (Japan Credit Bureau) created in order to align their individual security goals into one document - the PCI DSS.&lt;br /&gt;
* '''PCI DSS''' ('''P'''ayment '''C'''ard '''I'''ndustry '''D'''ata '''S'''ecurity '''S'''tandard): The document created by the PCI SSC in order to align each companies security goals.&lt;br /&gt;
* '''Card Holder''': Any customer of a Payment Card company.&lt;br /&gt;
* '''Merchant''': Any company which accepts Payment Cards as a form of payment. The definition also includes any other companies which may deal with Card Holder data without necessarily dealing directly with the Card Holder.&lt;br /&gt;
&lt;br /&gt;
== What is a Security Policy? ==&lt;br /&gt;
A Security Policy is a statement that partitions the states of a system into sets of authorized, or secure, states and a set of unauthorized, or nonsecure, states. &amp;lt;SUP&amp;gt;[ [[Payment Card Industry Data Security Standard #References|1]] ]&amp;lt;/SUP&amp;gt;  A security policy is the bases on which all the rest of a companies security mechanisms are based on.  Obviously, having a good company wide security policy is important.  The next logical step is to incorporate an industry wide security policy.  The Payment Card Industry Data Security Standard could be viewed as an example of an industry wide security policy.&lt;br /&gt;
&lt;br /&gt;
== Security Life Cycle ==&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Image:SecurityLifyCycle.GIF|frame|right|Figure 1: The Security Life Cycle&amp;lt;SUP&amp;gt;[1]&amp;lt;/SUP&amp;gt;]]&lt;br /&gt;
The Security Life Cycle consists of the following phases: Threats, Policy, Specification, Design, Implementation and Operation and Maintenance (See Figure 1).  As you can see, the security life cycle relies heavily upon later phases giving input to previous phases so that they can be updated.  This keeps the security system up to date and hence keeps what the security system is protecting more secure too.&lt;br /&gt;
----&lt;br /&gt;
=== Identify Threats ===&lt;br /&gt;
&amp;lt;P&amp;gt;The main threat to the Payment Card Industry as a whole is more of a threat to the Card Holders than the industry itself.  The Card Holders are taking a chance every time they use their credit cards to make a purchase.  This threat is not only present when purchasing online, but also when purchasing in stores (or at the &amp;quot;point of purchase&amp;quot;).  The threat originates from a lack of industry wide standards on how card holder information should be stored, processed or transmitted.&amp;lt;/P&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;P&amp;gt;This security threat directly affects the Payment Card Industry because if cardholders don't trust that their information is secure, then they will not use their credit cards and hence the payment card vendors loose business.  This is why the Payment Card Industry is moving forward with their industry wide standard for security, the Payment Card Industry Data Security Standard.&amp;lt;/P&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Image:PCICouncil.JPG|frame|right|Figure 2: Formation of the PCI SSC]]&lt;br /&gt;
----&lt;br /&gt;
=== Policy Creation===&lt;br /&gt;
&amp;lt;P&amp;gt;Before December 14th 2004, the 5 major Payment Card companies (Visa, Mastercard, American Express, Discover and JCB (Japan Credit Bureau)) each had their own set of Information Security Standards.  This meant that retailers had 5 different security policies to comply with. After December 14th 2004, these 5 brands of cards collaborated to create the Payment Card Industry Security Standards Council (PCI SSC).  The purpose of this council is to align the goals of each of the Payment Card companies in an industry wide security policy for merchants to follow.&amp;lt;/P&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=== Requirements Specifications ===&lt;br /&gt;
An overview of the list of requirements needed to maintain Payment Card Industry Data Security Standard (PCI DSS) compliance is available here [https://www.pcisecuritystandards.org/tech/index.htm About the PCI Data Security Standard (PCI DSS)]. The full list of requirements is available here: [https://www.pcisecuritystandards.org/tech/download_the_pci_dss.htm Download the PCI DSS].  Below is the summarized list and an explanation of what each item means.  There are 12 major requirements which can be broken up into 6 categories.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Build and Maintain a Secure Network''&amp;lt;BR&amp;gt;&lt;br /&gt;
1.)Install and maintain a firewall configuration to protect cardholders' data&amp;lt;BR&amp;gt;&lt;br /&gt;
2.)Do not use vendor-supplied defaults for system password and other security parameters&amp;lt;BR&amp;gt;&lt;br /&gt;
* This set of requirements is meant to keep any network of computers which contain Card Holder information in a secure state&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Protect Card Holder Data''&amp;lt;BR&amp;gt;&lt;br /&gt;
3.)Protect stored Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to protect the card holder data while it is stored on merchant computers&amp;lt;BR&amp;gt;&lt;br /&gt;
4.)Encrypt transmission of Card Holder data across open, public networks&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to protect Card Holder data when it might be necessary to transmit it across a public network (ie when contacting the Payment Card server)&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Maintain a Vulnerability Management Program''&amp;lt;BR&amp;gt;&lt;br /&gt;
5.)Use and regularly update anti-virus software&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that all merchants do take advantage of some form of anti-virus software.&amp;lt;BR&amp;gt;&lt;br /&gt;
6.)Develop and maintain secure systems and applications&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to put security as a priority during the development of software. This is an important requirement because many times when software is being designed, security is tacked on as an afterthought.  By at least making developers aware of security as being a requirement of their software, this ensures better quality of any security mechanisms built into the software.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Implement Strong Access Control Measures''&amp;lt;BR&amp;gt;&lt;br /&gt;
7.)Restrict access to Card Holder data by business need-to-know&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that only people who need to know about Card Holder data have access to it.  This is similar to the principle of least privilege.  &amp;lt;BR&amp;gt;&lt;br /&gt;
8.)Assign a unique ID to each person with computer access&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to add a level of accountability to all users on the system.  If each user has their own unique ID on the merchant's system, then actions can be tracked on linked to the person who did them.&amp;lt;BR&amp;gt;&lt;br /&gt;
9.)Restrict physical access to Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to extend the coverage of the PCI DSS to any form of Card Holder data which may not be on a computer.  Hence, the PCI DSS is extended to cover not only digital information but also physical copies of the information.  However, this does not prevent the threat of customer data being stolen entirely.  There is nothing to prevent an employee from copying down information with a pencil and paper.  Though this is a problem, it is partially alleviated by requirement 7: Restrict access to Card Holder data by business need-to-know.  If only a small number of employees can access the Card Holder data, then it is much easier to track down who may have stolen Card Holder data if there is a security breech from the inside.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Regularly Monitor and Test Networks''&amp;lt;BR&amp;gt;&lt;br /&gt;
10.) Track and monitor all access to network resources and Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is designed to catch any unauthorized accesses to Card Holder data.  If an anomaly is detected, then the system should be able to detect it and steps should be taken to fix the problem&amp;lt;BR&amp;gt;&lt;br /&gt;
11.) Regularly test security systems and processes&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that merchants don't just set and forget their security systems.  It reminds them that security is a full time job and must constantly be maintained.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
''Maintain an Information Security Policy''&amp;lt;BR&amp;gt;&lt;br /&gt;
12.) Maintain a policy that addresses information security&amp;lt;BR&amp;gt;&lt;br /&gt;
* Though this may seem a bit redundant, this is an important requirement.  It means that every merchant that deals with Cardholder Data must have their own security policy as well in order to protect Card Holder data.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Design/Implementation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;P&amp;gt;There is no design or implementation specified in the PCI DSS.  This is because the application of this security policy is so broad that it is impossible to have one design that will work for every company.  For example Soney, which may handle millions of transactions a year, will need a different implementation than a small &amp;quot;mom and pop&amp;quot; company, who may handle only a few hundred transactions a year.  However, requirements must still be met to some degree depending on the volume of Payment Card transactions which occur per given merchant. This makes the PCI DSS sound rather weak.  However, there is a way which the Payment Card Industry Security Standards Council can keep track of whether or not the requirements are being met.  This is through the use of QSA's and ASV's.&amp;lt;/P&amp;gt;&lt;br /&gt;
*[https://www.pcisecuritystandards.org/programs/qsa_program.htm Qualified Security Assessors (QSA's)] are companies who have been approved by the PCI Security Standards Council to assess the compliance of merchants to the PCI DSS.  The way the PCI Security Standards Council does this is through a certification program.  This requires not only the company to be certified, but also all of it's employees to be certified on a yearly bases.&lt;br /&gt;
*[https://www.pcisecuritystandards.org/programs/asv_program.htm Approved Scanning Vendors (ASV's)] are companies who are approved by the PCI Security Standards Council to assess merchants' networks for security vulnerabilities.  They accomplish this by simulating both normal and abnormal processes on the merchants networks.  Again, ASV's must also be certified by the PCI Security Standards Council on a yearly basis.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Operation and Maintenance ===&lt;br /&gt;
The final step of the Security Life Cycle is Operation and Maintenance.  Though this is the final step, it is by far not the least and the life cycle does not end here.  This step requires that any time a security breach is detected, steps must be taken to improve the security system.  The PCI DSS has definately entered this phase.  There are two examples of such maintenance and updating occuring in the PCI DSS:&lt;br /&gt;
* Version 1.1&lt;br /&gt;
* TJ Max&lt;br /&gt;
&lt;br /&gt;
====Version 1.1====&lt;br /&gt;
Version 1.1 of the PCI DSS was releases on September 2006.  This was only a year and a half after the release of the version 1.0 of the PCI DSS, which is pretty fast considering the PCI DSS is meant to be a security wide standard. Version 1.1 clarified many of the requirements and wording of Version 1.0 and also included suggestions on how to achieve compliance.  A full summary of the changes between PCI DSS Version 1.1 and PCI DSS Version 1.0 are available[[http://www.procheckup.com/PDFs/ProCheckUp_PCIDSS_SummaryOfChanges.pdf|here]].&lt;br /&gt;
&lt;br /&gt;
====T.J. Maxx====&lt;br /&gt;
[[Image:TJMaxxCustAlert.jpg|frame|center|Figure 3: Notice to T.J.Maxx customers]]&lt;br /&gt;
In Mid-December of 2006, the company computer systems were compromised and customer data was stolen.  Everything from credit card numbers to street addresses were stolen from 45.7 million customers&amp;lt;SUP&amp;gt;[3]&amp;lt;/SUP&amp;gt;.  The attack did not come from the internet, but rather from an inadequate secure wireless network.  As you can see from the screen shot of the [http://www.tjmaxx.com/index.asp  T.J.Maxx website] figure 3, this even it still affecting the company today, December of 2007.  The highlighted link links to an explanation to the customers about what happened, why it happened and what steps are being taken to fix the problem.  &lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
As a direct result of this, the PCI DSS was updated to included better guidelines about wireless networks. Specifically, section 4.1.1 added specifications about implementing Wireless Encryption Protocol Correctly and provided better guidelines for key rotation. For Specifics, see https://www.pcisecuritystandards.org/pdfs/pci_dss_v1-1.pdf.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# Bishop, Matt. ''Introduction to Computer Security''. Boston: Addison-Wesley, 2006.&lt;br /&gt;
# (2007). About the PCI DSS - PCI Security Standards Council. Retrieved December 2, 2007, Web site: https://www.pcisecuritystandards.org/tech/index.htm &lt;br /&gt;
# T.J. Maxx. (2007). In ''Wikipedia'' [Web]. Retrieved December 2, 2007, from http://en.wikipedia.org/wiki/T.J._Maxx &lt;br /&gt;
# PCI DSS. (2007). In ''Wikipedia'' [Web]. Retrieved December 2, 2007, from http://en.wikipedia.org/wiki/PCI_DSS &lt;br /&gt;
# PCI DSS Compliance Demystified. Retrieved December 2, 2007, Web site: http://pcianswers.com/ &lt;br /&gt;
# PCI DSS Compliance, Payment Card Industry Data Security Standard and Credit Card Security. Retrieved December 2, 2007, from PCI Data Security Standard Web site: http://www.itgovernance.co.uk/pci_dss.aspx&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* https://www.pcisecuritystandards.org/&lt;br /&gt;
* http://en.wikipedia.org/wiki/PCI_DSS&lt;br /&gt;
* http://pcianswers.com/&lt;br /&gt;
* http://www.itgovernance.co.uk/pci_dss.aspx&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
[[Random Number Generators and Information Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Security and Storage Mediums]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Piggybacking]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Honeypot]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Biometric Systems Regarding Security Design Principle]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Phishing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Email Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Biometrics in Information Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Smart Card Technology to Prevent Fraud]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Electronic Voting Systems]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Anti-spam systems and techniques]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[The Mitnick Attack]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Operating Systems Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Autocomplete]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Internet Cookies and Confidentiality]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Social Engineering]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Identity Theft]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Information Security Awareness]]&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 11:54, 5 December 2007 (EST)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Payment_Card_Industry_Data_Security_Standard</id>
		<title>Payment Card Industry Data Security Standard</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Payment_Card_Industry_Data_Security_Standard"/>
				<updated>2007-12-06T18:17:44Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Payment Card Industry Data Security Standard (PCI DSS) is a security document created by the Payment Card Industry Security Standards Council (PCI SSC) in order to unify the security requirements of the Payment Card Industry.  In order to tie this in with what was taught in [http://www.cas.mcmaster.ca/~wmfarmer/CS-3IS3-07 Comp Sci 3IS3] (taught at [http://www.mcmaster.ca McMaster University]), the PCI DSS will be presented as an Industry Wide Security Policy and as such will be evaluated by tracing its development through the Security Life Cycle.  The first step in the Security Life Cycle is to identify threats.  The main threat to the PCI is that of Card Holder data being stolen.  The next step is Policy Creation.  In order to create one coherent document for Merchants to follow, the five major brands of the PCI (Visa, Mastercard, American Express, Discover and JCB) formed the Payment Card Industry Security Standards Council (PCI SSC).  Next comes the requirements specifications.  The PCI SSC created a detailed document of 12 major requirements for Merchants and any company which deals with Card Holder data to comply with.  These requirements focused on the ability of the Merchant to protect Card Holder data, in both electronic and physical form.  The next phase includes the design and implementation of a security system to enforce the afore stated requirements.  For a company wide security policy, this is possible.  However, for an industry wide security policy it does not make sense to specify implementation because of varying Merchant sizes.  Finally comes the Operation and Maintenance phase.  The operation of each Merchants security system depends on their implementation of the requirements stated in the PCI DSS.  These operations can be assured to be PCI DSS compliant through the use of QSA's and ASV's.  The important part of this phase is the Maintenance part.  The PCI DSS has gone through a few updates since it's creation as direct results of problems with the first version of it or new security issues that may have arisen.&lt;br /&gt;
&lt;br /&gt;
== Terms Used In This Article ==&lt;br /&gt;
* '''PCI''' ('''P'''ayment '''C'''ard '''I'''ndustry): A Payment Card is any &amp;quot;card&amp;quot; form of payment.  This can cover everything from credit cards to debit cards.  The Payment Card Industry consists of all the companies which make up the many different brands of payment cards in use today.  (ie Visa, Mastercard, ect..)&lt;br /&gt;
* '''PCI SSC''' ('''P'''ayment '''C'''ard '''I'''ndustry '''S'''ecurity '''S'''tandards '''C'''ouncil): A council made up of Visa, Mastercard, American Express, Discover and JCB (Japan Credit Bureau) created in order to align their individual security goals into one document - the PCI DSS.&lt;br /&gt;
* '''PCI DSS''' ('''P'''ayment '''C'''ard '''I'''ndustry '''D'''ata '''S'''ecurity '''S'''tandard): The document created by the PCI SSC in order to align each companies security goals.&lt;br /&gt;
* '''Card Holder''': Any customer of a Payment Card company.&lt;br /&gt;
* '''Merchant''': Any company which accepts Payment Cards as a form of payment. The definition also includes any other companies which may deal with Card Holder data without necessarily dealing directly with the Card Holder.&lt;br /&gt;
&lt;br /&gt;
== What is a Security Policy? ==&lt;br /&gt;
A Security Policy is a statement that partitions the states of a system into sets of authorized, or secure, states and a set of unauthorized, or nonsecure, states. &amp;lt;SUP&amp;gt;[ [[Payment Card Industry Data Security Standard #References|1]] ]&amp;lt;/SUP&amp;gt;  A security policy is the bases on which all the rest of a companies security mechanisms are based on.  Obviously, having a good company wide security policy is important.  The next logical step is to incorporate an industry wide security policy.  The Payment Card Industry Data Security Standard could be viewed as an example of an industry wide security policy.&lt;br /&gt;
&lt;br /&gt;
== Security Life Cycle ==&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Image:SecurityLifyCycle.GIF|frame|right|Figure 1: The Security Life Cycle&amp;lt;SUP&amp;gt;[1]&amp;lt;/SUP&amp;gt;]]&lt;br /&gt;
The Security Life Cycle consists of the following phases: Threats, Policy, Specification, Design, Implementation and Operation and Maintenance (See Figure 1).  As you can see, the security life cycle relies heavily upon later phases giving input to previous phases so that they can be updated.  This keeps the security system up to date and hence keeps what the security system is protecting more secure too.&lt;br /&gt;
----&lt;br /&gt;
=== Identify Threats ===&lt;br /&gt;
&amp;lt;P&amp;gt;The main threat to the Payment Card Industry as a whole is more of a threat to the Card Holders than the industry itself.  The Card Holders are taking a chance every time they use their credit cards to make a purchase.  This threat is not only present when purchasing online, but also when purchasing in stores (or at the &amp;quot;point of purchase&amp;quot;).  The threat originates from a lack of industry wide standards on how card holder information should be stored, processed or transmitted.&amp;lt;/P&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;P&amp;gt;This security threat directly affects the Payment Card Industry because if cardholders don't trust that their information is secure, then they will not use their credit cards and hence the payment card vendors loose business.  This is why the Payment Card Industry is moving forward with their industry wide standard for security, the Payment Card Industry Data Security Standard.&amp;lt;/P&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Image:PCICouncil.JPG|frame|right|Figure 2: Formation of the PCI SSC]]&lt;br /&gt;
----&lt;br /&gt;
=== Policy Creation===&lt;br /&gt;
&amp;lt;P&amp;gt;Before December 14th 2004, the 5 major Payment Card companies (Visa, Mastercard, American Express, Discover and JCB (Japan Credit Bureau)) each had their own set of Information Security Standards.  This meant that retailers had 5 different security policies to comply with. After December 14th 2004, these 5 brands of cards collaborated to create the Payment Card Industry Security Standards Council (PCI SSC).  The purpose of this council is to align the goals of each of the Payment Card companies in an industry wide security policy for merchants to follow.&amp;lt;/P&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=== Requirements Specifications ===&lt;br /&gt;
An overview of the list of requirements needed to maintain Payment Card Industry Data Security Standard (PCI DSS) compliance is available here [https://www.pcisecuritystandards.org/tech/index.htm About the PCI Data Security Standard (PCI DSS)]. The full list of requirements is available here: [https://www.pcisecuritystandards.org/tech/download_the_pci_dss.htm Download the PCI DSS].  Below is the summarized list and an explanation of what each item means.  There are 12 major requirements which can be broken up into 6 categories.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Build and Maintain a Secure Network''&amp;lt;BR&amp;gt;&lt;br /&gt;
1.)Install and maintain a firewall configuration to protect cardholders' data&amp;lt;BR&amp;gt;&lt;br /&gt;
2.)Do not use vendor-supplied defaults for system password and other security parameters&amp;lt;BR&amp;gt;&lt;br /&gt;
* This set of requirements is meant to keep any network of computers which contain Card Holder information in a secure state&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Protect Card Holder Data''&amp;lt;BR&amp;gt;&lt;br /&gt;
3.)Protect stored Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to protect the card holder data while it is stored on merchant computers&amp;lt;BR&amp;gt;&lt;br /&gt;
4.)Encrypt transmission of Card Holder data across open, public networks&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to protect Card Holder data when it might be necessary to transmit it across a public network (ie when contacting the Payment Card server)&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Maintain a Vulnerability Management Program''&amp;lt;BR&amp;gt;&lt;br /&gt;
5.)Use and regularly update anti-virus software&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that all merchants do take advantage of some form of anti-virus software.&amp;lt;BR&amp;gt;&lt;br /&gt;
6.)Develop and maintain secure systems and applications&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to put security as a priority during the development of software. This is an important requirement because many times when software is being designed, security is tacked on as an afterthought.  By at least making developers aware of security as being a requirement of their software, this ensures better quality of any security mechanisms built into the software.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Implement Strong Access Control Measures''&amp;lt;BR&amp;gt;&lt;br /&gt;
7.)Restrict access to Card Holder data by business need-to-know&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that only people who need to know about Card Holder data have access to it.  This is similar to the principle of least privilege.  &amp;lt;BR&amp;gt;&lt;br /&gt;
8.)Assign a unique ID to each person with computer access&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to add a level of accountability to all users on the system.  If each user has their own unique ID on the merchant's system, then actions can be tracked on linked to the person who did them.&amp;lt;BR&amp;gt;&lt;br /&gt;
9.)Restrict physical access to Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to extend the coverage of the PCI DSS to any form of Card Holder data which may not be on a computer.  Hence, the PCI DSS is extended to cover not only digital information but also physical copies of the information.  However, this does not prevent the threat of customer data being stolen entirely.  There is nothing to prevent an employee from copying down information with a pencil and paper.  Though this is a problem, it is partially alleviated by requirement 7: Restrict access to Card Holder data by business need-to-know.  If only a small number of employees can access the Card Holder data, then it is much easier to track down who may have stolen Card Holder data if there is a security breech from the inside.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Regularly Monitor and Test Networks''&amp;lt;BR&amp;gt;&lt;br /&gt;
10.) Track and monitor all access to network resources and Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is designed to catch any unauthorized accesses to Card Holder data.  If an anomaly is detected, then the system should be able to detect it and steps should be taken to fix the problem&amp;lt;BR&amp;gt;&lt;br /&gt;
11.) Regularly test security systems and processes&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that merchants don't just set and forget their security systems.  It reminds them that security is a full time job and must constantly be maintained.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
''Maintain an Information Security Policy''&amp;lt;BR&amp;gt;&lt;br /&gt;
12.) Maintain a policy that addresses information security&amp;lt;BR&amp;gt;&lt;br /&gt;
* Though this may seem a bit redundant, this is an important requirement.  It means that every merchant that deals with Cardholder Data must have their own security policy as well in order to protect Card Holder data.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Design/Implementation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;P&amp;gt;There is no design or implementation specified in the PCI DSS.  This is because the application of this security policy is so broad that it is impossible to have one design that will work for every company.  For example Soney, which may handle millions of transactions a year, will need a different implementation than a small &amp;quot;mom and pop&amp;quot; company, who may handle only a few hundred transactions a year.  However, requirements must still be met to some degree depending on the volume of Payment Card transactions which occur per given merchant. This makes the PCI DSS sound rather weak.  However, there is a way which the Payment Card Industry Security Standards Council can keep track of whether or not the requirements are being met.  This is through the use of QSA's and ASV's.&amp;lt;/P&amp;gt;&lt;br /&gt;
*[https://www.pcisecuritystandards.org/programs/qsa_program.htm Qualified Security Assessors (QSA's)] are companies who have been approved by the PCI Security Standards Council to assess the compliance of merchants to the PCI DSS.  The way the PCI Security Standards Council does this is through a certification program.  This requires not only the company to be certified, but also all of it's employees to be certified on a yearly bases.&lt;br /&gt;
*[https://www.pcisecuritystandards.org/programs/asv_program.htm Approved Scanning Vendors (ASV's)] are companies who are approved by the PCI Security Standards Council to assess merchants' networks for security vulnerabilities.  They accomplish this by simulating both normal and abnormal processes on the merchants networks.  Again, ASV's must also be certified by the PCI Security Standards Council on a yearly basis.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Operation and Maintenance ===&lt;br /&gt;
The final step of the Security Life Cycle is Operation and Maintenance.  Though this is the final step, it is by far not the least and the life cycle does not end here.  This step requires that any time a security breach is detected, steps must be taken to improve the security system.  The PCI DSS has definately entered this phase.  There are two examples of such maintenance and updating occuring in the PCI DSS:&lt;br /&gt;
* Version 1.1&lt;br /&gt;
* TJ Max&lt;br /&gt;
&lt;br /&gt;
====Version 1.1====&lt;br /&gt;
Version 1.1 of the PCI DSS was releases on September 2006.  This was only a year and a half after the release of the version 1.0 of the PCI DSS, which is pretty fast considering the PCI DSS is meant to be a security wide standard. Version 1.1 clarified many of the requirements and wording of Version 1.0 and also included suggestions on how to achieve compliance.  A full summary of the changes between PCI DSS Version 1.1 and PCI DSS Version 1.0 are available[[http://www.procheckup.com/PDFs/ProCheckUp_PCIDSS_SummaryOfChanges.pdf|here]].&lt;br /&gt;
&lt;br /&gt;
====T.J. Maxx====&lt;br /&gt;
[Image:TJMaxxCustAlert.jpg|frame|right|Figure 3: Notice to T.J.Maxx customers]&lt;br /&gt;
In Mid-December of 2006, the company computer systems were compromised and customer data was stolen.  Everything from credit card numbers to street addresses were stolen from 45.7 million customers&amp;lt;SUP&amp;gt;[3]&amp;lt;/SUP&amp;gt;.  The attack did not come from the internet, but rather from an inadequate secure wireless network.  As you can see from the screen shot of the [http://www.tjmaxx.com/index.asp  T.J.Maxx website] figure 3, this even it still affecting the company today, December of 2007.  The highlighted link links to an explanation to the customers about what happened, why it happened and what steps are being taken to fix the problem.  &lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
As a direct result of this, the PCI DSS was updated to included better guidelines about wireless networks. Specifically, section 4.1.1 added specifications about implementing Wireless Encryption Protocol Correctly and provided better guidelines for key rotation. For Specifics, see https://www.pcisecuritystandards.org/pdfs/pci_dss_v1-1.pdf.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# Bishop, Matt. ''Introduction to Computer Security''. Boston: Addison-Wesley, 2006.&lt;br /&gt;
# (2007). About the PCI DSS - PCI Security Standards Council. Retrieved December 2, 2007, Web site: https://www.pcisecuritystandards.org/tech/index.htm &lt;br /&gt;
# T.J. Maxx. (2007). In ''Wikipedia'' [Web]. Retrieved December 2, 2007, from http://en.wikipedia.org/wiki/T.J._Maxx &lt;br /&gt;
# PCI DSS. (2007). In ''Wikipedia'' [Web]. Retrieved December 2, 2007, from http://en.wikipedia.org/wiki/PCI_DSS &lt;br /&gt;
# PCI DSS Compliance Demystified. Retrieved December 2, 2007, Web site: http://pcianswers.com/ &lt;br /&gt;
# PCI DSS Compliance, Payment Card Industry Data Security Standard and Credit Card Security. Retrieved December 2, 2007, from PCI Data Security Standard Web site: http://www.itgovernance.co.uk/pci_dss.aspx&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* https://www.pcisecuritystandards.org/&lt;br /&gt;
* http://en.wikipedia.org/wiki/PCI_DSS&lt;br /&gt;
* http://pcianswers.com/&lt;br /&gt;
* http://www.itgovernance.co.uk/pci_dss.aspx&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
[[Random Number Generators and Information Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Security and Storage Mediums]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Piggybacking]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Honeypot]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Biometric Systems Regarding Security Design Principle]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Phishing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Email Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Biometrics in Information Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Smart Card Technology to Prevent Fraud]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Electronic Voting Systems]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Anti-spam systems and techniques]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[The Mitnick Attack]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Operating Systems Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Autocomplete]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Internet Cookies and Confidentiality]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Social Engineering]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Identity Theft]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Information Security Awareness]]&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 11:54, 5 December 2007 (EST)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/File:TJMaxxCustAlert.jpg</id>
		<title>File:TJMaxxCustAlert.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/File:TJMaxxCustAlert.jpg"/>
				<updated>2007-12-06T18:16:15Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;Screen shot of T.J.Maxx's website taken December 2007&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Screen shot of T.J.Maxx's website taken December 2007&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Payment_Card_Industry_Data_Security_Standard</id>
		<title>Payment Card Industry Data Security Standard</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Payment_Card_Industry_Data_Security_Standard"/>
				<updated>2007-12-06T18:13:35Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* T.J. Maxx */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NOTE: This is currently a very rough draft.  I have 2 exams this week and will be making the final draft in one week (12/9/07)&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
The Payment Card Industry Data Security Standard (PCI DSS) is a security document created by the Payment Card Industry Security Standards Council (PCI SSC) in order to unify the security requirements of the Payment Card Industry.  In order to tie this in with what was taught in [http://www.cas.mcmaster.ca/~wmfarmer/CS-3IS3-07 Comp Sci 3IS3] (taught at [http://www.mcmaster.ca McMaster University]), the PCI DSS will be presented as an Industry Wide Security Policy and as such will be evaluated by tracing its development through the Security Life Cycle.  The first step in the Security Life Cycle is to identify threats.  The main threat to the PCI is that of Card Holder data being stolen.  The next step is Policy Creation.  In order to create one coherent document for Merchants to follow, the five major brands of the PCI (Visa, Mastercard, American Express, Discover and JCB) formed the Payment Card Industry Security Standards Council (PCI SSC).  Next comes the requirements specifications.  The PCI SSC created a detailed document of 12 major requirements for Merchants and any company which deals with Card Holder data to comply with.  These requirements focused on the ability of the Merchant to protect Card Holder data, in both electronic and physical form.  The next phase includes the design and implementation of a security system to enforce the afore stated requirements.  For a company wide security policy, this is possible.  However, for an industry wide security policy it does not make sense to specify implementation because of varying Merchant sizes.  Finally comes the Operation and Maintenance phase.  The operation of each Merchants security system depends on their implementation of the requirements stated in the PCI DSS.  These operations can be assured to be PCI DSS compliant through the use of QSA's and ASV's.  The important part of this phase is the Maintenance part.  The PCI DSS has gone through a few updates since it's creation as direct results of problems with the first version of it or new security issues that may have arisen.&lt;br /&gt;
&lt;br /&gt;
== Terms Used In This Article ==&lt;br /&gt;
* '''PCI''' ('''P'''ayment '''C'''ard '''I'''ndustry): A Payment Card is any &amp;quot;card&amp;quot; form of payment.  This can cover everything from credit cards to debit cards.  The Payment Card Industry consists of all the companies which make up the many different brands of payment cards in use today.  (ie Visa, Mastercard, ect..)&lt;br /&gt;
* '''PCI SSC''' ('''P'''ayment '''C'''ard '''I'''ndustry '''S'''ecurity '''S'''tandards '''C'''ouncil): A council made up of Visa, Mastercard, American Express, Discover and JCB (Japan Credit Bureau) created in order to align their individual security goals into one document - the PCI DSS.&lt;br /&gt;
* '''PCI DSS''' ('''P'''ayment '''C'''ard '''I'''ndustry '''D'''ata '''S'''ecurity '''S'''tandard): The document created by the PCI SSC in order to align each companies security goals.&lt;br /&gt;
* '''Card Holder''': Any customer of a Payment Card company.&lt;br /&gt;
* '''Merchant''': Any company which accepts Payment Cards as a form of payment. The definition also includes any other companies which may deal with Card Holder data without necessarily dealing directly with the Card Holder.&lt;br /&gt;
&lt;br /&gt;
== What is a Security Policy? ==&lt;br /&gt;
A Security Policy is a statement that partitions the states of a system into sets of authorized, or secure, states and a set of unauthorized, or nonsecure, states. &amp;lt;SUP&amp;gt;[ [[Payment Card Industry Data Security Standard #References|1]] ]&amp;lt;/SUP&amp;gt;  A security policy is the bases on which all the rest of a companies security mechanisms are based on.  Obviously, having a good company wide security policy is important.  The next logical step is to incorporate an industry wide security policy.  The Payment Card Industry Data Security Standard could be viewed as an example of an industry wide security policy.&lt;br /&gt;
&lt;br /&gt;
== Security Life Cycle ==&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Image:SecurityLifyCycle.GIF|frame|right|Figure 1: The Security Life Cycle&amp;lt;SUP&amp;gt;[1]&amp;lt;/SUP&amp;gt;]]&lt;br /&gt;
The Security Life Cycle consists of the following phases: Threats, Policy, Specification, Design, Implementation and Operation and Maintenance (See Figure 1).  As you can see, the security life cycle relies heavily upon later phases giving input to previous phases so that they can be updated.  This keeps the security system up to date and hence keeps what the security system is protecting more secure too.&lt;br /&gt;
----&lt;br /&gt;
=== Identify Threats ===&lt;br /&gt;
&amp;lt;P&amp;gt;The main threat to the Payment Card Industry as a whole is more of a threat to the Card Holders than the industry itself.  The Card Holders are taking a chance every time they use their credit cards to make a purchase.  This threat is not only present when purchasing online, but also when purchasing in stores (or at the &amp;quot;point of purchase&amp;quot;).  The threat originates from a lack of industry wide standards on how card holder information should be stored, processed or transmitted.&amp;lt;/P&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;P&amp;gt;This security threat directly affects the Payment Card Industry because if cardholders don't trust that their information is secure, then they will not use their credit cards and hence the payment card vendors loose business.  This is why the Payment Card Industry is moving forward with their industry wide standard for security, the Payment Card Industry Data Security Standard.&amp;lt;/P&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Image:PCICouncil.JPG|frame|right|Figure 2: Formation of the PCI SSC]]&lt;br /&gt;
----&lt;br /&gt;
=== Policy Creation===&lt;br /&gt;
&amp;lt;P&amp;gt;Before December 14th 2004, the 5 major Payment Card companies (Visa, Mastercard, American Express, Discover and JCB (Japan Credit Bureau)) each had their own set of Information Security Standards.  This meant that retailers had 5 different security policies to comply with. After December 14th 2004, these 5 brands of cards collaborated to create the Payment Card Industry Security Standards Council (PCI SSC).  The purpose of this council is to align the goals of each of the Payment Card companies in an industry wide security policy for merchants to follow.&amp;lt;/P&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=== Requirements Specifications ===&lt;br /&gt;
An overview of the list of requirements needed to maintain Payment Card Industry Data Security Standard (PCI DSS) compliance is available here [https://www.pcisecuritystandards.org/tech/index.htm About the PCI Data Security Standard (PCI DSS)]. The full list of requirements is available here: [https://www.pcisecuritystandards.org/tech/download_the_pci_dss.htm Download the PCI DSS].  Below is the summarized list and an explanation of what each item means.  There are 12 major requirements which can be broken up into 6 categories.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Build and Maintain a Secure Network''&amp;lt;BR&amp;gt;&lt;br /&gt;
1.)Install and maintain a firewall configuration to protect cardholders' data&amp;lt;BR&amp;gt;&lt;br /&gt;
2.)Do not use vendor-supplied defaults for system password and other security parameters&amp;lt;BR&amp;gt;&lt;br /&gt;
* This set of requirements is meant to keep any network of computers which contain Card Holder information in a secure state&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Protect Card Holder Data''&amp;lt;BR&amp;gt;&lt;br /&gt;
3.)Protect stored Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to protect the card holder data while it is stored on merchant computers&amp;lt;BR&amp;gt;&lt;br /&gt;
4.)Encrypt transmission of Card Holder data across open, public networks&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to protect Card Holder data when it might be necessary to transmit it across a public network (ie when contacting the Payment Card server)&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Maintain a Vulnerability Management Program''&amp;lt;BR&amp;gt;&lt;br /&gt;
5.)Use and regularly update anti-virus software&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that all merchants do take advantage of some form of anti-virus software.&amp;lt;BR&amp;gt;&lt;br /&gt;
6.)Develop and maintain secure systems and applications&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to put security as a priority during the development of software. This is an important requirement because many times when software is being designed, security is tacked on as an afterthought.  By at least making developers aware of security as being a requirement of their software, this ensures better quality of any security mechanisms built into the software.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Implement Strong Access Control Measures''&amp;lt;BR&amp;gt;&lt;br /&gt;
7.)Restrict access to Card Holder data by business need-to-know&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that only people who need to know about Card Holder data have access to it.  This is similar to the principle of least privilege.  &amp;lt;BR&amp;gt;&lt;br /&gt;
8.)Assign a unique ID to each person with computer access&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to add a level of accountability to all users on the system.  If each user has their own unique ID on the merchant's system, then actions can be tracked on linked to the person who did them.&amp;lt;BR&amp;gt;&lt;br /&gt;
9.)Restrict physical access to Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to extend the coverage of the PCI DSS to any form of Card Holder data which may not be on a computer.  Hence, the PCI DSS is extended to cover not only digital information but also physical copies of the information.  However, this does not prevent the threat of customer data being stolen entirely.  There is nothing to prevent an employee from copying down information with a pencil and paper.  Though this is a problem, it is partially alleviated by requirement 7: Restrict access to Card Holder data by business need-to-know.  If only a small number of employees can access the Card Holder data, then it is much easier to track down who may have stolen Card Holder data if there is a security breech from the inside.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Regularly Monitor and Test Networks''&amp;lt;BR&amp;gt;&lt;br /&gt;
10.) Track and monitor all access to network resources and Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is designed to catch any unauthorized accesses to Card Holder data.  If an anomaly is detected, then the system should be able to detect it and steps should be taken to fix the problem&amp;lt;BR&amp;gt;&lt;br /&gt;
11.) Regularly test security systems and processes&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that merchants don't just set and forget their security systems.  It reminds them that security is a full time job and must constantly be maintained.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
''Maintain an Information Security Policy''&amp;lt;BR&amp;gt;&lt;br /&gt;
12.) Maintain a policy that addresses information security&amp;lt;BR&amp;gt;&lt;br /&gt;
* Though this may seem a bit redundant, this is an important requirement.  It means that every merchant that deals with Cardholder Data must have their own security policy as well in order to protect Card Holder data.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Design/Implementation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;P&amp;gt;There is no design or implementation specified in the PCI DSS.  This is because the application of this security policy is so broad that it is impossible to have one design that will work for every company.  For example Soney, which may handle millions of transactions a year, will need a different implementation than a small &amp;quot;mom and pop&amp;quot; company, who may handle only a few hundred transactions a year.  However, requirements must still be met to some degree depending on the volume of Payment Card transactions which occur per given merchant. This makes the PCI DSS sound rather weak.  However, there is a way which the Payment Card Industry Security Standards Council can keep track of whether or not the requirements are being met.  This is through the use of QSA's and ASV's.&amp;lt;/P&amp;gt;&lt;br /&gt;
*[https://www.pcisecuritystandards.org/programs/qsa_program.htm Qualified Security Assessors (QSA's)] are companies who have been approved by the PCI Security Standards Council to assess the compliance of merchants to the PCI DSS.  The way the PCI Security Standards Council does this is through a certification program.  This requires not only the company to be certified, but also all of it's employees to be certified on a yearly bases.&lt;br /&gt;
*[https://www.pcisecuritystandards.org/programs/asv_program.htm Approved Scanning Vendors (ASV's)] are companies who are approved by the PCI Security Standards Council to assess merchants' networks for security vulnerabilities.  They accomplish this by simulating both normal and abnormal processes on the merchants networks.  Again, ASV's must also be certified by the PCI Security Standards Council on a yearly basis.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Operation and Maintenance ===&lt;br /&gt;
The final step of the Security Life Cycle is Operation and Maintenance.  Though this is the final step, it is by far not the least and the life cycle does not end here.  This step requires that any time a security breach is detected, steps must be taken to improve the security system.  The PCI DSS has definately entered this phase.  There are two examples of such maintenance and updating occuring in the PCI DSS:&lt;br /&gt;
* Version 1.1&lt;br /&gt;
* TJ Max&lt;br /&gt;
&lt;br /&gt;
====Version 1.1====&lt;br /&gt;
Version 1.1 of the PCI DSS was releases on September 2006.  This was only a year and a half after the release of the version 1.0 of the PCI DSS, which is pretty fast considering the PCI DSS is meant to be a security wide standard. Version 1.1 clarified many of the requirements and wording of Version 1.0 and also included suggestions on how to achieve compliance.  A full summary of the changes between PCI DSS Version 1.1 and PCI DSS Version 1.0 are available[[http://www.procheckup.com/PDFs/ProCheckUp_PCIDSS_SummaryOfChanges.pdf|here]].&lt;br /&gt;
&lt;br /&gt;
====T.J. Maxx====&lt;br /&gt;
In Mid-December of 2006, the company computer systems were compromised and customer data was stolen.  Everything from credit card numbers to street addresses were stolen from 45.7 million customers&amp;lt;SUP&amp;gt;[3]&amp;lt;/SUP&amp;gt;.  The attack did not come from the internet, but rather from an inadequate secure wireless network.  As you can see from the screen shot of the [http://www.tjmaxx.com/index.asp  T.J.Maxx website] figure 3, this even it still affecting the company today, December of 2007.  The highlighted link links to an explanation to the customers about what happened, why it happened and what steps are being taken to fix the problem.  &lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
As a direct result of this, the PCI DSS was updated to included better guidelines about wireless networks. Specifically, section 4.1.1 added specifications about implementing Wireless Encryption Protocol Correctly and provided better guidelines for key rotation. For Specifics, see https://www.pcisecuritystandards.org/pdfs/pci_dss_v1-1.pdf.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# Bishop, Matt. ''Introduction to Computer Security''. Boston: Addison-Wesley, 2006.&lt;br /&gt;
# (2007). About the PCI DSS - PCI Security Standards Council. Retrieved December 2, 2007, Web site: https://www.pcisecuritystandards.org/tech/index.htm &lt;br /&gt;
# T.J. Maxx. (2007). In ''Wikipedia'' [Web]. Retrieved December 2, 2007, from http://en.wikipedia.org/wiki/T.J._Maxx &lt;br /&gt;
# PCI DSS. (2007). In ''Wikipedia'' [Web]. Retrieved December 2, 2007, from http://en.wikipedia.org/wiki/PCI_DSS &lt;br /&gt;
# PCI DSS Compliance Demystified. Retrieved December 2, 2007, Web site: http://pcianswers.com/ &lt;br /&gt;
# PCI DSS Compliance, Payment Card Industry Data Security Standard and Credit Card Security. Retrieved December 2, 2007, from PCI Data Security Standard Web site: http://www.itgovernance.co.uk/pci_dss.aspx&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* https://www.pcisecuritystandards.org/&lt;br /&gt;
* http://en.wikipedia.org/wiki/PCI_DSS&lt;br /&gt;
* http://pcianswers.com/&lt;br /&gt;
* http://www.itgovernance.co.uk/pci_dss.aspx&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
[[Random Number Generators and Information Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Security and Storage Mediums]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Piggybacking]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Honeypot]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Biometric Systems Regarding Security Design Principle]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Phishing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Email Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Biometrics in Information Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Smart Card Technology to Prevent Fraud]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Electronic Voting Systems]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Anti-spam systems and techniques]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[The Mitnick Attack]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Operating Systems Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Autocomplete]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Internet Cookies and Confidentiality]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Social Engineering]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Identity Theft]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Information Security Awareness]]&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 11:54, 5 December 2007 (EST)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Payment_Card_Industry_Data_Security_Standard</id>
		<title>Payment Card Industry Data Security Standard</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Payment_Card_Industry_Data_Security_Standard"/>
				<updated>2007-12-06T18:13:21Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* T.J. Maxx */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NOTE: This is currently a very rough draft.  I have 2 exams this week and will be making the final draft in one week (12/9/07)&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
The Payment Card Industry Data Security Standard (PCI DSS) is a security document created by the Payment Card Industry Security Standards Council (PCI SSC) in order to unify the security requirements of the Payment Card Industry.  In order to tie this in with what was taught in [http://www.cas.mcmaster.ca/~wmfarmer/CS-3IS3-07 Comp Sci 3IS3] (taught at [http://www.mcmaster.ca McMaster University]), the PCI DSS will be presented as an Industry Wide Security Policy and as such will be evaluated by tracing its development through the Security Life Cycle.  The first step in the Security Life Cycle is to identify threats.  The main threat to the PCI is that of Card Holder data being stolen.  The next step is Policy Creation.  In order to create one coherent document for Merchants to follow, the five major brands of the PCI (Visa, Mastercard, American Express, Discover and JCB) formed the Payment Card Industry Security Standards Council (PCI SSC).  Next comes the requirements specifications.  The PCI SSC created a detailed document of 12 major requirements for Merchants and any company which deals with Card Holder data to comply with.  These requirements focused on the ability of the Merchant to protect Card Holder data, in both electronic and physical form.  The next phase includes the design and implementation of a security system to enforce the afore stated requirements.  For a company wide security policy, this is possible.  However, for an industry wide security policy it does not make sense to specify implementation because of varying Merchant sizes.  Finally comes the Operation and Maintenance phase.  The operation of each Merchants security system depends on their implementation of the requirements stated in the PCI DSS.  These operations can be assured to be PCI DSS compliant through the use of QSA's and ASV's.  The important part of this phase is the Maintenance part.  The PCI DSS has gone through a few updates since it's creation as direct results of problems with the first version of it or new security issues that may have arisen.&lt;br /&gt;
&lt;br /&gt;
== Terms Used In This Article ==&lt;br /&gt;
* '''PCI''' ('''P'''ayment '''C'''ard '''I'''ndustry): A Payment Card is any &amp;quot;card&amp;quot; form of payment.  This can cover everything from credit cards to debit cards.  The Payment Card Industry consists of all the companies which make up the many different brands of payment cards in use today.  (ie Visa, Mastercard, ect..)&lt;br /&gt;
* '''PCI SSC''' ('''P'''ayment '''C'''ard '''I'''ndustry '''S'''ecurity '''S'''tandards '''C'''ouncil): A council made up of Visa, Mastercard, American Express, Discover and JCB (Japan Credit Bureau) created in order to align their individual security goals into one document - the PCI DSS.&lt;br /&gt;
* '''PCI DSS''' ('''P'''ayment '''C'''ard '''I'''ndustry '''D'''ata '''S'''ecurity '''S'''tandard): The document created by the PCI SSC in order to align each companies security goals.&lt;br /&gt;
* '''Card Holder''': Any customer of a Payment Card company.&lt;br /&gt;
* '''Merchant''': Any company which accepts Payment Cards as a form of payment. The definition also includes any other companies which may deal with Card Holder data without necessarily dealing directly with the Card Holder.&lt;br /&gt;
&lt;br /&gt;
== What is a Security Policy? ==&lt;br /&gt;
A Security Policy is a statement that partitions the states of a system into sets of authorized, or secure, states and a set of unauthorized, or nonsecure, states. &amp;lt;SUP&amp;gt;[ [[Payment Card Industry Data Security Standard #References|1]] ]&amp;lt;/SUP&amp;gt;  A security policy is the bases on which all the rest of a companies security mechanisms are based on.  Obviously, having a good company wide security policy is important.  The next logical step is to incorporate an industry wide security policy.  The Payment Card Industry Data Security Standard could be viewed as an example of an industry wide security policy.&lt;br /&gt;
&lt;br /&gt;
== Security Life Cycle ==&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Image:SecurityLifyCycle.GIF|frame|right|Figure 1: The Security Life Cycle&amp;lt;SUP&amp;gt;[1]&amp;lt;/SUP&amp;gt;]]&lt;br /&gt;
The Security Life Cycle consists of the following phases: Threats, Policy, Specification, Design, Implementation and Operation and Maintenance (See Figure 1).  As you can see, the security life cycle relies heavily upon later phases giving input to previous phases so that they can be updated.  This keeps the security system up to date and hence keeps what the security system is protecting more secure too.&lt;br /&gt;
----&lt;br /&gt;
=== Identify Threats ===&lt;br /&gt;
&amp;lt;P&amp;gt;The main threat to the Payment Card Industry as a whole is more of a threat to the Card Holders than the industry itself.  The Card Holders are taking a chance every time they use their credit cards to make a purchase.  This threat is not only present when purchasing online, but also when purchasing in stores (or at the &amp;quot;point of purchase&amp;quot;).  The threat originates from a lack of industry wide standards on how card holder information should be stored, processed or transmitted.&amp;lt;/P&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;P&amp;gt;This security threat directly affects the Payment Card Industry because if cardholders don't trust that their information is secure, then they will not use their credit cards and hence the payment card vendors loose business.  This is why the Payment Card Industry is moving forward with their industry wide standard for security, the Payment Card Industry Data Security Standard.&amp;lt;/P&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Image:PCICouncil.JPG|frame|right|Figure 2: Formation of the PCI SSC]]&lt;br /&gt;
----&lt;br /&gt;
=== Policy Creation===&lt;br /&gt;
&amp;lt;P&amp;gt;Before December 14th 2004, the 5 major Payment Card companies (Visa, Mastercard, American Express, Discover and JCB (Japan Credit Bureau)) each had their own set of Information Security Standards.  This meant that retailers had 5 different security policies to comply with. After December 14th 2004, these 5 brands of cards collaborated to create the Payment Card Industry Security Standards Council (PCI SSC).  The purpose of this council is to align the goals of each of the Payment Card companies in an industry wide security policy for merchants to follow.&amp;lt;/P&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=== Requirements Specifications ===&lt;br /&gt;
An overview of the list of requirements needed to maintain Payment Card Industry Data Security Standard (PCI DSS) compliance is available here [https://www.pcisecuritystandards.org/tech/index.htm About the PCI Data Security Standard (PCI DSS)]. The full list of requirements is available here: [https://www.pcisecuritystandards.org/tech/download_the_pci_dss.htm Download the PCI DSS].  Below is the summarized list and an explanation of what each item means.  There are 12 major requirements which can be broken up into 6 categories.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Build and Maintain a Secure Network''&amp;lt;BR&amp;gt;&lt;br /&gt;
1.)Install and maintain a firewall configuration to protect cardholders' data&amp;lt;BR&amp;gt;&lt;br /&gt;
2.)Do not use vendor-supplied defaults for system password and other security parameters&amp;lt;BR&amp;gt;&lt;br /&gt;
* This set of requirements is meant to keep any network of computers which contain Card Holder information in a secure state&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Protect Card Holder Data''&amp;lt;BR&amp;gt;&lt;br /&gt;
3.)Protect stored Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to protect the card holder data while it is stored on merchant computers&amp;lt;BR&amp;gt;&lt;br /&gt;
4.)Encrypt transmission of Card Holder data across open, public networks&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to protect Card Holder data when it might be necessary to transmit it across a public network (ie when contacting the Payment Card server)&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Maintain a Vulnerability Management Program''&amp;lt;BR&amp;gt;&lt;br /&gt;
5.)Use and regularly update anti-virus software&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that all merchants do take advantage of some form of anti-virus software.&amp;lt;BR&amp;gt;&lt;br /&gt;
6.)Develop and maintain secure systems and applications&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to put security as a priority during the development of software. This is an important requirement because many times when software is being designed, security is tacked on as an afterthought.  By at least making developers aware of security as being a requirement of their software, this ensures better quality of any security mechanisms built into the software.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Implement Strong Access Control Measures''&amp;lt;BR&amp;gt;&lt;br /&gt;
7.)Restrict access to Card Holder data by business need-to-know&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that only people who need to know about Card Holder data have access to it.  This is similar to the principle of least privilege.  &amp;lt;BR&amp;gt;&lt;br /&gt;
8.)Assign a unique ID to each person with computer access&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to add a level of accountability to all users on the system.  If each user has their own unique ID on the merchant's system, then actions can be tracked on linked to the person who did them.&amp;lt;BR&amp;gt;&lt;br /&gt;
9.)Restrict physical access to Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to extend the coverage of the PCI DSS to any form of Card Holder data which may not be on a computer.  Hence, the PCI DSS is extended to cover not only digital information but also physical copies of the information.  However, this does not prevent the threat of customer data being stolen entirely.  There is nothing to prevent an employee from copying down information with a pencil and paper.  Though this is a problem, it is partially alleviated by requirement 7: Restrict access to Card Holder data by business need-to-know.  If only a small number of employees can access the Card Holder data, then it is much easier to track down who may have stolen Card Holder data if there is a security breech from the inside.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Regularly Monitor and Test Networks''&amp;lt;BR&amp;gt;&lt;br /&gt;
10.) Track and monitor all access to network resources and Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is designed to catch any unauthorized accesses to Card Holder data.  If an anomaly is detected, then the system should be able to detect it and steps should be taken to fix the problem&amp;lt;BR&amp;gt;&lt;br /&gt;
11.) Regularly test security systems and processes&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that merchants don't just set and forget their security systems.  It reminds them that security is a full time job and must constantly be maintained.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
''Maintain an Information Security Policy''&amp;lt;BR&amp;gt;&lt;br /&gt;
12.) Maintain a policy that addresses information security&amp;lt;BR&amp;gt;&lt;br /&gt;
* Though this may seem a bit redundant, this is an important requirement.  It means that every merchant that deals with Cardholder Data must have their own security policy as well in order to protect Card Holder data.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Design/Implementation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;P&amp;gt;There is no design or implementation specified in the PCI DSS.  This is because the application of this security policy is so broad that it is impossible to have one design that will work for every company.  For example Soney, which may handle millions of transactions a year, will need a different implementation than a small &amp;quot;mom and pop&amp;quot; company, who may handle only a few hundred transactions a year.  However, requirements must still be met to some degree depending on the volume of Payment Card transactions which occur per given merchant. This makes the PCI DSS sound rather weak.  However, there is a way which the Payment Card Industry Security Standards Council can keep track of whether or not the requirements are being met.  This is through the use of QSA's and ASV's.&amp;lt;/P&amp;gt;&lt;br /&gt;
*[https://www.pcisecuritystandards.org/programs/qsa_program.htm Qualified Security Assessors (QSA's)] are companies who have been approved by the PCI Security Standards Council to assess the compliance of merchants to the PCI DSS.  The way the PCI Security Standards Council does this is through a certification program.  This requires not only the company to be certified, but also all of it's employees to be certified on a yearly bases.&lt;br /&gt;
*[https://www.pcisecuritystandards.org/programs/asv_program.htm Approved Scanning Vendors (ASV's)] are companies who are approved by the PCI Security Standards Council to assess merchants' networks for security vulnerabilities.  They accomplish this by simulating both normal and abnormal processes on the merchants networks.  Again, ASV's must also be certified by the PCI Security Standards Council on a yearly basis.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Operation and Maintenance ===&lt;br /&gt;
The final step of the Security Life Cycle is Operation and Maintenance.  Though this is the final step, it is by far not the least and the life cycle does not end here.  This step requires that any time a security breach is detected, steps must be taken to improve the security system.  The PCI DSS has definately entered this phase.  There are two examples of such maintenance and updating occuring in the PCI DSS:&lt;br /&gt;
* Version 1.1&lt;br /&gt;
* TJ Max&lt;br /&gt;
&lt;br /&gt;
====Version 1.1====&lt;br /&gt;
Version 1.1 of the PCI DSS was releases on September 2006.  This was only a year and a half after the release of the version 1.0 of the PCI DSS, which is pretty fast considering the PCI DSS is meant to be a security wide standard. Version 1.1 clarified many of the requirements and wording of Version 1.0 and also included suggestions on how to achieve compliance.  A full summary of the changes between PCI DSS Version 1.1 and PCI DSS Version 1.0 are available[[http://www.procheckup.com/PDFs/ProCheckUp_PCIDSS_SummaryOfChanges.pdf|here]].&lt;br /&gt;
&lt;br /&gt;
====T.J. Maxx====&lt;br /&gt;
In Mid-December of 2006, the company computer systems were compromised and customer data was stolen.  Everything from credit card numbers to street addresses were stolen from 45.7 million customers&amp;lt;SUP&amp;gt;[3]&amp;lt;/SUP&amp;gt;.  The attack did not come from the internet, but rather from an inadequate secure wireless network.  As you can see from the screen shot of the [http://www.tjmaxx.com/index.asp | T.J.Maxx website] figure 3, this even it still affecting the company today, December of 2007.  The highlighted link links to an explanation to the customers about what happened, why it happened and what steps are being taken to fix the problem.  &lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
As a direct result of this, the PCI DSS was updated to included better guidelines about wireless networks. Specifically, section 4.1.1 added specifications about implementing Wireless Encryption Protocol Correctly and provided better guidelines for key rotation. For Specifics, see https://www.pcisecuritystandards.org/pdfs/pci_dss_v1-1.pdf.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# Bishop, Matt. ''Introduction to Computer Security''. Boston: Addison-Wesley, 2006.&lt;br /&gt;
# (2007). About the PCI DSS - PCI Security Standards Council. Retrieved December 2, 2007, Web site: https://www.pcisecuritystandards.org/tech/index.htm &lt;br /&gt;
# T.J. Maxx. (2007). In ''Wikipedia'' [Web]. Retrieved December 2, 2007, from http://en.wikipedia.org/wiki/T.J._Maxx &lt;br /&gt;
# PCI DSS. (2007). In ''Wikipedia'' [Web]. Retrieved December 2, 2007, from http://en.wikipedia.org/wiki/PCI_DSS &lt;br /&gt;
# PCI DSS Compliance Demystified. Retrieved December 2, 2007, Web site: http://pcianswers.com/ &lt;br /&gt;
# PCI DSS Compliance, Payment Card Industry Data Security Standard and Credit Card Security. Retrieved December 2, 2007, from PCI Data Security Standard Web site: http://www.itgovernance.co.uk/pci_dss.aspx&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* https://www.pcisecuritystandards.org/&lt;br /&gt;
* http://en.wikipedia.org/wiki/PCI_DSS&lt;br /&gt;
* http://pcianswers.com/&lt;br /&gt;
* http://www.itgovernance.co.uk/pci_dss.aspx&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
[[Random Number Generators and Information Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Security and Storage Mediums]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Piggybacking]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Honeypot]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Biometric Systems Regarding Security Design Principle]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Phishing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Email Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Biometrics in Information Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Smart Card Technology to Prevent Fraud]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Electronic Voting Systems]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Anti-spam systems and techniques]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[The Mitnick Attack]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Operating Systems Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Autocomplete]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Internet Cookies and Confidentiality]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Social Engineering]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Identity Theft]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Information Security Awareness]]&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 11:54, 5 December 2007 (EST)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Payment_Card_Industry_Data_Security_Standard</id>
		<title>Payment Card Industry Data Security Standard</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Payment_Card_Industry_Data_Security_Standard"/>
				<updated>2007-12-06T18:12:38Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* T.J. Maxx */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NOTE: This is currently a very rough draft.  I have 2 exams this week and will be making the final draft in one week (12/9/07)&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
The Payment Card Industry Data Security Standard (PCI DSS) is a security document created by the Payment Card Industry Security Standards Council (PCI SSC) in order to unify the security requirements of the Payment Card Industry.  In order to tie this in with what was taught in [http://www.cas.mcmaster.ca/~wmfarmer/CS-3IS3-07 Comp Sci 3IS3] (taught at [http://www.mcmaster.ca McMaster University]), the PCI DSS will be presented as an Industry Wide Security Policy and as such will be evaluated by tracing its development through the Security Life Cycle.  The first step in the Security Life Cycle is to identify threats.  The main threat to the PCI is that of Card Holder data being stolen.  The next step is Policy Creation.  In order to create one coherent document for Merchants to follow, the five major brands of the PCI (Visa, Mastercard, American Express, Discover and JCB) formed the Payment Card Industry Security Standards Council (PCI SSC).  Next comes the requirements specifications.  The PCI SSC created a detailed document of 12 major requirements for Merchants and any company which deals with Card Holder data to comply with.  These requirements focused on the ability of the Merchant to protect Card Holder data, in both electronic and physical form.  The next phase includes the design and implementation of a security system to enforce the afore stated requirements.  For a company wide security policy, this is possible.  However, for an industry wide security policy it does not make sense to specify implementation because of varying Merchant sizes.  Finally comes the Operation and Maintenance phase.  The operation of each Merchants security system depends on their implementation of the requirements stated in the PCI DSS.  These operations can be assured to be PCI DSS compliant through the use of QSA's and ASV's.  The important part of this phase is the Maintenance part.  The PCI DSS has gone through a few updates since it's creation as direct results of problems with the first version of it or new security issues that may have arisen.&lt;br /&gt;
&lt;br /&gt;
== Terms Used In This Article ==&lt;br /&gt;
* '''PCI''' ('''P'''ayment '''C'''ard '''I'''ndustry): A Payment Card is any &amp;quot;card&amp;quot; form of payment.  This can cover everything from credit cards to debit cards.  The Payment Card Industry consists of all the companies which make up the many different brands of payment cards in use today.  (ie Visa, Mastercard, ect..)&lt;br /&gt;
* '''PCI SSC''' ('''P'''ayment '''C'''ard '''I'''ndustry '''S'''ecurity '''S'''tandards '''C'''ouncil): A council made up of Visa, Mastercard, American Express, Discover and JCB (Japan Credit Bureau) created in order to align their individual security goals into one document - the PCI DSS.&lt;br /&gt;
* '''PCI DSS''' ('''P'''ayment '''C'''ard '''I'''ndustry '''D'''ata '''S'''ecurity '''S'''tandard): The document created by the PCI SSC in order to align each companies security goals.&lt;br /&gt;
* '''Card Holder''': Any customer of a Payment Card company.&lt;br /&gt;
* '''Merchant''': Any company which accepts Payment Cards as a form of payment. The definition also includes any other companies which may deal with Card Holder data without necessarily dealing directly with the Card Holder.&lt;br /&gt;
&lt;br /&gt;
== What is a Security Policy? ==&lt;br /&gt;
A Security Policy is a statement that partitions the states of a system into sets of authorized, or secure, states and a set of unauthorized, or nonsecure, states. &amp;lt;SUP&amp;gt;[ [[Payment Card Industry Data Security Standard #References|1]] ]&amp;lt;/SUP&amp;gt;  A security policy is the bases on which all the rest of a companies security mechanisms are based on.  Obviously, having a good company wide security policy is important.  The next logical step is to incorporate an industry wide security policy.  The Payment Card Industry Data Security Standard could be viewed as an example of an industry wide security policy.&lt;br /&gt;
&lt;br /&gt;
== Security Life Cycle ==&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Image:SecurityLifyCycle.GIF|frame|right|Figure 1: The Security Life Cycle&amp;lt;SUP&amp;gt;[1]&amp;lt;/SUP&amp;gt;]]&lt;br /&gt;
The Security Life Cycle consists of the following phases: Threats, Policy, Specification, Design, Implementation and Operation and Maintenance (See Figure 1).  As you can see, the security life cycle relies heavily upon later phases giving input to previous phases so that they can be updated.  This keeps the security system up to date and hence keeps what the security system is protecting more secure too.&lt;br /&gt;
----&lt;br /&gt;
=== Identify Threats ===&lt;br /&gt;
&amp;lt;P&amp;gt;The main threat to the Payment Card Industry as a whole is more of a threat to the Card Holders than the industry itself.  The Card Holders are taking a chance every time they use their credit cards to make a purchase.  This threat is not only present when purchasing online, but also when purchasing in stores (or at the &amp;quot;point of purchase&amp;quot;).  The threat originates from a lack of industry wide standards on how card holder information should be stored, processed or transmitted.&amp;lt;/P&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;P&amp;gt;This security threat directly affects the Payment Card Industry because if cardholders don't trust that their information is secure, then they will not use their credit cards and hence the payment card vendors loose business.  This is why the Payment Card Industry is moving forward with their industry wide standard for security, the Payment Card Industry Data Security Standard.&amp;lt;/P&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Image:PCICouncil.JPG|frame|right|Figure 2: Formation of the PCI SSC]]&lt;br /&gt;
----&lt;br /&gt;
=== Policy Creation===&lt;br /&gt;
&amp;lt;P&amp;gt;Before December 14th 2004, the 5 major Payment Card companies (Visa, Mastercard, American Express, Discover and JCB (Japan Credit Bureau)) each had their own set of Information Security Standards.  This meant that retailers had 5 different security policies to comply with. After December 14th 2004, these 5 brands of cards collaborated to create the Payment Card Industry Security Standards Council (PCI SSC).  The purpose of this council is to align the goals of each of the Payment Card companies in an industry wide security policy for merchants to follow.&amp;lt;/P&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=== Requirements Specifications ===&lt;br /&gt;
An overview of the list of requirements needed to maintain Payment Card Industry Data Security Standard (PCI DSS) compliance is available here [https://www.pcisecuritystandards.org/tech/index.htm About the PCI Data Security Standard (PCI DSS)]. The full list of requirements is available here: [https://www.pcisecuritystandards.org/tech/download_the_pci_dss.htm Download the PCI DSS].  Below is the summarized list and an explanation of what each item means.  There are 12 major requirements which can be broken up into 6 categories.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Build and Maintain a Secure Network''&amp;lt;BR&amp;gt;&lt;br /&gt;
1.)Install and maintain a firewall configuration to protect cardholders' data&amp;lt;BR&amp;gt;&lt;br /&gt;
2.)Do not use vendor-supplied defaults for system password and other security parameters&amp;lt;BR&amp;gt;&lt;br /&gt;
* This set of requirements is meant to keep any network of computers which contain Card Holder information in a secure state&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Protect Card Holder Data''&amp;lt;BR&amp;gt;&lt;br /&gt;
3.)Protect stored Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to protect the card holder data while it is stored on merchant computers&amp;lt;BR&amp;gt;&lt;br /&gt;
4.)Encrypt transmission of Card Holder data across open, public networks&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to protect Card Holder data when it might be necessary to transmit it across a public network (ie when contacting the Payment Card server)&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Maintain a Vulnerability Management Program''&amp;lt;BR&amp;gt;&lt;br /&gt;
5.)Use and regularly update anti-virus software&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that all merchants do take advantage of some form of anti-virus software.&amp;lt;BR&amp;gt;&lt;br /&gt;
6.)Develop and maintain secure systems and applications&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to put security as a priority during the development of software. This is an important requirement because many times when software is being designed, security is tacked on as an afterthought.  By at least making developers aware of security as being a requirement of their software, this ensures better quality of any security mechanisms built into the software.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Implement Strong Access Control Measures''&amp;lt;BR&amp;gt;&lt;br /&gt;
7.)Restrict access to Card Holder data by business need-to-know&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that only people who need to know about Card Holder data have access to it.  This is similar to the principle of least privilege.  &amp;lt;BR&amp;gt;&lt;br /&gt;
8.)Assign a unique ID to each person with computer access&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to add a level of accountability to all users on the system.  If each user has their own unique ID on the merchant's system, then actions can be tracked on linked to the person who did them.&amp;lt;BR&amp;gt;&lt;br /&gt;
9.)Restrict physical access to Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to extend the coverage of the PCI DSS to any form of Card Holder data which may not be on a computer.  Hence, the PCI DSS is extended to cover not only digital information but also physical copies of the information.  However, this does not prevent the threat of customer data being stolen entirely.  There is nothing to prevent an employee from copying down information with a pencil and paper.  Though this is a problem, it is partially alleviated by requirement 7: Restrict access to Card Holder data by business need-to-know.  If only a small number of employees can access the Card Holder data, then it is much easier to track down who may have stolen Card Holder data if there is a security breech from the inside.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Regularly Monitor and Test Networks''&amp;lt;BR&amp;gt;&lt;br /&gt;
10.) Track and monitor all access to network resources and Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is designed to catch any unauthorized accesses to Card Holder data.  If an anomaly is detected, then the system should be able to detect it and steps should be taken to fix the problem&amp;lt;BR&amp;gt;&lt;br /&gt;
11.) Regularly test security systems and processes&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that merchants don't just set and forget their security systems.  It reminds them that security is a full time job and must constantly be maintained.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
''Maintain an Information Security Policy''&amp;lt;BR&amp;gt;&lt;br /&gt;
12.) Maintain a policy that addresses information security&amp;lt;BR&amp;gt;&lt;br /&gt;
* Though this may seem a bit redundant, this is an important requirement.  It means that every merchant that deals with Cardholder Data must have their own security policy as well in order to protect Card Holder data.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Design/Implementation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;P&amp;gt;There is no design or implementation specified in the PCI DSS.  This is because the application of this security policy is so broad that it is impossible to have one design that will work for every company.  For example Soney, which may handle millions of transactions a year, will need a different implementation than a small &amp;quot;mom and pop&amp;quot; company, who may handle only a few hundred transactions a year.  However, requirements must still be met to some degree depending on the volume of Payment Card transactions which occur per given merchant. This makes the PCI DSS sound rather weak.  However, there is a way which the Payment Card Industry Security Standards Council can keep track of whether or not the requirements are being met.  This is through the use of QSA's and ASV's.&amp;lt;/P&amp;gt;&lt;br /&gt;
*[https://www.pcisecuritystandards.org/programs/qsa_program.htm Qualified Security Assessors (QSA's)] are companies who have been approved by the PCI Security Standards Council to assess the compliance of merchants to the PCI DSS.  The way the PCI Security Standards Council does this is through a certification program.  This requires not only the company to be certified, but also all of it's employees to be certified on a yearly bases.&lt;br /&gt;
*[https://www.pcisecuritystandards.org/programs/asv_program.htm Approved Scanning Vendors (ASV's)] are companies who are approved by the PCI Security Standards Council to assess merchants' networks for security vulnerabilities.  They accomplish this by simulating both normal and abnormal processes on the merchants networks.  Again, ASV's must also be certified by the PCI Security Standards Council on a yearly basis.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Operation and Maintenance ===&lt;br /&gt;
The final step of the Security Life Cycle is Operation and Maintenance.  Though this is the final step, it is by far not the least and the life cycle does not end here.  This step requires that any time a security breach is detected, steps must be taken to improve the security system.  The PCI DSS has definately entered this phase.  There are two examples of such maintenance and updating occuring in the PCI DSS:&lt;br /&gt;
* Version 1.1&lt;br /&gt;
* TJ Max&lt;br /&gt;
&lt;br /&gt;
====Version 1.1====&lt;br /&gt;
Version 1.1 of the PCI DSS was releases on September 2006.  This was only a year and a half after the release of the version 1.0 of the PCI DSS, which is pretty fast considering the PCI DSS is meant to be a security wide standard. Version 1.1 clarified many of the requirements and wording of Version 1.0 and also included suggestions on how to achieve compliance.  A full summary of the changes between PCI DSS Version 1.1 and PCI DSS Version 1.0 are available[[http://www.procheckup.com/PDFs/ProCheckUp_PCIDSS_SummaryOfChanges.pdf|here]].&lt;br /&gt;
&lt;br /&gt;
====T.J. Maxx====&lt;br /&gt;
In Mid-December of 2006, the company computer systems were compromised and customer data was stolen.  Everything from credit card numbers to street addresses were stolen from 45.7 million customers&amp;lt;SUP&amp;gt;[3]&amp;lt;/SUP&amp;gt;.  The attack did not come from the internet, but rather from an inadequate secure wireless network.  As you can see from the screen shot of the [T.J.Maxx website] figure 3, this even it still affecting the company today, December of 2007.  The highlighted link links to an explanation to the customers about what happened, why it happened and what steps are being taken to fix the problem.  &lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
As a direct result of this, the PCI DSS was updated to included better guidelines about wireless networks. Specifically, section 4.1.1 added specifications about implementing Wireless Encryption Protocol Correctly and provided better guidelines for key rotation. For Specifics, see https://www.pcisecuritystandards.org/pdfs/pci_dss_v1-1.pdf.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# Bishop, Matt. ''Introduction to Computer Security''. Boston: Addison-Wesley, 2006.&lt;br /&gt;
# (2007). About the PCI DSS - PCI Security Standards Council. Retrieved December 2, 2007, Web site: https://www.pcisecuritystandards.org/tech/index.htm &lt;br /&gt;
# T.J. Maxx. (2007). In ''Wikipedia'' [Web]. Retrieved December 2, 2007, from http://en.wikipedia.org/wiki/T.J._Maxx &lt;br /&gt;
# PCI DSS. (2007). In ''Wikipedia'' [Web]. Retrieved December 2, 2007, from http://en.wikipedia.org/wiki/PCI_DSS &lt;br /&gt;
# PCI DSS Compliance Demystified. Retrieved December 2, 2007, Web site: http://pcianswers.com/ &lt;br /&gt;
# PCI DSS Compliance, Payment Card Industry Data Security Standard and Credit Card Security. Retrieved December 2, 2007, from PCI Data Security Standard Web site: http://www.itgovernance.co.uk/pci_dss.aspx&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* https://www.pcisecuritystandards.org/&lt;br /&gt;
* http://en.wikipedia.org/wiki/PCI_DSS&lt;br /&gt;
* http://pcianswers.com/&lt;br /&gt;
* http://www.itgovernance.co.uk/pci_dss.aspx&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
[[Random Number Generators and Information Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Security and Storage Mediums]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Piggybacking]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Honeypot]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Biometric Systems Regarding Security Design Principle]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Phishing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Email Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Biometrics in Information Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Smart Card Technology to Prevent Fraud]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Electronic Voting Systems]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Anti-spam systems and techniques]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[The Mitnick Attack]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Operating Systems Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Autocomplete]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Internet Cookies and Confidentiality]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Social Engineering]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Identity Theft]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Information Security Awareness]]&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 11:54, 5 December 2007 (EST)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Payment_Card_Industry_Data_Security_Standard</id>
		<title>Payment Card Industry Data Security Standard</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Payment_Card_Industry_Data_Security_Standard"/>
				<updated>2007-12-06T18:10:30Z</updated>
		
		<summary type="html">&lt;p&gt;Manselnj:&amp;#32;/* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NOTE: This is currently a very rough draft.  I have 2 exams this week and will be making the final draft in one week (12/9/07)&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
The Payment Card Industry Data Security Standard (PCI DSS) is a security document created by the Payment Card Industry Security Standards Council (PCI SSC) in order to unify the security requirements of the Payment Card Industry.  In order to tie this in with what was taught in [http://www.cas.mcmaster.ca/~wmfarmer/CS-3IS3-07 Comp Sci 3IS3] (taught at [http://www.mcmaster.ca McMaster University]), the PCI DSS will be presented as an Industry Wide Security Policy and as such will be evaluated by tracing its development through the Security Life Cycle.  The first step in the Security Life Cycle is to identify threats.  The main threat to the PCI is that of Card Holder data being stolen.  The next step is Policy Creation.  In order to create one coherent document for Merchants to follow, the five major brands of the PCI (Visa, Mastercard, American Express, Discover and JCB) formed the Payment Card Industry Security Standards Council (PCI SSC).  Next comes the requirements specifications.  The PCI SSC created a detailed document of 12 major requirements for Merchants and any company which deals with Card Holder data to comply with.  These requirements focused on the ability of the Merchant to protect Card Holder data, in both electronic and physical form.  The next phase includes the design and implementation of a security system to enforce the afore stated requirements.  For a company wide security policy, this is possible.  However, for an industry wide security policy it does not make sense to specify implementation because of varying Merchant sizes.  Finally comes the Operation and Maintenance phase.  The operation of each Merchants security system depends on their implementation of the requirements stated in the PCI DSS.  These operations can be assured to be PCI DSS compliant through the use of QSA's and ASV's.  The important part of this phase is the Maintenance part.  The PCI DSS has gone through a few updates since it's creation as direct results of problems with the first version of it or new security issues that may have arisen.&lt;br /&gt;
&lt;br /&gt;
== Terms Used In This Article ==&lt;br /&gt;
* '''PCI''' ('''P'''ayment '''C'''ard '''I'''ndustry): A Payment Card is any &amp;quot;card&amp;quot; form of payment.  This can cover everything from credit cards to debit cards.  The Payment Card Industry consists of all the companies which make up the many different brands of payment cards in use today.  (ie Visa, Mastercard, ect..)&lt;br /&gt;
* '''PCI SSC''' ('''P'''ayment '''C'''ard '''I'''ndustry '''S'''ecurity '''S'''tandards '''C'''ouncil): A council made up of Visa, Mastercard, American Express, Discover and JCB (Japan Credit Bureau) created in order to align their individual security goals into one document - the PCI DSS.&lt;br /&gt;
* '''PCI DSS''' ('''P'''ayment '''C'''ard '''I'''ndustry '''D'''ata '''S'''ecurity '''S'''tandard): The document created by the PCI SSC in order to align each companies security goals.&lt;br /&gt;
* '''Card Holder''': Any customer of a Payment Card company.&lt;br /&gt;
* '''Merchant''': Any company which accepts Payment Cards as a form of payment. The definition also includes any other companies which may deal with Card Holder data without necessarily dealing directly with the Card Holder.&lt;br /&gt;
&lt;br /&gt;
== What is a Security Policy? ==&lt;br /&gt;
A Security Policy is a statement that partitions the states of a system into sets of authorized, or secure, states and a set of unauthorized, or nonsecure, states. &amp;lt;SUP&amp;gt;[ [[Payment Card Industry Data Security Standard #References|1]] ]&amp;lt;/SUP&amp;gt;  A security policy is the bases on which all the rest of a companies security mechanisms are based on.  Obviously, having a good company wide security policy is important.  The next logical step is to incorporate an industry wide security policy.  The Payment Card Industry Data Security Standard could be viewed as an example of an industry wide security policy.&lt;br /&gt;
&lt;br /&gt;
== Security Life Cycle ==&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Image:SecurityLifyCycle.GIF|frame|right|Figure 1: The Security Life Cycle&amp;lt;SUP&amp;gt;[1]&amp;lt;/SUP&amp;gt;]]&lt;br /&gt;
The Security Life Cycle consists of the following phases: Threats, Policy, Specification, Design, Implementation and Operation and Maintenance (See Figure 1).  As you can see, the security life cycle relies heavily upon later phases giving input to previous phases so that they can be updated.  This keeps the security system up to date and hence keeps what the security system is protecting more secure too.&lt;br /&gt;
----&lt;br /&gt;
=== Identify Threats ===&lt;br /&gt;
&amp;lt;P&amp;gt;The main threat to the Payment Card Industry as a whole is more of a threat to the Card Holders than the industry itself.  The Card Holders are taking a chance every time they use their credit cards to make a purchase.  This threat is not only present when purchasing online, but also when purchasing in stores (or at the &amp;quot;point of purchase&amp;quot;).  The threat originates from a lack of industry wide standards on how card holder information should be stored, processed or transmitted.&amp;lt;/P&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;P&amp;gt;This security threat directly affects the Payment Card Industry because if cardholders don't trust that their information is secure, then they will not use their credit cards and hence the payment card vendors loose business.  This is why the Payment Card Industry is moving forward with their industry wide standard for security, the Payment Card Industry Data Security Standard.&amp;lt;/P&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Image:PCICouncil.JPG|frame|right|Figure 2: Formation of the PCI SSC]]&lt;br /&gt;
----&lt;br /&gt;
=== Policy Creation===&lt;br /&gt;
&amp;lt;P&amp;gt;Before December 14th 2004, the 5 major Payment Card companies (Visa, Mastercard, American Express, Discover and JCB (Japan Credit Bureau)) each had their own set of Information Security Standards.  This meant that retailers had 5 different security policies to comply with. After December 14th 2004, these 5 brands of cards collaborated to create the Payment Card Industry Security Standards Council (PCI SSC).  The purpose of this council is to align the goals of each of the Payment Card companies in an industry wide security policy for merchants to follow.&amp;lt;/P&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=== Requirements Specifications ===&lt;br /&gt;
An overview of the list of requirements needed to maintain Payment Card Industry Data Security Standard (PCI DSS) compliance is available here [https://www.pcisecuritystandards.org/tech/index.htm About the PCI Data Security Standard (PCI DSS)]. The full list of requirements is available here: [https://www.pcisecuritystandards.org/tech/download_the_pci_dss.htm Download the PCI DSS].  Below is the summarized list and an explanation of what each item means.  There are 12 major requirements which can be broken up into 6 categories.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Build and Maintain a Secure Network''&amp;lt;BR&amp;gt;&lt;br /&gt;
1.)Install and maintain a firewall configuration to protect cardholders' data&amp;lt;BR&amp;gt;&lt;br /&gt;
2.)Do not use vendor-supplied defaults for system password and other security parameters&amp;lt;BR&amp;gt;&lt;br /&gt;
* This set of requirements is meant to keep any network of computers which contain Card Holder information in a secure state&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Protect Card Holder Data''&amp;lt;BR&amp;gt;&lt;br /&gt;
3.)Protect stored Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to protect the card holder data while it is stored on merchant computers&amp;lt;BR&amp;gt;&lt;br /&gt;
4.)Encrypt transmission of Card Holder data across open, public networks&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to protect Card Holder data when it might be necessary to transmit it across a public network (ie when contacting the Payment Card server)&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Maintain a Vulnerability Management Program''&amp;lt;BR&amp;gt;&lt;br /&gt;
5.)Use and regularly update anti-virus software&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that all merchants do take advantage of some form of anti-virus software.&amp;lt;BR&amp;gt;&lt;br /&gt;
6.)Develop and maintain secure systems and applications&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to put security as a priority during the development of software. This is an important requirement because many times when software is being designed, security is tacked on as an afterthought.  By at least making developers aware of security as being a requirement of their software, this ensures better quality of any security mechanisms built into the software.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Implement Strong Access Control Measures''&amp;lt;BR&amp;gt;&lt;br /&gt;
7.)Restrict access to Card Holder data by business need-to-know&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that only people who need to know about Card Holder data have access to it.  This is similar to the principle of least privilege.  &amp;lt;BR&amp;gt;&lt;br /&gt;
8.)Assign a unique ID to each person with computer access&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to add a level of accountability to all users on the system.  If each user has their own unique ID on the merchant's system, then actions can be tracked on linked to the person who did them.&amp;lt;BR&amp;gt;&lt;br /&gt;
9.)Restrict physical access to Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to extend the coverage of the PCI DSS to any form of Card Holder data which may not be on a computer.  Hence, the PCI DSS is extended to cover not only digital information but also physical copies of the information.  However, this does not prevent the threat of customer data being stolen entirely.  There is nothing to prevent an employee from copying down information with a pencil and paper.  Though this is a problem, it is partially alleviated by requirement 7: Restrict access to Card Holder data by business need-to-know.  If only a small number of employees can access the Card Holder data, then it is much easier to track down who may have stolen Card Holder data if there is a security breech from the inside.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Regularly Monitor and Test Networks''&amp;lt;BR&amp;gt;&lt;br /&gt;
10.) Track and monitor all access to network resources and Card Holder data&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is designed to catch any unauthorized accesses to Card Holder data.  If an anomaly is detected, then the system should be able to detect it and steps should be taken to fix the problem&amp;lt;BR&amp;gt;&lt;br /&gt;
11.) Regularly test security systems and processes&amp;lt;BR&amp;gt;&lt;br /&gt;
* This requirement is meant to ensure that merchants don't just set and forget their security systems.  It reminds them that security is a full time job and must constantly be maintained.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
''Maintain an Information Security Policy''&amp;lt;BR&amp;gt;&lt;br /&gt;
12.) Maintain a policy that addresses information security&amp;lt;BR&amp;gt;&lt;br /&gt;
* Though this may seem a bit redundant, this is an important requirement.  It means that every merchant that deals with Cardholder Data must have their own security policy as well in order to protect Card Holder data.&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Design/Implementation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;P&amp;gt;There is no design or implementation specified in the PCI DSS.  This is because the application of this security policy is so broad that it is impossible to have one design that will work for every company.  For example Soney, which may handle millions of transactions a year, will need a different implementation than a small &amp;quot;mom and pop&amp;quot; company, who may handle only a few hundred transactions a year.  However, requirements must still be met to some degree depending on the volume of Payment Card transactions which occur per given merchant. This makes the PCI DSS sound rather weak.  However, there is a way which the Payment Card Industry Security Standards Council can keep track of whether or not the requirements are being met.  This is through the use of QSA's and ASV's.&amp;lt;/P&amp;gt;&lt;br /&gt;
*[https://www.pcisecuritystandards.org/programs/qsa_program.htm Qualified Security Assessors (QSA's)] are companies who have been approved by the PCI Security Standards Council to assess the compliance of merchants to the PCI DSS.  The way the PCI Security Standards Council does this is through a certification program.  This requires not only the company to be certified, but also all of it's employees to be certified on a yearly bases.&lt;br /&gt;
*[https://www.pcisecuritystandards.org/programs/asv_program.htm Approved Scanning Vendors (ASV's)] are companies who are approved by the PCI Security Standards Council to assess merchants' networks for security vulnerabilities.  They accomplish this by simulating both normal and abnormal processes on the merchants networks.  Again, ASV's must also be certified by the PCI Security Standards Council on a yearly basis.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Operation and Maintenance ===&lt;br /&gt;
The final step of the Security Life Cycle is Operation and Maintenance.  Though this is the final step, it is by far not the least and the life cycle does not end here.  This step requires that any time a security breach is detected, steps must be taken to improve the security system.  The PCI DSS has definately entered this phase.  There are two examples of such maintenance and updating occuring in the PCI DSS:&lt;br /&gt;
* Version 1.1&lt;br /&gt;
* TJ Max&lt;br /&gt;
&lt;br /&gt;
====Version 1.1====&lt;br /&gt;
Version 1.1 of the PCI DSS was releases on September 2006.  This was only a year and a half after the release of the version 1.0 of the PCI DSS, which is pretty fast considering the PCI DSS is meant to be a security wide standard. Version 1.1 clarified many of the requirements and wording of Version 1.0 and also included suggestions on how to achieve compliance.  A full summary of the changes between PCI DSS Version 1.1 and PCI DSS Version 1.0 are available[[http://www.procheckup.com/PDFs/ProCheckUp_PCIDSS_SummaryOfChanges.pdf|here]].&lt;br /&gt;
&lt;br /&gt;
====T.J. Maxx====&lt;br /&gt;
In Mid-December of 2006, the company computer systems were compromised and customer data was stolen.  Everything from credit card numbers to street addresses were stolen from 45.7 million customers&amp;lt;SUP&amp;gt;[3]&amp;lt;/SUP&amp;gt;.  The attack did not come from the internet, but rather from an inadequate secure wireless network.  As you can see from figure 3, this even it still affecting the company today, December of 2007.  The highlighted link links to an explanation to the customers about what happened, why it happened and what steps are being taken to fix the problem.  &lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
As a direct result of this, the PCI DSS was updated to included better guidelines about wireless networks. Specifically, section 4.1.1 added specifications about implementing Wireless Encryption Protocol Correctly and provided better guidelines for key rotation. For Specifics, see https://www.pcisecuritystandards.org/pdfs/pci_dss_v1-1.pdf.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# Bishop, Matt. ''Introduction to Computer Security''. Boston: Addison-Wesley, 2006.&lt;br /&gt;
# (2007). About the PCI DSS - PCI Security Standards Council. Retrieved December 2, 2007, Web site: https://www.pcisecuritystandards.org/tech/index.htm &lt;br /&gt;
# T.J. Maxx. (2007). In ''Wikipedia'' [Web]. Retrieved December 2, 2007, from http://en.wikipedia.org/wiki/T.J._Maxx &lt;br /&gt;
# PCI DSS. (2007). In ''Wikipedia'' [Web]. Retrieved December 2, 2007, from http://en.wikipedia.org/wiki/PCI_DSS &lt;br /&gt;
# PCI DSS Compliance Demystified. Retrieved December 2, 2007, Web site: http://pcianswers.com/ &lt;br /&gt;
# PCI DSS Compliance, Payment Card Industry Data Security Standard and Credit Card Security. Retrieved December 2, 2007, from PCI Data Security Standard Web site: http://www.itgovernance.co.uk/pci_dss.aspx&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* https://www.pcisecuritystandards.org/&lt;br /&gt;
* http://en.wikipedia.org/wiki/PCI_DSS&lt;br /&gt;
* http://pcianswers.com/&lt;br /&gt;
* http://www.itgovernance.co.uk/pci_dss.aspx&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
[[Random Number Generators and Information Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Security and Storage Mediums]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Piggybacking]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Honeypot]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Biometric Systems Regarding Security Design Principle]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Phishing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Email Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Biometrics in Information Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Smart Card Technology to Prevent Fraud]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Electronic Voting Systems]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Anti-spam systems and techniques]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[The Mitnick Attack]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Operating Systems Security]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Autocomplete]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Internet Cookies and Confidentiality]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Social Engineering]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Identity Theft]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Information Security Awareness]]&lt;br /&gt;
&lt;br /&gt;
[[User:Manselnj|Manselnj]] 11:54, 5 December 2007 (EST)&lt;/div&gt;</summary>
		<author><name>Manselnj</name></author>	</entry>

	</feed>