<?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>SQL Server with Mr. Denny &#187; Identity theft</title>
	<atom:link href="http://itknowledgeexchange.techtarget.com/sql-server/tag/identity-theft/feed/" rel="self" type="application/rss+xml" />
	<link>http://itknowledgeexchange.techtarget.com/sql-server</link>
	<description></description>
	<lastBuildDate>Mon, 10 Jun 2013 17:25:32 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>When Designing Logon Systems, Pay More Attention To Password Questions.</title>
		<link>http://itknowledgeexchange.techtarget.com/sql-server/when-designing-logon-systems-pay-more-attention-to-password-questions/</link>
		<comments>http://itknowledgeexchange.techtarget.com/sql-server/when-designing-logon-systems-pay-more-attention-to-password-questions/#comments</comments>
		<pubDate>Wed, 06 Feb 2013 14:00:29 +0000</pubDate>
		<dc:creator>Denny Cherry</dc:creator>
				<category><![CDATA[Data Loss]]></category>
		<category><![CDATA[Data Security]]></category>
		<category><![CDATA[Database Design]]></category>
		<category><![CDATA[Database security]]></category>
		<category><![CDATA[Identity theft]]></category>
		<category><![CDATA[Laws]]></category>
		<category><![CDATA[Lawyers]]></category>
		<category><![CDATA[Lesson Learned]]></category>
		<category><![CDATA[Mayhem]]></category>
		<category><![CDATA[Phishing]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Social Commentary]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://itknowledgeexchange.techtarget.com/sql-server/?p=2233</guid>
		<description><![CDATA[In recent months the Internet has started to wake up to security just a little bit more, and probably forgotten all about it as well (read this, this, this and this if you need a refresher). The big problem that I speak of is those annoying questions that we have to answer when setting up a [...]]]></description>
				<content:encoded><![CDATA[<p>In recent months the Internet has started to wake up to security just a little bit more, and probably forgotten all about it as well (read <a href="http://www.wired.com/gadgetlab/2012/08/apple-amazon-mat-honan-hacking/">this</a>, <a href="http://asia.cnet.com/hacker-succeeds-forces-apple-and-amazon-to-change-security-policies-62218252.htm">this</a>, <a href="http://news.cnet.com/8301-1009_3-57488759-83/amazon-addresses-security-exploit-after-journalist-hack/">this</a> and <a href="http://news.cnet.com/8301-13579_3-57488782-37/apple-freezes-appleid-password-resets-requested-over-the-phone/">this</a> if you need a refresher). The big problem that I speak of is those annoying questions that we have to answer when setting up a password for a new high security system. Those questions are supposed to be things that only you know. Which was great 20 years ago when we first started building these systems. Today however for most of these systems I can find out all the answers to these questions between Facebook and Twitter.</p>
<p>Recently I was setting up access to just another high security system and I was presented with this list of questions (I had to select three) as my security questions so that I can get my account back if (when) I forget my password.</p>
<p><a href="http://itknowledgeexchange.techtarget.com/sql-server/when-designing-logon-systems-pay-more-attention-to-password-questions/questions/" rel="attachment wp-att-2234"><img class="alignnone size-full wp-image-2234" src="http://cdn.ttgtmedia.com/ITKE/uploads/blogs.dir/20/files/2012/08/Questions.jpg" alt="" width="620" height="199" /></a></p>
<p>Lets review these questions for a minute.  Now some of these Facebook actually asks you to provide them so that they can put them on your profile (that annoying part at the top of your Facebook profile).   The rest you can probably figure out about most people just by looking at the information that they provide during the course of using social media in their daily lives and with the groups on Facebook that they belong to.  You add access to a public linked in profile and a little searching in public records and getting most if not all of these answers shouldn&#8217;t take you more than a couple of hours.</p>
<p>As the people that build these applications we need to take more notice of just how easy it is to figure out these questions.  The questions that we are putting into the applications shouldn&#8217;t be so annoying as &#8220;Favorite Teacher&#8217;s Last Name&#8221;, which I&#8217;ve actually seen but they need to be stuff that is at least a little harder to figure out if these are the things that we are going to use to ensure that people are who they say they are.</p>
<p>Things like drivers license number or state ID number (for those without a drivers license) are a good start.  They don&#8217;t change all that often (except when you move between states).  Social Security Numbers basically never change so those aren&#8217;t a bad number to use (granted there are other issues with using a persons tax ID here in the US).</p>
<p>When you are designing these sorts of authentication systems, don&#8217;t assume that just because your paranoid ass doesn&#8217;t upload your entire live to Facebook, LinkedIn and Twitter that no one else does that either.  People do, do that and they will continue to do that.  If you want to actually provide a level of security for your customers, which I sure hope that you do as that is kind of your job, then assume that the customers will be posting the easy to figure out questions online for all to see so you might want to use some slightly more complex questions.</p>
<p>Denny</p>
<!-- wpms-network-global-inserts -->]]></content:encoded>
			<wfw:commentRss>http://itknowledgeexchange.techtarget.com/sql-server/when-designing-logon-systems-pay-more-attention-to-password-questions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encrypting data in the same column</title>
		<link>http://itknowledgeexchange.techtarget.com/sql-server/encrypting-data-in-the-same-column/</link>
		<comments>http://itknowledgeexchange.techtarget.com/sql-server/encrypting-data-in-the-same-column/#comments</comments>
		<pubDate>Wed, 10 Oct 2012 09:00:00 +0000</pubDate>
		<dc:creator>Denny Cherry</dc:creator>
				<category><![CDATA[Data Encryption]]></category>
		<category><![CDATA[Data Loss]]></category>
		<category><![CDATA[Data Security]]></category>
		<category><![CDATA[Data Types]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[Database Design]]></category>
		<category><![CDATA[Database security]]></category>
		<category><![CDATA[Encryption]]></category>
		<category><![CDATA[Identity theft]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server stored procedures]]></category>
		<category><![CDATA[Stored Procedures]]></category>
		<category><![CDATA[T/SQL]]></category>
		<category><![CDATA[Tables]]></category>

		<guid isPermaLink="false">http://itknowledgeexchange.techtarget.com/sql-server/?p=2175</guid>
		<description><![CDATA[I wrote a little while ago about the fact that sensitive data needs to be encrypted within the database for all applications.  This is the first technique that is available to you to encrypt data in a database with as little outage as possible. In this technique we’ll encrypt the data using just a single [...]]]></description>
				<content:encoded><![CDATA[<p>I wrote a little while ago about the fact that sensitive <a href="http://itknowledgeexchange.techtarget.com/sql-server/sensitive-data-must-be-encrypted/">data needs to be encrypted</a> within the database for all applications.  This is the first technique that is available to you to encrypt data in a database with as little outage as possible.</p>
<p>In this technique we’ll encrypt the data using just a single column.  This technique requires butting some additional logic within the application to figure out if the value is encrypted or not, but other than that logic, which you can leave in and strip out later the changes to the application are pretty minimal as the column stays the same, so that means that the stored procedures don’t need to be changed.</p>
<p>The first thing to remember is that the encrypted data will be larger, possibly much larger than the plain text version of the data.  Because of this you’ll need to increase the size of the field which you’ll be putting the data into.  Now the good news is that if this column isn’t indexed this change should be pretty quick and easy as it should just be a meta change which tells the SQL Server that the column size can be bigger without having to actually change the pages.  You can see this by making some changes to the [HumanResources].[Employee] table within the AdventureWorks database.  By turning on STATISTICS IO and using the ALTER TABLE statement we see that there is no IO generated when we change the size of the LoginID column from nvarchar(256) to nvarchar(512).</p>
<blockquote><p>set statistics io on<br />
alter table MyTable<br />
alter column LoginID nvarchar(512)</p></blockquote>
<p>Once the column is made larger the .NET code needs to be modified to see if the data is compressed for not.  Now there is no sure fire way to check to see if a value has been encrypted or not, but a pretty good test is to look at the last two characters of the value.  If they are both an equal sign (==) then it is probably safe to assume that the value is encrypted.  To don’t want to just attempt to decrypt the data and look for an error message, and if there is an error assume that the encrypted value is in plain text, throwing and catching error messages in .NET is very expensive, especially compared to simply checking to see if the last two characters are an equal sign.  This isn’t to say that you shouldn’t have TRY/CATCH logic around the code that decrypts the values as someone could easily enough put two equal signs at the end of their password.</p>
<p>At this point either a .NET app or a T-SQL script can loop through the values in the table which aren’t encrypted and then encrypt them, updating the rows which aren’t already encrypted.</p>
<p>Look for more blog posts in this series on how to encrypt data which already exists within your applications database.</p>
<p>Denny</p>
<!-- wpms-network-global-inserts -->]]></content:encoded>
			<wfw:commentRss>http://itknowledgeexchange.techtarget.com/sql-server/encrypting-data-in-the-same-column/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Back To Basics: What are indexes and what are they used for?</title>
		<link>http://itknowledgeexchange.techtarget.com/sql-server/back-to-basics-what-are-indexes-and-what-are-they-used-for/</link>
		<comments>http://itknowledgeexchange.techtarget.com/sql-server/back-to-basics-what-are-indexes-and-what-are-they-used-for/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 12:00:00 +0000</pubDate>
		<dc:creator>Denny Cherry</dc:creator>
				<category><![CDATA[Back To Basics]]></category>
		<category><![CDATA[Identity theft]]></category>
		<category><![CDATA[Index]]></category>
		<category><![CDATA[Index Scan]]></category>

		<guid isPermaLink="false">http://itknowledgeexchange.techtarget.com/sql-server/back-to-basics-what-are-indexes-and-what-are-they-used-for/</guid>
		<description><![CDATA[A while back someone posted on the ITKE forum asking what Indexes where, and what they were used for. I put up a quick answer, but I felt that it deserved a more in depth blog post; so here it is. In the basic view, an Index is a subset of columns from a table. [...]]]></description>
				<content:encoded><![CDATA[<p>A while back someone posted on the ITKE forum asking what Indexes where, and what they were used for.  I put up a quick answer, but I felt that it deserved a more in depth blog post; so here it is.</p>
<p><span id="more-281"></span></p>
<p>In the basic view, an Index is a subset of columns from a table. This subset of columns is stored in a sorted order so that the SQL Server can more quickly find the records based on the data in the index.</p>
<p>As an example, say that we have a table called Employee with four columns EmployeeId, FirstName, LastName and ManagerId. The EmployeeId column if the primary key of the table, by default the primary key is the clustered index (I&#8217;ll write another post about that later on) for the table.</p>
<p>We want to be able to search the table quickly for an Employee based on the last name. If we search the table as it is the SQL Server has to read every record in the table looking for matches. While at most companies this might be ok, if you have a larger employee base, say the US Army for example you&#8217;ll have hundreds of thousands of records in this table and searching it one record at a time will take quite a bit of time.</p>
<p>With an index created on the LastName column when we look for the employees last name the SQL Server knows where the records are in the table because the records are sorted in Alphabetical order.</p>
<p>Until SQL Server 2008 was released an index was required to hold all the records of the table. SQL Server 2008 introduces the concept of filtered indexes. When a filtered index is created the index is created on a subset of the data in the table by specifying a WHERE clause in the CREATE INDEX statement. This is good for making the indexes smaller and there for even faster.</p>
<p>For an example lets look back at the Employee table from above. Lets add a column called CurrentEmployee which is a BIT field. When the employee works for the company the value is set to 1 (shown as true in the HR system), when they leave the company it is set to 0 (shown as false in the HR system). Knowing that most of the queries in the system will only need to look for current employees we can create filtered indexes to improve the performance of those queries so that the index only has to hold the current employees.</p>
<p>One thing to remember about indexes, is that SQL Server will only use a single index per table per query. So if you are using more than one column in your where clause (or JOIN clause or COUNT clause) then you will need to have more than one column in your index creating what are called covering indexes.</p>
<p>In SQL Server 2005 we were introduced to another new feature of the index. This gives us the ability to add columns to the index which aren&#8217;t actually indexed. This gives us the ability to improve performance yet again, but this time the performance improvement has a cost; this cost is disk space.</p>
<p>Before the include feature was added to the indexes after finding the rows that you need, the SQL Server would then need to go back to the base table to find the rest of the values that you requested. When the SQL Server has to do this it is called a lookup. As an example, lets look at the Employee table from above again. We have an index on the LastName column, but we also want to display the EmployeeId and FirstName values as well so we write our query like this.</p>
<pre>
SELECT EmployeeId, FirstName, LastName<br />FROM Employee<br />WHERE LastName = N'Smith'
</pre>
<p>The SQL Server scans the index for the records with the LastName value of Smith.  But we want the other columns as well, and they aren&#8217;t in the index.  Because of this the SQL Server now has to do a lookup for each row being returned and get those values from the base table (or the clustered index).  This requires that the SQL Server load all the data pages which hold all the records to get these values.  Since the employees with the LastName value of Smith probably were not hired at the same time, the data is probably spread over many data pages all over the disk.  This means that the results will take much longer to return while we wait for all this disk activity to complete.</p>
<p>Now, if we include these columns in the Index, all the values of Smith will still be kept together, but the EmployeeId and FirstName will be stored in the index along with the Smith values.  So when we run the same query with the change to the index the query will run much faster now as the SQL Server can process all the records in a single internal operation.</p>
<p>What&#8217;s the difference between adding the columns to the index, and including them you ask?  The easiest way to show this to stick an OrderBy clause on the query.</p>
<p>SELECT EmployeeId, FirstName, LastName<br />
FROM Employee<br />
WHERE LastName = N&#8217;Smith&#8217;<br />
ORDER BY FirstName</p>
<p>By adding the Orderby clause the SQL Server now has to sort the data in a separate operation instead of a single operation.  If we change the index to be on the LastName and FirstName columns and include the EmployeeId column the data will already be sorted in the correct order, and the SQL Server shouldn&#8217;t need to do any additional processing of the data before returning it to the client application.</p>
<p>I know that this was a long post, but I hope that you found it worth it.</p>
<p>Denny</p>
<!-- wpms-network-global-inserts -->]]></content:encoded>
			<wfw:commentRss>http://itknowledgeexchange.techtarget.com/sql-server/back-to-basics-what-are-indexes-and-what-are-they-used-for/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Identity Theft: A BIG issue for IT Auditors and DBAs</title>
		<link>http://itknowledgeexchange.techtarget.com/sql-server/identity-theft-a-big-issue-for-it-auditors-and-dbas/</link>
		<comments>http://itknowledgeexchange.techtarget.com/sql-server/identity-theft-a-big-issue-for-it-auditors-and-dbas/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 19:41:40 +0000</pubDate>
		<dc:creator>Denny Cherry</dc:creator>
				<category><![CDATA[Database security]]></category>
		<category><![CDATA[Identity theft]]></category>

		<guid isPermaLink="false">http://itknowledgeexchange.techtarget.com/sql-server/identity-theft-a-big-issue-for-it-auditors-and-dbas/</guid>
		<description><![CDATA[Arian Eigen Heald has posted a good blog about identity theft titled &#8220;Identity Theft: A BIG issue for IT Auditors and DBAs&#8221; over on the Sister CISA CISSP blog.  It&#8217;s a good read, so I wanted to make sure to pass the information along.  Denny]]></description>
				<content:encoded><![CDATA[<p><a target="_blank" href="http://itknowledgeexchange.techtarget.com/cisa-cissp/about">Arian Eigen Heald</a> has posted a good blog about identity theft titled &#8220;<a target="_blank" href="http://itknowledgeexchange.techtarget.com/cisa-cissp/identity-theft-a-big-issue-for-it-auditors-and-dbas" title="The Blog">Identity Theft: A BIG issue for IT Auditors and DBAs</a>&#8221; over on the <a target="_blank" href="http://itknowledgeexchange.techtarget.com/cisa-cissp">Sister CISA CISSP</a> blog.  It&#8217;s a good read, so I wanted to make sure to pass the information along.</p>
<p> Denny</p>
<!-- wpms-network-global-inserts -->]]></content:encoded>
			<wfw:commentRss>http://itknowledgeexchange.techtarget.com/sql-server/identity-theft-a-big-issue-for-it-auditors-and-dbas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
