<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://www.grounation.org/index.php?feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>GrouNation</title>
  <link>http://www.grounation.org/index.php?</link>
  <atom:link href="http://www.grounation.org/index.php?feed/rss2" rel="self" type="application/rss+xml"/>
  <description></description>
  <language>en</language>
  <pubDate>Sat, 18 May 2013 17:25:13 +0200</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Manage Xresources</title>
    <link>http://www.grounation.org/index.php?post/2011/02/11/Manage-Xresources</link>
    <guid isPermaLink="false">urn:md5:0d8b20f7248d316cb1763bb381edba47</guid>
    <pubDate>Fri, 11 Feb 2011 20:02:00 +0100</pubDate>
    <dc:creator>webmaster</dc:creator>
        <category>System</category>
        <category>appres</category><category>Linux</category><category>list Xresources</category><category>xrdb</category><category>Xresource</category>    
    <description>&lt;p&gt;Some simple but very usefull tips to manage Xresources&lt;/p&gt;    &lt;h5&gt;List Xresources used by an application&lt;/h5&gt;


&lt;p&gt;From manpage &lt;q&gt;The appres program prints the resources seen by an application (or subhierarchy of an application) with the specified class and instance names.  It can be used to determine which resources a particular program will load.&lt;/q&gt;&lt;/p&gt;


&lt;pre&gt; $ appres XTerm
 *form.Thickness:        0
 *form.background:       AntiqueWhite
 *tekMenu*vtshow*Label:  Show VT Window
 *tekMenu*tektextsmall*Label:    Small Characters
 *tekMenu*vtmode*Label:  Switch to VT Mode
 *tekMenu*tektextlarge*Label:    Large Characters
 *tekMenu*tekpage*Label: PAGE
 *tekMenu*tekreset*Label:        RESET
 ...&lt;/pre&gt;


&lt;h5&gt;Set of get Xresources&lt;/h5&gt;


&lt;p&gt;The command to manage the content of the RESOURCE_MANAGER is :&lt;/p&gt;

&lt;pre&gt; $ xrdb&lt;/pre&gt;


&lt;p&gt;To load a new resources, simply enter :&lt;/p&gt;

&lt;pre&gt; $ xrdb your_resource_file&lt;/pre&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>PolyXene secure Operating System</title>
    <link>http://www.grounation.org/index.php?post/2011/02/07/PolyXene-secure-Operating-System</link>
    <guid isPermaLink="false">urn:md5:b6275ba212cc5a779139302f108b1e75</guid>
    <pubDate>Mon, 07 Feb 2011 08:38:00 +0100</pubDate>
    <dc:creator>webmaster</dc:creator>
        <category>Security</category>
        <category>Microkernel</category><category>Qubes</category><category>Security</category><category>TPM virtualization</category><category>Xen</category>    
    <description>&lt;p&gt;&lt;img src=&quot;http://polyxene.fr/resources/image/polyxene/pictos/bertin-polyxene-logo.png&quot; alt=&quot;&quot; /&gt;
PolyXene is a certified high-security operating system that enables secure access, from one single work station, to several distinct and non-standardized networks and to data of different sensitivity levels.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Virtualization&lt;/strong&gt; enables the simultaneous operation of several operating systems on one single machine. As a certified confinement mechanism, virtualization authorizes functional evolution without compromising security issues.&lt;/p&gt;


&lt;p&gt;Virtualization provides the opportunity for substantial financial savings since it enables companies to free themselves from hardware constraints (challenge for reducing of number of machines) and improve management performance through enhanced hardware administration, optimum infrastructure usage and simplified maintenance interventions. Last but not least, it provides a high-level guarantee of data integrity and security.&lt;/p&gt;



&lt;p&gt;PolyXene is a high security operating system (CC - EAL 5), ultra-reliable operating system using &lt;strong&gt;multi-level technology&lt;/strong&gt; operating in an MILS architecture (Multi Independent Levels of Security).&lt;/p&gt;


&lt;p&gt;The aim of this technology is to secure access from one single work station to data of different sensitivity levels and to control the exchange of data of different classification levels between entities and/or storage peripherals via multi-level gateways.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;PolyXene&lt;/strong&gt; provides a set of security features :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;internal and external communication control,&lt;/li&gt;
&lt;li&gt;on-the-fly disk encryption for confidentiality and integrity,&lt;/li&gt;
&lt;li&gt;strong authentication,&lt;/li&gt;
&lt;li&gt;RBAC control for administration operations,&lt;/li&gt;
&lt;li&gt;log and audit functionalities,&lt;/li&gt;
&lt;li&gt;remote administration&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See &lt;a href=&quot;http://polyxene.fr/hypervisor-security-architecture.aspx&quot; hreflang=&quot;en&quot;&gt;detailed architecture&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Sécurité et langage Java</title>
    <link>http://www.grounation.org/index.php?post/2010/06/03/S%C3%A9curit%C3%A9-et-langage-Java</link>
    <guid isPermaLink="false">urn:md5:91c77c9fba3e7cef0552bcc2f4a12637</guid>
    <pubDate>Thu, 03 Jun 2010 11:21:00 +0100</pubDate>
    <dc:creator>admin admin</dc:creator>
        <category>Security</category>
            
    <description>&lt;p&gt;&lt;q&gt;Un certain nombre d’idées reçues circulent sur l’apport relatif des différents langages de programmation en matière de sécurité, mais les études techniques détaillées sur le sujet sont relativement peu nombreuses. C’est une des raisons pour lesquelles l’ANSSI a choisi de lancer l’étude Javasec.&lt;/q&gt;&lt;/p&gt;    &lt;p&gt;Cette étude menée par SILICOM (groupe spécialisé dans les Technologies de l'Information), AMOSSYS (société de conseil et d'expertise en Sécurité des Technologies de l'Information) et l'INRIA (IRISA plus précisément) avait pour objectif les caractéristiques et propriétés du langage Java afin de mesurer l'adéquation de celui-ci pour développer des applications de sécurité.&lt;/p&gt;


&lt;p&gt;Cette étude s'est conclue par trois rapports :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le &lt;q&gt;Rapport d’étude sur le langage Java&lt;/q&gt; analyse les grandes caractéristiques du langage dans une perspective de sécurité,&lt;/li&gt;
&lt;li&gt;le &lt;q&gt;Rapport sur les modèle d’exécution du langage Java&lt;/q&gt; qui s’intéresse notamment aux différentes conséquences de l’exécution d’applications Java en mode natif ou par interprétation sur une machine virtuelle,&lt;/li&gt;
&lt;li&gt;un &lt;q&gt;Guide de règles et de recommandations relatives au développement d’applications de sécurité en Java&lt;/q&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;http://www.ssi.gouv.fr/site_article226.html&quot; hreflang=&quot;fr&quot;&gt;ANSSI - Sécurité et langage Java&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Qubes OS and formally verified microkernel</title>
    <link>http://www.grounation.org/index.php?post/2010/05/28/Qubes-OS-and-formally-verified-microkernel</link>
    <guid isPermaLink="false">urn:md5:f9b0ff503ed3334656d69620b7ab93bf</guid>
    <pubDate>Fri, 28 May 2010 09:41:00 +0100</pubDate>
    <dc:creator>admin admin</dc:creator>
        <category>Security</category>
        <category>Linux</category><category>Microkernel</category><category>Qubes</category><category>Security</category><category>virtual machine</category><category>VM</category><category>Xen</category>    
    <description>&lt;p&gt;&lt;q&gt;Qubes is an open source operating system designed to provide strong security for desktop computing. Qubes is based on Xen, X Window System, and Linux, and can run most Linux applications and utilize most of the Linux drivers. In the future it might also run Windows apps.&lt;/q&gt;&lt;/p&gt;    &lt;p&gt;&lt;q&gt;You must have heard about it before: formally verified microkernels that offer 100% security... Why don't we use such a microkernel in Qubes then?  (The difference between a micro-kernel and a type I hypervisor is blurry. Especially in case of a type I hypervisor used for running para-virtualized VMs, such as Xen used in Qubes. So I would call Xen a micro-kernel in this case, although it can also run fully-virtualized VMs, in which case it should be called a hypervisor I think.)&lt;/q&gt;
&lt;a href=&quot;http://theinvisiblethings.blogspot.com/2010/05/on-formally-verified-microkernels-and.html&quot; hreflang=&quot;en&quot;&gt;Formally verified microkernel, by Joanna Rutkowska&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Joanna Rutkowska who is the founder and CEO of Invisible Things Lab (see complete profile)&lt;/p&gt;


&lt;p&gt;This article follows the launch of a new open source operating system,&lt;a href=&quot;http://qubes-os.org/Home.html&quot; hreflang=&quot;en&quot;&gt;Qubes&lt;/a&gt; , &lt;q&gt;designed to provide strong security for desktop computing&lt;/q&gt;. Based on Xen, Linux and the X Window System.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.grounation.org/public/Security/Qubes/QubesArch.png&quot;&gt;&lt;img src=&quot;http://www.grounation.org/public/Security/Qubes/.QubesArch_m.jpg&quot; alt=&quot;Qubes Architecture&quot; style=&quot;float:left; margin: 0 1em 1em 0;&quot; title=&quot;Qubes Architecture, May 2010&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;The system is based on the Xen architecture which allows a strong isolation of virtual machines. The end-user can own multiple virtual machines to run its applications. These virtual machines are lightweight VMs based on Linux. The system is administrated from the Dom0 virtual machine which is by definition a privileged virtual machine, but without network access to prevent remote attacks. And finally, the system uses the &lt;em&gt;VT&lt;/em&gt; technology to run in unprivileged virtual machines the network and storage hardware support.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.grounation.org/public/Security/Qubes/QubesSwitch.png&quot;&gt;&lt;img src=&quot;http://www.grounation.org/public/Security/Qubes/.QubesSwitch_m.jpg&quot; alt=&quot;Qubes switch screenshot&quot; title=&quot;Qubes switch screenshot, May 2010&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;A specific interface allows the user to switch between these virtual machines.&lt;/p&gt;


&lt;p&gt;The full Qubes architecture is described in this document &lt;a href=&quot;http://www.grounation.org/public/Security/Qubes/arch-spec-0.3.pdf&quot;&gt;Qubes OS Architecture&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;This looks like an existing secure Operating system &lt;a href=&quot;http://www.polyxene.fr&quot; hreflang=&quot;fr&quot;&gt;PolyXene&lt;/a&gt;, with EAL5 common criteria evaluation and formally verified code, realized by the &lt;a href=&quot;http://www.bertin.fr&quot; hreflang=&quot;fr&quot;&gt;Bertin Technologies&lt;/a&gt; company.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.grounation.org/public/Security/PolyXene/CertificatPolyXene.png&quot;&gt;&lt;img src=&quot;http://www.grounation.org/public/Security/PolyXene/.CertificatPolyXene_s.jpg&quot; alt=&quot;Certificat PolyXene&quot; title=&quot;Certificat PolyXene, May 2010&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Supergeek pulls off 'near impossible' crypto chip hack</title>
    <link>http://www.grounation.org/index.php?post/2010/02/10/Supergeek-pulls-off-near-impossible-crypto-chip-hack</link>
    <guid isPermaLink="false">urn:md5:e3e3dc477e8d61337cbf161f0943a580</guid>
    <pubDate>Wed, 10 Feb 2010 08:01:00 +0000</pubDate>
    <dc:creator>admin admin</dc:creator>
        <category>Security</category>
            
    <description>&lt;p&gt;Tarnovsky figured out a way to break chips that carry a &quot;Trusted Platform Module,&quot; or TPM, designation by essentially spying on them like a phone conversation.
...
Using off-the-shelf chemicals, Tarnovsky soaked chips in acid to dissolve their hard outer shells. Then he applied rust remover to help take off layers of mesh wiring, to expose the chips' cores. From there, he had to find the right communication channels to tap into using a very small needle.
...&lt;/p&gt;    &lt;p&gt;&lt;a href=&quot;http://www.nzherald.co.nz/technology/news/article.cfm?c_id=5&amp;amp;objectid=10625082&amp;amp;pnum=0&quot; hreflang=&quot;en&quot;&gt;Complete article&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>OpenBSD encrypted partition</title>
    <link>http://www.grounation.org/index.php?post/2010/01/25/OpenBSD-encrypted-partition</link>
    <guid isPermaLink="false">urn:md5:ac47c9e76720aa72713ffa34bda560b0</guid>
    <pubDate>Mon, 25 Jan 2010 09:24:00 +0000</pubDate>
    <dc:creator>admin admin</dc:creator>
        <category>Security</category>
        <category>encrypted disk</category><category>encrypted partition</category><category>OpenBSD</category>    
    <description>&lt;p&gt;In this article you will find all the information to get an encrypted disk or partition (for example /home) on you OpenBSD system.&lt;/p&gt;    &lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://geektechnique.org/projectlab/84/openbsd-encrypted-fileserver-howto&quot; hreflang=&quot;en&quot;&gt;OpenBSD encrypted fileserver HOWTO&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blackant.net/other/docs/howto-encrypted-home.php&quot; hreflang=&quot;en&quot;&gt;How to Implement a Quick Encrypted /home Partition&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I suggest you to take a look at the previous links which give detailed information.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Applied Cryptography</title>
    <link>http://www.grounation.org/index.php?post/2009/06/25/Applied-Cryptography</link>
    <guid isPermaLink="false">urn:md5:d65226806105cbf69095f56eee4cbc6e</guid>
    <pubDate>Fri, 31 Jul 2009 09:54:00 +0200</pubDate>
    <dc:creator>webmaster</dc:creator>
        <category>Cryptography</category>
        <category>AES</category><category>computational complexity</category><category>cryptography</category><category>discrete logarithm</category><category>elliptic curve</category><category>Encryption keys</category><category>number theory</category><category>RNG</category><category>Security</category>    
    <description>&lt;p&gt;Resources to understand the basic concepts and implementations of the cryptography.&lt;/p&gt;    &lt;p&gt;Now days, cryptography takes a growing part in the security of information technology. Modern cryptography intersects the disciplines of mathematics, computer science, and engineering.&lt;/p&gt;


&lt;p&gt;Cryptography is very useful to achieve the actual requirements in computer security but it is only a way to achieve security ! Usage of cryptographic concepts will not necessary make a system secure. The developer or architect must keep in mind what must be protected and understand well all the concepts to choose the right mechanisms.&lt;/p&gt;


&lt;p&gt;This article will first intend to collect resources about cryptographic concepts (theory and implementation) and in a second part will present state of the art to achieve security (integrity, confidentiality and authenticity).&lt;/p&gt;


&lt;p&gt;Cryptography concepts can be divided in different categories of algorithms :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Symmetric-key cryptography&lt;/strong&gt;, often refers to encryption mechanisms  and modes (block or stream ciphers). Symmetric-key cryptography uses a unique secret key.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Public-key cryptography&lt;/strong&gt;, based on mathematical concepts which are based on the computational complexity. Common mathematical concepts are from the number theory (integer factorization problem, or discrete logarithm problem) and more recently elliptic curve cryptography. Public-key cryptography uses a public, which may be freely distributed, and a private key which must be secret.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;We can distinguish many other mechanisms in cryptography which can be based on these  concepts :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pseudorandom Bits and Sequences&lt;/li&gt;
&lt;li&gt;Stream Ciphers&lt;/li&gt;
&lt;li&gt;Block Ciphers&lt;/li&gt;
&lt;li&gt;Public-Key Encryption&lt;/li&gt;
&lt;li&gt;Hash/Digest Functions and Data Integrity&lt;/li&gt;
&lt;li&gt;Identification and Authentication&lt;/li&gt;
&lt;li&gt;Digital Signatures&lt;/li&gt;
&lt;li&gt;Key Establishment Protocols&lt;/li&gt;
&lt;li&gt;Key Management and infrastructures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;



&lt;h2&gt;Basic concepts and implementations&lt;/h2&gt;


&lt;h3&gt;Number-Theoretic Reference&lt;/h3&gt;


&lt;p&gt;Number-Theoretic reference often refers to arbitrary-precision arithmetic. It is a concept which allow to perform computation on big numbers whose digit precision oversteps fondamental architecture digit precision. The only limitations are the available memory and time computation.&lt;/p&gt;


&lt;p&gt;For example, while a number is generaly represented on 32 or 64 bits, arbitrary-precision arithmetic will allow 2048 or 4096 bits representation, as used with &lt;a href=&quot;http://en.wikipedia.org/wiki/RSA&quot; hreflang=&quot;en&quot;&gt;RSA&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Good references are :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Handbook of Applied Cryptography by &lt;em&gt;Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone&lt;/em&gt; (Chapter 3 in attachments).&lt;/li&gt;
&lt;li&gt;The Art of Computer Programming (TAOCP) by &lt;em&gt;Donald E. Knuth&lt;/em&gt; (Volume 2).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Public-Key cryptography&lt;/h3&gt;


&lt;p&gt;&lt;em&gt;Coming soon.&lt;/em&gt;&lt;/p&gt;


&lt;h3&gt;Symmetric-Key cryptography&lt;/h3&gt;


&lt;p&gt;&lt;em&gt;Coming soon.&lt;/em&gt;&lt;/p&gt;


&lt;h3&gt;Pseudorandom functions&lt;/h3&gt;


&lt;p&gt;&lt;em&gt;Coming soon.&lt;/em&gt;&lt;/p&gt;


&lt;h3&gt;Block Ciphers and modes&lt;/h3&gt;


&lt;p&gt;&lt;em&gt;Coming soon.&lt;/em&gt;&lt;/p&gt;


&lt;h3&gt;Digest Functions&lt;/h3&gt;


&lt;p&gt;&lt;em&gt;Coming soon.&lt;/em&gt;&lt;/p&gt;</description>
    
          <enclosure url="http://www.grounation.org/index.php?download/25"
      length="397013" type="application/pdf" />
    
    
      </item>
    
  <item>
    <title>Import PKCS#12 certificate in Opera</title>
    <link>http://www.grounation.org/index.php?post/2009/06/25/Import-PKCS11-certificate-in-Opera</link>
    <guid isPermaLink="false">urn:md5:231730e7dd5ed73276774ea81622f37c</guid>
    <pubDate>Thu, 25 Jun 2009 14:56:00 +0200</pubDate>
    <dc:creator>webmaster</dc:creator>
        <category>Security</category>
        <category>certificate</category><category>Firefox</category><category>Internet Explorer</category><category>openssl</category><category>Opera</category><category>Opera 10</category><category>Opera 9.5</category><category>p12</category><category>PEM</category><category>PKCS12</category><category>RC2-40</category>    
    <description>&lt;p&gt;How to import a PKCS#12 certificate (including private key) with&lt;em&gt; Opera 9.5&lt;/em&gt; and beta &lt;em&gt;10&lt;/em&gt;.&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Opera 9.5&lt;/em&gt; and &lt;em&gt;10&lt;/em&gt; (beta) have a strange behavior with &lt;em&gt;PKCS#12&lt;/em&gt; certificates. Indeed, many users have been blocked when importing their certificates from &lt;em&gt;Internet Explorer&lt;/em&gt; or &lt;em&gt;Firefox&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;I have not found any documentation from the &lt;em&gt;Opera&lt;/em&gt; team and any help over the Internet so I decided to post my method.&lt;/p&gt;


&lt;p&gt;First, in your current browser export your certificate as a &lt;em&gt;PKCS#12&lt;/em&gt; certificate. Suppose you have your &lt;em&gt;PKCS#12&lt;/em&gt; certificate which includes a private key.&lt;/p&gt;


&lt;p&gt;If i try to import it with opera I have the following error :&lt;/p&gt;
&lt;pre&gt;
The key of the certificate was encrypted using an unsupported method, possibly one that is not considered strong enough.
&lt;/pre&gt;


&lt;p&gt;Let's see what &lt;em&gt;openssl&lt;/em&gt; says about our certificate :&lt;/p&gt;
&lt;pre&gt;
$ openssl pkcs12 -in certificate.p12 -info
Enter Import Password:
MAC Iteration 1
MAC verified OK
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 1
Bag Attributes
    friendlyName: Certificat import
    localKeyID: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx 
Key Attributes: &amp;lt;No Attributes&amp;gt;
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,XXXXXXXXXXXXXXXX

...
-----END RSA PRIVATE KEY-----
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 1
Certificate bag
Bag Attributes
    friendlyName: Certificat import
    localKeyID: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx 
subject=/O=xxxx/OU=xxxx/CN=xxxx
issuer=/O=xxxx/OU=xxxx
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
&lt;/pre&gt;



&lt;p&gt;Then the certificate export as a &lt;em&gt;PEM&lt;/em&gt; file :&lt;/p&gt;
&lt;pre&gt;
$ openssl pkcs12 -in certificate.p12 -nokeys -out cert.pem
Enter Import Password:
MAC verified OK
&lt;/pre&gt;


&lt;p&gt;Then the private key export as a &lt;em&gt;PEM&lt;/em&gt; file :&lt;/p&gt;
&lt;pre&gt;
openssl pkcs12 -in certificate.p12 -nocerts -out key.pem 
Enter Import Password:
MAC verified OK
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
&lt;/pre&gt;


&lt;p&gt;Now we have the certificate and the private key as &lt;em&gt;PEM&lt;/em&gt; files :&lt;/p&gt;
&lt;pre&gt;
$ ls
certificate.p12  cert.pem  key.pem
&lt;/pre&gt;


&lt;p&gt;The last step, create a valid&lt;em&gt; PKCS#12 Opera&lt;/em&gt; certificate :&lt;/p&gt;
&lt;pre&gt;
$ openssl pkcs12 -export -in cert.pem -inkey key.pem -descert -out new-certificate.p12
Enter pass phrase for key.pem:
Enter Export Password:
Verifying - Enter Export Password:
&lt;/pre&gt;


&lt;p&gt;What are the differences with the initial &lt;em&gt;PKCS#12&lt;/em&gt; certificate ?
Initial :&lt;/p&gt;
&lt;pre&gt;
MAC Iteration 1
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 1
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 1
&lt;/pre&gt;

&lt;p&gt;Final :&lt;/p&gt;
&lt;pre&gt;
MAC Iteration 2048
PKCS7 Encrypted data: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048
&lt;/pre&gt;


&lt;p&gt;Opera requires a high level of security, &lt;em&gt;PKCS#12&lt;/em&gt; certificates must be conform with &lt;em&gt;RC2-40&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;You will now be able to import the certificate !!&lt;/strong&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Mount OpenBSD NFS export from GNU/Linux</title>
    <link>http://www.grounation.org/index.php?post/2009/03/12/Mount-OpenBSD-NFS-export-from-GNU/Linux</link>
    <guid isPermaLink="false">urn:md5:0d173f0ff5fcc6dcfc2e17a0d9bd67b5</guid>
    <pubDate>Thu, 12 Mar 2009 11:48:00 +0100</pubDate>
    <dc:creator>webmaster</dc:creator>
        <category>System</category>
        <category>Debian</category><category>Linux</category><category>mount system call failed</category><category>NFS</category><category>OpenBSD</category><category>UDP</category>    
    <description>&lt;p&gt;Mouting an OpenBSD NFS export from a GNU/Linux client fails with &lt;em&gt;mount.nfs: mount system call failed&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;I decided to write this small tip because I have been confronted to this problem recently and browsing forums over the net didn't help me.&lt;/p&gt;


&lt;p&gt;So, suppose you have an OpenBSD (4.4) server with the following (very simple) NFS exports :&lt;/p&gt;

&lt;pre&gt; # NFS exports Database
 # See exports(5) for more information.  Be very careful:  misconfiguration
 # of this file can result in your filesystems being readable by the world.
 /mnt/exp1 192.168.0.2 
 /mnt/exp2 192.168.0.2&lt;/pre&gt;


&lt;p&gt;&lt;em&gt;Portmap&lt;/em&gt;, &lt;em&gt;mountd&lt;/em&gt; and &lt;em&gt;nfs&lt;/em&gt; are running, You can update your exported directories with the following command :&lt;/p&gt;

&lt;pre&gt; $ sudo pkill -HUP mountd&lt;/pre&gt;


&lt;p&gt;To check your exported mount points, on your server or client :&lt;/p&gt;

&lt;pre&gt; $ sudo showmount -e server_ip
 Exports list on server_ip:
 /mnt/exp1                           192.168.0.2
 /mnt/exp2                           192.168.0.2&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;Fine, now the main purpose of this tip is how to mount these exports from a GNU/Linux system&lt;/strong&gt;, and in my case a Debian SID system ?&lt;/p&gt;


&lt;p&gt;When trying to mount one of the exports from a GNU/Linux client I get :&lt;/p&gt;

&lt;pre&gt; $ sudo mount server_ip:/mnt/exp1 /tmp/test
 (command do not respond during seconds ....)
 mount.nfs: mount system call failed
 $&lt;/pre&gt;


&lt;p&gt;After analyzing OpenBSD and GNU/Linux man pages, testing many options I finaly use &lt;em&gt;tcpdump&lt;/em&gt; to check the communication between the client and the server.
Unlike OpenBSD, GNU/Linux is not configure by default to use secure ports (&amp;lt;1024), but this was not the problem because &lt;em&gt;tcpdump&lt;/em&gt; shew that &lt;em&gt;portmap&lt;/em&gt; bound the rigth port for &lt;em&gt;mountd&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;The solution is simple, OpenBSD uses &lt;em&gt;udp&lt;/em&gt; by default for NFS, so you must specify the &lt;em&gt;udp&lt;/em&gt; protocol while mounting the export from a GNU/Linux client.&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;You must use the following command :&lt;/p&gt;

&lt;pre&gt; $ sudo mount -o proto=udp server_ip:/mnt/exp1 /tmp/test&lt;/pre&gt;


&lt;p&gt;Or in you &lt;em&gt;/etc/fstab&lt;/em&gt; file add this line :&lt;/p&gt;

&lt;pre&gt; server_ip:/mnt/exp1    /mnt/local_exp1      nfs     proto=udp,other_options            0     0&lt;/pre&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Blog update to Dotclear v2</title>
    <link>http://www.grounation.org/index.php?post/2009/01/30/Blog-update</link>
    <guid isPermaLink="false">urn:md5:a44f2e5cce53a25f14bcc8ccbc0505b6</guid>
    <pubDate>Fri, 30 Jan 2009 00:28:00 +0100</pubDate>
    <dc:creator>webmaster</dc:creator>
        <category>General</category>
            
    <description>    &lt;p&gt;Hi all,&lt;/p&gt;


&lt;p&gt;i am currently updating the site to &lt;em&gt;Dotclear v2&lt;/em&gt;. &lt;br /&gt;
It will probably happen some malfunctioning, so I apology in advance.&lt;br /&gt;
I expect you will enjoy the new site and the new theme. &lt;br /&gt;
&lt;br /&gt;
Any comments are welcome !!&lt;br /&gt;
&lt;br /&gt;
Thanks.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Virtualizing the Trusted Platform Module</title>
    <link>http://www.grounation.org/index.php?post/2008/09/07/10-virtualizing-the-trusted-platform-module</link>
    <guid isPermaLink="false">urn:md5:a4fb810b11c80e6224016c42a0e8db44</guid>
    <pubDate>Sun, 07 Sep 2008 17:42:00 +0000</pubDate>
    <dc:creator>webmaster</dc:creator>
        <category>Security</category>
        <category>Linux</category><category>TPM</category><category>TPM virtualization</category><category>vTPM</category><category>Xen</category>    
    <description>&lt;p&gt;Based on the IBM Research Report on vTPM, this article intends to detail the concepts of a TPM emulation on virtualized context.&lt;/p&gt;    &lt;h3&gt;Introduction&lt;/h3&gt;


&lt;p&gt;The goal of this article is to present the IBM Research Report about the &lt;q&gt;vTPM: Virtualizing the Trusted Platform Module&lt;/q&gt; (see &lt;em&gt;Attachments&lt;/em&gt;).&lt;/p&gt;


&lt;p&gt;The main goal is to mix two important technologies : &lt;strong&gt;Virtualization&lt;/strong&gt; and &lt;strong&gt;Trusted Computing&lt;/strong&gt; or specifically the &lt;strong&gt;Trusted Platform Module&lt;/strong&gt;.&lt;/p&gt;


&lt;p&gt;These two technologies can ensure complementary requirements :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Virtualization&lt;/em&gt; for the high availability, the integrity and the isolation of each virtual machine.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;TPM&lt;/em&gt; for the security, the chain of trust and the remote attestation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Virtualizing the &lt;em&gt;TPM&lt;/em&gt; is required to provide &lt;em&gt;TCG&lt;/em&gt; services in the virtual machines. The virtualization base system should handle the &lt;em&gt;TPM&lt;/em&gt; device for its usage and export to each virtual machine a &lt;em&gt;TPM&lt;/em&gt; emulated device to extend the chain of trust. So each virtual machine will be able to use the cryptographic resources, store secret objects realize remote attestations ...&lt;/p&gt;


&lt;p&gt;The first requirement is then to ensure the same level security provided by the hardware &lt;em&gt;TPM&lt;/em&gt; for the virtualized &lt;em&gt;TPMs&lt;/em&gt;. Moreover, new requirements are introduced due to the specificities of a virtualized architecture.&lt;/p&gt;


&lt;p&gt;The TPM virtualization architecture will propose answers to the following technical requirements :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How to implement a full chain of trust, from the hardware root of trust to the virtual machines through the hypervisor ?&lt;/li&gt;
&lt;li&gt;How to implement a full featured &lt;em&gt;TPM&lt;/em&gt; device in the virtual machines ?&lt;/li&gt;
&lt;li&gt;How to migrate a virtual host, including its &lt;em&gt;TPM&lt;/em&gt; associated data ?&lt;/li&gt;
&lt;li&gt;How to support remote attestation including the full virtualized system and environment ?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Architecture&lt;/h3&gt;


&lt;p&gt;&lt;img src=&quot;http://www.grounation.org/images/vTPM_architecture.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;The &lt;em&gt;vTPM&lt;/em&gt; implementation is composed of :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a &lt;em&gt;vTPM&lt;/em&gt; manager which manages the hardware &lt;em&gt;TPM&lt;/em&gt; and provide services to manages multiple &lt;em&gt;TPM&lt;/em&gt; emulated devices,&lt;/li&gt;
&lt;li&gt;a vTPM instance for each virtualized host, which implements the full TCG TPM 1.2 specification,&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The architecture is based on a client/server model. Each virtualized host communicates through a client &lt;em&gt;TPM&lt;/em&gt; driver. The server &lt;em&gt;TPM&lt;/em&gt; driver runs in the virtual host where is implemented the &lt;em&gt;vTPM&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Associating vTPM instances with their VM&lt;/strong&gt; :&lt;/p&gt;


&lt;p&gt;Association between a &lt;em&gt;vTPM&lt;/em&gt; and a &lt;em&gt;VM&lt;/em&gt; is a one to one association. This association is maintained during the lifetime of the &lt;em&gt;VM&lt;/em&gt;. This is &lt;strong&gt;a security requirement&lt;/strong&gt; because &lt;em&gt;vTPM&lt;/em&gt; manages secret objects owned by the &lt;em&gt;VM&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Hardware Secure Co-processor support&lt;/strong&gt; :&lt;/p&gt;


&lt;p&gt;The architecture must also support a &lt;em&gt;vTPM&lt;/em&gt; subsystem embedded in a hardware secure co-processor (see next figure). The first &lt;em&gt;VM&lt;/em&gt; is the owner of the hardware and uses a &lt;em&gt;vTPM&lt;/em&gt; instance for its own purpose. A proxy is implemented in the first &lt;em&gt;VM&lt;/em&gt; to forward all &lt;em&gt;VM&lt;/em&gt; commands to the hardware card.&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://www.grounation.org/images/vTPM_ExtSecureCoprocessor.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Root vTPM instance&lt;/strong&gt; :&lt;/p&gt;


&lt;p&gt;First, two requirements are exposed :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;API&lt;/em&gt; used by the application must keep the same for a software or a hardware implementation. In all cases the common point is to use a dedicated &lt;em&gt;VM&lt;/em&gt; to provide the virtual &lt;em&gt;TPM&lt;/em&gt; functionalities.&lt;/li&gt;
&lt;li&gt;Modern virtualization systems provide migration capabilities. For example export a &lt;em&gt;VM&lt;/em&gt; from a host to another one. In the context of a &lt;em&gt;vTPM&lt;/em&gt; instance it should be interesting to keep association between the &lt;em&gt;VM&lt;/em&gt; and its &lt;em&gt;vTPM&lt;/em&gt; during the process of migration. But it is important to guarantee the authenticity and the confidentiality of the data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, the architecture of the virtual &lt;em&gt;TPM&lt;/em&gt; will be designed as follows. A virtual &lt;em&gt;TPM&lt;/em&gt; is a &lt;em&gt;TPM&lt;/em&gt; capable of generating new &lt;em&gt;vTPM&lt;/em&gt; childs. This means that a system must always provide a &lt;strong&gt;Root vTPM&lt;/strong&gt; instance with cryptographic functions to generate keys, encrypt data, migrate keys between instances ... This &lt;strong&gt;Root instance&lt;/strong&gt; will provide the mechanisms to store and encrypt the state of a &lt;em&gt;vTPM&lt;/em&gt; for a migration process.&lt;/p&gt;


&lt;p&gt;These functionalities are only available from the root instance and especially to the owner of the root instance. All extented commands require the owner authorization (owner's password). Furthermore, the concept if privileged instance has been introduced. A privileged instance is capable to spawn and manage new child instances. This privilege is inherited and can be passed to a child instance. This mechanism offers advanced features to create a complexe hierarchy of &lt;em&gt;vTPM&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Independent key hierarchy&lt;/strong&gt; :&lt;/p&gt;


&lt;p&gt;Each &lt;em&gt;vTPM&lt;/em&gt; has a &lt;em&gt;Storage Root Key&lt;/em&gt; (&lt;em&gt;SRK&lt;/em&gt;) as root for its key hierarchy and an &lt;em&gt;Endorsment Key&lt;/em&gt; (&lt;em&gt;EK&lt;/em&gt;). To allow instance and &lt;em&gt;vTPM&lt;/em&gt; migration, these keys are unlinked from the key hierarchy of a &lt;em&gt;TPM&lt;/em&gt; hardware component. This also allows faster key management and cryptographic operations.&lt;/p&gt;


&lt;p&gt;However, if the &lt;em&gt;SRK&lt;/em&gt;, &lt;em&gt;EK&lt;/em&gt; and other data of virtual &lt;em&gt;TPM&lt;/em&gt; are stored in a persistend storage, they must be stored encrypted with a key stored in the hardware &lt;em&gt;TPM&lt;/em&gt; device. This symmetric key must be sealed or protected with a password.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Extended command set&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;The &lt;em&gt;vTPM&lt;/em&gt; specifications add a set of commands to the TPM 1.2 specifications.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;vTPM management commands to manage the life-cycle of a vTPM : &lt;em&gt;CreateInstance&lt;/em&gt;, &lt;em&gt;DeleteInstance&lt;/em&gt;, &lt;em&gt;SetupInstance&lt;/em&gt;. &lt;em&gt;SetupInstance&lt;/em&gt; is used to setup a &lt;em&gt;vTPM&lt;/em&gt; and prepare it with the right &lt;em&gt;PCR&lt;/em&gt; values.&lt;/li&gt;
&lt;li&gt;vTPM migration commands : &lt;em&gt;GetInstanceKey&lt;/em&gt;, &lt;em&gt;SetInstanceKey&lt;/em&gt;, &lt;em&gt;GetInstanceData&lt;/em&gt;, &lt;em&gt;SetInstanceData&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;vTPM utility commands : &lt;em&gt;TransportInstance&lt;/em&gt;, &lt;em&gt;LockInstance&lt;/em&gt;, &lt;em&gt;UnlockInstance&lt;/em&gt;, &lt;em&gt;ReportEnvironment&lt;/em&gt;. &lt;em&gt;TransportInstance&lt;/em&gt; is a specific command to create a communication tunnel between an instance and one of its child instances.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;vTPM migration&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;The &lt;em&gt;vTPM&lt;/em&gt; migration capability is provided by a secure protocol which ensure authenticity and confidentiality. Symmetric and assymetric keys are used to encrypt the &lt;em&gt;vTPM&lt;/em&gt; state on the source virtual &lt;em&gt;TPM&lt;/em&gt; and decrypt it on the destination virtual &lt;em&gt;TPM&lt;/em&gt;. The migration process is based on the following protocol :&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://www.grounation.org/images/vTPM_migrationProtocol.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Linking a vTPM to its TCB&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Trust in the Virtual Machine is not necessary because it runs in a virtualizion system, controlled by an hypervisor. Then the trust in the &lt;em&gt;VM&lt;/em&gt; is interesting only if the trust in the environment (&lt;em&gt;TCB&lt;/em&gt;, &lt;em&gt;hypervisor&lt;/em&gt;...) is guarantee.
For this reason the chain of trust must be guaranteed from the hardware &lt;em&gt;TPM&lt;/em&gt; to the &lt;em&gt;vTPM&lt;/em&gt;, from the &lt;em&gt;TCB&lt;/em&gt; to the &lt;em&gt;VMs&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;So, the architecture proposed provides in the &lt;em&gt;vTPM&lt;/em&gt; &lt;em&gt;PCRs&lt;/em&gt; a merged version of the measures. A lower set of &lt;em&gt;PCRs&lt;/em&gt; in the &lt;em&gt;vTPM&lt;/em&gt; shows measures from the hardware &lt;em&gt;TPM&lt;/em&gt; and the upper the measures for the &lt;em&gt;VM&lt;/em&gt;. By this way, a challenger can see all relevant measures during a remote attestation. The next figure shows an example of this mechanism.&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://www.grounation.org/images/vTPM_PCRUsage.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Implementation for Xen&lt;/h3&gt;


&lt;pre&gt; To be continued ... (see &lt;em&gt;Attachments&lt;/em&gt; for details)&lt;/pre&gt;



&lt;h3&gt;Bibliography&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.grounation.org/index.php?media/Security/TPM_documentation&quot; hreflang=&quot;en&quot;&gt;Grounation TPM documentation repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.trustedcomputinggroup.org/downloads/specifications/tpm/tpm&quot; hreflang=&quot;en&quot;&gt;Trusted Computing Group&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://trousers.sourceforge.net/&quot; hreflang=&quot;en&quot;&gt;TrouSerS&lt;/a&gt; and &lt;a href=&quot;http://sf.net/projects/trousers&quot; title=&quot;http://sf.net/projects/trousers&quot;&gt;http://sf.net/projects/trousers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://sf.net/projects/tpmdd&quot; hreflang=&quot;en&quot;&gt;TPM Device Drivers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    
          <enclosure url="http://www.grounation.org/index.php?download/14"
      length="234236" type="application/pdf" />
          <enclosure url="http://www.grounation.org/index.php?download/22"
      length="535542" type="application/pdf" />
          <enclosure url="http://www.grounation.org/index.php?download/23"
      length="550784" type="application/pdf" />
    
    
      </item>
    
  <item>
    <title>Linux Broadcom TIS TPM</title>
    <link>http://www.grounation.org/index.php?post/2008/07/05/9-broadcom-tpm-with-dell-latitude-d630</link>
    <guid isPermaLink="false">urn:md5:6dbc1e5661bbdfbbe48bd0cbd9b06431</guid>
    <pubDate>Sat, 05 Jul 2008 13:01:00 +0000</pubDate>
    <dc:creator>webmaster</dc:creator>
        <category>Security</category>
        <category>Broadcom</category><category>Linux</category><category>TIS</category><category>TPM</category>    
    <description>&lt;p&gt;This article gives additional informations to use the Broadcom TPM BCM0102 with the TIS driver. This TPM is included in my DELL Latitude D630 laptop.&lt;/p&gt;    &lt;p&gt;The Linux kernel provides a default driver to user &lt;em&gt;TPMs&lt;/em&gt; which are strictly conform with the standard.
It is the &lt;em&gt;tpm_tis&lt;/em&gt; module driver, but it actually does not contain all component references (&lt;em&gt;HID&lt;/em&gt;).&lt;/p&gt;


&lt;p&gt;So the following patch adds Broadcom TPM TIS device HID : BCM0102.&lt;/p&gt;


&lt;p&gt;(See this post for more information &lt;a href=&quot;https://www.grounation.org/index.php?post/2008/07/04/8-how-to-use-a-tpm-with-linux&quot; hreflang=&quot;en&quot;&gt;How to use a TPM with Linux&lt;/a&gt;).&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>How to use a TPM with Linux</title>
    <link>http://www.grounation.org/index.php?post/2008/07/04/8-how-to-use-a-tpm-with-linux</link>
    <guid isPermaLink="false">urn:md5:e05c8dee9e6eb96e7ac778e2caf6d801</guid>
    <pubDate>Fri, 04 Jul 2008 11:29:00 +0000</pubDate>
    <dc:creator>webmaster</dc:creator>
        <category>Security</category>
        <category>Linux</category><category>TIS</category><category>TPM</category><category>Trousers</category><category>TSS</category>    
    <description>&lt;p&gt;The goal of the article is to offer a simple tutorial to use your onboard TPM to secure your system.
The TPM can offer security for a trusted boot and create a chain of trust for over applications.&lt;/p&gt;    &lt;h3&gt;The Hardware&lt;/h3&gt;


&lt;p&gt;There are already many versions of &lt;em&gt;TPM&lt;/em&gt; standard. The first versions were not all compatible (from &lt;em&gt;Atmel&lt;/em&gt;, &lt;em&gt;STM&lt;/em&gt;, &lt;em&gt;Infineon&lt;/em&gt;...), therefore since the &lt;em&gt;1.2&lt;/em&gt; version of the standard it seems we have a consensus.&lt;/p&gt;


&lt;p&gt;So, we will see the procedure to use a &lt;em&gt;1.2 TPM&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;I have for example a &lt;em&gt;DELL Optiplex 755&lt;/em&gt; which provides a &lt;em&gt;ST Microelectronics&lt;/em&gt; &lt;em&gt;TPM&lt;/em&gt; conform with version &lt;em&gt;1.2&lt;/em&gt;. This conformance is important since the Linux kernel does not provide a specific implementation for all chips.&lt;/p&gt;


&lt;p&gt;You can see what &lt;em&gt;TPMs&lt;/em&gt; are supported with your kernel version with the following command :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ ls -la /lib/modules/`uname -r`/kernel/drivers/char/tpm&lt;/code&gt;
 &lt;code&gt;drwxr-xr-x 2 root root  4096 2008-06-24 10:33 .&lt;/code&gt;
 &lt;code&gt;drwxr-xr-x 9 root root  4096 2008-06-24 10:33 ..&lt;/code&gt;
 &lt;code&gt;-rw-r&lt;del&gt;r&lt;/del&gt; 1 root root  9012 2008-06-18 20:13 tpm_atmel.ko&lt;/code&gt;
 &lt;code&gt;-rw-r&lt;del&gt;r&lt;/del&gt; 1 root root 10960 2008-06-18 20:13 tpm_bios.ko&lt;/code&gt;
 &lt;code&gt;-rw-r&lt;del&gt;r&lt;/del&gt; 1 root root 13440 2008-06-18 20:13 tpm_infineon.ko&lt;/code&gt;
 &lt;code&gt;-rw-r&lt;del&gt;r&lt;/del&gt; 1 root root 20392 2008-06-18 20:13 tpm.ko&lt;/code&gt;
 &lt;code&gt;-rw-r&lt;del&gt;r&lt;/del&gt; 1 root root 10712 2008-06-18 20:13 tpm_nsc.ko&lt;/code&gt;
 &lt;code&gt;-rw-r&lt;del&gt;r&lt;/del&gt; 1 root root 17432 2008-06-18 20:13 tpm_tis.ko&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;The &lt;em&gt;tpm_tis&lt;/em&gt; module is the generic one to use fully &lt;em&gt;1.2&lt;/em&gt; compatible &lt;em&gt;TPMs&lt;/em&gt;. We will use this one.&lt;/p&gt;



&lt;h3&gt;The BIOS&lt;/h3&gt;


&lt;p&gt;Before doing anything, you must enable the TPM in the BIOS of your motherboard.
If you need to reset the TPM BIOS, this usually requires a full power off and back on of the computer.&lt;/p&gt;


&lt;h3&gt;Linux kernel&lt;/h3&gt;


&lt;p&gt;We use two generic modules &lt;em&gt;tpm_bios&lt;/em&gt; and &lt;em&gt;tpm&lt;/em&gt; and the specific one &lt;em&gt;tpm_tis&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;First load the generic modules :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo modprobe tpm_bios&lt;/code&gt;
 &lt;code&gt;$ sudo modprobe tpm&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;And then the &lt;em&gt;tpm_tis&lt;/em&gt; module with specific parameters. In fact, we user the &lt;em&gt;force&lt;/em&gt; option to probe rather than using the ACPI entry and the &lt;em&gt;interrupts&lt;/em&gt; option to desactivate the &lt;em&gt;IRQ&lt;/em&gt;.&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo modprobe tpm_tis force=1 interrupts=0&lt;/code&gt;
 &lt;code&gt;$ dmesg&lt;/code&gt;
 &lt;code&gt;...&lt;/code&gt;
 &lt;code&gt;[xxx.yyy] tpm_tis tpm_tis: 1.2 TPM (device-id 0x4A10, rev-id 78)&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;If you have something like this, all works fine !&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;If your &lt;em&gt;TPM&lt;/em&gt; does not seem to be detected go to the last section &lt;q&gt;Kernel development corner&lt;/q&gt;.&lt;/p&gt;



&lt;h3&gt;TPM management tools&lt;/h3&gt;


&lt;p&gt;There are many softwares to manage your &lt;em&gt;TPM&lt;/em&gt;, the more efficients I think are &lt;a href=&quot;http://trousers.sourceforge.net/&quot; hreflang=&quot;en&quot;&gt;TrouSerS&lt;/a&gt; and &lt;a href=&quot;http://trustedjava.sourceforge.net/&quot; hreflang=&quot;en&quot;&gt;Trusted Computing for the Java(tm) Platform&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;In this tutorial, we will use &lt;strong&gt;TrouSerS&lt;/strong&gt; . It provides an open-source &lt;em&gt;TCG&lt;/em&gt; Software Stack and many &lt;em&gt;TPM&lt;/em&gt; tools.&lt;/p&gt;


&lt;p&gt;So, we will no see how to take ownership and initialize your &lt;em&gt;TPM&lt;/em&gt;. We will use the &lt;em&gt;TPM&lt;/em&gt; tools provided with &lt;strong&gt;TrouSerS&lt;/strong&gt;, you can refer to your local manpages of to &lt;a href=&quot;http://trousers.sourceforge.net/man.html&quot; hreflang=&quot;en&quot;&gt;this documentation&lt;/a&gt;.&lt;/p&gt;


&lt;h4&gt;Prepare the tools&lt;/h4&gt;


&lt;p&gt;Tools installation :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo aptitude install tpm-tools trousers&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;Trousers&lt;/strong&gt; is daemon which centralize all the communication with the TPM. All communication are base on Local or Remote Procedure Call (RPC). You can restrict its usage to local programs. First of all, check if it is running :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo /etc/init.d/tcsd start&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Check if the &lt;em&gt;TPM&lt;/em&gt; is accessible :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo tpm_version&lt;/code&gt;
 &lt;code&gt;    TPM Version:    01010000&lt;/code&gt;
 &lt;code&gt;    Manufacturer Info:    53544d20&lt;/code&gt;&lt;/pre&gt;


&lt;h4&gt;Initialize the TPM&lt;/h4&gt;


&lt;p&gt;So the first step is to take ownership. This operation will prompt for owner and SRK passwords which are very important and must not be lost.&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo tpm_takeownership&lt;/code&gt;
 &lt;code&gt;Enter owner password: xxxxxx&lt;/code&gt;
 &lt;code&gt;Confirm password: xxxxxx&lt;/code&gt;
 &lt;code&gt;Enter SRK password: yyyyyyyy&lt;/code&gt;
 &lt;code&gt;Confirm password: yyyyyyyy&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;Ownership can only be realized once&lt;/strong&gt;, any other attempt will fail.&lt;/p&gt;


&lt;p&gt;The operation may take awhile, the &lt;em&gt;TPM&lt;/em&gt; is generating an initializing some internal cryptographic values.
The owner password is for adminstration and other sensitive tasks. The &lt;em&gt;SRK&lt;/em&gt; is the &lt;em&gt;Storage Root Key&lt;/em&gt; which will be required whenever you load a key into the &lt;em&gt;TPM&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;If you have the following error :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;Tspi_TPM_GetPubEndorsementKey failed: 0x00000023 - layer=tpm, code=0023 (35), No EK&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;This is because your &lt;em&gt;TPM&lt;/em&gt; does not have an &lt;em&gt;Endorsement Key&lt;/em&gt;. Then, launch the following command which will take awhile :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo tpm_createek&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Now the &lt;em&gt;TPM&lt;/em&gt; has an owner, we can get the &lt;em&gt;Public Endorsement Key&lt;/em&gt;. The &lt;em&gt;Endorsement Key&lt;/em&gt; is typically a 2,048-bit RSA public and private key pair, which is created randomly on the chip at manufacture time and cannot be changed. The private key never leaves the chip, while the public key is used for attestation and for encryption of sensitive data sent to the chip.&lt;/p&gt;


&lt;p&gt;To get the public key, your owner password will be required :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$sudo tpm_getpubek&lt;/code&gt;
 &lt;code&gt;Tspi_TPM_GetPubEndorsementKey failed: 0x00000008 - layer=tpm, code=0008 (8), &lt;/code&gt;
 &lt;code&gt;                       The TPM target command has been disabled&lt;/code&gt;
 &lt;code&gt;Enter owner password: &lt;/code&gt;
 &lt;code&gt;Public Endorsement Key:&lt;/code&gt;
 &lt;code&gt;  Version:   01010000&lt;/code&gt;
 &lt;code&gt;  Usage:     0x0002 (Unknown)&lt;/code&gt;
 &lt;code&gt;  Flags:     0x00000000 (!VOLATILE, !MIGRATABLE, !REDIRECTION)&lt;/code&gt;
 &lt;code&gt;  AuthUsage: 0x00 (Never)&lt;/code&gt;
 &lt;code&gt;  Algorithm:         0x00000020 (Unknown)&lt;/code&gt;
 &lt;code&gt;  Encryption Scheme: 0x00000012 (Unknown)&lt;/code&gt;
 &lt;code&gt;  Signature Scheme:  0x00000010 (Unknown)&lt;/code&gt;
 &lt;code&gt;  Public Key:&lt;/code&gt;
 &lt;code&gt;	a71def6a f09b39cb e0e55779 b1e6dfe5 26ca2278 b6fce7cf f1c242c5 545694d8&lt;/code&gt;
 &lt;code&gt;	1a5804ad 5a3b1d5c c18c3d93 fda2e201 78a86e4e c93e4bb7 e1851eab ca98cbe5&lt;/code&gt;
 &lt;code&gt;	81c06522 1357777c e0e55779 1bac9e9c 8208f203 f1477705 0317fe2b db233d4d&lt;/code&gt;
 &lt;code&gt;	a71def6a f09b39cb e0e55779 b1e6dfe5 26ca2278 b6fce7cf f1c242c5 545694d8&lt;/code&gt;
 &lt;code&gt;       [...]&lt;/code&gt;&lt;/pre&gt;



&lt;h3&gt;TrustedGrub&lt;/h3&gt;


&lt;h4&gt;Introduction&lt;/h4&gt;


&lt;p&gt;TrustedGRUB is an extension of the standard GRUB bootloader. It has been modified to detect and support the &lt;em&gt;TPM&lt;/em&gt; functionalities.­ The main feature of TrustedGRUB is to measure arbitrary files during the boot process and extend the &lt;em&gt;Platform Configuration Registers&lt;/em&gt; (&lt;em&gt;PCR&lt;/em&gt;).&lt;/p&gt;


&lt;p&gt;&lt;em&gt;PCR&lt;/em&gt; are registers inside the &lt;em&gt;TPM&lt;/em&gt; memory which are updated at each boot.&lt;/p&gt;


&lt;p&gt;The &lt;em&gt;PCR&lt;/em&gt; are used as follow :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;PCR 0 to 3&lt;/em&gt; for the BIOS, ROMS...&lt;/li&gt;
&lt;li&gt;&lt;em&gt;PCR 4&lt;/em&gt; contains MBR information and stage1&lt;/li&gt;
&lt;li&gt;&lt;em&gt;PCR 8&lt;/em&gt; contains bootloader information stage2 part1&lt;/li&gt;
&lt;li&gt;&lt;em&gt;PCR 9&lt;/em&gt; contains bootloader information stage2 part2&lt;/li&gt;
&lt;li&gt;&lt;em&gt;PCR 12&lt;/em&gt; contains all commandline arguments from menu.lst and those entered in the shell&lt;/li&gt;
&lt;li&gt;&lt;em&gt;PCR 13&lt;/em&gt; contains all files checked via the checkfile-routine&lt;/li&gt;
&lt;li&gt;&lt;em&gt;PCR 14&lt;/em&gt; contains all files which are actually loaded (e.g., Linux kernel, initrd, modules...)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;PCR 15 to 23&lt;/em&gt; are not used&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can see your currents &lt;em&gt;PCR&lt;/em&gt; values with the following command :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo cat /sys/class/misc/tpm0/device/pcrs &lt;/code&gt;
 &lt;code&gt;PCR-00: 9C 22 FD 7F A5 88 83 75 13 74 CD DD 12 EA 7B 40 F6 AD F5 F7 &lt;/code&gt;
 &lt;code&gt;PCR-01: A8 9F B8 F8 8C AA 95 90 E6 12 9B 63 3B 14 4A 68 51 44 90 D5 &lt;/code&gt;
 &lt;code&gt;PCR-02: A8 9F B8 F8 8C AA 95 90 E6 12 9B 63 3B 14 4A 68 51 44 90 D5 &lt;/code&gt;
 &lt;code&gt;PCR-03: A8 9F B8 F8 8C AA 95 90 E6 12 9B 63 3B 14 4A 68 51 44 90 D5 &lt;/code&gt;
 &lt;code&gt;PCR-04: 44 85 2F BD 5D 44 F9 5B 5E D3 97 16 DF 8E 3C 6E BE 63 A1 20 &lt;/code&gt;
 &lt;code&gt;PCR-05: 19 0A 15 23 AF AC 1D C2 6D 48 AA 3D AE 50 FF 89 AE 79 F2 98 &lt;/code&gt;
 &lt;code&gt;PCR-06: A8 9F B8 F8 8C AA 95 90 E6 12 9B 63 3B 14 4A 68 51 44 90 D5 &lt;/code&gt;
 &lt;code&gt;PCR-07: A8 9F B8 F8 8C AA 95 90 E6 12 9B 63 3B 14 4A 68 51 44 90 D5 &lt;/code&gt;
 &lt;code&gt;PCR-08: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;/code&gt;
 &lt;code&gt;PCR-09: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;/code&gt;
 &lt;code&gt;PCR-10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;/code&gt;
 &lt;code&gt;PCR-11: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;/code&gt;
 &lt;code&gt;PCR-12: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;/code&gt;
 &lt;code&gt;PCR-13: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;/code&gt;
 &lt;code&gt;PCR-14: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;/code&gt;
 &lt;code&gt;PCR-15: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &lt;/code&gt;
 &lt;code&gt;...&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;em&gt;PCR&lt;/em&gt; up to 8 are not extended without any compliant boot loader.&lt;/p&gt;


&lt;h4&gt;Installation&lt;/h4&gt;


&lt;p&gt;So, you can download the latest version of TrustedGrub at the following &lt;a href=&quot;http://www.trust.rub.de/home/concluded-projects/trustedgrub/&quot; hreflang=&quot;en&quot;&gt;address&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;The procedure is the following :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ tar -xzvf TrustedGRUB-1.1.3.tgz&lt;/code&gt;
 &lt;code&gt;$ cd TrustedGRUB-1.1.3/&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Read the file &lt;em&gt;README.tGRUB&lt;/em&gt;, you need some specific tools to compile it :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo aptitude install aclocale automake autoconf gcc&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Then start compiling :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ ./build_tgruib.sh&lt;/code&gt;
 &lt;code&gt;- Deflating TrustedGRUB&lt;/code&gt;
 &lt;code&gt;- Configuring TrustedGRUB&lt;/code&gt;
 &lt;code&gt;- Compiling TrustedGRUB&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Then, before installing anything copy your actual configuration and prepare a liveCD ;)&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo mv /boot/grub /boot/grub_old&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Remove you actual Grub version :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo dpkg -r grub&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;And then install the new one :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ cd TrustedGRUB-1.1.3/&lt;/code&gt;
 &lt;code&gt;$ sudo make install&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;And copy the files for the boot process :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo mkdir /boot/grub&lt;/code&gt;
 &lt;code&gt;$ sudo cp ../default /boot/grub/&lt;/code&gt;
 &lt;code&gt;$ sudo cp stage1/stage1 /boot/grub&lt;/code&gt;
 &lt;code&gt;$ sudo cp stage2/stage2 /boot/grub&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Copy your old menu list :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo cp /boot/grub_old/menu.lst /boot/grub&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;And finally install Grub :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo grub&lt;/code&gt;
 &lt;code&gt;root (hdX,Y)&lt;/code&gt;
 &lt;code&gt;setup (hdX)&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Where &lt;em&gt;X&lt;/em&gt; is the disk number and &lt;em&gt;Y&lt;/em&gt; the partition number (generally &lt;em&gt;X=0&lt;/em&gt; and &lt;em&gt;Y=0&lt;/em&gt;).&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;You can now restart with a new TrustedGRUB !!&lt;/strong&gt;&lt;/p&gt;


&lt;h4&gt;Chain of trust and integrity checking&lt;/h4&gt;


&lt;p&gt;After restarting the system we can list the &lt;em&gt;PCR&lt;/em&gt; and see how they are updated. But the &lt;em&gt;TPM&lt;/em&gt; is only a passive component, the security must be ensured by the software at each step.
For this reason, new versions of TrustedGRUB come with to additional functionalities :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;the &lt;strong&gt;checkfile&lt;/strong&gt; option&lt;/li&gt;
&lt;li&gt;the &lt;strong&gt;pcr_verify&lt;/strong&gt; utility.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The &lt;strong&gt;checkfile&lt;/strong&gt; allows to specify in the /boot/grub/menu.lst file, additional files or programs to check at startup. Grub will extend the &lt;em&gt;PCR-13&lt;/em&gt; with a &lt;em&gt;SHA1&lt;/em&gt; of these files.&lt;/p&gt;


&lt;p&gt;The first thing to do is to indicate to grub to verify additional files, and where found them (disk and path) :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;title  TrustedGRUB Test&lt;/code&gt;
 &lt;code&gt;root  (hd0,0)&lt;/code&gt;
 &lt;code&gt;kernel  /boot/vmlinuz-2.6.xx ro quiet splash&lt;/code&gt;
 &lt;code&gt;initrd  /boot/initrd.img-2.6.xx&lt;/code&gt;
 &lt;code&gt;checkfile (hd?,?)/somewhere/check.file&lt;/code&gt;
 &lt;code&gt;quiet&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Then, create the file &lt;em&gt;/somewhere/check.file&lt;/em&gt;, with the following content :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;fedb1cff009e115f7f5f7b4533667a787798832d (hd0,1)/test1.file&lt;/code&gt;
 &lt;code&gt;485214eab2de87284de9d4e323e428bf60e0aa77 (hd0,1)/grub-0.92.tar.bz2&lt;/code&gt;
 &lt;code&gt;a6e171e989849dd44735a513c4270a0837c09174 (hd0,1)/test2.file&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;You must respect the following constraints :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The check file MUST NOT be larger than 8096 Bytes.&lt;/li&gt;
&lt;li&gt;The first component is a 40 byte alphanumeric value, created with &lt;em&gt;sha1sum&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;The second component has to be the driver followed by the absolute path of the file.&lt;/li&gt;
&lt;li&gt;Each line must end with an end-line character.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;If you use a wrong syntax your system will not boot !!&lt;/strong&gt;&lt;/p&gt;



&lt;h3&gt;TSS Stack&lt;/h3&gt;


&lt;p&gt;The &lt;em&gt;TrouSerS&lt;/em&gt; software suite provides an open-source TCG Software Stack. It is licensed under the &lt;em&gt;Common Public License&lt;/em&gt; (&lt;em&gt;CPL&lt;/em&gt;).&lt;/p&gt;


&lt;p&gt;&lt;em&gt;TrouSers&lt;/em&gt; provides the following services :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RSA key pair generation&lt;/li&gt;
&lt;li&gt;RSA encryption and decryption using PKCS v1.5 and OAEP padding&lt;/li&gt;
&lt;li&gt;RSA sign/verify&lt;/li&gt;
&lt;li&gt;Extend data into the TPM's PCRs and log these events&lt;/li&gt;
&lt;li&gt;Seal data to arbitrary PCRs&lt;/li&gt;
&lt;li&gt;Random Number Generation&lt;/li&gt;
&lt;li&gt;RSA key storage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To install it, proceed as the following :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo aptitude install trousers&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;The &lt;em&gt;TSS stack&lt;/em&gt; is designed to be used locally or remotely. If you want to allow remote commands you must update the configuration file located in &lt;em&gt;/etc/tcsd.conf&lt;/em&gt; :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo more /etc/tcsd.conf&lt;/code&gt;
 &lt;code&gt;...&lt;/code&gt;
 &lt;code&gt;# Option: remote_ops&lt;/code&gt;
 &lt;code&gt;# Values: TCS operation names, separated by commas (no whitespace)&lt;/code&gt;
 &lt;code&gt;# Description: A list of TCS commands which will be allowed to be executed&lt;/code&gt;
 &lt;code&gt;#  on this machine's TCSD by TSP's on non-local hosts (over the internet).&lt;/code&gt;
 &lt;code&gt;#  By default, access to all operations is denied.&lt;/code&gt;
 &lt;code&gt;#&lt;/code&gt;
 &lt;code&gt;# possible values:  seal - encrypt data bound to PCR values&lt;/code&gt;
 &lt;code&gt;#		    unseal - decrypt data bound to PCR values&lt;/code&gt;
 &lt;code&gt;#		    registerkey - store keys in system persistent storage &lt;a href=&quot;http://www.grounation.org/index.php?post/2008/07/04/Disk write access!&quot; title=&quot;Disk write access!&quot;&gt;Disk write access!&lt;/a&gt;&lt;/code&gt;
 &lt;code&gt;#		    unregisterkey - remove keys from system persistent storage &lt;a href=&quot;http://www.grounation.org/index.php?post/2008/07/04/Disk write access!&quot; title=&quot;Disk write access!&quot;&gt;Disk write access!&lt;/a&gt;&lt;/code&gt;
 &lt;code&gt;#		    loadkey - load a key into the TPM&lt;/code&gt;
 &lt;code&gt;#		    createkey - create a key using the TPM&lt;/code&gt;
 &lt;code&gt;#		    sign - encrypt data using a private key&lt;/code&gt;
 &lt;code&gt;#		    random - generate random numbers&lt;/code&gt;
 &lt;code&gt;#		    getcapability - query the TCS/TPM for its capabilities&lt;/code&gt;
 &lt;code&gt;#		    unbind - decrypt data&lt;/code&gt;
 &lt;code&gt;#		    quote - request a signed blob containing all PCR values&lt;/code&gt;
 &lt;code&gt;#		    readpubek - access the TPM's Public EndorsementKey&lt;/code&gt;
 &lt;code&gt;#		    getregisteredkeybypublicinfo - Search system persistent storage for a public key&lt;/code&gt;
 &lt;code&gt;#		    getpubkey - Retrieve a loaded key's public data from inside the TPM&lt;/code&gt;
 &lt;code&gt;#		    selftest - execute selftest and test results ordinals&lt;/code&gt;
 &lt;code&gt;#&lt;/code&gt;
 &lt;code&gt;remote_ops = &amp;lt;UPDATE HERE&amp;gt;&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;All these functionalities can be accessed locally with the &lt;em&gt;tpm_tools&lt;/em&gt; but for a more convenient usage, it exists a graphical user interface : &lt;a href=&quot;http://trousers.sourceforge.net/tpm_keyring2/quickstart.html&quot; hreflang=&quot;en&quot;&gt;''TPM Keyring''&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://trousers.sourceforge.net/tpm_keyring2/00-add_group.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;To compile this software will be need additional packages :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;autotools-dev&lt;/code&gt;
 &lt;code&gt;libltdl3-dev&lt;/code&gt;
 &lt;code&gt;libtool&lt;/code&gt;
 &lt;code&gt;automake&lt;/code&gt;
 &lt;code&gt;autoconf&lt;/code&gt;
 &lt;code&gt;swig&lt;/code&gt;
 &lt;code&gt;qt3-devel&lt;/code&gt;
 &lt;code&gt;openssl-devel&lt;/code&gt;
 &lt;code&gt;gtk2-dev&lt;/code&gt;
 &lt;code&gt;python-dev&lt;/code&gt;
 &lt;code&gt;python-gtk2-dev&lt;/code&gt;
 &lt;code&gt;python-all-dev&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Then run :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ cvs -d:pserver:anonymous@trousers.cvs.sourceforge.net:/cvsroot/trousers co applications/tpm_keyring2&lt;/code&gt;
 &lt;code&gt;$ cd applications/tpm_keyring2/&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;To compile &lt;em&gt;tpm_keyring&lt;/em&gt; on &lt;em&gt;Ubuntu&lt;/em&gt; you must edit the ''Makefile' file and replace :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;PYTHON_INCLUDES=-I/usr/include/python&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;with&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;PYTHON_INCLUDES=-I/usr/include/python2.5&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;PYTHON_INCLUDES=-I/usr/include/python2.4&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;depending on the version you use.&lt;/p&gt;


&lt;p&gt;Then :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ make&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;You can now run &lt;em&gt;tpm_keyring&lt;/em&gt; :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ ./tpm_keyring&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;For more information please refer to the following &lt;a href=&quot;http://trousers.sourceforge.net/tpm_keyring2/quickstart.html&quot; hreflang=&quot;en&quot;&gt;tutorial&lt;/a&gt;.&lt;/p&gt;



&lt;h3&gt;Kernel development corner&lt;/h3&gt;


&lt;p&gt;&lt;em&gt;Will be updated soon.&lt;/em&gt;&lt;/p&gt;


&lt;p&gt;By default, the Linux kernel gets in the ACPI tables the information about the supported &lt;em&gt;TPM&lt;/em&gt; available on a platform. Even if the &lt;em&gt;TPM&lt;/em&gt; device can be found in the ACPI tables, the driver will not find the device if its identifier is not referenced.
Most of the &lt;em&gt;TPMs&lt;/em&gt; are compatible with the standard &lt;em&gt;tpm_tis&lt;/em&gt; module driver but the kernel does not reference all new hardware components. For many of them, the support concists in adding the device &lt;em&gt;HID&lt;/em&gt; in the module source.&lt;/p&gt;


&lt;p&gt;For example, the Linux kernel version &lt;em&gt;2.6.25.9&lt;/em&gt; has the following &lt;em&gt;HID&lt;/em&gt; :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;in file drivers/char/tpm/tpm_tis.c&lt;/code&gt;
 &lt;code&gt;[...]&lt;/code&gt;
 &lt;code&gt;static struct pnp_device_id tpm_pnp_tbl&lt;a href=&quot;http://www.grounation.org/index.php?post/2008/07/04/&quot;&gt;&lt;/a&gt; __devinitdata = {&lt;/code&gt;
 &lt;code&gt;	{&quot;PNP0C31&quot;, 0},		/* TPM */&lt;/code&gt;
 &lt;code&gt;	{&quot;ATM1200&quot;, 0},		/* Atmel */&lt;/code&gt;
 &lt;code&gt;	{&quot;IFX0102&quot;, 0},		/* Infineon */&lt;/code&gt;
 &lt;code&gt;	{&quot;BCM0101&quot;, 0},		/* Broadcom */&lt;/code&gt;
 &lt;code&gt;	{&quot;NSC1200&quot;, 0},		/* National */&lt;/code&gt;
 &lt;code&gt;	/* Add new here */&lt;/code&gt;
 &lt;code&gt;	{&quot;&quot;, 0},		/* User Specified */&lt;/code&gt;
 &lt;code&gt;	{&quot;&quot;, 0}			/* Terminator */&lt;/code&gt;
 &lt;code&gt;};&lt;/code&gt;
 &lt;code&gt;[...]&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;To get all information about your &lt;em&gt;TPM&lt;/em&gt; device, you can use a tool &lt;em&gt;iasl&lt;/em&gt;, provided by &lt;a href=&quot;http://www.acpica.org/&quot; hreflang=&quot;en&quot;&gt;The ACPI Component Architecture Project&lt;/a&gt;. This tool is a compiler which allows you yo disassemble the binary ACPI table and dump them in a readable  text format.&lt;/p&gt;


&lt;p&gt;You can download it here : &lt;a href=&quot;http://www.acpica.org/downloads/&quot; hreflang=&quot;en&quot;&gt;UNIX Format Source Code and Build Environment&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;To compile iasl :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ tar -xzvf acpica-unix-20080609.tar.gz&lt;/code&gt;
 &lt;code&gt;$ cd acpica-unix-20080609/compiler&lt;/code&gt;
 &lt;code&gt;$ make&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;First get a local copy of your ACPI tables :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo cp /proc/acpi/dsdt .&lt;/code&gt;
 &lt;code&gt;$ sudo chmod a+r dsdt&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;To get all informations from the ACPI tables run the following command to disassemble :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;acpica-unix-20080609/compiler/iasl -d dsdt&lt;/code&gt;
 &lt;code&gt;&lt;/code&gt;
 &lt;code&gt;Intel ACPI Component Architecture&lt;/code&gt;
 &lt;code&gt;AML Disassembler version 20080609 &lt;a href=&quot;http://www.grounation.org/index.php?post/2008/07/04/Jun 13 2008&quot; title=&quot;Jun 13 2008&quot;&gt;Jun 13 2008&lt;/a&gt;&lt;/code&gt;
 &lt;code&gt;Copyright (C) 2000 - 2008 Intel Corporation&lt;/code&gt;
 &lt;code&gt;Supports ACPI Specification Revision 3.0a&lt;/code&gt;
 &lt;code&gt;&lt;/code&gt;
 &lt;code&gt;Loading Acpi table from file dsdt&lt;/code&gt;
 &lt;code&gt;Acpi table &lt;a href=&quot;http://www.grounation.org/index.php?post/2008/07/04/DSDT&quot; title=&quot;DSDT&quot;&gt;DSDT&lt;/a&gt; successfully installed and loaded&lt;/code&gt;
 &lt;code&gt;Pass 1 parse of &lt;a href=&quot;http://www.grounation.org/index.php?post/2008/07/04/DSDT&quot; title=&quot;DSDT&quot;&gt;DSDT&lt;/a&gt;&lt;/code&gt;
 &lt;code&gt;Pass 2 parse of &lt;a href=&quot;http://www.grounation.org/index.php?post/2008/07/04/DSDT&quot; title=&quot;DSDT&quot;&gt;DSDT&lt;/a&gt;&lt;/code&gt;
 &lt;code&gt;Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)&lt;/code&gt;
 &lt;code&gt;....................................................................................&lt;/code&gt;&lt;/pre&gt;





&lt;pre&gt; &lt;code&gt;Parsing completed&lt;/code&gt;
 &lt;code&gt;Disassembly completed, written to &quot;dsdt.dsl&quot;&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;You now have a text readable version of your ACPI tables in the file &lt;em&gt;dsdt.dsl&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;Search the word &lt;em&gt;TPM&lt;/em&gt; in the file, you will have a section starting with something like :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;Device (TPM)&lt;/code&gt;
 &lt;code&gt;                {&lt;/code&gt;
 &lt;code&gt;                    Name (_HID, EisaId (&quot;BCM0102&quot;))&lt;/code&gt;
 &lt;code&gt;                    Name (_CID, EisaId (&quot;PNP0C31&quot;))&lt;/code&gt;
 &lt;code&gt;                    Method (_STA, 0, NotSerialized)&lt;/code&gt;
 &lt;code&gt;                    {&lt;/code&gt;
 &lt;code&gt;                        SX10 ()&lt;/code&gt;
 &lt;code&gt;                        SX30 (0x0E)&lt;/code&gt;
 &lt;code&gt;                        SX11 ()&lt;/code&gt;
 &lt;code&gt;                        Store (SX42 (), Local0)&lt;/code&gt;
 &lt;code&gt;                        SX12 ()&lt;/code&gt;
 &lt;code&gt;                        Return (Local0)&lt;/code&gt;
 &lt;code&gt;                    }&lt;/code&gt;
 &lt;code&gt;[...]&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;The line containing your device &lt;em&gt;HID&lt;/em&gt; is the following :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;Name (_HID, EisaId (&quot;BCM0102&quot;))&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Add the value &lt;em&gt;BCM0102&lt;/em&gt; in the &lt;em&gt;pnp_device_id&lt;/em&gt; structure of the &lt;em&gt;tpm_tis&lt;/em&gt; module to support your &lt;em&gt;TPM&lt;/em&gt; device.
(See this post for an example &lt;a href=&quot;https://www.grounation.org/index.php?post/2008/07/05/9-broadcom-tpm-with-dell-latitude-d630&quot; hreflang=&quot;en&quot;&gt;Broadcom TPM with DELL Latitude D630&lt;/a&gt;).&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;And recompile the module to test !!&lt;/strong&gt;&lt;/p&gt;



&lt;h3&gt;Bibliography&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.grounation.org/index.php?media/Security/TPM_documentation&quot; hreflang=&quot;en&quot;&gt;Grounation TPM documentation repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.trustedcomputinggroup.org/downloads/specifications/tpm/tpm&quot; hreflang=&quot;en&quot;&gt;Trusted Computing Group&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://trousers.sourceforge.net/&quot; hreflang=&quot;en&quot;&gt;TrouSerS&lt;/a&gt; and &lt;a href=&quot;http://sf.net/projects/trousers&quot; title=&quot;http://sf.net/projects/trousers&quot;&gt;http://sf.net/projects/trousers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://trousers.sourceforge.net/tpm_keyring2/quickstart.html&quot; hreflang=&quot;en&quot;&gt;TPM Keyring - Quickstart Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.acpica.org/&quot; hreflang=&quot;en&quot;&gt;The ACPI Component Architecture Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://sf.net/projects/tpmdd&quot; hreflang=&quot;en&quot;&gt;TPM Device Drivers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    
          <enclosure url="http://www.grounation.org/index.php?download/13"
      length="46224" type="application/pdf" />
          <enclosure url="http://www.grounation.org/index.php?download/15"
      length="155274" type="application/pdf" />
          <enclosure url="http://www.grounation.org/index.php?download/16"
      length="484211" type="application/pdf" />
          <enclosure url="http://www.grounation.org/index.php?download/17"
      length="595367" type="application/pdf" />
          <enclosure url="http://www.grounation.org/index.php?download/19"
      length="3124329" type="application/pdf" />
          <enclosure url="http://www.grounation.org/index.php?download/24"
      length="3763883" type="application/pdf" />
    
    
      </item>
    
  <item>
    <title>Les logiciels libres &amp; GNU/Linux</title>
    <link>http://www.grounation.org/index.php?post/2008/07/03/7-les-logiciels-libres-gnu-linux</link>
    <guid isPermaLink="false">urn:md5:b08eaa23a48c6254adbafb375df74341</guid>
    <pubDate>Thu, 03 Jul 2008 22:14:37 +0000</pubDate>
    <dc:creator>webmaster</dc:creator>
        <category>General</category>
            
    <description>&lt;p&gt;Le but de ce rapport est d'avoir une vue globale des logiciels libres, de la philosophie, des acteurs et de voir dans quels secteurs économiques des changements sont à venir.&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Rapport datant de février 2002&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://erwan.ledisez.free.fr/docs/rapport_freesoftware/&quot; hreflang=&quot;fr&quot;&gt;Accessible ici&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>VIA C7 Padlock on Debian Etch</title>
    <link>http://www.grounation.org/index.php?post/2008/07/02/6-via-c7-padlock-on-debian-etch</link>
    <guid isPermaLink="false">urn:md5:5ac1998ebb71cfea4bfaabc2d6c37e31</guid>
    <pubDate>Wed, 02 Jul 2008 01:08:43 +0000</pubDate>
    <dc:creator>webmaster</dc:creator>
        <category>System</category>
        <category>AES</category><category>C7</category><category>Debian</category><category>Etch</category><category>OpenSSH</category><category>OpenSSL</category><category>Padlock</category><category>RNG</category><category>VIA</category>    
    <description>&lt;p&gt;This article explains :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How to configure the kernel to activate Padlock&lt;/li&gt;
&lt;li&gt;How to configure OpenSSL to use the hardware engine&lt;/li&gt;
&lt;li&gt;How to configure OpenSSH to use OpenSSL Padlock engine&lt;/li&gt;
&lt;/ul&gt;    &lt;p&gt;First of all you will find all references on these web sites :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.logix.cz/michal/devel/padlock/&quot; hreflang=&quot;en&quot;&gt;VIA PadLock support for Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://a110wiki.de/wiki/VIA_Padlock&quot; hreflang=&quot;en&quot;&gt;VIA Padlock&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Linux Kernel&lt;/h3&gt;


&lt;p&gt;Kernel 2.6.25 has driver for AES, SHA1 and SHA256 in VIA C7 PadLock out of the box. No need to patch it anymore.&lt;/p&gt;


&lt;p&gt;When configuring the kernel with for example :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo make menuconfig&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Set the following options :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;-*- Cryptographic API&lt;/code&gt;
 &lt;code&gt;-*- Hardware Cryptographic devices ---&amp;gt;&lt;/code&gt;
 &lt;code&gt;&amp;lt;M&amp;gt; Support for VIA PadLock ACE&lt;/code&gt;
 &lt;code&gt;&amp;lt;M&amp;gt;     PadLock driver for AES algorithm&lt;/code&gt;
 &lt;code&gt;&amp;lt;M&amp;gt;     PadLock driver for SHA1 and SHA256 algorithms&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Then compile the kernel in the standard debian way :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo make-kpkg clean&lt;/code&gt;
 &lt;code&gt;$ sudo fakeroot make-kpkg --revision=custom.1.0 kernel_image&lt;/code&gt;
 &lt;code&gt;$ sudo dpkg -i ../kernel-image-2.6.25_custom.1.0_i386.deb&lt;/code&gt;
 &lt;code&gt;$ sudo mkinitramfs-kpkg -o /boot/initrd.img-2.6.25_custom.1.0 2.6.25_custom.1.0&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;And edit Grub to add the line for the initrd, something like that :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;title Debian GNU/Linux, kernel 2.6.25_custom.1.0&lt;/code&gt;
 &lt;code&gt;root (hd0,0)&lt;/code&gt;
 &lt;code&gt;kernel /boot/vmlinuz-2.6.25_custom.1.0 root=/dev/sda1 ro&lt;/code&gt;
 &lt;code&gt;initrd /boot/initrd.img-2.6.25_custom.1.0&lt;/code&gt;
 &lt;code&gt;savedefault&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;You can now reboot.&lt;/p&gt;


&lt;p&gt;To activate the PadLock optimizations, if you compiled as modules try :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;modprobe padlock_aes padlock_sha&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Or add the modules to &quot;/etc/modules&quot;.&lt;/p&gt;



&lt;h3&gt;Linux RNG Entropy&lt;/h3&gt;


&lt;p&gt;One of the most important think in cryptography is to ensure efficiency of the RNG source. If fact, all initialization vectors, all keys, all random numbers, all prime values ... are generated using data from the RNG source.&lt;/p&gt;


&lt;p&gt;The VIA C7 provides a hardware RNG which can be used to add entropy to Linux random source.&lt;/p&gt;


&lt;p&gt;To do that, first load the VIA RNG (and add it in &quot;/dev/modules&quot;) :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ modprobe via_rng&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Install &lt;q&gt;rngd&lt;/q&gt;, which checks the randomness of &lt;q&gt;hwrng&lt;/q&gt; data (VIA hardware RNG) and forwards them into the kernel's pseudo-RNG.&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ apt-get install rng-tools&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;And configure the daemon to use the VIA hardware RNG by default, add in file &quot;/etc/default/rng-tools&quot; :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;RNGDOPTIONS=&quot;--hrng=via&quot;&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;And restart the daemon :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo sudo /etc/init.d/rng-tools restart&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;This should now speedup key generation mechanisms&lt;/strong&gt; (ssh-keygen, OpenSSL Certificates/Keys generation, PGP keys... ).&lt;/p&gt;



&lt;h3&gt;OpenSSL&lt;/h3&gt;


&lt;p&gt;The default OpenSSL version packaged with Debian allows do dynamically load engines. So, we will not build a new OpenSSL package but only the &lt;strong&gt;padlock&lt;/strong&gt; engine.&lt;/p&gt;


&lt;p&gt;First install the required development packages :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo apt-get install build-essential fakeroot&lt;/code&gt;
 &lt;code&gt;$ sudo apt-get build-dep openssl&lt;/code&gt;
 &lt;code&gt;$ apt-get source openssl&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Then we will patch OpenSSL and compile the engine :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ cd openssl-0.9.8c&lt;/code&gt;
 &lt;code&gt;$ wget http://www.logix.cz/michal/devel/padlock/openssl098-padlock-shared-move.diff | patch -p1&lt;/code&gt;
 &lt;code&gt;$ ./Configure&lt;/code&gt;
 &lt;code&gt;$ cd engines&lt;/code&gt;
 &lt;code&gt;$ make&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And create the shared library :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ gcc -shared -o libpadlock.so e_padlock.o -L ../.. -lcrypto&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Now copy the engine library to the default library :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo cp libpadlock.so /usr/lib/ssl/engines/libpadlock.so&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;And update OpenSSL configuration (&lt;em&gt;/etc/ssl/openssl.cnf&lt;/em&gt;) to add the following lines :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;oid_section		= new_oids&lt;/code&gt;
 &lt;code&gt;&lt;/code&gt;
 &lt;code&gt;## New entries after this line&lt;/code&gt;
 &lt;code&gt;openssl_conf = openssl_def&lt;/code&gt;
 &lt;code&gt;&lt;/code&gt;
 &lt;code&gt;[openssl_def]&lt;/code&gt;
 &lt;code&gt;engines = openssl_engines&lt;/code&gt;
 &lt;code&gt;&lt;/code&gt;
 &lt;code&gt;[openssl_engines]&lt;/code&gt;
 &lt;code&gt;padlock = padlock_engine&lt;/code&gt;
 &lt;code&gt;&lt;/code&gt;
 &lt;code&gt;[padlock_engine]&lt;/code&gt;
 &lt;code&gt;default_algorithms = ALL&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;To check if all works perfectly try :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo openssl engine padlock&lt;/code&gt;
 &lt;code&gt;(padlock) VIA PadLock (no-RNG, ACE)&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;see &lt;a href=&quot;http://a110wiki.de/wiki/VIA_Padlock&quot; hreflang=&quot;en&quot;&gt;this site&lt;/a&gt; for benchmarks.&lt;/p&gt;



&lt;h3&gt;OpenSSH&lt;/h3&gt;


&lt;p&gt;The problem is that OpenSSH does not use (in the version provided with Etch) by default the OpenSSL engines.
So for all cryptographic operations the Padlock engine is not use. The current OpenSSH version is &lt;em&gt;4.3p2&lt;/em&gt; but the patch for &quot;4.5p1&quot; works perfectly.&lt;/p&gt;


&lt;p&gt;First, we will prepare the build environment :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ sudo apt-get install build-essential fakeroot&lt;/code&gt;
 &lt;code&gt;$ sudo apt-get build-dep openssh&lt;/code&gt;
 &lt;code&gt;$ apt-get source openssh&lt;/code&gt;
 &lt;code&gt;$ cd openssh-4.3p2&lt;/code&gt;
 &lt;code&gt;$ wget http://www.logix.cz/michal/devel/padlock/contrib/openssh-4.5p1-engines.diff | patch -p1&lt;/code&gt;
 &lt;code&gt;$ fakeroot debian/rules binary&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;And then install the debian packages, for example SSH client and server :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$ dpkg -i openssh-server_4.3p2-9etch2_i386.deb openssh-client_4.3p2-9etch2_i386.deb&lt;/code&gt;&lt;/pre&gt;



&lt;h3&gt;Conclusion&lt;/h3&gt;


&lt;p&gt;OpenSSL and OpenSSH are now configured to use Padlock, but instead if OpenSSL selects by default the Padlock engine, the programs which use the library must explicitly activate the use of engines.
So, applications which use OpenSSL to provide cryptographic mechanisms must support OpenSSL engine mechanism. It exists patches for many applications (&lt;em&gt;postfix&lt;/em&gt;, &lt;em&gt;courrier-imap&lt;/em&gt; ...).&lt;/p&gt;


&lt;p&gt;The support concists in explicitly load the available hardware cryptographic engines when initializing OpenSSL. For example :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;/* Init available hardware crypto engines. */&lt;/code&gt;
 &lt;code&gt;ENGINE_load_builtin_engines();&lt;/code&gt;
 &lt;code&gt;ENGINE_register_all_complete();&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;And eventually set the &quot;padlock&quot; engine by default :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;/* Init available hardware crypto engines. */&lt;/code&gt;
 &lt;code&gt;ENGINE_load_builtin_engines();&lt;/code&gt;
 &lt;code&gt;ENGINE_register_all_complete();&lt;/code&gt;
 &lt;code&gt;ENGINE_set_default_ciphers(ENGINE_by_id(&quot;padlock&quot;));&lt;/code&gt;&lt;/pre&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Monitor mode with a Wireless Intel Corporation PRO/Wireless 3945ABG Network card</title>
    <link>http://www.grounation.org/index.php?post/2008/05/22/5-monitor-mode-with-a-wireless-intel-corporation-pro-wireless-3945abg-network-card</link>
    <guid isPermaLink="false">urn:md5:d9148e3aed48b3359189234a6540db6a</guid>
    <pubDate>Thu, 22 May 2008 21:21:14 +0000</pubDate>
    <dc:creator>webmaster</dc:creator>
        <category>Security</category>
        <category>3945ABG</category><category>Aircrack</category><category>Dell Latitude D630</category><category>ipwraw</category><category>iwl3945</category><category>Linux</category><category>wifi</category><category>Wireless</category>    
    <description>&lt;p&gt;The default driver Linux driver iwl3945 does not accept monitor mode anymore. This tutorial explains how install the ipwraw driver instead.&lt;/p&gt;    &lt;p&gt;So, if you run a &lt;em&gt;lspci&lt;/em&gt; command you should have something like :&lt;/p&gt;


&lt;pre&gt; &lt;code&gt;0c:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;This is the case on my DELL LATITUDE D630 laptop.&lt;/p&gt;


&lt;p&gt;If you wish to use software like &lt;em&gt;Aircrack-NG&lt;/em&gt;, the following error occurs when passing to the monitor mode (for promiscuous mode for example) :&lt;/p&gt;


&lt;pre&gt; &lt;code&gt;$sudo airmon-ng&lt;/code&gt;
 &lt;code&gt;Interface	Chipset		Driver&lt;/code&gt;
 &lt;code&gt;wlan0			iwl3945 - &lt;a href=&quot;http://www.grounation.org/index.php?post/2008/05/22/phy0&quot;&gt;phy0&lt;/a&gt;&lt;/code&gt;
 &lt;code&gt;$sudo airmon-ng start wlan0&lt;/code&gt;
 &lt;code&gt;Interface	Chipset		Driver &lt;/code&gt;
 &lt;code&gt;wlan0			iwl3945 - &lt;a href=&quot;http://www.grounation.org/index.php?post/2008/05/22/phy0&quot;&gt;phy0&lt;/a&gt;/usr/sbin/airmon-ng: 833: cannot create /sys/class/ieee80211/phy0/add_iface: Directory nonexistent&lt;/code&gt;
 &lt;code&gt;Error for wireless request &quot;Se@ Mode&quot; (8B06) :&lt;/code&gt;
 &lt;code&gt;SET failed on device mon0 ; No such device.&lt;/code&gt;
 &lt;code&gt;mon0: ERREUR en récupérant les signaux de l'interface: Aucun périphérique de ce type &lt;/code&gt;
 &lt;code&gt;(monitor mode enabled on mon0)&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The procedure has been tester on Ubuntu Hardy Heron, but can be easily used with other distribution.&lt;/p&gt;


&lt;h5&gt;Installation of the required packages&lt;/h5&gt;


&lt;p&gt;To check the monitor mode :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;sudo aptitude install aircrack-ng macchanger&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;In order to build the new driver :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo aptitude install linux-headers-`uname -r` build-essential libssl-dev macchanger&lt;/code&gt;&lt;/pre&gt;



&lt;h5&gt;Build the &lt;em&gt;ipwraw&lt;/em&gt; driver&lt;/h5&gt;



&lt;p&gt;First download the latest version of the driver at the following address : http://dl.aircrack-ng.org/drivers/&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;wget http://dl.aircrack-ng.org/drivers/ipwraw-ng-2.3.4-04022008.tar.bz2&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Then build the driver and firmware :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;tar -xjf ipwraw-ng*&lt;/code&gt;
 &lt;code&gt;cd ipwraw-ng*&lt;/code&gt;
 &lt;code&gt;make&lt;/code&gt;
 &lt;code&gt;sudo make install&lt;/code&gt;
 &lt;code&gt;sudo make install_ucode&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Blacklist the ipwraw driver since we don't want to load it at start, it is only for monitor purpose :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;echo blacklist ipwraw | sudo tee /etc/modprobe.d/ipwraw&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;And finally update module dependencies :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;sudo depmod -ae&lt;/code&gt;&lt;/pre&gt;



&lt;h5&gt;Use &lt;em&gt;ipwraw&lt;/em&gt; driver&lt;/h5&gt;



&lt;p&gt;First unload the current wifi driver :&lt;/p&gt;

&lt;pre&gt; @@modprobe -r iwl3945&lt;/pre&gt;


&lt;p&gt;And load the &lt;em&gt;ipwraw&lt;/em&gt; driver, which by default allow monitoring :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;modprobe ipwraw&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Now use iwconfig to check if the interface has been created, you should have something like :&lt;/p&gt;

&lt;pre&gt; &lt;code&gt;$sudo iwconfig&lt;/code&gt;
 &lt;code&gt;lo        no wireless extensions.&lt;/code&gt;
 &lt;code&gt;&lt;/code&gt;
 &lt;code&gt;eth0      no wireless extensions.&lt;/code&gt;
 &lt;code&gt;&lt;/code&gt;
 &lt;code&gt;wifi0     unassociated  ESSID:off/any&lt;/code&gt;
 &lt;code&gt;          Mode:Monitor  Channel=1  Bit Rate=54 Mb/s&lt;/code&gt;
 &lt;code&gt;&lt;/code&gt;          
 &lt;code&gt;rtap0     no wireless extensions.&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;You can now use &lt;em&gt;aircrack-ng&lt;/em&gt; to secure your wireless connection. When you stops monitoring you wifi, you should unload the &lt;em&gt;ipwraw&lt;/em&gt; driver and load the default one (&lt;em&gt;iwl3945&lt;/em&gt;).&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Linux Security Tools</title>
    <link>http://www.grounation.org/index.php?post/2008/04/04/4-linux-security-tools</link>
    <guid isPermaLink="false">urn:md5:5e80c49d04e53197ec0b0a24751e8de3</guid>
    <pubDate>Fri, 04 Apr 2008 22:20:56 +0000</pubDate>
    <dc:creator>webmaster</dc:creator>
        <category>Security</category>
        <category>chkrootkit</category><category>Clam antivirus</category><category>Linux</category><category>nessus</category><category>nmap</category><category>Security</category><category>wireshark</category>    
    <description>&lt;p&gt;In this article, you will learn about some of the most important Linux security tools. The goal is not to explain how to use them but only propose a list with references which will be updated frequently.&lt;/p&gt;    &lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://nmap.org/&quot; hreflang=&quot;en&quot;&gt;Nmap Security Scanner&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;q&gt;Nmap (&quot;Network Mapper&quot;) is a free and open source (license) utility for network exploration or security auditing. Many systems and network administrators also find it useful for tasks such as network inventory, managing service upgrade schedules, and monitoring host or service uptime. Nmap uses raw IP packets in novel ways to determine what hosts are available on the network, what services (application name and version) those hosts are offering, what operating systems (and OS versions) they are running, what type of packet filters/firewalls are in use, and dozens of other characteristics. It was designed to rapidly scan large networks, but works fine against single hosts. Nmap runs on all major computer operating systems, and both console and graphical versions are available.&lt;/q&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.nessus.org/nessus/&quot; hreflang=&quot;en&quot;&gt;Nessus Vulnerability Scanner&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;q&gt;Nessus is a free comprehensive vulnerability scanning software. Its goal is to detect potential vulnerabilities on the tested systems. In typical operation, Nessus begins by doing a port scan with one of its four internal portscanners (or it can optionally use Amap or Nmap &lt;a href=&quot;http://www.grounation.org/index.php?post/2008/04/04/1&quot;&gt;1&lt;/a&gt;) to determine which ports are open on the target and then tries various exploits on the open ports. The vulnerability tests, available as subscriptions, are written in NASL (Nessus Attack Scripting Language), a scripting language optimized for custom network interaction.&lt;/q&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://clamav.net/&quot; hreflang=&quot;en&quot;&gt;Clam AntiVirus&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;q&gt;Clam AntiVirus is an open source (GPL) anti-virus toolkit for UNIX, designed especially for e-mail scanning on mail gateways. It provides a number of utilities including a flexible and scalable multi-threaded daemon, a command line scanner and advanced tool for automatic database updates. The core of the package is an anti-virus engine available in a form of shared library.&lt;/q&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.chkrootkit.org/&quot; hreflang=&quot;en&quot;&gt;Chkrootkit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;q&gt;chkrootkit is a tool to locally check for signs of a rootkit. It contains shell script that checks system binaries for rootkit modification, modules to check if the interface is in promiscuous mode, to check for lastlog deletions, to check for wtmp deletions, to check for signs of LKM trojans, to check dirty strings replacement and more.&lt;/q&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.wireshark.org/&quot; hreflang=&quot;en&quot;&gt;Wireshark&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;q&gt;Wireshark is a very popular network protocol anyalizer that has a varaiety of security features including a packet browser, live capture and offline analysis and more. Basically, Wireshark captures packets going across the network and displays them to you with as much detail possible.&lt;/q&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>SSH Dictionary Attack Prevention with iptables</title>
    <link>http://www.grounation.org/index.php?post/2008/04/03/3-ssh-dictionary-attack-prevention-with-iptables</link>
    <guid isPermaLink="false">urn:md5:68962583a8236b8c3ec35a0c0dadc81a</guid>
    <pubDate>Thu, 03 Apr 2008 01:33:23 +0000</pubDate>
    <dc:creator>webmaster</dc:creator>
        <category>Security</category>
        <category>dictionary attack</category><category>iptables</category><category>SSH</category>    
    <description>&lt;p&gt;Once you have a SSH server available on internet, you are exposed to SSH brute-force attacks which are rather annoying. It is frequent to observe thousand of connexion attempts with multiple common login and password.
This article intends to solve this problem with specific iptables rules.&lt;/p&gt;    &lt;p&gt;A good SSH configuration first restrict access by defining the users which are allowed to login in. This is realized with the &lt;strong&gt;AllowUsers&lt;/strong&gt; directive, like this :&lt;/p&gt;



&lt;pre&gt; &lt;code&gt;AllowUsers my_user1, my_admin1&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The directive can also be used to match specific host source connexion, accepting for example the root login from a specific host&lt;/p&gt;



&lt;pre&gt; &lt;code&gt;AllowUsers root@an-IP&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;However, this directive do not prevent a malicious user to operate a dictionary attack, and if no counter-measure is use the attacker can try as many login/password couple from various IP. Attacks are generally realized by bots and the following solution help reducing dramatically the attempts.&lt;/p&gt;


&lt;p&gt;It exists many softwares to analyze logs or daemons to monitor connexions to a port or to a range of ports but I think that the most easy-to-use, and the method which demand few memory/CPU usage uses the &lt;strong&gt;IPTables/Netfilter Recent module&lt;/strong&gt;.&lt;/p&gt;


&lt;p&gt;Configuration is as simple as the following iptables rules :&lt;/p&gt;



&lt;pre&gt; &lt;code&gt;iptables -N SSH_MONITOR&lt;/code&gt;
 &lt;code&gt;iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_MONITOR&lt;/code&gt;
 &lt;code&gt;iptables -A SSH_MONITOR -m recent --set --name SSH&lt;/code&gt;
 &lt;code&gt;iptables -A SSH_MONITOR -m recent --update --seconds 60 --hitcount 3 --name SSH -j DROP&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;These rules allow :&lt;/p&gt;


&lt;ol&gt;
&lt;li&gt;Creating a chain &lt;strong&gt;SSH_MONITOR&lt;/strong&gt; to mark all incoming SSH connection.&lt;/li&gt;
&lt;li&gt;Accept no more than 3 attempts within a 60 seconds window.&lt;/li&gt;
&lt;li&gt;Drop all connexions that match the condition.&lt;/li&gt;
&lt;li&gt;State is cleared when a connexion success.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;This will help protecting your system, your passwords but you will always need to change them frequently.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Secure Deletion of memory</title>
    <link>http://www.grounation.org/index.php?post/2008/03/03/2-secure-deletion-of-memory</link>
    <guid isPermaLink="false">urn:md5:2358603a22146e87fcf3cbeb9dc230bb</guid>
    <pubDate>Mon, 03 Mar 2008 21:58:27 +0000</pubDate>
    <dc:creator>webmaster</dc:creator>
        <category>Security</category>
        <category>Cold Boot Attacks</category><category>Encryption keys</category><category>memory</category><category>secure deletion</category>    
    <description>&lt;p&gt;With the use of disk encryption softwares to protect data on mobile computer, how can you be sure to ensure data confidentiality  ? What is the threat if an attacker gain access to sensitive data which was supposed to be erased. ?&lt;/p&gt;    &lt;p&gt;Un récent article &lt;a href=&quot;http://citp.princeton.edu/memory/&quot; hreflang=&quot;fr&quot;&gt;Lest We Remember: Cold Boot Attacks on Encryption Keys&lt;/a&gt; réalisé dans le cadre du &lt;a href=&quot;http://citp.princeton.edu/&quot; hreflang=&quot;en&quot;&gt;CITP&lt;/a&gt;, semble relancer la problématique de l'effacement sécurisé des données stockées en mémoire. Même si la problématique n'est pas nouvelle, elle touche aujourd'hui les problématique&lt;/p&gt;


&lt;p&gt;La menace mise en avant par ce type de problématique est la possibilité qu'un attaquant puisse accéder à une donnée que l'on croyait détruite&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;sur un stockage persistant (disque magnétique)&lt;/li&gt;
&lt;li&gt;sur un stockage volatile (RAM après la coupure de la machine).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Cet article traite du second cas, et particulièrement de la catégorie des mémoires vives (RAM) des ordinateurs portables. Il illustre par une vidéo comment un attaquant peut accéder à une clef de chiffrement des disques contenue dans la mémoire vive après arrêt de l'ordinateur. Certaines expériences ont montré la rémanence des données plusieurs minutes après arrêt.&lt;/p&gt;


&lt;p&gt;Un précédent article datant de 1996, &lt;a href=&quot;http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html&quot; hreflang=&quot;en&quot;&gt;Secure Deletion of Data from Magnetic and Solid-State Memory&lt;/a&gt; de Peter Gutmann décrivait la problématique du premier cas et introduisait quelques mécanismes de prévention. Il introduisait également la problématique de la rémanence des données des mémoires de type RAM.&lt;/p&gt;

&lt;object data=&quot;http://www.youtube.com/v/JDaicPIgn9U&quot; type=&quot;application/x-shockwave-flash&quot; height=&quot;350&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/JDaicPIgn9U&quot; /&gt;&lt;/object&gt;

&lt;p&gt;Mais aucune contre-mesure logicielle ne permet de se prémunir de l'arrêt brutal de l'ordinateur. Les solutions de type TPM ne proposent pas de mécanisme adéquat, la clef doit toujours être chargée en mémoire, la menace reste identique. La solution se trouverait probablement du côté des cartes PCI de chiffrement ou les mémoires chiffrées ... quand les processeurs grand marché le permettront ...&lt;/p&gt;


&lt;p&gt;En attendant, restez devant votre portable quelques minutes après l'arrêt :-)&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Lancement du site</title>
    <link>http://www.grounation.org/index.php?post/2008/03/03/1-first-post</link>
    <guid isPermaLink="false">urn:md5:a106536ef100ac4839c669d1ef7b67ee</guid>
    <pubDate>Mon, 03 Mar 2008 21:15:36 +0000</pubDate>
    <dc:creator>webmaster</dc:creator>
        <category>General</category>
            
    <description>    Bienvenue à tous en cette fin de soirée, ce premier post marque le lancement du site &lt;strong&gt;GouNation&lt;/strong&gt;.
Le premier pas est fait, mais le plus important est à venir !! </description>
    
    
    
      </item>
    
</channel>
</rss>