<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bandwidth Bandit</title>
	<atom:link href="http://www.bandwidthbandit.co.za/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bandwidthbandit.co.za</link>
	<description>FIFO!</description>
	<lastBuildDate>Mon, 02 Aug 2010 19:30:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>PowerShell, Ninja Turtles?</title>
		<link>http://www.bandwidthbandit.co.za/2010/08/02/powershell-ninja-turtles/</link>
		<comments>http://www.bandwidthbandit.co.za/2010/08/02/powershell-ninja-turtles/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 19:30:54 +0000</pubDate>
		<dc:creator>The Bandit</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.bandwidthbandit.co.za/2010/08/02/powershell-ninja-turtles/</guid>
		<description><![CDATA[PowerShell, I love the shell and I always could do with some more power.&#160; I have heard a lot of people complain about windows lacking in this department, like I have heard woman talk about their husbands at the water cooler. Tools are important, but more importantly is thinking about the way that a developer [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx" target="_blank">PowerShell</a>, I love the shell and I always could do with some more power.&#160; I have heard a lot of people complain about windows lacking in this department, like I have heard woman talk about their husbands at the water cooler. Tools are important, but more importantly is thinking about the way that a developer works. Hopefully this will help me explain myself and the reason i believe Microsoft introduced <a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx" target="_blank">PowerShell</a>.&#160; The fun part of doing any project is in implementing the real meat of the application, lets take a firewall as an example.</p>
<p>The objective of a firewall is to inspect packets and to either allow or dismiss the packets. The fun part of writing that software would be the packets inspection, and the rules engine (the thing that decides what goes through). The boring part would be the interface where you would edit the rules and perhaps a dashboard that will display the current status on ports etc.</p>
<p>You will undoubtedly find that the developers at some point had to test the different parts of the application. This either means they create the simplest way to test it, or go through the effort of making the end user dashboard all be it in battleship gray and big ugly buttons. Me, option 1 is always the answer. Even big ugly gray buttons is not only boring, it is wasted time that i could be spending on <a href="www.facebook.com" target="_blank">Facebook</a> or <a href="www.twitter.com" target="_blank">Twitter</a>.</p>
<p>It turns out, that a lot of the time others also code in a very similar pattern to me. Firstly, that makes me feel a lot better about myself and secondly it saves me from having to use a GUI. What i am trying to get at is the ability to use the command line or even better, write a batch script. The advantage of these is that they are&#160; simple to change and allow you to make changes without the ability to know a coding language and more prevalent of late, a coding environment or framework.</p>
<p>Have a look at the following</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; height: 62px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> netsh advfirewall firewall add rule name=<span style="color: #006080">&quot;SQL Server (TCP 1432)&quot;</span> dir=<span style="color: #0000ff">in</span> action=allow protocol=TCP localport=1433 profile=domain</pre>
<p><!--CRLF--></div>
</div>
<p>What we have before us is a command line utility that allows us to add rules to the firewall on Windows 2008. Talk about the easiest way to repeat a test a few times, add this to a batch file and you can test over and over an over. The difference here is that in Linux, almost everyone believes that this is the only way to change items and the exact opposite would be said for Windows. I can only believe that this is what caused Microsoft to release PowerShell. An almost official way of saying, look we are hardcore too, we have the shell. I earnestly believe that they have always had a shell and this is shell v2.0 and i like it.</p>
<p>In the following weeks and future posts i will be trying to introduce new concepts and scripts in PowerShell along with other technologies. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.bandwidthbandit.co.za/2010/08/02/powershell-ninja-turtles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>..:: New Hardware Time ::..</title>
		<link>http://www.bandwidthbandit.co.za/2010/04/07/new-hardware-time/</link>
		<comments>http://www.bandwidthbandit.co.za/2010/04/07/new-hardware-time/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 06:35:41 +0000</pubDate>
		<dc:creator>The Bandit</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.bandwidthbandit.co.za/2010/04/07/new-hardware-time/</guid>
		<description><![CDATA[Yes, it is time for me to buy new hardware. I have been using a Dell XPS m1730 which is pushed as a Desktop replacement and if you ask me, this is exactly what this beast is! You don&#8217;t want to carry this thing around with you, you want to put it on your desk [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, it is time for me to buy new hardware. I have been using a <a href="http://www1.euro.dell.com/za/en/dhs/Laptops/xpsnb_m1730/pd.aspx?refid=xpsnb_m1730&amp;s=dhs&amp;cs=zadhs1" target="_blank">Dell XPS m1730</a> which is pushed as a Desktop replacement and if you ask me, this is exactly what this beast is! You don&#8217;t want to carry this thing around with you, you want to put it on your desk and leave it there! i also think that with all the carrying around it is starting to kill itself slowly, which is both scary and sad since it is just under two years old. So this leaves me with the chance now to get a new computer / laptop.     </p>
<p>I first off need to say that there is nothing like the power of a desktop PC. Laptops will always try and catch up, but the physical limitations that a laptop design has rules it out of the power race. I however work in a dual location (work and home) and lugging a big box around, although technically i have been doing it for two years is not practical anymore. Also, the power supply that comes with the beast weighs in just under 2Kg’s and it is a pain in the rectum to carry around! Battery life is ok, but the need for a power source is there because no-one works for less than 3 hours at a stint and my battery lasts just under 2.     </p>
<p>So i decided to draw up a quick list of things that i need as a result of lessons i have learnt with my previous hardware.</p>
<ul>
<li>at least 500Gb 7200RPM Drive preferably a solid state and another drive </li>
<li>at least 4 gigs of RAM or more (large disks means virtualization so probably 8 gigs) </li>
<li>Intel 2.6ghz or more with 6mb cache </li>
<li>15.4 screen with (1600&#215;1200) display </li>
<li>VGA out and or HDMI </li>
<li>A battery or combination of batteries that give more than 3 hours work time </li>
<li>Decent weight </li>
</ul>
<p>I also have had to face facts that the type of work i have to do is changing. I used to sit and code, design and partially document for a good 9, 10 hours a day and this machine was good for that. Of late i am having to give more presentation, do a lot of planning and project management (the latter of which is like eating wet popcorn) and so i need a versatile device rather than a single purpose built one. I would really like to try and move towards a goal based approach in my work rather than single incident type style that i am currently working on at the moment. This style of work has me in the office all day and when i am away from my desk in meetings etc i need to come back and start from where i left off, which i admit is a dumb way of working.   </p>
<p>So for the next short while it is going to be drawing up processes etc to almost get my team i manage in a self managed mode so i can start to expand into new area’s again. Oh and a Mac is not out of the equation….</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bandwidthbandit.co.za/2010/04/07/new-hardware-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>..:: Booting From A Windows 7 VHD ::..</title>
		<link>http://www.bandwidthbandit.co.za/2010/01/27/booting-from-a-windows-7-vhd/</link>
		<comments>http://www.bandwidthbandit.co.za/2010/01/27/booting-from-a-windows-7-vhd/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 06:50:24 +0000</pubDate>
		<dc:creator>The Bandit</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.bandwidthbandit.co.za/2010/01/27/booting-from-a-windows-7-vhd/</guid>
		<description><![CDATA[One of a new features in Windows 7 and Windows Server 2008 R2 is the ability to boot from a VHD.&#160; It is pretty simple to enable this feature and have it ready at your disposal!&#160; Before you begin you should note the following… You can only boot a Windows 7 or Windows Server 2008 [...]]]></description>
			<content:encoded><![CDATA[<p>One of a new features in Windows 7 and Windows Server 2008 R2 is the ability to boot from a VHD.&#160; It is pretty simple to enable this feature and have it ready at your disposal!&#160; Before you begin you should note the following…</p>
<ul>
<li>You can only boot a Windows 7 or Windows Server 2008 R2 VHD </li>
<li>You must configure the boot editor from a Windows 7 or Server 2008 R2 install </li>
<li>You cannot use a Virtual PC VHD, I suggest a Hyper-V VHD </li>
<li>You need to start with a clean slate, don’t try and reuse an old VHD </li>
</ul>
<p>I am sure this will change as Windows 7 goes through the beta and RC stages on its way to RTM and we’ll update this as necessary but here goes…</p>
<p>Start by launching a Command Prompt and be sure to run as Administrator, once that is done run the following commands…</p>
<blockquote><p><strong><em>bcdedit /copy {current} /d “Boot_From_VHD”</em></strong></p>
</blockquote>
<p>Copy the CSLID that is displayed and then run…</p>
<blockquote><p><strong><em>bcdedit /set {CLSID} device vhd=[C:]\vhdname.vhd</em></strong></p>
</blockquote>
<blockquote><p><strong><em>bcdedit /set {CLSID} osdevice vhd=[C:]\vhdname.vhd</em></strong></p>
<p><strong><em>bcdedit /set {CLSID} detecthal on</em></strong></p>
</blockquote>
<p>You can replace [C:]\vhdname.vhd with the path and name of your VHD.</p>
<p>Once that is complete reboot and you will have the option to “Boot_From_VHD”!&#160; You can verify the bootloader is configured correctly with the <strong><em>bcdedit</em></strong> command which will list all the boot options.&#160; If you want to delete the entry make note of the GUID listed in <strong><em>bcdedit</em></strong> and use the following command…</p>
<blockquote><p><strong><em>bcdedit /delete {GUID} /cleanup</em></strong></p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.bandwidthbandit.co.za/2010/01/27/booting-from-a-windows-7-vhd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>End-to-End Encryption: Beyond PCI Compliance</title>
		<link>http://www.bandwidthbandit.co.za/2010/01/26/end-to-end-encryption-beyond-pci-compliance/</link>
		<comments>http://www.bandwidthbandit.co.za/2010/01/26/end-to-end-encryption-beyond-pci-compliance/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 05:38:34 +0000</pubDate>
		<dc:creator>DisAvowed</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Encryption]]></category>

		<guid isPermaLink="false">http://www.bandwidthbandit.co.za/?p=15</guid>
		<description><![CDATA[Prior to the creation of PCI DSS, cardholder and payment-related data was highly insecure. While the regulation has significantly improved the state of information security within the payments infrastructure, it only addresses the more obvious areas of vulnerability.]]></description>
			<content:encoded><![CDATA[<p>The  <a href="https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml" target="_blank">Payment Card Industry Data Security Standard</a> (PCI DSS) has undoubtedly made a significant improvement to the security of cardholder account numbers and other sensitive information within the payment card infrastructure. The standard lays out a strong set of requirements that merchants, acquirers and processors must follow.</p>
<p>However, complying with PCI DSS should not be considered a silver bullet for protecting information and battling fraud. Consider that many of the companies victimized by data breaches in the past several years were, in fact, found to be PCI-compliant prior to the breach.</p>
<p><span id="more-15"></span>As fraudsters become more sophisticated and develop tactics for identifying and exploiting a given system&#8217;s vulnerabilities, it is important that organizations across all industries realize that comprehensive data protection requires technologies and processes that extend beyond the basic requirements outlined by PCI DSS.</p>
<p>Specific reference to the use of encryption is increasingly found in privacy mandates and industry best practices that attempt to go beyond the traditional focus on &#8220;people and processes.&#8221; Furthermore, encryption is often favored by regulators and policy makers because of the black-and-white nature of the technology. Data is either encrypted or it is not, which in theory means it is either secure or not &#8212; a very measurable parameter that is well received by auditors and regulators.</p>
<div><!--ps: 55 crid: 3931:z_as_tSKY-NOUS cc:za--> <script type="text/javascript">// <![CDATA[
//<![CDATA[
google_ad_client = "pub-7462823094262195";
google_ad_width = 160;
google_ad_height = 600;
google_ad_format = "160x600_as";
google_ad_channel ="1466534091";
google_color_border = "cbcbcb";
google_color_bg = "ffffff";
google_color_link = "000000";
google_color_url = "000000";
google_color_text = "000000";
//
// ]]&gt;</script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">// <![CDATA[
//<![CDATA[
//
// ]]&gt;</script> <!--/ps: 55 crid: 3931:z_as_tSKY-NOUS cc:za--></div>
<p>While PCI DSS mandates data encryption at various points in the payments cycle, it does not explicitly prescribe end-to-end encryption &#8212; the most sophisticated and successful approach for protecting sensitive cardholder data and other information. Only by implementing end-to-end data protection throughout the entire payment ecosystem can the industry actually achieve the needed security for sensitive data. An example of this is how PIN data is protected in today&#8217;s environment &#8212; from the point of entry all the way to the Issuer.</p>
<p>Substantiating this approach, <a onclick="window.open('http://corporate.visa.com/av/main.jsp'); return false;" href="http://corporate.visa.com/av/main.jsp">Visa</a> (NYSE: V) recently issued its global industry best practices for data field encryption, also known as &#8220;end-to-end encryption.&#8221; Included in Visa&#8217;s best practices is guidance to use robust key management  solutions and encryption consistent with international and regional standards. This includes the management of encryption/decryption keys within Secure Cryptographic Devices such as PIN Entry Devices (PEDs) or Hardware Security Modules (HSMs).</p>
<p>However, despite the growing recognition of the benefits of encryption, there remains a general lack of understanding about deploying and, more importantly, managing the process.</p>
<h2>The Key to Simplified Encryption</h2>
<p>IT and security administrators often consider encryption to be a costly, time-consuming endeavor that requires a great deal of day-to-day management and slows down other processes. However, these concerns have been addressed as enhanced encryption technologies have come to market.</p>
<p>The true challenge that companies face when it comes to deploying and managing the encryption process is controlling they keys &#8212; the secret codes that have the power to unlock data.</p>
<p>As more and more organizations consider implementing end-to-end encryption, they must be able to manage an increasing number of encryption keys. This is crucial not only to prevent keys from being lost or stolen, but also for important operational reasons like on-demand recovery of encrypted data, automated updates and compliance reporting.</p>
<p>Once encrypted, information only becomes readable if the encryption key is available to unlock it. Consequently, the key becomes as valuable as the data it is protecting. This situation can be likened to the security of a home: Locking the house significantly increases the security of its contents, but if the key is left under the doormat, then the level of security is compromised.</p>
<p>In the same way, while end-to-end encryption is an effective approach to safeguarding sensitive data, encryption keys need to be stored and managed effectively in order to ensure that information remains secure.</p>
<p>An additional component of effective encryption key management is implementing a mechanism for securing the keys themselves. Usurping an encryption key is far easier than cracking the encryption, so this is where much criminal activity is focused. With encryption effectively impossible to break, the key management system becomes a natural target for attack. Consequently, deploying end-to-end encryption also requires that security officers establish a method for keeping the keys protected at all times.</p>
<p>While it may appear that key management creates a tremendous burden for organizations considering end-to-end encryption, there are technology solutions and best practices that companies can implement to simplify the key management process.</p>
<h2>Good Key Management</h2>
<p>To simplify and secure the key management process, techniques to provide enhanced physical and logical security in hardware have become well established. It is worth noting that keys stored using software are subject to attack by Trojans, other forms of spyware, or even malicious use of debugging and system-maintenance tools.</p>
<p>To that end, many companies that deploy end-to-end encryption use hardware security modules (HSMs) to properly store, manage and secure keys. This fundamental approach is reinforced in Visa&#8217;s best practices for data field encryption. What&#8217;s more, security certifications such as the Federal Information Processing Standard (FIPS) and Common Criteria have helped organizations evaluate the design of these devices to ensure that they are implementing the most robust protection technologies available.</p>
<p>One of the issues when dealing with key management is that in many cases the different security solutions implemented in an organization have their own system and methodology for managing keys. As a result, security administrators are faced with the challenge of having to manage keys in different systems without a common process or framework.</p>
<p>However, several initiatives under way aim to provide standards that can help in the development of common methods for exchanging and managing keys between systems. These include key management standards such as <a onclick="window.open('http://www.ieee.org'); return false;" href="http://www.ieee.org/">IEEE</a> 1619.3 and the OASIS Key Management Interoperability Protocol (KMIP). As these standards find their way into general adoption, the situation for centralized and uniform key management will improve, allowing security administrators the ability to bring all key management under a unified umbrella.</p>
<p>Measures such as these will help enable organizations to implement cohesive key management strategies moving forward. Once a well thought-out approach to key management is established, effective security policies, reporting practices and, ultimately, a stronger sense of control over data will be achieved.</p>
<h2>Bottom Line</h2>
<p>Encrypting sensitive data throughout the payment cycle is among the most robust strategies for ensuring the continuous protection of systems, but organizations must understand their own specific security risks and proactively deploy appropriate security measures, such as end-to-end encryption.</p>
<p>Maintaining a security infrastructure that incorporates ongoing compliance with PCI DSS at its foundation remains a baseline of defense against potential data breaches, but organizations often face challenges when trying to properly implement and maintain encryption and the keys that unlock the information.</p>
<p>By thoroughly analyzing available key management technologies and standards, IT managers can identify the most appropriate solutions for their environments that will cost-effectively simplify the end-to-end encryption process.</p>
<p>These approaches will not only help all parties in the payments ecosystem meet and surpass PCI DSS requirements, but also ensure the long-term protection of sensitive information, and help eliminate the lasting negative consequences of a security breach.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bandwidthbandit.co.za/2010/01/26/end-to-end-encryption-beyond-pci-compliance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gmail to get secure Net connection by default</title>
		<link>http://www.bandwidthbandit.co.za/2010/01/17/gmail-to-get-secure-net-connection-by-default/</link>
		<comments>http://www.bandwidthbandit.co.za/2010/01/17/gmail-to-get-secure-net-connection-by-default/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 17:57:30 +0000</pubDate>
		<dc:creator>DisAvowed</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Email]]></category>

		<guid isPermaLink="false">http://www.bandwidthbandit.co.za/?p=14</guid>
		<description><![CDATA[Shortly after Google announced the partially successful cyberattack on Gmail, the company said it will activate by default a secure network technology for its e-mail service. Google has long offered the option to access its Web-based Gmail service by using HTTPS&#8211;a secure version of the Hypertext Transfer Protocol that Web browsers use to retrieve information [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->Shortly after Google announced the partially successful cyberattack on Gmail, the company said it will activate by default a secure network technology for its e-mail service.</p>
<p><span id="more-14"></span>Google has long offered the option to access its Web-based Gmail service by using HTTPS&#8211;a secure version of the Hypertext Transfer Protocol that Web browsers use to retrieve information from Web sites. Now it will become the norm.</p>
<p>&#8220;Using HTTPS helps protect data from being snooped by third parties, such as in public Wi-Fi hotspots,&#8221; Gmail Engineering Director Sam Schillace, said in a Gmail blog post on Tuesday. &#8220;We initially left the choice of using it up to you because there&#8217;s a downside: HTTPS can make your mail slower since encrypted data doesn&#8217;t travel across the Web as quickly as unencrypted data. Over the last few months, we&#8217;ve been researching the security/latency tradeoff and decided that turning HTTPS on for everyone was the right thing to do.&#8221;</p>
<p>However, not all is smooth sailing.</p>
<p>&#8220;If you use offline Gmail over http currently, the switch to HTTPS is likely to cause some problems,&#8221; Schillace said. He directed affected people to a <a href="http://mail.google.com/support/bin/answer.py?hl=en&amp;answer=172697" target="_blank">secure offline Gmail fix</a> that walks users through an installation process to get things working.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bandwidthbandit.co.za/2010/01/17/gmail-to-get-secure-net-connection-by-default/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Encryption</title>
		<link>http://www.bandwidthbandit.co.za/2010/01/17/php-encryption/</link>
		<comments>http://www.bandwidthbandit.co.za/2010/01/17/php-encryption/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 14:13:15 +0000</pubDate>
		<dc:creator>DisAvowed</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.bandwidthbandit.co.za/?p=12</guid>
		<description><![CDATA[At one time or another, a software developer is faced with a potential troublesome issue. When all the programming is done, and it's time to distribute the actual program, the question arises: How do I protect my intellectual property from being misused, changed and sold by a potential user of my program? Of course there are Copyrights, but not all users might be aware or care about it.]]></description>
			<content:encoded><![CDATA[<h2>Overview</h2>
<p>At one time or another, a software developer is faced with a potential troublesome issue. When all the programming is done, and it&#8217;s time to distribute the actual program, the question arises: How do I protect my intellectual property from being misused, changed and sold by a potential user of my program? Of course there are Copyrights, but not all users might be aware or care about it.<span id="more-12"></span></p>
<p><img src="http://www.seocompany.ca/software/images/phpencryption.jpg" border="1" alt="" width="500" height="117" /><br />
<em>unencrypted code</em></p>
<p>Usually this is not a problem when using ordinary executable files. The customer would have a hard time opening up the file in Notepad, figuring out and modifying the code. This process is called reverse engineering, and for some people this is an art.</p>
<p><img src="http://www.seocompany.ca/software/images/phpencryption2.jpg" border="1" alt="" width="500" height="117" /><br />
<em>encrypted code</em></p>
<p>The problem is a bit trickier when programming in an open format such as ASP, PHP or any type of scripting. The program is easily readable and sometimes ingenious and potential lucrative algorithms could fall into the wrong hands. But there is a solution. This article is focused on how to protect your PHP scripts using obfuscation techniques that makes the program unreadable for humans &#8211; but still fully functional for a computer.</p>
<p>There are several commercial tools that solves this problem for you. A selection of these tools are:</p>
<h2><a href="http://www.sourceguardian.com/">SourceGuardian PRO for PHP : PHP Encoder</a></h2>
<p>SourceGuardian PRO for PHP is best known as the &#8220;PHP Encoder&#8221;. It is an advanced package with a long list of features for making the resulting code as hard to read as possible. At the time of writing this software lands at $250 for a full license. Some of the main features are: Requires no additions to the running server, Lock to multiple domain names, Full bytecode Encryption and it is PHP5 compatible. In order to test this software you need to <a title="SourceGuardian demo page" href="http://sourceguardian.com/demo/index.php">register for a single user trial license on their home page</a>.</p>
<h2><a href="http://www.ioncube.com/">ionCube PHP Encoder</a></h2>
<p>ionCube PHP Encoder is only one of ionCube&#8217;s web based software. At the time of writing it is a little bit easier on the wallet compared to SourceGuardian at $199 for the entry level license. Key features: Bytecode encryption, ASCII or binary format and Digital signature encryption. <a title="ionCube evaluation software" href="http://www.ioncube.com/encoder_eval_download.php">An evaluation version is available after registering on their home page</a>.</p>
<h2><a href="http://www.zend.com/store/products/zend-encoder.php">Zend encoder</a></h2>
<p>Zend are actually the ones responsible and involved in creating PHP from scratch. Their encryption package is at a glance the most advanced software of these three. One drawback is that the running server must run Zend Optimizer in order to parse the encoded scripts, although Zend Optimizer is free for download by anyone.</p>
<h2>Let&#8217;s go Open Source, shall we?</h2>
<p>These are all well established commercial programs. This means that in order to protect your product, you need to buy third party software. Luckily there is an option. Say hello to Open Source software!</p>
<p>Open Source means that anyone can view modify and contribute to a program in development. The main benefit for a lone programmer is that it&#8217;s completely free of charge and can be used to solve this PHP encryption issue.</p>
<p>There is one thing that separates all of these programs. <strong>Type One</strong> is the programs that needs to have additional software installed on the hosting server in order for it to run. This means that the administrator (most often not you) will have to modify something on the server where the encrypted files will be executed. In turn, this means an additional layer of time consuming stuff when distributing your software. Sometimes this is okay, but most often not.</p>
<p><strong>Type Two</strong> is the programs that doesn&#8217;t need to have additional software installed on the server. PHP Obfuscator falls into this category. Theoretically it is possible to have a higher level of security (and sometimes performance) when using Type One encrypters. In practice, noone will ever put that much effort into trying to reverse engineer your scripts. This is why we chose PHP Obfuscator for this How-To part.</p>
<p>Here are two of the main Open Source PHP encryption tools:</p>
<h2><a title="Turck MMCache for PHP home page" href="http://turck-mmcache.sourceforge.net/">Turck MMCache for PHP</a></h2>
<p>Turck MMCache is an open source software package with many included features, such as PHP accelerator, optimizer, encoder and dynamic content cache. One drawback is that in order to use all these functions you need to have additional software installed on the running server. It is fully compatible with Zend Optimizer, but not recommended.</p>
<h2><a title="POBS home page" href="http://pobs.mywalhalla.net/">PHP Obfuscator (POBS)</a></h2>
<p>This is the software package focused on in this arcicle. It does not need additional server PHP modules installed in order to run. It&#8217;s easy to install and easy to use. The main feature is the actual PHP encryption, with many configuration options. The PHP Obfuscator is <a href="http://pobs.mywalhalla.net/download.htm">available for download from their home page</a>.</p>
<h2>How To install POBS</h2>
<p>First you need to download it. This is easily done from the home page (see link above). The software is distributed in a .zip file. Just save it to your desktop and open it up. Qouting the INSTALL instructions for POBS:</p>
<p><em>&#8220;Installing POBS is as easy as I could think of. Just unzip the downloaded file and put it a directory that is located under your webserver. POBS is a collection of files in just 1 directory.&#8221;</em></p>
<p>Easy as pie! Now, since POBS is itself written using PHP, you need a web server to run the script. A tutorial for installing a web server is easy to find using a favourite web search engine of your choice. Now, let&#8217;s assume the .zip file is unpacked and the POBS files are residing on your web server, for example in this directory: <em>&#8220;c:\wwwroot\pobs&#8221;</em>.</p>
<h2>How To use POBS</h2>
<p>Using a favourite web browser of your choice, navigate to your new POBS directory. E.g: <em>&#8220;http://www.mysite.com/pobs&#8221;</em>. When using your local computer, use <em>&#8220;localhost&#8221;</em> instead of <em>&#8220;www.mysite.com&#8221;</em>. You will be presented with a nice POBS interface screen. Blue and purple/gray seems to be the chosen theme for this program. There are several options consisting of both textboxes and checkboxes. The default values are fine but can be changed as the user (YOU) sees fit. Feel free to experiment with the options. No harm can be done since the program will not run unless source and target directories are different.</p>
<h2>How To configure POBS</h2>
<p>Let&#8217;s have a look at the options:</p>
<ul>
<li><em>TimeOut (sec)</em> &#8211; This option is not editable. It is read from your PHP configuration and is meant as a safety measure in order to let the web server encrypt the files until it is done. If this value is too small, the encryption will be stopped half way. This might happen if the PHP configuration is set to safe mode, but is often easy to remedy. The default of 5000 secs is fine.</li>
<li><em>Source Directory</em> &#8211; is the local directory where the PHP files to be encrypted are stored. Note that this is not a <em>&#8220;http://&#8221;</em> address, but rather a <em>&#8220;c:/wwwroot/php&#8221; </em>address. One thing to be careful of is the use of <em>&#8220;/&#8221;</em> instead of <em>&#8220;\&#8221;</em>. An ordinary local address <em>&#8220;c:\wwwroot&#8221;</em> is written <em>&#8220;c:/wwwroot&#8221;</em>.</li>
<li><em>Target Directory &#8211; </em>is, of course, the directory where you want the encrypted files to end up. The same rules as source directory apply here.</li>
<li><em>Replacements</em> &#8211; Here is the good stuff. Checking or unchecking these boxes means that a type of conversion is to be made or not to be made. For example, the <em>&#8220;variables&#8221;</em> option means that the PHP variables will be substituted with garbage characters, to obfuscate the code and ruin the readability. The more you choose, the better is the encryption. Note that some options might make the code invalid! If any problems occur, try unchecking the boxes one by one until usable code is produced. Avoid that checkbox and everything should work fine.</li>
<li><em>Removals</em> &#8211; The same principle works here. Mark the boxes in order to further obfuscate the code.</li>
<li><em>File System</em> &#8211; Here are some vital options.</li>
<li><em>Replace edited files only</em> &#8211; means that only the encrypted PHP files will be transferred to the target directory.</li>
<li><em>Recursive scan</em> &#8211; The whole directory tree, including subdirectories of your source directory will be processed. Very useful for encrypting entire web sites.</li>
<li><em>Copy all files</em> &#8211; Marking this checkbox will make POBS copy all the files in the source directory. Pictures, stylesheets, animations, movies. Everything will end up in the new directory. This is perfect for making the new encrypted PHP site easily integrated into the live environment.</li>
<li><em>Copyright Text</em> &#8211; Well, since you are making the code closed source, you might as well include a copyright notice. This notice will be readable to the naked eye and hopefully deter any reverse engineering attempts.</li>
</ul>
<h2>How To start the machine</h2>
<p>You&#8217;re ready to go! Click the <em>&#8220;Start Processing&#8221;</em> button in the bottom of the page. POBS will commence encryption according to your options. This might take a while. Take a break, read the magazine, drink a cup of hot coco and it will be finished when you return.</p>
<p>The final page that POBS shows it the status report. This is a very detailed page displaying everything that has happened and what files that has been processed. Take a few minutes going though this page and check if it looks alright.</p>
<h2>You&#8217;re done</h2>
<p>Yep, that was it. You have encrypted the PHP files and can distribute and/or sell your software without any concerns about copyright violations. Well done!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bandwidthbandit.co.za/2010/01/17/php-encryption/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenID</title>
		<link>http://www.bandwidthbandit.co.za/2010/01/17/openid/</link>
		<comments>http://www.bandwidthbandit.co.za/2010/01/17/openid/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 11:40:50 +0000</pubDate>
		<dc:creator>DisAvowed</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.bandwidthbandit.co.za/?p=10</guid>
		<description><![CDATA[OpenID - The closest implemented system I am aware of. It's a "decentralised identity system": It allows you to login to any compatible websites simply by entering an "openID endpoint", basically a URL. It's an interesting system, but it's uptake is very slow, and very few websites have an OpenID login option (See the "Where?" section on the OpenID.net site) ]]></description>
			<content:encoded><![CDATA[<h2>Overview</h2>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --><strong>OpenID</strong> is an open, decentralized standard for authenticating users which can be used for access control, allowing users to log on to different services with the same digital identity where these services trust the authentication body. OpenID replaces the common login process that uses a login-name and a password, by allowing a user to log in once and gain access to the resources of multiple software systems. The term <em>OpenID</em> can also refer to an ID used in the standard.</p>
<p><span id="more-10"></span>An OpenID is in the form of a unique URL, and is authenticated by the user&#8217;s &#8216;OpenID provider&#8217; (that is, the entity hosting their OpenID URL). The OpenID protocol does not rely on a central authority to authenticate a user&#8217;s identity. Since neither the OpenID protocol nor Web sites requiring identification may mandate a specific type of authentication, non-standard forms of authentication can be used, such as smart cards, biometrics, or ordinary passwords.</p>
<p>OpenID authentication is now used and provided by several large websites. Providers include AOL, BBC, Google, IBM, Microsoft, MySpace, Orange, PayPal, VeriSign, LiveJournal, Yandex, Ustream and Yahoo!.</p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		H2 { margin-bottom: 0.08in } 		H3 { margin-bottom: 0.08in } 		A:link { so-language: zxx } --></p>
<h2>Using OpenID</h2>
<p>A basic glossary of the terms used with OpenID:</p>
<dl>
<dt>End-user </dt>
<dd> The person who wants to assert his or her identity to a site. </dd>
<dt> Identifier </dt>
<dd> The URL or XRI chosen by the end-user as their OpenID identifier. </dd>
<dt> Identity provider or OpenID provider </dt>
<dd> A service provider offering the service of registering OpenID URLs 	or XRIs and providing OpenID authentication (and possibly other 	identity services). Note that the OpenID specifications use the term 	&#8220;OpenID provider&#8221; or &#8220;OP&#8221;. </dd>
<dt>
</dt>
<dt> Relying party </dt>
<dd> The site that wants to verify the end-user&#8217;s identifier. Sometimes 	also called a &#8220;service provider&#8221;. </dd>
<dt> Server or server-agent </dt>
<dd> The server that verifies the end-user&#8217;s identifier. This may be the 	end-user&#8217;s own server (such as their blog), or a server operated by 	an identity provider. </dd>
<dt> User-agent </dt>
<dd> The program (such as a browser) that the end-user is using to access 	an identity provider or a relying party. </dd>
<dt> Consumer </dt>
<dd> An obsolete term for the relying party. </dd>
</dl>
<h3><a name="Logging_in"></a>Logging in</h3>
<p>The user visits a relying party web site (e.g. <code>website.relying.com</code>) which displays an OpenID login form somewhere on their page. Unlike a typical login form with fields for the user name and password, the OpenID login form has only one field—for the OpenID identifier, typically along with a small OpenID logo. This form is connected to an implementation of an OpenID client library.</p>
<p>A user typically will have previously registered an OpenID identifier (e.g. <code>alice.openid.provider.org</code>) with an OpenID identity provider (e.g. <code>openid.provider.org</code>). The user types his OpenID identifier into the aforementioned OpenID login form.</p>
<p>The relying party web site typically transforms the OpenID identifier into a canonical URL form (e.g. <code>http://alice.openid.provider.org/</code>). With OpenID 1.0, the relying party then requests the web page located at that URL and reads an HTML link tag to discover the identity provider service URL (e.g. <code>http://openid.provider.org/openid-auth.php</code>). The relying party also discovers whether to use a <em>delegated identity</em> (see below). With OpenID 2.0, the client discovers the identity provider service URL by requesting the <em>XRDS document</em> (also called the <em>Yadis document</em>) with the content type <code>application/xrds+xml</code> that may be available at the target URL and is always available for a target XRI.</p>
<p>There are two modes in which the relying party can communicate with the identity provider:</p>
<ul>
<li><code>checkid_immediate</code>, in 	which the relying party requests that the provider not interact with 	the user. All communication is relayed through the user&#8217;s browser 	without explicitly notifying the user;</li>
<li><code>checkid_setup</code>, in which the user communicates 	with the provider server directly using the same web browser used to 	access the relying party site.</li>
</ul>
<p>The second option is more popular on the Web; also, <code>checkid_immediate</code> can fall back to <code>checkid_setup</code> if the operation cannot be automated.</p>
<p>First, the relying party and the identity provider (optionally) establish a shared secret, referenced by an <em>associate handle</em>, which the relying party then stores. If using <code>checkid_setup</code>, the relying party redirects the user&#8217;s web browser to the identity provider so the user can authenticate with the provider.</p>
<p>The method of authentication may vary, but typically, an OpenID identity provider prompts the user for a password or an <a href="http://en.wikipedia.org/wiki/Windows_CardSpace">InfoCard</a>, then asks whether the user trusts the relying party web site to receive his credentials and identity details.</p>
<p>If the user declines the identity provider&#8217;s request to trust the relying party web site, the browser is redirected to the relying party with a message indicating that authentication was rejected. The relying site in turn refuses to authenticate the user.</p>
<p>If the user accepts the identity provider&#8217;s request to trust the relying party web site, the browser is redirected to the designated return page on the relying party web site along with the user&#8217;s credentials. That relying party must then confirm that the credentials really came from the identity provider. If they had previously established a shared secret (see above), the relying party can validate the shared secret received with the credentials against the one previously stored. Such a relying party is called <em>stateful</em> because it stores the shared secret between sessions. In comparison, a <em>stateless</em> or <em>dumb</em> relying party must make one more background request (<code>check_authentication</code>) to ensure that the data indeed came from the identity provider.</p>
<p>After the OpenID identifier has been verified, OpenID authentication is considered successful and the user is considered logged in to the relying party web site with the given identifier (e.g. <code>alice.openid.provider.org</code>). The web site typically then stores the OpenID identifier in the user&#8217;s session.</p>
<p>OpenID does not provide its own form of authentication, but if an identity provider uses strong authentication, OpenID can be used for secure transactions such as banking and e-commerce.</p>
<h3><a name="Identifiers"></a>Identifiers</h3>
<p>Starting with OpenID Authentication 2.0 (and some 1.1 implementations), there are two types of identifiers that can be used with OpenID: URLs and XRIs.</p>
<p>There are two ways to obtain an OpenID-enabled URL that can be used to log into all OpenID-enabled websites.</p>
<ol>
<li>To use an existing URL under one&#8217;s 	own control (such as one&#8217;s blog or home page). One can insert the 	appropriate OpenID tags in the HTML or serve a Yadis document.</li>
<li>The second option is to register an OpenID identifier with an 	identity provider. They offer the ability to register a URL 	(typically a third-level domain, e.g. example.example.com) that will 	automatically be configured with OpenID authentication service.</li>
</ol>
<p>XRIs are a new form of Internet identifier designed specifically for cross-domain digital identity. For example, XRIs come in two forms—i-names and i-numbers—that are usually registered simultaneously as synonyms. I-names are reassignable (like domain names), while i-numbers are never reassigned. When an XRI i-name is used as an OpenID identifier, it is immediately resolved to the synonymous i-number (the CanonicalID element of the XRDS document). This i-number is the OpenID identifier stored by the relying party. In this way, both the user and the relying party are protected from the user&#8217;s OpenID identity ever being taken over by another party as can happen with a URL based on a reassignable DNS name.</p>
<h2><a name="Adoption"></a>Adoption</h2>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		H2 { margin-bottom: 0.08in } 		H3 { margin-bottom: 0.08in } 		A:link { so-language: zxx } -->As of December 2009, there are over 1 billion OpenIDs on the Internet (see below) and approximately 9 million sites have integrated OpenID consumer support.</p>
<ul>
<li>AOL provides OpenIDs in the form 	&#8220;openid.aol.com/<em>screenname</em>&#8220;.</li>
<li>Orange offers OpenIDs to their 40 	million broadband subscribers, and accepts OpenID to allow non 	subscriber users to access a subset of services.</li>
<li>VeriSign is offering a secure 	OpenID service, with two-factor authentication, which they call 	&#8220;Personal Identity Provider&#8221;.</li>
<li>Six Apart blogging hosts TypePad 	and Vox. Vox supports OpenID as a provider.</li>
<li>LiveJournal, owned and operated by 	SUP, supports OpenID as both a provider and a relying party.</li>
<li>WordPress.com also provides 	OpenID.</li>
<li>Dreamwidth supports OpenID as both 	a provider and a relying party. OpenID is also used on Dreamwidth to 	allow offsite users to maintain control over imported comments.</li>
<li>Other services accepting OpenID as 	an alternative to registration include Wikitravel, photo sharing 	host Zooomr, linkmarking host Ma.gnolia, identity aggregator 	ClaimID, calendar booking Bookwhen, icon provider IconBuffet, user 	stylesheet repository UserStyles.org, and Basecamp and Highrise by 	37signals.</li>
<li>Yahoo! allows users to use their 	Yahoo! IDs as OpenIDs starting January 31, 2008.</li>
<li>SourceForge</li>
<li>Google</li>
<li>Luxsci is both an OpenID consumer 	and provider.</li>
<li>Facebook supports OpenID 2.0, 	allowing an existing account to have an OpenID associated as an 	alternative login method.</li>
<li>In 2.0 RC1.1, Simple Machines Forum allows the administrator 	to allow registration using an OpenID.</li>
</ul>
<p>Some of the companies (especially the biggest ones) which did enable OpenID have been criticized for being a provider of OpenID identities to third-party websites, without being an OpenID consumer and allowing credentials of another website to work with their own websites. (For example, logging into Yahoo! through Windows Live credentials).</p>
<h2><a name="OpenID_Foundation"></a>OpenID Foundation</h2>
<p>The OpenID Foundation is a 501(c)(3) non-profit organization incorporated in the United States. The OpenID Foundation was formed to help manage copyright, trademarks, marketing efforts and other activities related to the success of the OpenID community. The single goal of the OpenID Foundation is to protect OpenID.</p>
<h3><a name="People"></a>People</h3>
<p>The OpenID Foundation&#8217;s board of directors has eight community members and seven corporate members:</p>
<p>Community Members:</p>
<ul>
<li>Brian Kissel (JanRain)</li>
<li>Chris Messina (independent)</li>
<li>David Recordon (Formerly of Six 	Apart, now works at Facebook)</li>
<li>Joseph Smarr (Formerly of Plaxo, 	now works at Google)</li>
<li>Nat Sakimura (Nomura Research 	Institute)</li>
<li>Scott Kveton</li>
<li>Snorri Giorgetti (OpenID Europe)</li>
<li>Allen Tom (Yahoo)</li>
</ul>
<p>Corporate Members:</p>
<ul>
<li>Facebook &#8211; Luke Shepard</li>
<li>Google &#8211; Eric Sachs</li>
<li>IBM &#8211; Nataraj (Raj) Nagaratnam</li>
<li>Microsoft &#8211; Michael B. Jones</li>
<li>PayPal &#8211; Andrew Nash</li>
<li>VeriSign &#8211; Gary Krall</li>
<li>Yahoo! &#8211; Raj Mata</li>
</ul>
<p>A European counterpart, the OpenID Europe Foundation headquartered in Paris, was founded in June 2007. It is a non-profit organization to help promote and deploy the OpenID software framework in Europe. OpenID Europe is independent of the OpenID Foundation. Snorri Giorgetti of OpenID Europe also serves as the OpenID Foundation&#8217;s representative in Europe.</p>
<h3><a name="Legal_issues"></a>Legal issues</h3>
<p>The OpenID trademark in the United States was assigned to the OpenID Foundation in March 2008.It had been registered by NetMesh Inc. before the OpenID Foundation was operational. In Europe, as of August 31, 2007, the OpenID trademark is registered to the OpenID Europe Foundation.</p>
<p>The OpenID logo was designed by Randy &#8220;ydnar&#8221; Reddig, who in 2005 had expressed plans to transfer the rights to an OpenID organization.</p>
<p>Since the original announcement of OpenID, the official site has stated:</p>
<blockquote><p>Nobody should own this. Nobody&#8217;s planning on making any money from this. The goal is to release every part of this under the most liberal licenses possible, so there&#8217;s no money or licensing or registering required to play. It benefits the community as a whole if something like this exists, and we&#8217;re all a part of the community.</p></blockquote>
<p>Sun Microsystems, VeriSign and a number of smaller companies involved in OpenID have issued patent non-assertion covenants covering OpenID 1.1 specifications. The covenants state that the companies will not assert any of their patents against OpenID implementations and will revoke their promises from anyone who threatens, or asserts, patents against OpenID implementors.</p>
<h2><a name="Security_and_phishing"></a>Security and phishing</h2>
<p>Some observers have suggested that OpenID has security weaknesses and may prove vulnerable to phishing attacks. For example, a malicious relying party may forward the end-user to a bogus identity provider authentication page asking that end-user to input their credentials. On completion of this, the malicious party (who in this case also control the bogus authentication page) could then have access to the end-user&#8217;s account with the identity provider, and as such then use that end-user’s OpenID to log into other services.</p>
<p><a name="cite_ref-29"></a>In an attempt to combat possible phishing attacks some OpenID providers mandate that the end-user needs to be authenticated with them prior to an attempt to authenticate with the relying party. This relies on the end-user knowing the policy of the identity provider. In December 2008, the OpenID Foundation approved version 1.0 of the Provider Authentication Policy Extension (PAPE), which &#8220;enables Relying Parties to request that OpenID Providers employ specified authentication policies when authenticating users and for OpenID Providers to inform the Relying Parties which policies were actually used.&#8221; Regardless, this issue remains a significant additional vector for man-in-the-middle phishing attacks.</p>
<h2>History</h2>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->The original OpenID authentication protocol was developed in May 2005 by Brad Fitzpatrick, creator of popular community website LiveJournal, while working at Six Apart. Initially referred to as Yadis (an acronym for &#8220;Yet another distributed identity system&#8221;), it was named OpenID after the openid.net domain name was given to Six Apart to use for the project. OpenID support was soon implemented on LiveJournal and fellow LiveJournal engine community DeadJournal for blog post comments and quickly gained attention in the digital identity community. Web developer JanRain was an early supporter of OpenID, providing OpenID software libraries and expanding its business around OpenID-based services.</p>
<p>In late June, discussions started between OpenID users and developers from enterprise software company NetMesh, leading to collaboration on interoperability between OpenID and NetMesh&#8217;s similar Light-Weight Identity (LID) protocol. The direct result of the collaboration was the Yadis discovery protocol, adopting the name originally used for OpenID. The new Yadis was announced on October 24, 2005. After a discussion at the 2005 Internet Identity Workshop a few days later, XRI/i-names developers joined the Yadis project, contributing their Extensible Resource Descriptor Sequence (XRDS) format for utilization in the protocol.</p>
<p>In December, developers at Sxip Identity began discussions with the OpenID/Yadis community after announcing a shift in the development of version 2.0 of its Simple Extensible Identity Protocol (SXIP) to URL-based identities like LID and OpenID. In March 2006, JanRain developed a Simple Registration (SREG) extension for OpenID enabling primitive profile-exchange and in April submitted a proposal to formalize extensions to OpenID. The same month, work had also begun on incorporating full XRI support into OpenID. Around early May, key OpenID developer David Recordon left Six Apart, joining VeriSign to focus more on digital identity and guidance for the OpenID spec. By early June, the major differences between the SXIP 2.0 and OpenID projects were resolved with the agreement to support multiple personas in OpenID by submission of an identity provider URL rather than a full identity URL. With this, as well as the addition of extensions and XRI support underway, OpenID was evolving into a full-fledged digital identity framework, with Recordon proclaiming &#8220;We see OpenID as being an umbrella for the framework that encompasses the layers for identifiers, discovery, authentication and a messaging services layer that sits atop and this entire thing has sort of been dubbed &#8216;OpenID 2.0&#8242;. &#8221; In late July, Sxip began to merge its Digital Identity Exchange (DIX) protocol into OpenID, submitting initial drafts of the OpenID Attribute Exchange (AX) extension in August.</p>
<p>On January 31, 2007, Symantec announced support for OpenID in its Identity Initiative products and services. A week later, on February 6 Microsoft made a joint announcement with JanRain, Sxip, and VeriSign to collaborate on interoperability between OpenID and Microsoft&#8217;s Windows CardSpace digital identity platform, with particular focus on developing a phishing-resistant authentication solution for OpenID. As part of the collaboration, Microsoft pledged to support OpenID in its future identity server products and JanRain, Sxip, and VeriSign pledged to add support for Microsoft&#8217;s Information Card profile to their future identity solutions. In mid-February, AOL announced that an experimental OpenID provider service was functional for all AOL and AOL Instant Messenger (AIM) accounts.</p>
<p>In May, Sun Microsystems began working with the OpenID community, announcing an OpenID program, as well as entering a non-assertion covenant with the OpenID community, pledging not to assert any of its patents against implementations of OpenID. In June, OpenID leadership formed the OpenID Foundation, an Oregon-based public benefit corporation for managing the OpenID brand and property. The same month, an independent OpenID Europe Foundation was formed in Belgium by Snorri Giorgetti. By early December, non-assertion agreements were collected by the major contributors to the protocol and the final OpenID Authentication 2.0 and OpenID Attribute Exchange 1.0 specifications were ratified on December 5.</p>
<p>In mid-January 2008, Yahoo! announced initial OpenID 2.0 support, both as a provider and as a relying party, releasing the provider service by the end of the month. In early February, Google, IBM, Microsoft, VeriSign and Yahoo! joined the OpenID Foundation as corporate board members. Around early May, SourceForge, Inc. introduced OpenID provider and relying party support to leading open source software development website SourceForge.net. In late July, popular social network service MySpace announced support for OpenID as a provider. In late October, Google launched support as an OpenID provider and Microsoft announced that Windows Live ID would support OpenID. In November, JanRain announced a free hosted service, RPX Basic, that allows websites to begin accepting OpenIDs for registration and login without having to install, integrate and configure the OpenID open source libraries.</p>
<p>In January 2009, PayPal joined the OpenID Foundation as a corporate member, followed shortly by Facebook in February. The OpenID Foundation formed an executive committee and appointed Don Thibeau as executive director. In March, MySpace launched their previously announced OpenID provider service, enabling all MySpace users to use their MySpace URL as an OpenID. In May, Facebook launched their relying party functionality, letting users use an automatic login-enabled OpenID account (e.g. Google) to log into Facebook.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bandwidthbandit.co.za/2010/01/17/openid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Secure website-authentication using GPG keys</title>
		<link>http://www.bandwidthbandit.co.za/2010/01/17/secure-website-authentication-using-gpg-keys/</link>
		<comments>http://www.bandwidthbandit.co.za/2010/01/17/secure-website-authentication-using-gpg-keys/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 10:53:29 +0000</pubDate>
		<dc:creator>DisAvowed</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.bandwidthbandit.co.za/?p=6</guid>
		<description><![CDATA[Overview

Currently, most websites log you in the same way: You enter a username and password, the web-server hashes the password (generally via MD5(), or SHA1()). This hash is then compared to the one stored in a database - if it matches, the user knows the original password, so it logs them in.]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		H2 { margin-bottom: 0.08in } 		A:link { so-language: zxx } --></p>
<h2>Overview</h2>
<p>Currently, most websites log you in the same way: You enter a username and password, the web-server hashes the password (generally via MD5(), or SHA1()). This hash is then compared to the one stored in a database &#8211; if it matches, the user knows the original password, so it logs them in.</p>
<p><span id="more-6"></span>This method has numerous problems, such as the password being sent unencrypted to the web-server, and the fact many users reuse passwords, if an intruder works out a users password (though any means), there is a good chance they can log into the same users email account, online banking etc etc..</p>
<p>The whole username/password login method has many flaws, most are down to the fact most people struggle to remember a single 5-6 character password, let alone multiple random messy looking passwords such as &#8220;Xm2K?pdT&amp;av&#8221;, as most &#8220;good password guides&#8221; suggest.</p>
<p>GPG (&#8220;GnuPG&#8221;/&#8221;GNU Privacy Guard&#8221;) is a free/open-source replacement for <a href="http://www.pgp.com/" target="_blank">PGP</a>. I won&#8217;t go into what GPG is, since I guess quite a lot of the people reading this already know, however if you do not, it is primarily used to sign or encrypt email messages &#8211; see the <a title="Gnu Privacy Guard" href="http://www.bandwidthbandit.co.za/2010/01/17/gnu-privacy-guard/" target="_self">page on it</a></p>
<p>Back to website-logins. When you enter a username/password into a website, you are basically trying to prove you are you, but with this method, you are only really proving you know the password &#8211; something that is surprisingly easy to capture. GPG is far more secure than a simple password, as it uses a public/private key system &#8211; anything signed/encrypted by GPG is effectively using a 4096 character password, and you never send your password anywhere; only you can sign a message with your private key, and others verify it using your public key.</p>
<p>Since GPG is basically used as an identity-verification tool, it seems logical to use this to prove who you are. You give the site your public key, it gives you a random string, you sign it with your private key and it knows what key-owner signed the string. No private data (private key or password) is ever transmitted.</p>
<h2>Steps</h2>
<ul>
<li>Site displays random 	string/paragraph.</li>
<li>The user copies this string, 	using: <code>gpg --sign -armour</code></li>
<li>The user copies the output into a 	textarea on the site, and submits it.</li>
<li>The site runs <code>gpg --verify</code> on the returned textarea</li>
<li>If it validates, who ever&#8217;s key it is (&#8220;gpg: Good 	signature from &#8220;Bob Smith (Bob) <a href="mailto:bob@someFakeSite.com">bob@someFakeSite.com</a>&#8220;) 	is logged into the site.</li>
</ul>
<h2>Problems</h2>
<ul>
<li>Replay attacks. If the signed 	string is the same, you could simply send the same signed message 	again. This is easily fixed by using a temporary, random string, 	like the captcha-systems use. As long as the string is only valid 	for a short amount of time, these attacks are no longer possible. 	Even if the string is predictable, the user cannot generate a new 	signed message.</li>
<li>Session-stealing. If the login in 	&#8220;remembered&#8221; by the site, using cookies, however you login 	does not prevent &#8220;cookie stealing&#8221;, so this would be up to 	the specific site to prevent (Binding the cookie to a specific IP 	address for example?)</li>
<li>Mapping GPG-key in GPG keychain to 	user-account. Not all that complicated, but it&#8217;s far more complex 	than simple MD5($password)..</li>
<li>Getting users GPG public key. 	Again, not all that complicated &#8211; when the user signs up, they fill 	in a textarea with their public &#8220;ASCII-armored&#8221; GPG key.</li>
<li>One of the bigger problem with 	this I can foresee is userA putting userB&#8217;s public key in their own 	account &#8211; this would lead to duplicate keys. Although this would 	effectively lock userA from his own account, allowing userB to 	possibly log in as him. The email/name/nickname could be used to 	verify who the key belongs to, but since a user may sign up to a 	site using a nickname or alias, not their real name, it&#8217;s may be 	impossible for the computer to validate this.</li>
<li>Portability. It&#8217;s rather difficult to memorise GPG keys, so 	the user would be required to carry their keys around if they wish 	to login from other computers (Schools/libraries/other peoples 	houses/etc/etc). Although, if SSH is accessible, it&#8217;s simple to use 	GPG on a remote machine (assuming you trust the machine to not have 	keystroke-loggers and such, but those problems apply even more so to 	regular password auth)</li>
</ul>
<h2>Implementation</h2>
<p>This is just a concept currently, and is yet to be implemented on any site. The biggest hurdle currently seems like the connection between the webpage and the GPG system.</p>
<p>The most obvious method would be system() calls to the &#8220;gpg&#8221; binary. This would be cross-platform and fairly easy to implement, but does raise possible command-injection security problems (admittedly these are easy to prevent with input-sanitisation).</p>
<p>There is a GPG extension for PHP (called GPGext), which would certainly make implementing this far easier, but I always preferred native implementations over extensions that require shared libraries in system folders and such. There are similar libraries for various other languages commonly used for server-side programming (Perl/Python/Ruby/etc)</p>
<h2>Conclusion</h2>
<p>For most sites, this is fairly overkill in terms of security. For &#8220;normal&#8221; users it&#8217;s complicated &#8211; setting up GPG alone is beyond a lot of people. But, for certain sites (very technically-oriented sites, like BandwidthBandit), where the users are very technically competent, it really becomes a matter of do the users really care enough about their account&#8217;s security?</p>
<p>Taking Bandwidth as an example, I&#8217;d imagine, no. The most a malicious user could achieve would be to make or delete that users posts &#8211; something easily undone.</p>
<p>There are two important things when it comes to security systems. First and most obvious, is the actual security improvements, and second is convenience. If the security improvements aren&#8217;t worth the reduced convenience, it&#8217;s not going to be popular.</p>
<p>The security improvements are fairly substantial. SSL for a site like BandwidthBandit isn&#8217;t practical. With the GPG login system, SSL would be more or less unnecessary, since no passwords are ever sent, and the &#8220;signed-message&#8221; used to login is invalid once the user has used it once.</p>
<p>The problem is, are these security improvements worth the hassle of having to use GPG every time they want to login? With the regular username/password system, browsers have built-in functionality to remember passwords, so all they have to do is click &#8220;Login&#8221;. Compare this to having to copy a string, run the GPG command, enter their GPG pass-phrase, paste the string, copy the output to the page and click &#8220;Login&#8221;..</p>
<p>That&#8217;s not to say if the method would ever popularised, it couldn&#8217;t be made much easier (By having it built into the browser, or with browser-extensions) &#8211; but the possibility of that happening is nearly zero, so the benefit of only having the GPG password to remember is no longer valid (as you still need to remember passwords for every other site on the internet..)</p>
<p>One last thing &#8211; this GPG auth system is applicable to any system that can deal with text being sent/receive. IRC for example. This may be a more plausible testing ground for such a concept. Many networks use their own NickServ auth systems, and it would be fairly simple to add a GPG-Auth command to the services, without disruption regular <code>/msg NickServ identify</code> commands. OperServ would benefit most greatly from this, as it would help secure the fairly powerful oper logins, and opers are always going to be very technically competent. The fact IRC clients are also very easily scriptable helps too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bandwidthbandit.co.za/2010/01/17/secure-website-authentication-using-gpg-keys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GNU Privacy Guard</title>
		<link>http://www.bandwidthbandit.co.za/2010/01/17/gnu-privacy-guard/</link>
		<comments>http://www.bandwidthbandit.co.za/2010/01/17/gnu-privacy-guard/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 10:51:57 +0000</pubDate>
		<dc:creator>DisAvowed</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.bandwidthbandit.co.za/?p=7</guid>
		<description><![CDATA[Overview

GNU Privacy Guard (GnuPG or GPG) is a free software alternative to the PGP suite of cryptographic software. GnuPG is compliant with RFC 4880, which is the current IETF standards track specification of OpenPGP. Current versions of PGP (and Veridis' Filecrypt) are interoperable with GnuPG and other OpenPGP-compliant systems.]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		H2 { margin-bottom: 0.08in } --></p>
<h2>Overview</h2>
<p><strong>GNU Privacy Guard</strong> (<strong>GnuPG</strong> or <strong>GPG</strong>) is a free software alternative to the PGP suite of cryptographic software. GnuPG is compliant with RFC 4880, which is the current IETF standards track specification of OpenPGP. Current versions of PGP (and Veridis&#8217; Filecrypt) are interoperable with GnuPG and other OpenPGP-compliant systems.</p>
<p><span id="more-7"></span>GPG is a part of the Free Software Foundation&#8217;s GNU software project, and has received major funding from the German government. It is released under the terms of version 3 of the GNU General Public License.</p>
<h2><a name="History"></a>History</h2>
<p>GnuPG was initially developed by Werner Koch. Version 1.0.0 was released on September 7, 1999. The German Federal Ministry of Economics and Technology funded the documentation and the port to Microsoft Windows in 2000.</p>
<p>Because GnuPG is an OpenPGP standard compliant system, the history of OpenPGP is of importance. It was designed to inter-operate with PGP, the email encryption protocol developed by Phil Zimmermann.</p>
<p>Version 2.0 was released 13 November 2006. The old stable 1.x branch, whose latest version is 1.4.10, will be continued in parallel with the new GnuPG 2 series because there were significant changes in the architecture of the program which will not fit every purpose.</p>
<h2><a name="Usage"></a>Usage</h2>
<p>Although the basic GnuPG program has a command line interface, there exist various front-ends that provide it with a graphical user interface. For example, GnuPG encryption support has been integrated into KMail and Evolution, the graphical e-mail clients found in the most popular Linux desktops KDE and GNOME. There are also graphical GnuPG front-ends (Seahorse for GNOME, KGPG for KDE). For Mac OS X, the Mac GPG project provides a number of Aqua front-ends for OS integration of encryption and key management as well as GnuPG installations via Installer packages. Instant messaging applications such as Psi and Fire can automatically secure messages when GnuPG is installed and configured. Web-based software such as Horde also makes use of it. The cross-platform plugin Enigmail provides GnuPG support for Mozilla Thunderbird and SeaMonkey. Similarly, Enigform and FireGPG provide GnuPG support for Mozilla Firefox.</p>
<p>In 2005, G10 Code and Intevation released Gpg4win, a software suite that includes GnuPG for Windows, WinPT, Gnu Privacy Assistant, and GnuPG plug-ins for Windows Explorer and Outlook. These tools are wrapped in a standard Windows installer, making it easier for GnuPG to be installed and used on Windows systems.</p>
<h2><a name="Process"></a>Process</h2>
<p>GnuPG encrypts messages using asymmetric keypairs individually generated by GnuPG users. The resulting public keys can be exchanged with other users in a variety of ways, such as Internet key servers. They must always be exchanged carefully to prevent identity spoofing by corrupting public key ↔ &#8220;owner&#8221; identity correspondences. It is also possible to add a cryptographic digital signature to a message, so the message integrity and sender can be verified, if a particular correspondence relied upon has not been corrupted.</p>
<p>GnuPG does not use patented or otherwise restricted software or algorithms, like the IDEA encryption algorithm which has been present in PGP almost from the beginning. (It is in fact possible to use IDEA in GnuPG by downloading a plugin for it, however this may require getting a license for some uses in some countries in which IDEA is patented.) Instead, GnuPG uses a variety of other, non-patented algorithms, including:</p>
<ul>
<li>Block ciphers: CAST5, Triple DES, 	AES, Blowfish, and Twofish.</li>
<li>Asymmetric-key ciphers: ElGamal 	and RSA</li>
<li>Cryptographic hashes: RIPEMD-160, 	MD5, SHA-1, and Tiger</li>
<li>Digital signatures: DSA</li>
</ul>
<p>GnuPG is a hybrid encryption software program in that it uses a combination of conventional symmetric-key cryptography for speed, and public-key cryptography for ease of secure key exchange, typically by using the recipient&#8217;s public key to encrypt a session key which is only used once. This mode of operation is part of the OpenPGP standard and has been part of PGP from its first version.</p>
<h2><a name="Problems"></a>Problems</h2>
<p>The OpenPGP standard specifies several methods of digitally signing messages. In 2003, due to an error in a change to GnuPG intended to make one of those methods more efficient, a security vulnerability was introduced. It affected only one method of digitally signing messages, only for some releases of GnuPG (1.0.2 through 1.2.3), and there were fewer than 1000 such keys listed on the key servers. Most people did not use this method, and were in any case discouraged from doing so, so the damage caused (if any, and none has been publicly reported) would appear to have been minimal. Support for this method has been removed from GnuPG versions released after this discovery (1.2.4 and later). Two further vulnerabilities were discovered in early 2006; the first being that scripted uses of GnuPG for signature verification may result in false positives, the second that non-MIME messages were vulnerable to the injection of data which while not covered by the digital signature, would be reported as being part of the signed message. In both cases updated versions of GnuPG were made available at the time of the announcement.</p>
<p>GnuPG is a command-line based system, that is not written as an API which can be incorporated into other software. GPGME is an API wrapper around GnuPG which parses the output of GnuPG, and various graphical front-ends based on GPGME have been created. This currently requires an out-of-process call to the GnuPG executable for many GPGME API calls. Because GPGME makes use of a special GnuPG interface designed for machine use, a stable and maintainable API between the components is given. Possible security problems in an application do not propagate to the actual crypto code due to the process barrier.</p>
<p>Other software wraps the command line in a Perl script (e.g. gpg-dialog) that is menu based and more user friendly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bandwidthbandit.co.za/2010/01/17/gnu-privacy-guard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>..:: Kindle Not Connecting? ::..</title>
		<link>http://www.bandwidthbandit.co.za/2010/01/14/kindle-not-connecting/</link>
		<comments>http://www.bandwidthbandit.co.za/2010/01/14/kindle-not-connecting/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 13:47:30 +0000</pubDate>
		<dc:creator>The Bandit</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Kindle]]></category>
		<category><![CDATA[Whisper]]></category>

		<guid isPermaLink="false">http://www.bandwidthbandit.co.za/2010/01/14/kindle-not-connecting/</guid>
		<description><![CDATA[If your Kindle fresh out of the box doesn&#8217;t connect you can try the following. In the Menu type 311. The kindle will then scan for avail networks and present the menu back to you. You are then able to select the network you choose to use since Automatic doesn’t work. The Kindle will then [...]]]></description>
			<content:encoded><![CDATA[<p>If your Kindle fresh out of the box doesn&#8217;t connect you can try the following. In the Menu type 311. The kindle will then scan for avail networks and present the menu back to you. You are then able to select the network you choose to use since Automatic doesn’t work. The Kindle will then retry the connect to the network. Typically something to note, if it can see the network doesn’t always mean that you can connect and use the data network….</p>
<p>Some more settings you can use in the menu are,</p>
<p><b>411</b> show diagnostics data     <br /><b>511</b> run loopback call test     <br /><b>611</b> diagnostic data service call c/e/s     <br /><b>126</b> <i>Lab126 team members</i></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bandwidthbandit.co.za/2010/01/14/kindle-not-connecting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
