<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/1.5.2" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>jPOS.org Comments</title>
	<link>http://jpos.org/blog</link>
	<description>jPOS rants, propaganda and some useful stuff.</description>
	<pubDate>Tue, 13 May 2008 11:12:51 +0000</pubDate>
	<generator>http://wordpress.org/?v=1.5.2</generator>

	<item>
 		<title>Comment on AGPLv3 by: Boycott Novell &#187; OpenDocument Format Accessibility and Disinformation (Updated)</title>
		<link>http://jpos.org/blog/2007/11/21/agplv3/#comment-1154</link>
		<pubDate>Wed, 21 Nov 2007 22:30:00 +0000</pubDate>
		<guid>http://jpos.org/blog/2007/11/21/agplv3/#comment-1154</guid>
					<description>[...] The newly-released GPLv3 variant has some early adopters as well, including jPOS.  The Free Software Foundation has released the GNU Affero General Public License (AGPL v3.0), a license we’ve been waiting for a long time that will allow us to open source more code such as the jCard (our Card Management System) and jPTS (an ISO-8583/2003 based jPOS Transaction Switch) projects. [...]</description>
		<content:encoded><![CDATA[	<p>[&#8230;] The newly-released GPLv3 variant has some early adopters as well, including jPOS.  The Free Software Foundation has released the GNU Affero General Public License (AGPL v3.0), a license we’ve been waiting for a long time that will allow us to open source more code such as the jCard (our Card Management System) and jPTS (an ISO-8583/2003 based jPOS Transaction Switch) projects. [&#8230;]
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on The Gladiators Team by: jPOS.org &#187; Blog Archive &#187; Space push</title>
		<link>http://jpos.org/blog/2007/06/20/the-gladiators-team/#comment-1134</link>
		<pubDate>Wed, 22 Aug 2007 19:21:05 +0000</pubDate>
		<guid>http://jpos.org/blog/2007/06/20/the-gladiators-team/#comment-1134</guid>
					<description>[...] I tried hard to avoid adding new operations to the Space in order to keep it simple but The Gladiators Team found an extremely interesting use case for it. [...]</description>
		<content:encoded><![CDATA[	<p>[&#8230;] I tried hard to avoid adding new operations to the Space in order to keep it simple but The Gladiators Team found an extremely interesting use case for it. [&#8230;]
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on New jPOS project - miniGL by: jPOS.org &#187; Blog Archive &#187; jPOS and Cyclos</title>
		<link>http://jpos.org/blog/2005/03/03/new-jpos-project-minigl/#comment-377</link>
		<pubDate>Thu, 14 Dec 2006 11:19:45 +0000</pubDate>
		<guid>http://jpos.org/blog/2005/03/03/new-jpos-project-minigl/#comment-377</guid>
					<description>[...] Cyclos has its own internal ad-hoc accounting system. They will seriously evaluate the posibility of moving to the more generic miniGL. [...]</description>
		<content:encoded><![CDATA[	<p>[&#8230;] Cyclos has its own internal ad-hoc accounting system. They will seriously evaluate the posibility of moving to the more generic miniGL. [&#8230;]
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on jPOS Performance by: alwyn</title>
		<link>http://jpos.org/blog/2005/04/26/jpos-performance/#comment-350</link>
		<pubDate>Wed, 01 Nov 2006 13:27:37 +0000</pubDate>
		<guid>http://jpos.org/blog/2005/04/26/jpos-performance/#comment-350</guid>
					<description>I forgot about this one, will run the test as soon as I get access to my blade server again...</description>
		<content:encoded><![CDATA[	<p>I forgot about this one, will run the test as soon as I get access to my blade server again&#8230;
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on Small World by: alwyn</title>
		<link>http://jpos.org/blog/2006/02/01/small-world/#comment-349</link>
		<pubDate>Wed, 01 Nov 2006 11:00:30 +0000</pubDate>
		<guid>http://jpos.org/blog/2006/02/01/small-world/#comment-349</guid>
					<description>No way!  I know someone who KNOWS someone!!!   So when do we start on the .NET version of jpos?

BTW.  You might want to refer to your brother in law's girlfriend as his wife or she might get jealous...</description>
		<content:encoded><![CDATA[	<p>No way!  I know someone who KNOWS someone!!!   So when do we start on the .NET version of jpos?</p>
	<p>BTW.  You might want to refer to your brother in law&#8217;s girlfriend as his wife or she might get jealous&#8230;
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on miniGL Layers by: jPOS.org &#187; Blog Archive &#187; miniGL multi-currency support</title>
		<link>http://jpos.org/blog/2006/09/04/minigl-layers/#comment-347</link>
		<pubDate>Thu, 14 Sep 2006 13:08:28 +0000</pubDate>
		<guid>http://jpos.org/blog/2006/09/04/minigl-layers/#comment-347</guid>
					<description>[...] As a follow-up to the recent post about miniGL layers we have removed support for foreign amounts at the transaction.entry level, foreign currencies are now handled in their own layer. [...]</description>
		<content:encoded><![CDATA[	<p>[&#8230;] As a follow-up to the recent post about miniGL layers we have removed support for foreign amounts at the transaction.entry level, foreign currencies are now handled in their own layer. [&#8230;]
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on New jPOS project - miniGL by: jPOS.org &#187; Blog Archive &#187; miniGL Layers</title>
		<link>http://jpos.org/blog/2005/03/03/new-jpos-project-minigl/#comment-341</link>
		<pubDate>Mon, 04 Sep 2006 13:05:54 +0000</pubDate>
		<guid>http://jpos.org/blog/2005/03/03/new-jpos-project-minigl/#comment-341</guid>
					<description>[...] I´ve added a new feature to miniGL: &amp;#160; Layers. [...]</description>
		<content:encoded><![CDATA[	<p>[&#8230;] I´ve added a new feature to miniGL: &nbsp; Layers. [&#8230;]
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on BCFH by: aaorrock</title>
		<link>http://jpos.org/blog/2006/06/29/bcfh/#comment-312</link>
		<pubDate>Thu, 29 Jun 2006 23:34:54 +0000</pubDate>
		<guid>http://jpos.org/blog/2006/06/29/bcfh/#comment-312</guid>
					<description>Amen!</description>
		<content:encoded><![CDATA[	<p>Amen!
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on Encrypting  sensitive data by: aaorrock</title>
		<link>http://jpos.org/blog/2006/03/09/encrypting-sensitive-data/#comment-311</link>
		<pubDate>Sat, 24 Jun 2006 18:32:24 +0000</pubDate>
		<guid>http://jpos.org/blog/2006/03/09/encrypting-sensitive-data/#comment-311</guid>
					<description>An additional observation about this approach...in terms of logging cardholder information on your transaction log, you've got two situations where you're going to want to use that data (I'm generalizing here):

1. Sometime within the next 24 hour cycle, you'll want to decrypt that data in order to put the card number into detail records on an extract/settlement file.  So, Alejandro's DUKPT-like 128-bit methodology (as described above) works perfectly here.  It surely meets PCI/CISP standards and the routines are reversible.  This does result in two additional responsiblities:

* The file containing the LMKs and BDKs should be locked down in a secure directory using appropriate key management processes.

* The settlement file - at rest - will contain the clear card numbers.  It's beyond the scope of this blog to offer a solution to that, but as a consultant I will tell you that our customers have elected to solve that issue by encrypting the file using PGP prior to transmission to the settlement partner.

2. At any point subsequent to transaction completion, there's a chance that a user will want to interrogate the transaction log to address a question like &quot;Hey, what transpired with card XXXX at store 0720 on May 28th and May 29th?&quot; (most probably this request was generated by a cardholder concern).  So, you'd want to query the transaction log by card number.  But - we've got an issue: the result of the field outputed in the methodology described here varies *by transaction* (the essence of DUKPT).  So, to find all occurrences of usage by card XXXX, you'd have to decrpyt *all* the cards on the file in order to address the question.  Obviously, this isn't tenable.  So, there's a need to encrypt the card a second time for this other purpose.  Here, though, we can make use a less-consumptive and less process-intensive methodology: an SHA-1 one-way hash gives us what we need because the result for any card Y will always be the same.  It isn't reversible, but doesn't need to be: subsequent queries on card XXXX can create the SHA-1 hash and then search for all occurrences of the same value, thus addressing the requirements of ad-hoc, user-driven query needs.

The upshot of all this is an implementation in which the transaction log contains three fields:

a. A field that contains the literal string that matches what you can show according to PCI/CISP standards, i.e., the six-digit BIN + four trailing digits of a card.  In other words, we have a field in a varchar(19) entry on a SQL DB that would contain '567890_______1234' (that's not implying use of mask here - we're literally storing the underbars).

b. A second field contains the output of the SHA-1 hash, used for queries.  Note in all cases that we're encrypting ONLY the PAN.  You can never store the entire track, not even if encrypted.

c. A third field (call it 'secureData') will contain the result of the DUKPT routine (as well as some ancillary components and sanity checks) as described by Alejandro.</description>
		<content:encoded><![CDATA[	<p>An additional observation about this approach&#8230;in terms of logging cardholder information on your transaction log, you&#8217;ve got two situations where you&#8217;re going to want to use that data (I&#8217;m generalizing here):</p>
	<p>1. Sometime within the next 24 hour cycle, you&#8217;ll want to decrypt that data in order to put the card number into detail records on an extract/settlement file.  So, Alejandro&#8217;s DUKPT-like 128-bit methodology (as described above) works perfectly here.  It surely meets PCI/CISP standards and the routines are reversible.  This does result in two additional responsiblities:</p>
	<p>* The file containing the LMKs and BDKs should be locked down in a secure directory using appropriate key management processes.</p>
	<p>* The settlement file - at rest - will contain the clear card numbers.  It&#8217;s beyond the scope of this blog to offer a solution to that, but as a consultant I will tell you that our customers have elected to solve that issue by encrypting the file using PGP prior to transmission to the settlement partner.</p>
	<p>2. At any point subsequent to transaction completion, there&#8217;s a chance that a user will want to interrogate the transaction log to address a question like &#8220;Hey, what transpired with card XXXX at store 0720 on May 28th and May 29th?&#8221; (most probably this request was generated by a cardholder concern).  So, you&#8217;d want to query the transaction log by card number.  But - we&#8217;ve got an issue: the result of the field outputed in the methodology described here varies *by transaction* (the essence of DUKPT).  So, to find all occurrences of usage by card XXXX, you&#8217;d have to decrpyt *all* the cards on the file in order to address the question.  Obviously, this isn&#8217;t tenable.  So, there&#8217;s a need to encrypt the card a second time for this other purpose.  Here, though, we can make use a less-consumptive and less process-intensive methodology: an SHA-1 one-way hash gives us what we need because the result for any card Y will always be the same.  It isn&#8217;t reversible, but doesn&#8217;t need to be: subsequent queries on card XXXX can create the SHA-1 hash and then search for all occurrences of the same value, thus addressing the requirements of ad-hoc, user-driven query needs.</p>
	<p>The upshot of all this is an implementation in which the transaction log contains three fields:</p>
	<p>a. A field that contains the literal string that matches what you can show according to PCI/CISP standards, i.e., the six-digit BIN + four trailing digits of a card.  In other words, we have a field in a varchar(19) entry on a SQL DB that would contain &#8216;567890_______1234&#8242; (that&#8217;s not implying use of mask here - we&#8217;re literally storing the underbars).</p>
	<p>b. A second field contains the output of the SHA-1 hash, used for queries.  Note in all cases that we&#8217;re encrypting ONLY the PAN.  You can never store the entire track, not even if encrypted.</p>
	<p>c. A third field (call it &#8217;secureData&#8217;) will contain the result of the DUKPT routine (as well as some ancillary components and sanity checks) as described by Alejandro.
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on jPOS Training / Montevideo by: apr</title>
		<link>http://jpos.org/blog/2005/09/16/jpos-training-montevideo-2/#comment-144</link>
		<pubDate>Tue, 18 Apr 2006 01:55:06 +0000</pubDate>
		<guid>http://jpos.org/blog/2005/09/16/jpos-training-montevideo-2/#comment-144</guid>
					<description>We are considering San Francisco as the location for the next training, later this year, but it's in the planning stage yet, unconfirmed for now.

Please contact sales@jpos.org if you want to get additional information about training options.</description>
		<content:encoded><![CDATA[	<p>We are considering San Francisco as the location for the next training, later this year, but it&#8217;s in the planning stage yet, unconfirmed for now.</p>
	<p>Please contact <a href="mailto:sales@jpos.org">sales@jpos.org</a> if you want to get additional information about training options.
</p>
]]></content:encoded>
				</item>
</channel>
</rss>
