<?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>Thinking in G &#187; Security</title>
	<atom:link href="http://thinkinging.com/category/security/feed/" rel="self" type="application/rss+xml" />
	<link>http://thinkinging.com</link>
	<description>an unfiltered stream of data flow consciousness</description>
	<lastBuildDate>Fri, 02 Oct 2009 23:51:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Password Protecting VIs is Security Through Obscurity</title>
		<link>http://thinkinging.com/2007/08/19/password-protecting-vis-is-security-through-obscurity/</link>
		<comments>http://thinkinging.com/2007/08/19/password-protecting-vis-is-security-through-obscurity/#comments</comments>
		<pubDate>Sun, 19 Aug 2007 20:01:41 +0000</pubDate>
		<dc:creator>Jim Kring</dc:creator>
				<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://thinkinging.com/2007/08/19/password-protecting-vis-is-security-through-obscurity/</guid>
		<description><![CDATA[I have a huge problem with password protected VIs.  It gives people false assurance that nobody will be able to see the intellectual property contained in a VI&#8217;s block diagram (the source code).
The basis of my argument is that, behind the scenes, LabVIEW accesses a VI&#8217;s block diagram to recompile it for other platforms [...]]]></description>
			<content:encoded><![CDATA[<p><img align="right" alt="lock_reduced.png" id="image241" title="lock_reduced.png" style="padding: 1px 1px 1px 6px" src="http://thinkinging.com/wp-content/uploads/2007/08/lock_reduced.png" /><strong>I have a huge problem with password protected VIs</strong>.  It gives people <strong>false assurance</strong> that nobody will be able to see the <strong>intellectual property</strong> contained in a VI&#8217;s block diagram (the source code).</p>
<p>The basis of my argument is that, <strong>behind the scenes, LabVIEW accesses a VI&#8217;s block diagram to recompile it for other platforms</strong> (operating systems and processors) and newer LabVIEW versions. This means that:</p>
<ol>
<li><em>Some people within NI can access your block diagrams.</em></li>
<li>Someone outside NI, if they were sufficiently clever (and there are many clever people in this world), might be able to <em>fool LabVIEW into unlocking your VI&#8217;s block diagram</em>.</li>
</ol>
<p><strong>Password protecting VIs is a scheme that relies on &#8220;security through obscurity&#8221;, which is, IMO, a very bad idea.</strong>  (But, don&#8217;t just take my word for it &#8212; google &#8220;<a href="http://www.google.com/search?q=security+through+obscurity"><em>security through obscurity</em></a>&#8221; and read some of the articles.)</p>
<p>So, why do I bring this up?  LabVIEW is becoming more and more of a general purpose programming language and many people are building commercial products using LabVIEW, including reuse libraries and components.  <strong>Customers of LabVIEW reuse libraries and components expect to be able to use them in future versions of LabVIEW</strong> as well as use them on any platform or execution target supported by LabVIEW (such as LabVIEW RT and FPGA targets).  <strong>The only practical way for vendors to achieve this is to ship the reuse libraries with password protected block diagrams</strong>.</p>
<p>What would happen if, some day, a hack were to be discovered that could unlock the block diagram of any VI?  What would be the implications for NI?  What would be the implications for LabVIEW users? What would be the implications for LabVIEW tools vendors?  I&#8217;ll bet you that many people would be VERY pissed off and there might even be legal actions taken.</p>
<p><strong>The longer we rely on the fallacy of password protected VIs, the more catastrophic the consequences to all of us, once the scheme is cracked.</strong></p>
<p>So, what now?</p>
<ol>
<li>First, do not rely on password protection for any VI with intellectual property that must not be made public.</li>
<li>Second, demand (from NI) a better scheme for cross-platform execution of VIs.</li>
</ol>
<p>So, what can NI do to devise a better scheme to lessen the need for distributing password protected VIs?</p>
<ol>
<li>Give VIs the ability to store the executable code for <strong>multiple</strong> platforms and execution targets</li>
<li>Use <strong>platform-independent byte code</strong> that runs on a LabVIEW virtual machine</li>
<li>Support old versions of VI executable code (for example, a VI saved in LabVIEW 6.1 on Windows without a block diagram should be callable by LabVIEW 8.5 on Windows).  This can almost be done right now by building your reuse library into a DLL and providing VIs (with source code) that wrap the DLL.  However, this technique still requires one version of the DLL for each platform (Mac, Linux, and Windows) and would not work well for targeting LabVIEW RT or FPGA.</li>
</ol>
<p>Is the world coming to an end?  No, not really.  But, <strong>things are getting worse as time goes by</strong>.  The longer people rely on password protected VIs and the more popular LabVIEW becomes, the larger the consequences when the scheme is eventually cracked.</p>
]]></content:encoded>
			<wfw:commentRss>http://thinkinging.com/2007/08/19/password-protecting-vis-is-security-through-obscurity/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Security at the SubVI Boundary</title>
		<link>http://thinkinging.com/2007/02/03/security-at-the-subvi-boundary/</link>
		<comments>http://thinkinging.com/2007/02/03/security-at-the-subvi-boundary/#comments</comments>
		<pubDate>Sat, 03 Feb 2007 19:30:42 +0000</pubDate>
		<dc:creator>Jim Kring</dc:creator>
				<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://thinkinging.com/2007/02/03/security-at-the-subvi-boundary/</guid>
		<description><![CDATA[Anyone who writes software should be concerned about its security. The term &#8220;security&#8221;, in the context of software, can mean a lot of different things to different people.  Software can be secure, in the sense that it exudes confidence because its knows that its developers deeply care about it and love to improve it [...]]]></description>
			<content:encoded><![CDATA[<p>Anyone who writes software should be concerned about its security. The term &#8220;security&#8221;, in the context of software, can mean a lot of different things to different people.  Software can be secure, in the sense that it exudes confidence because its knows that its developers deeply care about it and love to improve it (which is very important, in order for software to be functional).  However, right now, I am going to discuss secure software in the sense that (1) it cannot be made to act in ways we did not intended and (2) it does not allow its proprietary and private information to be intercepted by people or software that are not authorized to access that information.</p>
<p><img align="left" style="padding-top: 4px; padding-bottom: 0px; padding-right: 10px" alt="lock" id="image88" src="http://thinkinging.com/wp-content/uploads/2007/02/lock.thumbnail.png" />In LabVIEW, when we build an executable application, there are a lot of security issues.  For example, while working on <a title="VI Package Manager" href="http://jkisoft.com/vipm">VI Package Manager</a>, we (<a href="http://jameskring.com/index.php?page=careers">JKI</a>) employed several mechanisms to address LabVIEW security issues.  One significant security limitation of LabVIEW, is that <em style="font-style: italic">the subVI call boundary is inherently not secure</em>.  At run-time, LabVIEW dynamically links parent VIs (callers) to subVIs (callees).  It is therefore possible (and, yes it&#8217;s been done) to fool a VI in a built application into calling a different subVI than was specified at build time.  VIs can be inserted into the hierarchy of a LabVIEW application in order to intercept and modify data &#8212; we call these intruders &#8220;mole VIs&#8221;.  I&#8217;m not going to explain the process of creating and inserting mole VIs, but I will tell you (only) a couple of the things that we&#8217;ve done to thwart the problem.</p>
<p>One technique that we used, is <em>in-lining of subVIs</em>.  This is basically the inverse operation of <em>Create SubVI from Selection</em>, except that you merge a subVI into its caller&#8217;s block diagram (often recursively).  We were working on a way to do this, using scripting (and had it nearly working), when we discovered a native scripting function that does it for us.  Ironically, we noticed that <a title="subVI.inline() method discovery" href="http://forums.lavag.org/index.php?showtopic=3440">someone on LAVA discovered this</a>, too, just about a week after we did &#8212; small world! Of course, we were trying to solve two different problems (our issue was security and their issue was execution optimization) but is was interesting, nonetheless.</p>
<p>Another technique that we used is obfuscation (garbling) of VI names inside the executable, so that VIs&#8217; real/descriptive names cannot be seen &#8212; for example a VI named &#8220;Is Password Valid.vi&#8221; might be renamed to something like &#8220;0BFE026AEEB3CF0FDDA37505B49D846C&#8221;.  In VIPM, we achieve this by doing a programmatic renaming of all the VIs, during the build process.  Now, this doesn&#8217;t really prevent someone from inserting a <span style="font-style: italic">mole</span> into your application hierarchy, but it makes it a lot harder to figure out what&#8217;s going on in your application.</p>
<p><img align="right" id="image87" alt="OpenG Builder Splash" style="padding-top: 4px; padding-bottom: 0px; padding-right: 10px" src="http://thinkinging.com/wp-content/uploads/2007/02/builder_splash.thumbnail.png" />Finally, I should note that both of the aforementioned techniques are executed programmatically during the build process.  We use <a title="OpenG Builder" href="http://forums.openg.org/index.php?showforum=36">OpenG Builder</a> to build VIPM and we have over a dozen separate build steps and also execute several call-backs that operate on VIs as they are copied from the source location to the build output location.  Honestly, I couldn&#8217;t imagine creating a commercial software product, written in LabVIEW, that was not built using OpenG Builder.  In future articles, I&#8217;ll describe more of the cool ways that we use OpenG Builder to overcome software engineering challenges.</p>
<p>In closing, I should also mention that insecure software is also a very serious problem &#8212; please, show your software some love and make sure that it is secure <img src='http://thinkinging.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><em>Want to discuss this article?  Please post to the LAVA discussion forum thread, <a title="LAVA thread for discussing this article" href="http://forums.lavag.org/index.php?showtopic=6094">here</a>. </em></p>
]]></content:encoded>
			<wfw:commentRss>http://thinkinging.com/2007/02/03/security-at-the-subvi-boundary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
