<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Project Anvil</title>
    <link rel="alternate" type="text/html" href="http://www.scorpionsoft.com/anvil/" />
    <link rel="self" type="application/atom+xml" href="http://www.scorpionsoft.com/anvil/atom.xml" />
   <id>tag:www.scorpionsoft.com,2008:/anvil//2</id>
    <link rel="service.post" type="application/atom+xml" href="http://www.scorpionsoft.com/blog/mt-atom.cgi/weblog/blog_id=2" title="Project Anvil" />
    <updated>2007-02-15T20:25:52Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.2</generator>
 
<entry>
    <title>So what ever happened with Anvil?</title>
    <link rel="alternate" type="text/html" href="http://www.scorpionsoft.com/anvil/2007/02/so_what_ever_happened_with_anv.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.scorpionsoft.com/blog/mt-atom.cgi/weblog/blog_id=2/entry_id=126" title="So what ever happened with Anvil?" />
    <id>tag:www.scorpionsoft.com,2007:/anvil//2.126</id>
    
    <published>2007-02-15T19:50:00Z</published>
    <updated>2007-02-15T20:25:52Z</updated>
    
    <summary>I have had a few people email me asking what ever happened with this product. So I thought a post might make sense. Getting working technology in place took no time at all. Getting it to a marketable solution.... that...</summary>
    <author>
        <name>Dana Epp</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.scorpionsoft.com/anvil/">
        <![CDATA[<p>I have had a few people email me asking what ever happened with this product. So I thought a post might make sense.</p>

<p>Getting working technology in place took no time at all. Getting it to a marketable solution.... that was an entirely different thing. Since my past post in October here is what has happened:</p>

<p><UL><LI>We had to write the Installation Guide<br />
<LI>We had to build the production ISO<br />
<LI>We did a round of beta testing with trusted sites<br />
<LI>We did another round of testing to more open public sites<br />
<LI>We did another round of testing with some Microsoft MVPs<br />
<LI>We rewrote the docs after getting results from the test sites<br />
<LI>We had to fix some implementation problems relating to IAS + ISA<br />
<LI>We had to build a Token Inventory Control System<br />
<LI>We had to build a Token Fullfilment and Shipping System<br />
<LI>We had to get authorization from the Department of Homeland Security to ship to the US. Long story.... paperwork nightmare which in the end... we DIDN'T have to do.<br />
<LI>We had to build an online store, integrate it with our CRM, Inventory Control System and Token Fullfilment System<br />
<LI>We had to work with Cryptocard to handle token fullfillment<br />
<LI>We went to launch, and realized we were now in the holiday season. Delayed launch until the New Year.<br />
<LI>We had to launch the product<br />
<LI>We had to take our first order<br />
</UL></p>

<p>That took months to do. But as of January, we were shipping our strong authentication solution around the world. A few user groups have had demos and I hear people are even talking about it down under at a few Microsoft user groups in Australia [Hi Wayne! :) ]</p>

<p>It's taken quite a bit of time to make a "product" a sellable "solution". Almost half a year in fact. Well, if you discount the holiday season, the DHS delay and the delay in receiving our first shipment of tokens it was really closer to four months. Not too bad. But longer than many people would have expected.</p>

<p>So whats next?</p>

<p><UL><LI>We are releasing a bunch of new agents later this spring to round our our offerings<br />
<LI>We will be announcing some interesting partnerships in the coming months to deliver our solution in interesting ways<br />
<LI>Version 2 will come out with a whole bunch of updates, including Active Directory integration<br />
<LI>The sales team is being expanded to help grow our sales <br />
<LI>I'm going to be going on a tour in May to promote the product. Although not in stone, sounds like I am going to New York, Chicago,  San Fransico, Los Angeles and New Orlean.<br />
<LI>Lots of other stuff I can't talk about right now.<br />
</UL></p>

<p>Busy, busy, busy.</p>

<p>If you are a developer and like what you see, I'm pleased. But I would be MORE pleased if you thought about integrating two-factor authentication into your own applications. How? I have an easy solution. Why not partner with us and use our web services interface to immediately add strong authentication to your product? Not into web services? No problem... we have a traditional COM interface as well that you can use. It literally only takes 5 lines of code to integrate strong authentication to your application when using ours. And we have already built the inventory and fullfilment systems to handle those bits for you. What could be simpler?</p>

<p>Interested? Then send an email to <a href="mailto:dana@scorpionsoft.com">dana@scorpionsoft.com</a> and start a conversation to explore the opportunity!</p>]]>
        
    </content>
</entry>
<entry>
    <title>Scaling Anvil for larger organizations</title>
    <link rel="alternate" type="text/html" href="http://www.scorpionsoft.com/anvil/2006/10/scaling_anvil_for_larger_organ.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.scorpionsoft.com/blog/mt-atom.cgi/weblog/blog_id=2/entry_id=118" title="Scaling Anvil for larger organizations" />
    <id>tag:www.scorpionsoft.com,2006:/anvil//2.118</id>
    
    <published>2006-10-21T00:51:30Z</published>
    <updated>2006-10-21T01:06:45Z</updated>
    
    <summary>So as we were going through some changes with Anvil at the code level, one of the things I had to do was implement CryptoCard&apos;s latest COM object. They merged some of their old code into a single source, which...</summary>
    <author>
        <name>Dana Epp</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.scorpionsoft.com/anvil/">
        <![CDATA[<p>So as we were going through some changes with Anvil at the code level, one of the things I had to do was implement CryptoCard's latest COM object. They merged some of their old code into a single source, which is a really nice idea.</p>

<p>One problem that I quickly came across stumped out progress, and pretty bad. Our web service is written in a manner that uses a multi-threaded apartment model (MTA). That makes sense since we could have hundreds of concurrent authentication requests (especially first thing in the morning when everyone is logging in). However the COM object was written in a single-threaded apartment model (STA). Not a major problem for simple applications as you can use the [STAThread]  directive to make the app work single threaded, our use ASP.NETs model that can STA itself. Big problem in a web service, where you CAN'T do that. And even though there is a <a href="http://msdn.microsoft.com/msdnmag/issues/06/10/WickedCode/">work around presented</a> in MSDN Magazine,  it would mean I would be loading the COM library for each thread...which could easily get to 500MB to a GIG of memory usage when an organization first logs in at 9 in the morning.</p>

<p>So, I went to CryptoCard and expressed my performance problem with the COM object. And then did an AWESOME job address my problem. They rewrote their COM library to support MTA, and did it in just a few days! Thanks guys.</p>

<p>So now, instead of taking 500 MB of memory during a major load for authentication, it is taking around 5 to 10 MB. Talk about sweet! And now, this web service can really scale. With TestComplete's load testing and performance profiling, I can really put it through its paces. And Anvil keeps going strong. Man I love it when a plan comes together. :)</p>]]>
        
    </content>
</entry>
<entry>
    <title>Demoing RWW-Guard and Anvil at SMBNation</title>
    <link rel="alternate" type="text/html" href="http://www.scorpionsoft.com/anvil/2006/09/demoing_rwwguard_and_anvil_at.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.scorpionsoft.com/blog/mt-atom.cgi/weblog/blog_id=2/entry_id=112" title="Demoing RWW-Guard and Anvil at SMBNation" />
    <id>tag:www.scorpionsoft.com,2006:/anvil//2.112</id>
    
    <published>2006-09-09T17:52:33Z</published>
    <updated>2006-09-09T18:14:13Z</updated>
    
    <summary>So yesterday I did a presentation at at the Microsoft Conference Center for SMBNation on strong authentication for small business. I showed how you can use RWW-Guard with CryptoCard&apos;s Cryptoserver and with Scorpion Software&apos;s Anvil SAS to offer two-factor authentication...</summary>
    <author>
        <name>Dana Epp</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.scorpionsoft.com/anvil/">
        <![CDATA[<p>So yesterday I did a presentation at at the Microsoft Conference Center for SMBNation on strong authentication for small business. I showed how you can use <a href="http://www.scorpionsoft.com/products/rww-guard/">RWW-Guard</a> with CryptoCard's Cryptoserver and with Scorpion Software's Anvil SAS to offer two-factor authentication in Remote Web Workplace.</p>

<p>It was great fun. And just before my presentation a colleague of mine from the US's Department of Justice sent me an interesting paper on the "Analysis of Department of Justice Prosecutions 1999-2006", which I used in my presentation to further define the problem of static reusable passwords. Some interesting real world statistics on what they are seeing during their prosecutions:</p>

<p><UL><LI>Most crimes, 84 percent, could have been prevented if the identity of the users connecting were checked in addition to user IDs and passwords<br />
<LI>Losses from stolen IDs and passwords far exceeded damages from worms, viruses, and other attack methods not utilizing logon accounts<br />
<LI>Vast majority of attackers, 78 percent, committed crimes from their home computers; most often using unsanctioned computers with no relationship to the penetrated organization<br />
</UL></p>

<p>Never been a better time for the release of Anvil this fall. </p>

<p>Of course, lots of interest in RWW-Guard and Anvil. Some interesting deployments have already been identified, like using Anvil + RWW-Guard to provide better control of employee access to remote SBS servers in a managed environment. Imagine... if you are managing 25 SBS boxes and an employee leaves, it will typically take you 12-25 HOURS to reconfigure each server's administrative credentials. Not just the password... but all the service passwords as well. With RWW-Guard and Anvil... you simply revoke the employees token, removing his ability to log into the remote servers at all. Some guys are managing upwards to 50 to 200 servers, and this can literally save  thousands of dollars in maintenance costs.</p>

<p>Apparently there is some voting going on, and I am in the running to repeat the session on Sunday. If you didn't get a chance to catch the presentation and you are on the Microsoft campus, you might be able to catch it tomorrow! We'll see how it goes.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Anvil... one month later</title>
    <link rel="alternate" type="text/html" href="http://www.scorpionsoft.com/anvil/2006/09/anvil_one_month_later.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.scorpionsoft.com/blog/mt-atom.cgi/weblog/blog_id=2/entry_id=111" title="Anvil... one month later" />
    <id>tag:www.scorpionsoft.com,2006:/anvil//2.111</id>
    
    <published>2006-09-01T18:46:31Z</published>
    <updated>2006-09-01T19:00:06Z</updated>
    
    <summary>Its now September 1st. With August behind us I thought I would screencast the results, and talk about where we are. Over all, I am quite happy with the progress. We have a working strong authentication server (SAS) that properly...</summary>
    <author>
        <name>Dana Epp</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.scorpionsoft.com/anvil/">
        <![CDATA[<p>Its now September 1st. With August behind us I thought I would screencast the results, and talk about where we are.</p>

<p>Over all, I am quite happy with the progress. We have a working strong authentication server (SAS) that properly authenticates against CryptoCard KT hardware tokens. That was my vision at the beginning of last month... and that is the reality now.</p>

<p>So what next? Well, there is still a lot to be done before its ready for sale. It will have to go through some major testing. The product needs to become a solution, which will include documentation, an installer, a website, marketing materials etc. And I still have a company to run with other products, so much of my focus will need to be there. <a href="http://www.scorpionsoft.com/products/rww-guard/">RWW-Guard</a> is in its final beta stages as we prepare to start selling it, and the first few weeks of September will be focused on that, while Anvil gets shelved a bit. We will of course continue to dog food Anvil and use it in house... but it won't be until next month that we start installing it on external networks.</p>

<p>I will continue to blog the progress here... but it may be a bit infrequent compared to the amount of blogging I did in August. As we move forward in readying the product for commercial release, I will be sure to invite you to join me as we take it to release.</p>

<p>Thanks for tracking my progress. I do hope I was able to share in my experience over the month. I wish you the best in your own software development!</p>

<p><a href="http://www.scorpionsoft.com/anvil/screencasts/AnvilOneMonthLater/AnvilOneMonthLater.html">Anvil One Month Later Screencast</a> [Flash ~3.5MB]</p>]]>
        
    </content>
</entry>
<entry>
    <title>Does Anvil pass the Joel Test?</title>
    <link rel="alternate" type="text/html" href="http://www.scorpionsoft.com/anvil/2006/08/does_anvil_pass_the_joel_test.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.scorpionsoft.com/blog/mt-atom.cgi/weblog/blog_id=2/entry_id=110" title="Does Anvil pass the Joel Test?" />
    <id>tag:www.scorpionsoft.com,2006:/anvil//2.110</id>
    
    <published>2006-09-01T05:28:22Z</published>
    <updated>2006-09-01T06:05:12Z</updated>
    
    <summary>Ever heard of the Joel Test? It&apos;s a simple test to measure how well a software team performs. It takes less than 3 minutes to complete, because its a simple yes/no answer test to twelve questions: Do you use source...</summary>
    <author>
        <name>Dana Epp</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.scorpionsoft.com/anvil/">
        <![CDATA[<p>Ever heard of the <a href="http://www.joelonsoftware.com/articles/fog0000000043.html">Joel Test</a>?</p>

<p>It's a simple test to measure how well a software team performs. It takes less than 3 minutes to complete, because its a simple yes/no answer test to twelve questions:</p>

<p><OL><LI>Do you use source control?<br />
 <LI>Can you make a build in one step?<br />
 <LI>Do you make daily builds?<br />
 <LI>Do you have a bug database?<br />
 <LI>Do you fix bugs before writing new code?<br />
 <LI>Do you have an up-to-date schedule?<br />
 <LI>Do you have a spec?<br />
 <LI>Do programmers have quiet working conditions?<br />
 <LI>Do you use the best tools money can buy?<br />
 <LI>Do you have testers?<br />
 <LI>Do new candidates write code during their interview?<br />
 <LI>Do you do hallway usability testing?<br />
</OL></p>

<p>So for fun, I thought I would take the test.</p>

<p><B>Do you use source control?</B></p>

<p>Yes. Anvil's source code is maintained in a Subversion source code repository. Some of my previous posts included screencasts where you see Subversion in action (indrectly).</p>

<p><B>Can you make a build in one step?</B></p>

<p>Yes. We use Automated Build Studio. I <a href="http://www.scorpionsoft.com/anvil/2006/08/anvil_automated_builds.html">blogged</a> about that earlier today.</p>

<p><B>Do you make daily builds?</B></p>

<p>Yes. See above.</p>

<p><B>Do you have a bug database?</B></p>

<p>Yes. We use FogBugz. I blogged about <a href="http://www.scorpionsoft.com/anvil/2006/08/tracking_feature_requests_and.html">how we track defects</a> earlier this month.</p>

<p><B>Do you fix bugs before writing new code?</B></p>

<p>Yes. Although everything is new code right now. :)</p>

<p><B>Do you have an up-to-date schedule?</B></p>

<p>Yes. I use a mindmap to track requirements and project plans. I blogged a bit about how I use <a href="http://www.scorpionsoft.com/anvil/2006/08/project_planning_and_anvil.html">mindmapping for project planning</a>.</p>

<p><B>Do you have a spec?</B></p>

<p>Yes. Sort of. Although we don't use spec docs like Joel defines it, I screencasted how we use <a href="http://www.scorpionsoft.com/anvil/2006/08/defining_the_base_features_of.html">functionality mindmaps</a> , <a href="http://www.scorpionsoft.com/anvil/2006/08/defining_the_technology_to_use.html">technology mindmaps</a> and <a href="http://www.scorpionsoft.com/anvil/2006/08/threat_modeling_anvil.html">threat models</a>.</p>

<p><B>Do programmers have quiet working conditions?</B></p>

<p>Yep. I telecommute quite a bit myself and use a lot of quiet space in my home, including a full home office. Most of Anvil was written on my back deck this summer, while I listened to the rustling leaves of the huge trees in my backyard in British Columbia, Canada.</p>

<p><B>Do you use the best tools money can buy?</B></p>

<p>Yes, I believe so. There is a list on the right side of this blog.</p>

<p><B>Do you have testers?</B></p>

<p>Yes. And we use automated functionality testing with the use of TestComplete.</p>

<p><B>Do new candidates write code during their interview?</B></p>

<p>Yes. Although I didn't hire anyone for this project yet. Remember... it was supposed to be just me. </p>

<p><B>Do you do hallway usability testing?</B> </p>

<p>Yes. Although to be honest I don't pick people out of the hall. Two days ago I had the gardener try the Anvil Manager. Yesterday I had my wife try it. Today it was a potential customer. I will have a few more people check it out before I ship a public beta.</p>

<p>So there you have it. Looks like I pass the Joel Test with an A+. If you work with software in your business, take the test yourself and see how you do. And make sure you read <a href="http://www.joelonsoftware.com/articles/fog0000000043.html">Joel's article</a> on the subject.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Anvil Automated Builds</title>
    <link rel="alternate" type="text/html" href="http://www.scorpionsoft.com/anvil/2006/08/anvil_automated_builds.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.scorpionsoft.com/blog/mt-atom.cgi/weblog/blog_id=2/entry_id=109" title="Anvil Automated Builds" />
    <id>tag:www.scorpionsoft.com,2006:/anvil//2.109</id>
    
    <published>2006-08-31T23:34:28Z</published>
    <updated>2006-08-31T23:47:13Z</updated>
    
    <summary>In the current state of software development, with projects becoming more and more complex, building, testing and releasing of software projects consumes an ever-increasing amount of time and resources. Amen. That quote comes directly from AutomatedQA. They are the makers...</summary>
    <author>
        <name>Dana Epp</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.scorpionsoft.com/anvil/">
        <![CDATA[<p><BLOCKQUOTE>In the current state of software development, with projects becoming more and more complex, building, testing and releasing of software projects consumes an ever-increasing amount of time and resources.</BLOCKQUOTE></p>

<p>Amen. That quote comes directly from AutomatedQA. They are the makers of <a href="http://www.automatedqa.com/products/abs/index.asp?bb=absv2">Automated Build Studio</a> (ABS), the tool that I used to create an automated build environment for Anvil.</p>

<p>I routinely get asked how we can manage the deployment of our software so effectively. With such a small company, people are surprised when they here that we automate a LOT of the daily tasks that are needed in building software, replacing the need for warm bodies that are typically used in software companies. These days I believe I have eliminated the need for a few employee positions with the use of automation. And that directly benefits the bottom line, since human resources is one of the biggest costs in a software company. </p>

<p>With the main pieces of technology now built for Anvil, I wanted to create an automated build environment so that during the beta I can consistently and constantly have daily builds available to my testers. So I decided to record a screencast introducing how I used ABS for Anvil, and how easy it is to set up.</p>

<p><a href="http://www.scorpionsoft.com/anvil/screencasts/AnvilAutomatedBuilds/AnvilAutomatedBuilds.html">Anvil Automated Builds Screencast</a> [Flash ~21MB]</p>]]>
        
    </content>
</entry>
<entry>
    <title>Token Initializer now complete</title>
    <link rel="alternate" type="text/html" href="http://www.scorpionsoft.com/anvil/2006/08/token_initializer_now_complete.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.scorpionsoft.com/blog/mt-atom.cgi/weblog/blog_id=2/entry_id=108" title="Token Initializer now complete" />
    <id>tag:www.scorpionsoft.com,2006:/anvil//2.108</id>
    
    <published>2006-08-30T22:58:50Z</published>
    <updated>2006-08-30T23:05:30Z</updated>
    
    <summary>The last piece I was waiting for from CryptoCard came in yesterday, and I finished implementing it today. I can now initialize their KT tokens, and offer the ability to import tokens directly into Anvil. I can also now automate...</summary>
    <author>
        <name>Dana Epp</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.scorpionsoft.com/anvil/">
        <![CDATA[<p>The last piece I was waiting for from CryptoCard came in yesterday, and I finished implementing it today. I can now initialize their KT tokens, and offer the ability to import tokens directly into Anvil. </p>

<p>I can also now automate the manufacturing of tokens for distribution. Not a really important piece right now, but a piece I will need once commercialization is ready to go. Since these tokens have barcodes on the back, I think I will write a barcode scanning app that can read the serial, initialize the tokens, create the AES keys, set the seed and generate the first challenge all with a single scan of the barcode. </p>

<p>Fun stuff. But stuff that can wait until the beta ships.</p>]]>
        
    </content>
</entry>
<entry>
    <title>IAS on SBS problems resolved!</title>
    <link rel="alternate" type="text/html" href="http://www.scorpionsoft.com/anvil/2006/08/ias_on_sbs_problems_resolved.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.scorpionsoft.com/blog/mt-atom.cgi/weblog/blog_id=2/entry_id=106" title="IAS on SBS problems resolved!" />
    <id>tag:www.scorpionsoft.com,2006:/anvil//2.106</id>
    
    <published>2006-08-30T01:13:57Z</published>
    <updated>2006-08-30T01:23:31Z</updated>
    
    <summary>Ok, here goes the acronym game. Seems installing IAS on a server with ISA where a DC is involved causes extension DLLs to not load thanks to an authentication DLL from ISA. *ugh*. Get all that? IAS and ISA are...</summary>
    <author>
        <name>Dana Epp</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.scorpionsoft.com/anvil/">
        <![CDATA[<p>Ok, here goes the acronym game.</p>

<p>Seems installing IAS on a server with ISA where a DC is involved causes extension DLLs to not load thanks to an authentication DLL from ISA. *ugh*. Get all that? IAS and ISA are different products. One's a RADIUS server, and one's a firewall. And they aren't playing nice together.</p>

<p>Not quite sure how I can programmatically handle this. For version one, I will just document this in the installation guide for the IAS installation. On top of that, ISA installs a "Connection Policy" into the IAS server which has to be modified so my extension DLL can work properly. Good news is, I now have a working IAS DLL. Bad news is, its a week and a half late. *sigh*. And I still have to rewire it to communicate with the Anvil Web Service I got working last week.</p>

<p>Good news is, the major hurdles are now all overcome. The next few days will be a bit easier, even though I can see we are already a week and a bit behind. Then again, writing a RADIUS extension is pretty much its own product. Guess I shouldn't be complaining. I wonder if that entitles me to an extra 30 days of development :)</p>

<p>Ya, I didn't think so either.</p>]]>
        
    </content>
</entry>
<entry>
    <title>It&apos;s ALIVE! We can now authenticate against Anvil  </title>
    <link rel="alternate" type="text/html" href="http://www.scorpionsoft.com/anvil/2006/08/its_alive_we_can_now_authentic.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.scorpionsoft.com/blog/mt-atom.cgi/weblog/blog_id=2/entry_id=105" title="It's ALIVE! We can now authenticate against Anvil  " />
    <id>tag:www.scorpionsoft.com,2006:/anvil//2.105</id>
    
    <published>2006-08-26T02:08:00Z</published>
    <updated>2006-08-26T02:25:21Z</updated>
    
    <summary>Thats right folks. After an amazingly challenging week, I can now authenticate my CryptoCard hardware tokens against Anvil! The most difficult and important piece is now done. I wanted to share in the experience with my readers, and recorded the...</summary>
    <author>
        <name>Dana Epp</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.scorpionsoft.com/anvil/">
        <![CDATA[<p>Thats right folks. After an amazingly challenging week, I can now authenticate my CryptoCard hardware tokens against Anvil! The most difficult and important piece is now done.</p>

<p>I wanted to share in the experience with my readers, and recorded the first officially working authentication request and response to the Anvil Web Service in a screencast. Watch it to see how easy it is to send a SOAP request or HTTP post to communicate with the strong authentication server. Thats right... only a few lines of code are needed to consume the web service and offer strong authentication in pretty much anything... from PHP and Ruby on Rails to Perl and ASP.NET.</p>

<p>If the demo feels a bit slow, thats because it's in debug mode, on a slow TabletPC with tonnes of tracing turned on while Camtasia records everything. Even still, the responses come in pretty fast considering all the crypto behind the scenes. </p>

<p>You may notice the response is a simple XML message with a boolean. You may be asking yourself how come there is no detailed response on a failure. The details ARE in the audit log... but I chose NOT to disclose the reason for the failure against the request. During threat modeling I decided that was too much information disclosure that a potential attacker could use against the server. If a valid user truly is having troubles (which I believe will be rare), they will have the ability to resync their tokens and reset their PINs in a future release. I decided not to pursue those features for version 1 of Anvil.</p>

<p>I am really happy with this piece falling into place before the week ended. I expected this would be the most difficult piece of the puzzle, and with it out of the way I can now focus back on the IAS issues that Microsoft PSS is still working on.</p>

<p>Have a great weekend! I know I intend to.</p>

<p><a href="http://www.scorpionsoft.com/anvil/screencasts/AnvilWebService/AnvilWebService.html">Anvil Web Service Screencast</a> [Flash ~9MB] </p>]]>
        
    </content>
</entry>
<entry>
    <title>This weeks looks like a challenging one</title>
    <link rel="alternate" type="text/html" href="http://www.scorpionsoft.com/anvil/2006/08/this_weeks_looks_like_a_challe.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.scorpionsoft.com/blog/mt-atom.cgi/weblog/blog_id=2/entry_id=104" title="This weeks looks like a challenging one" />
    <id>tag:www.scorpionsoft.com,2006:/anvil//2.104</id>
    
    <published>2006-08-23T23:02:36Z</published>
    <updated>2006-08-23T23:21:28Z</updated>
    
    <summary>Well, progress on Anvil has been slower than I would have liked this week. I seem to be tackling challenges that I wasn&apos;t quite prepared for. Its quite interesting problems which has made it enjoyable, if it wasn&apos;t for the...</summary>
    <author>
        <name>Dana Epp</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.scorpionsoft.com/anvil/">
        <![CDATA[<p>Well, progress on Anvil has been slower than I would have liked this week. I seem to be tackling challenges that I wasn't quite prepared for. Its quite interesting problems which has made it enjoyable, if it wasn't for the pressures of the end of month coming up.</p>

<p>Microsoft PSS still doesn't have a solution for me. I am disappointed to see that the support guys aren't using virtualization for testing purposes. The engineer assigned to my case actually contacted me and said it may be a few days (and up to next week) as he has to build an SBS environment. WHAT?? I would think there is a working VPC image for every product they have. It should take no time at all to bring up an image to work with. Guess they aren't dogfooding their own VPC stuff for this kind of thing. Thats really to bad. </p>

<p>The AuthEngine stuff has also had some of its own challenges. The guys at CryptoCard have been working well with me to get this stuff working in .NET. They have written a new COM object that I can use so I don't have to PInvoke the C library. Problem is, they still have to document it and provide some tests, which means its been a bit hit and miss for me as I try to learn this stuff. On the flip side, I have rather enjoyed working with the guys over at CryptoCard as every time I come across something I don't understand, they are able to fill in the blanks for me with very little effort. Typically with internal documentation they have in hand from others who have come across these challenges.</p>

<p>So right now I am waiting for both Microsoft and CryptoCard to get back to me on some stuff. In the meantime, I am mindmapping the workflow process I expect to use for the deployment and enrollment of tokens to users when in the field. While talking with Cryptocard they have offered some interesting advice on what sort of difficulties they have seen in the field, and I am leveraging that information to make Anvil more user friendly... while meeting compliance needs of different market verticals. </p>

<p>Hopefully tomorrow will come with some solutions to these challenges so I can make some serious progress. This week has been killing my schedule.</p>]]>
        
    </content>
</entry>
<entry>
    <title>The best way to protect secrets ...</title>
    <link rel="alternate" type="text/html" href="http://www.scorpionsoft.com/anvil/2006/08/the_best_way_to_protect_secret.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.scorpionsoft.com/blog/mt-atom.cgi/weblog/blog_id=2/entry_id=103" title="The best way to protect secrets ..." />
    <id>tag:www.scorpionsoft.com,2006:/anvil//2.103</id>
    
    <published>2006-08-23T01:57:30Z</published>
    <updated>2006-08-23T02:13:06Z</updated>
    
    <summary>... is to never have secrets to protect. Does that make sense? So today I got an email from someone who challenged my post on using regular expressions for data validation on the PIN field in the Users table. His...</summary>
    <author>
        <name>Dana Epp</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.scorpionsoft.com/anvil/">
        <![CDATA[<p>... is to never have secrets to protect. Does that make sense? </p>

<p>So today I got an email from someone who challenged my <a href="http://www.scorpionsoft.com/anvil/2006/08/leveraging_powerful_data_valid.html">post</a> on using regular expressions for data validation on the PIN field in the Users table. His position isn't about the regex itself (which he liked), but the fact I was storing the PIN in the first place.</p>

<p>And he is right. I didn't really go into detail in that post, but I never designed the final Anvil database structure to actually store the PIN. This was actually one of the things exposed during the threat modeling process. There is no reason an administrator should ever know a user's PIN. So why let them see it? Why even store it? In Anvil, the PIN is not actually stored. A 32 byte MD5 hash is actually stored in the database, and a regex of <b>^[abcdef0-9]{32}$</b> is used as the data filter. </p>

<p>I am pleased that someone actually noticed this and pointed it out. It's a great lesson on why we shouldn't store secrets if we don't need to. The Token Validation Web Service takes the PIN inputed by the user, hashes it, and compares that hash to what is in the database. If it matches, then we have a valid PIN.  No need to expose the PIN directly in the database.</p>

<p>While waiting for Microsoft PSS to get back to me on the IAS issue I am having, I am spending time working through the new AuthEngine COM object CryptoCard have designed to use with .NET. I should be able to add that to the web service in the next few days. Once that snaps in, a lot of things will fall into place.</p>

<p>Lets hope I can get the RADIUS side worked out with IAS soon.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Status update on IAS issue</title>
    <link rel="alternate" type="text/html" href="http://www.scorpionsoft.com/anvil/2006/08/status_update_on_ias_issue.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.scorpionsoft.com/blog/mt-atom.cgi/weblog/blog_id=2/entry_id=102" title="Status update on IAS issue" />
    <id>tag:www.scorpionsoft.com,2006:/anvil//2.102</id>
    
    <published>2006-08-23T01:45:25Z</published>
    <updated>2006-08-23T01:56:38Z</updated>
    
    <summary>Well, made SOME progress on the IAS issue. Had a developer from Redmond give me a call, and we quickly found out that one problem was the fact the Platform SDK build environment was mapping the C compiler to the...</summary>
    <author>
        <name>Dana Epp</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.scorpionsoft.com/anvil/">
        <![CDATA[<p>Well, made SOME progress on the IAS issue. Had a developer from Redmond give me a call, and we quickly found out that one problem was the fact the Platform SDK build environment was mapping the C compiler to the VS2005 stuff (MSVCR80). One problem... the C runtime on SBS is for VS2003 (MSVCR71), except on R2, which we don't run here in any environment. </p>

<p>Running "depends.exe" quickly showed that the runtime was missing. So I copied the latest Platform SDK SetEnv.cmd script and altered it to force it to pick up the VS2003 C compiler. Voila. Now that side of things is working properly.</p>

<p>Of course, IAS still won't load the bloody DLL. *sigh*</p>

<p>Back in Microsoft's hands. Hopefully they will be able to figure it out tomorrow and give me a call.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Expensive office music - calling Microsoft PSS</title>
    <link rel="alternate" type="text/html" href="http://www.scorpionsoft.com/anvil/2006/08/expensive_office_music_calling.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.scorpionsoft.com/blog/mt-atom.cgi/weblog/blog_id=2/entry_id=101" title="Expensive office music - calling Microsoft PSS" />
    <id>tag:www.scorpionsoft.com,2006:/anvil//2.101</id>
    
    <published>2006-08-22T19:10:00Z</published>
    <updated>2006-08-22T19:17:25Z</updated>
    
    <summary>So this morning I called Microsoft&apos;s Professional Support Services to look for help with my IAS extension problem on SBS. After 2 hours of being on hold with the networking group, it appears I have bounced around in the SBS...</summary>
    <author>
        <name>Dana Epp</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.scorpionsoft.com/anvil/">
        <![CDATA[<p>So this morning I called Microsoft's Professional Support Services to look for help with my IAS extension problem on SBS. After 2 hours of being on hold with the networking group, it appears I have bounced around in the SBS group, the SDK group and finally now to the "Microsoft Development Team". And that requires someone to call me back in 24 to 48 hours. *sigh*</p>

<p>Meanwhile, for two hours I listened to 70s disco music, peppered with some country and weird early 80s music. I guess I shouldn't complain... as it could have been some Bollywood tunes that I wouldn't have quite understood.</p>

<p>All I want to do is load an extension DLL in IAS on SBS. Why is this so hard. *sigh*</p>

<p>Well, off to do some work on the web service while I wait.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Integrating Internet Authentication Server on SBS isn&apos;t as easy as I expected</title>
    <link rel="alternate" type="text/html" href="http://www.scorpionsoft.com/anvil/2006/08/integrating_internet_authentic.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.scorpionsoft.com/blog/mt-atom.cgi/weblog/blog_id=2/entry_id=100" title="Integrating Internet Authentication Server on SBS isn't as easy as I expected" />
    <id>tag:www.scorpionsoft.com,2006:/anvil//2.100</id>
    
    <published>2006-08-22T07:30:59Z</published>
    <updated>2006-08-22T07:39:20Z</updated>
    
    <summary>So it seems I came across a wall today. Trying to get an IAS extension to load in Internet Authentication Server (IAS) on SBS2003 seems to fail. A bunch of different issues ranging from permissions for EventLog access for IAS...</summary>
    <author>
        <name>Dana Epp</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.scorpionsoft.com/anvil/">
        <![CDATA[<p>So it seems I came across a wall today. Trying to get an IAS extension to load in Internet Authentication Server (IAS) on SBS2003 seems to fail. A bunch of different issues ranging from permissions for EventLog access for IAS to the extension DLL code not even loading, I burnt a LOT of time today trying to get this working. </p>

<p>I did complete the code for the IAS extension framework though. That was a lot of good progress. I plan to ship a RADIUS test DLL for RWW-Guard later this week, once I get this deployment issue worked out. And thats an extra benefit for my RWW-Guard users during testing.</p>

<p>So whats next? It's not worth the expense to spend the next day or two trying to figure out this problem. Valuing my time, I will call Microsoft PSS and spend the money to get them to tell me why the heck IAS on SBS acts this way. Even using the default samples in the SDK seem to fail on SBS. No idea why. Hopefully they can help me figure it out so I can get back on track.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Leveraging powerful data validation in SQL Server 2005</title>
    <link rel="alternate" type="text/html" href="http://www.scorpionsoft.com/anvil/2006/08/leveraging_powerful_data_valid.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.scorpionsoft.com/blog/mt-atom.cgi/weblog/blog_id=2/entry_id=99" title="Leveraging powerful data validation in SQL Server 2005" />
    <id>tag:www.scorpionsoft.com,2006:/anvil//2.99</id>
    
    <published>2006-08-17T20:20:40Z</published>
    <updated>2006-08-17T20:58:20Z</updated>
    
    <summary>I am so pleased with deciding to go with SQL Server 2005 Express for Anvil. I recently learned about an extremely powerful feature that makes data validation in the database a breeze. Whenever you use input from an untrusted source,...</summary>
    <author>
        <name>Dana Epp</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.scorpionsoft.com/anvil/">
        <![CDATA[<p>I am so pleased with deciding to go with <a href="http://msdn.microsoft.com/vstudio/express/sql/">SQL Server 2005 Express</a> for Anvil. I recently learned about an extremely powerful feature that makes data validation in the database a breeze.</p>

<p>Whenever you use input from an untrusted source, it needs to be validated. Especially if it comes from or can be accessed by the user. The best way to handle this is to put an input sentry at any trust boundary, as it crosses from an untrusted to trusted border. Ultimately, the last line of defense will be the database, as that is where the final storage ends up... at least for our application.</p>

<p>You can easily apply CHECK constraints on fields in the database. But that is a very rudimentary method of validating the input, since you can typically only do basic checks.</p>

<p>Enter the fact that in SQL Server 2005, you can now enable CLR in the database, and write user-based functions in your favorite .NET language. And more importantly, you can CALL these functions AS constraints on fields in the database.</p>

<p>This is really impressive stuff. In my case, I wrote a generic regular expression validation function that allows me to  do the deepest of validation checks on the data before its inserted. If the data fails the regex validation, the record will not be committed.</p>

<p>I decided to screencast the authoring of this powerful regular expression validation method. Feel free to use it yourself on your SQL Server 2005 databases.</p>

<p>And remember... always assume that input is malicious until proven to be safe.</p>

<p><a href="http://www.scorpionsoft.com/anvil/screencasts/AnvilSQLDataValidation/AnvilSQLDataValidation.html">Anvil SQL Server Data Validation Screencast</a> [Flash ~14MB]</p>]]>
        
    </content>
</entry>

</feed> 

