canada export cryptography
Is it legal to export open-source cryptographic software from Canada
<p>I'm an independent software developer who has developed a program that links to the OpenSSL libraries for the purpose of allowing users to decrypt, filter and re-encrypt secure content. For example, one of the filtering engines in this software contains a transparent HTTPS proxy where the user can load filtering rules such as Adblock Plus Filters (<a href="https://easylist.adblockplus.org/en/">EasyList</a>) and have the proxy transparently remove matching content before presenting it the user.</p>

<p>I intend on publishing the entire source code on Github.com and publishing binaries releases, both under the GNU GPL v3 (or any later version). I've spoken with <a href="https://www.google.ca/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;ved=0ahUKEwiC1PXctZ_JAhUHdR4KHSCtCOwQFggcMAA&amp;url=http%3A%2F%2Fwww.international.gc.ca%2Fcontrols-controles%2Fsystems-systemes%2Fexcol-ceed%2Findex.aspx%3Flang%3Deng&amp;usg=AFQjCNGNnPMnvriIESsM0PIpcYZgD5aZ5w&amp;sig2=hvmEuCT1NaNZc5jXEBVYfg&amp;bvm=bv.108194040,d.dmo&amp;cad=rja">EXCOL</a> to try to get a formal ruling on whether or not such a program is subject to control under Import/Export law in Canada. However, they simply don't want to make a ruling over the phone or email and the only clear ruling they've given me is that due to the nature of the product and how I'm releasing it, I'm not eligible to apply for an export permit (because there is no Consignee). The other thing they made clear is that uploading something to a website is classified as "exporting". </p>

<p>As such, they've told me the only thing I can do is apply for an <a href="http://www.international.gc.ca/controls-controles/systems-systemes/excol-ceed/adv_opinion-avis_consultatif.aspx?lang=eng">Advisory Opinion</a>, which they told me straight up is going to take "a very long time" because their priority is on processing actual applications, not giving opinions. Plus they basically told me that the opinion is useless, because it's based on your supplied specification and not the actual "product", so the opinion can be revoked/changed/thrown out.</p>

<p>There is some language in <a href="http://www.international.gc.ca/controls-controles/about-a_propos/expor/guide-2013.aspx?lang=eng">the official guide</a> to applying for a permit that suggests that software placed in "the public domain" is not subject to control, with the definition of "public domain" meaning generally available to the public, not the typical interpretation as applied to copyright.</p>

<blockquote>
  <p>Note:</p>
  
  <p>This does not release such "technology" controlled in entries
  1-1.E.2.e. and 1-1.E.2.f . and 1-8.E.2.a. and 1-8.E.2.b.</p>
  
  <p>Controls do not apply to "technology" in the "public domain", to
  "basic scientific research" or to the minimum necessary information
  for patent applications. General Software Note:</p>
  
  <p>The Lists do not control "software" which is any of the following:</p>

<pre><code>1. Generally available to the public by being:
    Sold from stock at retail selling points, without restriction, by means of :
        1. Over-the-counter transactions;
        2. Mail order transactions;
        3. Electronic transactions; or
        4. Telephone call transactions; and
    Designed for installation by the user without further substantial support by the supplier; or

     Note: Entry 1 of the General Software Note does not release "software" controlled by Category 5, Part 2 ("Information Security").
2. "In the public domain"; or
3. The minimum necessary "object code" for the installation, operation, maintenance (checking) or repair of those items whose export has been authorised.

Note : Entry 3 of the General Software Note does not release “software” controlled by Category 5 - Part 2 (“Information Security”).
</code></pre>
</blockquote>

<p>The definition of "public domain" is given as:</p>

<blockquote>
  <p>"In the public domain" - General Technology Note, General Software
  Note, 2-22
      This means "technology" or "software" which has been made available without restrictions upon its further dissemination.</p>

<pre><code>Note:
Copyright restrictions do not remove "technology" or "software" from being "in the public domain".
</code></pre>
</blockquote>

<p>Also, I was able to find a presentation a Canadian Firm made to TD Bank, <a href="http://www.mccarthy.ca/pubs/Presentation_to_The_TD_Bank_Financial_Group_Dec_8_2008.pdf">posted here</a> that seems to interpret this language as meaning that open source software is exempt from control:</p>

<blockquote>
  <p>"Open Source” Exception – permit is not required if the  software
  containing the cryptographic function is in the  public domain</p>
</blockquote>

<p>They then further qualify this with the following statement:</p>

<blockquote>
  <p>Does not apply where open source software is combined with 
  proprietary software – i.e. open source cryptographic program 
  (OpenSSL, etc...) integrated as security feature in or linked into 
  company’s proprietary software.</p>
</blockquote>

<p>OpenSSL is a collection of open source crypto libraries, so this further qualification on the exception is meaning to say that closed source applications linking to open source crypto are not covered. Since this is a negating statement, the inverse must necessarily be true, that open source software linking to something like OpenSSL is covered. This is my interpretation, I have contacted the lawyer who made the presentation hoping to get clarification.</p>

<p>So my question is, am I interpreting this information correctly? That as long as the source is open to the public, made generally available, that one can legally "export" aka publish such a work legally without an export permit?</p>

<p>I'm posting an answer hoping it is not the final answer, but rather in the hopes that it inspires a better answer itself. The open source or "public domain" exception cited in my question has some constraints placed on it. For example, software that falls under <code>1-1.E.2.e</code>, <code>1-1.E.2.f</code>, <code>1-8.E.2.a</code> and <code>1-8.E.2.b</code> are not covered by the exception. So, here is a summary of every one of those sections, and the sections that those sections reference:</p>

<blockquote>
  <p><strong>Section 1-1.E.2.e</strong> - "Technology" for the installation, maintenance or repair
  of materials specified by 1-1.C.1. </p>
  
  <p><strong>Section 1-1.C.1</strong> covers Materials specially designed for use as absorbers of electromagnetic waves, or intrinsically conductive polymers, as follows:</p>
  
  <p>... Not included because my software has absolutely nothing to do with materials of any kind. Entire section is about qualifying a type of material this rule applies to.</p>
  
  <p><strong>1-1.E.2.f</strong> - "Technology" for the repair of "composite" structures,
  laminates or materials specified by 1-1.A.2., 1-1.C.7.c. or 1-1.C.7.d.</p>
  
  <p><strong>Section 1-1.A.2</strong> covers "Composite" structures or laminates, having
  any of the following:</p>
  
  <p>... Not included because my software has absolutely nothing to do with materials of any kind. Entire section is about qualifying a
  type of material this rule applies to.</p>
  
  <p><strong>Section 1-1.C.7.c</strong> covers Ceramic-ceramic "composite" materials with a
  glass or oxide-"matrix" and reinforced with fibres having all of the
  following:</p>
  
  <p>... Not included because my software has absolutely nothing to do with materials of any kind. Entire section is about qualifying a
  type of material this rule applies to.    </p>
  
  <p><strong>Section 1-1.C.7.d</strong> covers Ceramic-ceramic "composite" materials, with or without a continuous metallic phase, incorporating particles, whiskers or fibres, where carbides or nitrides of silicon, zirconium or boron form the "matrix";</p>
  
  <p><strong>Section 1-8.E.2</strong> Other "technology" defined as follows:</p>
  
  <p>a. "Technology" for the "development", "production", repair, overhaul or refurbishing (re-machining) of propellers specially designed for underwater noise reduction;</p>
  
  <p>b. "Technology" for the overhaul or refurbishing of equipment specified by 1-8.A.1., 1-8.A.2.b., 1-8.A.2.j., 1-8.A.2.o. or 1-8.A.2.p.</p>
</blockquote>

<p>I've omitted copying quite a bit of text, but I kept the title/summary portions to illustrate that all of the exceptions to the open source or "public domain" exception have something to do with software related to restricted physical materials. There are some other exceptions to the general exception, notably the "Information Security" constraint, but note that the "Information Security" constraint applies specifically to Entries 1 and 3, and the open source or "public domain" exception is defined in entry 2. </p>

<p>Just for fun, the definition of "Information Security":</p>

<blockquote>
  <p>"Information security" - Cat 5P2
      All the means and functions ensuring the accessibility, confidentiality or integrity of information or communications,
  excluding the means and functions intended to safeguard against
  malfunctions. This includes "cryptography", "cryptographic
  activation", cryptanalysis, protection against compromising emanations
  and computer security.</p>
  
  <p>Technical Note:</p>
  
  <p>'Cryptanalysis': the analysis of a cryptographic system or its inputs and outputs to derive confidential variables or sensitive data, including clear text. (ISO 7498-2-1988 (E), paragraph 3.3.18).</p>
</blockquote>

<p>After reviewing each of the constraints placed on the various exceptions, I believe the spirit of the law here is to control:</p>

<ol>
<li><p>Closed source "Information Security" software that defines or uses cryptography, regardless of whether the linked crypto software is open source or not.</p></li>
<li><p>Closed source or open source software that is even remotely related to the study or production of physical materials that you require an export permit for. Basically, if the program even mentions a material that you'd need an export permit for, you probably need an export permit for the software, regardless of whether it's open source or not.</p></li>
</ol>

<p>Again this is not meant to be a final answer. I'm simply posting more information about the question and my thoughts on it, hoping to assist in creating a better answer than this. Plus, a whole lot of rep is going to go down the toilet without another answer. :)</p>
