home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 June / Chip_2004-06_cd1.bin / software / turbocrypt / Setup_BPP_Disk.msi / _4603A479407C4043518EF709F41A325D / _60EBFAA0F3BC4C6C919D352C3CD505A6 < prev    next >
Text File  |  2003-11-15  |  47KB  |  728 lines

  1. <html>
  2.  
  3. <head>
  4. <meta http-equiv="Content-Language" content="de">
  5. <meta name="GENERATOR" content="Microsoft FrontPage 5.0">
  6. <meta name="ProgId" content="FrontPage.Editor.Document">
  7. <meta name="keywords" content="polymorphic cipher encryption cryptography bpp disk">
  8. <title>PMC Ciphers, Inc. - The Polymorphic Cipher: Basics of Polymorphic 
  9. Encryption</title>
  10. </head>
  11.  
  12. <body BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#000080" VLINK="#4040C0" ALINK="#0000FF">
  13.  
  14. <basefont face="Arial" color="#000000" size="2">
  15. <table border="0" cellpadding="0" cellspacing="0" align="left">
  16.   <tr>
  17.     <td colspan="2">
  18.     <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="1024">
  19.       <tr>
  20.         <td><a href="http://www.pmc-ciphers.com/index.php">
  21.         <img alt="pmc-ciphers.com" border="0" src="img/header_up.jpg" width="1024" height="87"></a></td>
  22.       </tr>
  23.       <tr>
  24.         <td background="img/header_down.jpg" width="1024" height="24">
  25.         <table border="0" cellpadding="0" cellspacing="0" align="left">
  26.           <tr>
  27.             <td width="160"></td>
  28.             <td width="100" align="center">
  29.             <a href="http://www.pmc-ciphers.com/index.php">
  30.             <font face="Arial" size="2"><b>Home</b></font></a> </td>
  31.             <td width="100" align="center">
  32.             <a href="http://www.pmc-ciphers.com/products/index.php">
  33.             <font face="Arial" size="2"><b>Products</b></font></a> </td>
  34.             <td width="140" align="center">
  35.             <a href="http://www.pmc-ciphers.com/technology/index.php">
  36.             <font face="Arial" size="2"><b>PMC Technology</b></font></a> </td>
  37.             <td width="160" align="center">
  38.             <a href="http://www.pmc-ciphers.com/services/index.php">
  39.             <font face="Arial" size="2"><b>Services & Capabilities</b></font></a>
  40.             </td>
  41.             <td width="100" align="center">
  42.             <a href="http://www.pmc-ciphers.com/partners/index.php">
  43.             <font face="Arial" size="2"><b>Partners</b></font></a> </td>
  44.             <td width="100" align="center">
  45.             <a href="http://www.pmc-ciphers.com/dev/index.php">
  46.             <font face="Arial" size="2"><b>Developers</b></font></a> </td>
  47.             <td width="100" align="center">
  48.             <a href="http://www.pmc-ciphers.com/company/index.php">
  49.             <font face="Arial" size="2"><b>Contact us</b></font></a> </td>
  50.             <td width="80" align="center">
  51.             <a href="http://www.pmc-ciphers.com/sitemap.php">
  52.             <font face="Arial" size="2"><b>Sitemap</b></font></a> </td>
  53.           </tr>
  54.         </table>
  55.         </td>
  56.       </tr>
  57.     </table>
  58.     </td>
  59.   </tr>
  60.   <tr>
  61.     <td width="164" bgcolor="#D0D0E0" valign="top">
  62.     <table bgcolor="#D0D0E0" border="0" cellpadding="0" cellspacing="0" align="left" style="border-collapse: collapse" bordercolor="#111111" height="387">
  63.       <tr>
  64.         <td align="center" valign="top" width="150" height="33"><b>
  65.         <font color="#666666" face="Arial" size="2">BPP Disk Encryption Help</font></b>
  66.         <hr color="#9999CC" size="1"></td>
  67.         <td bgcolor="#D0D0E0" width="10" height="33"> </td>
  68.       </tr>
  69.       <tr>
  70.         <td height="40" width="150"><font face="Arial" size="2"><b>
  71.         <a href="bpp_disk_installation_en.html">Installation and deinstallation</a></b></font></td>
  72.         <td bgcolor="#D0D0E0" width="10" height="40"> </td>
  73.       </tr>
  74.       <tr>
  75.         <td height="40" width="150"><font face="Arial" size="2"><b>
  76.         <a href="bpp_disk_main_en.html">BPP Disk Encryption Manual</a></b></font></td>
  77.         <td bgcolor="#D0D0E0" width="10" height="40"> </td>
  78.       </tr>
  79.       <tr>
  80.         <td height="40" width="150"><font face="Arial" size="2"><b>
  81.         <a href="bpp_disk_shell_extension_en.html">BPP Shell Extension Manual</a></b></font></td>
  82.         <td bgcolor="#D0D0E0" width="10" height="40"> </td>
  83.       </tr>
  84.       <tr>
  85.         <td height="40" width="150"><a href="full_versions_en.html">
  86.         <font face="Arial" size="2"><b>Full versions</b></font></a></td>
  87.         <td bgcolor="#D0D0E0" width="10" height="40"> </td>
  88.       </tr>
  89.       <tr>
  90.         <td height="40" width="150"><hr></td>
  91.         <td bgcolor="#D0D0E0" width="10" height="40"> </td>
  92.       </tr>
  93.       <tr>
  94.         <td align="center" valign="top" width="150" height="33"><b>
  95.         <font color="#666666" face="Arial" size="2">White Papers about BPP Disk 
  96.         Encryption</font></b><hr color="#9999CC" size="1"></td>
  97.         <td bgcolor="#D0D0E0" width="10" height="33"> </td>
  98.       </tr>
  99.       <tr>
  100.         <td height="40" width="150"><font face="Arial" size="2"><b>
  101.         <img border="0" src="img/pdf_small.gif" width="24" height="24"><a href="bpp_disk_mode_of_operation_en.pdf">BPP 
  102.         Disk: Mode of operation (Abobe PDF document)</a></b></font></td>
  103.         <td bgcolor="#D0D0E0" width="10" height="40"> </td>
  104.       </tr>
  105.       <tr>
  106.         <td height="40" width="150"><font face="Arial" size="2"><b>
  107.         <img border="0" src="img/pdf_small.gif" width="24" height="24"><a href="bpp_disk_white_paper_en.pdf">BPP 
  108.         Disk: White Paper (Abobe PDF document)</a></b></font></td>
  109.         <td bgcolor="#D0D0E0" width="10" height="40"> </td>
  110.       </tr>
  111.       <tr>
  112.         <td height="40" width="150"><hr></td>
  113.         <td bgcolor="#D0D0E0" width="10" height="40"> </td>
  114.       </tr>
  115.       <tr>
  116.         <td align="center" valign="top" width="150" height="33"><b>
  117.         <font color="#666666" face="Arial" size="2">Polymorphic Cipher: Theory 
  118.         and test results</font></b> <hr color="#9999CC" size="1"></td>
  119.         <td bgcolor="#D0D0E0" width="10" height="33"> </td>
  120.       </tr>
  121.       <tr>
  122.         <td height="40" width="150"><font face="Arial" size="2"><b>
  123.         <a href="polymorphic_cipher.html">The Polymorphic Cipher</a><br>
  124.         <img border="0" src="img/pdf_small.gif" width="24" height="24"><a href="description_polymorphic_cryptography.pdf">Abobe 
  125.         PDF version</a></b></font></td>
  126.         <td bgcolor="#D0D0E0" width="10" height="40"> </td>
  127.       </tr>
  128.       <tr>
  129.         <td height="40" width="150"><font face="Arial" size="2"><b>
  130.         <img border="0" src="img/pdf_small.gif" width="24" height="24"><a href="pmc_fact_sheet.pdf">Polymorphic 
  131.         Cipher Fact Sheet (Abobe PDF document)</a></b></font></td>
  132.         <td bgcolor="#D0D0E0" width="10" height="40"> </td>
  133.       </tr>
  134.       <tr>
  135.         <td height="40" width="150"><font face="Arial" size="2"><b>
  136.         <img border="0" src="img/pdf_small.gif" width="24" height="24"><a href="roellgen02generalizedPMCmodel.pdf">Polymorphic 
  137.         Cipher theory (Abobe PDF document)</a></b></font></td>
  138.         <td bgcolor="#D0D0E0" width="10" height="40"> </td>
  139.       </tr>
  140.       <tr>
  141.         <td height="40" width="150"><font face="Arial" size="2"><b>
  142.         <img border="0" src="img/pdf_small.gif" width="24" height="24"><a href="512bit_block_pmc_disk_encryption_diehard_test_en.pdf">512 
  143.         bit Block PMC Diehard Test Results (Abobe PDF document)</a><br>
  144.         </b></font></td>
  145.         <td bgcolor="#D0D0E0" width="10" height="40"> </td>
  146.       </tr>
  147.       <tr>
  148.         <td height="40" width="150"><br>
  149.         <i><font face="Arial" size="2"><b>
  150.         <a href="http://www.adobe.com/products/acrobat/readstep2.html">Download 
  151.         Adobe PDF Reader from www.adobe.com</a></b></font></i></td>
  152.         <td bgcolor="#D0D0E0" width="10" height="40"> </td>
  153.       </tr>
  154.       <tr>
  155.         <td height="40" width="150"><hr></td>
  156.         <td bgcolor="#D0D0E0" width="10" height="40"> </td>
  157.       </tr>
  158.       <tr>
  159.         <td align="center" valign="top" width="150" height="33"><b>
  160.         <font color="#666666" face="Arial" size="2">BPP Disk webpages</font></b><hr color="#9999CC" size="1">
  161.         </td>
  162.         <td bgcolor="#D0D0E0" width="10" height="33"> </td>
  163.       </tr>
  164.       <tr>
  165.         <td height="48" width="150"><font face="Arial" size="2"><b>
  166.         <a href="http://www.pmc-ciphers.com/technology/index.php">All about 
  167.         Polymorphic Encryption at www.pmc-ciphers.com</a></b></font><br>
  168.  </td>
  169.         <td bgcolor="#D0D0E0" width="10" height="48"> </td>
  170.       </tr>
  171.       <tr>
  172.         <td height="40" width="150"><font face="Arial" size="2">
  173.         <a href="http://www.pmc-ciphers.com/products/bpp_disk.php"><b>BPP Disk 
  174.         at www.pmc-ciphers.com</b></a></font></td>
  175.         <td bgcolor="#D0D0E0" width="10" height="40"> </td>
  176.       </tr>
  177.       <tr>
  178.         <td width="150" valign="bottom" height="66"><font face="Arial" size="1">
  179.         (c) 1999-2003<br>
  180.         PMC Ciphers, Inc.</font></td>
  181.         <td bgcolor="#D0D0E0" width="10" height="66"> </td>
  182.       </tr>
  183.     </table>
  184.     </td>
  185.     <td width="860" bgcolor="#FFFFFF" valign="top">
  186.     <table border="0" cellspacing="0" width="866" id="AutoNumber2" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0">
  187.       <tr>
  188.         <td bgcolor="#efefef" class="size8" valign="bottom"><b>
  189.         <font face="Arial">  The Polymorphic Cipher</font></b></td>
  190.       </tr>
  191.       <tr>
  192.         <td class="size8"><br>
  193.         <b><font color="#000080" face="Arial" size="3">Author: C. B. Roellgen, 
  194.         initial release date: 1999</font></b></td>
  195.       </tr>
  196.       <tr>
  197.         <td align="left" valign="top">
  198.         <img border="0" src="img/enigma.jpg" align="right" hspace="10" width="300" height="455"><p align="justify">
  199.         <b><font face="Arial" size="2">The history of cryptography has shown 
  200.         that unbreakable ciphers had in many cases been cracked shortly after 
  201.         their widespread use had begun. One famous example is the "Enigma" 
  202.         encryption machine used by the Nazis in world war two: British 
  203.         specialists at Bletchley Park had been able to crack the clever 
  204.         permutation code. This resulted in detailed knowledge about most German 
  205.         military operations and in the total loss of the German submarines.<br>
  206.  </font></b></p>
  207.         <p> </p>
  208.         <p> </p>
  209.         <p><font face="Arial">T<font size="2">he widespread DES algorithm has 
  210.         long been supposed to be unbreakable. In January 1999 a test performed 
  211.         by RSA Data Security, Inc. (San Mateo, Calif., USA) proved that it takes 
  212.         less than 22.25 hours to crack the 56 bit algorithm by brute-force (by 
  213.         trying all 256 possibilities). That was 365 days after the same company 
  214.         needed 41 days for that task! RSA claim to have a much better cipher, 
  215.         which is obviously true. </font></font></p>
  216.         <p><font face="Arial" size="2">Today a code length of 128 bit is 
  217.         regarded as safe by experts (1000 bit for RSA). Thus, it took just 25 
  218.         years for the experts to actually double their requirements in key size 
  219.         (which is effectively 10000000000000000000 times more than what was 
  220.         initially regarded "safe"!!!).</font></p>
  221.         <p align="justify"><font face="Arial" size="2">It is indeed true that a 
  222.         key size of 256 bit are absolutely secure. There exists (even 
  223.         theoretically) no machine which can break such a code within an 
  224.         acceptable period of time.<br>
  225.         But one can never be sure that there exists absolutely no shortcut.
  226.         </font></td>
  227.       </tr>
  228.       <tr>
  229.         <td align="left" valign="top">
  230.         <p align="justify"><font face="Arial" size="2">Technology advances 
  231.         quickly. Day by day it becomes more likely that somebody is able to 
  232.         decrypt files containing confidential data. Why not simply oversize the 
  233.         encryption algorithm to solve this nasty but inevitable security 
  234.         problem? <br>
  235.         The main reason is speed! It is usually claimed that long keys slow down 
  236.         the algorithm too much. That's true because execution time increases at 
  237.         least by the key size at the power of two. </font></p>
  238.         <p align="justify"><font face="Arial" size="2">A new approach implying 
  239.         self-compiling machine code solves that problem. Execution time 
  240.         increases only linearly with key size. The idea behind it is to 
  241.         randomize the algorithm itself. ThatÆs why I have named it äPolymorphic 
  242.         Methodô. What if both data and the actual encryption algorithm are 
  243.         undefined in the beginning. An Opponent who wants to break your key 
  244.         feels deprived of any constant. Working with variables only quickly 
  245.         becomes pretty complex. Commonly known ciphers use one key - say one 
  246.         variable. A mathematic equation comprising two variables cannot be 
  247.         solved! For cryptography, there is of course a solution - but the only 
  248.         way to find it is to search exhaustively the whole keyspace. This 
  249.         problem is one-dimensional for common ciphers and two-dimensional for 
  250.         the Polymorphic Cipher. <br>
  251.         The Polymorphic Method is among the strongest ciphers available today 
  252.         and it's probably the strongest. The method simply takes advantage of 
  253.         machine code assembled at random to yield extraordinary security against 
  254.         all kinds of attacks. It is even intrinsically safe against the analysis 
  255.         of the program's instruction sequence because the instruction sequence 
  256.         itself is a variable! It is important to know that the key assumption 
  257.         for successful cryptoanalysis is detailed knowledge of the encryption 
  258.         algorithm - but the actual Polymorphic MethodÆs algorithm is inherently 
  259.         UNKNOWN. </font></p>
  260.         <p><b><span lang="EN-GB" style="font-family: Arial">Basic principle of 
  261.         the Polymorphic Method</span></b></p>
  262.         <p align="justify"><font face="Arial">
  263.         <img border="0" src="img/pmm_e.jpg" align="left" width="400" height="400"><font size="2">Two 
  264.         different passwords (or two parts of one password) are fed into random 
  265.         number generators. The one RNG on the left produces a byte stream which 
  266.         is compiled into machine code. The compiler simply assembles 
  267.         standardized building blocks, adjusts addresses as well as entry- and 
  268.         exit points to generate a piece of machine code which affects the key 
  269.         data array during execution of the machine code. The key data array is 
  270.         initialized by the right RNG which is biased by the right password.
  271.         </font></font></p>
  272.         <p align="justify"><font face="Arial" size="2">After the machine code 
  273.         has been executed, the content of the key data array can be used to 
  274.         encrypt plaintext through the application of the xor function. The 
  275.         content of the key data array can and should alternatively be used for 
  276.         biasing an underlying cryptographic algorithm which is simple and fast. 
  277.         By doing this, the complexity of the total crypto system increases and 
  278.         it becomes much more difficult to analyze the internal state of the key 
  279.         data array, although the information it contains gives no clue about the 
  280.         keys. <br>
  281.         <br>
  282.         It is even more confusing to sometimes recompile the instruction 
  283.         sequence. This makes the method dynamically polymorphic. </font></p>
  284.         <p align="justify"><font face="Arial" size="2">The compiler internal to 
  285.         the Polymorphic Encryption Method compiles replaceable code fragments 
  286.         which use the processorÆs registers in an identical way. Each building 
  287.         block can be exchanged by any other. The actual code length can vary due 
  288.         to differences in complexity but not the way data is passed from one 
  289.         building block to the other. A data array is used as a long variable 
  290.         which is initialized by a password. It takes the place of the key as 
  291.         known from conventional crypto algorithms. The CPU works on this key 
  292.         data array and performs permutations, modulo-divisions, shifts and other 
  293.         nonlinear operations. </font></p>
  294.         <p align="justify"><font face="Arial" size="2">An implementation of a 
  295.         Polymorphic Method is publically available as a Windows program called 
  296.         äBest Possible Privacyô. ItÆs crypto engine uses the CPU register ebx as 
  297.         input and output register, eax as general purpose buffer and ebp as base 
  298.         pointer to the key data array. The key data array that ebp points at is 
  299.         256 bytes long. </font></p>
  300.         <p class="MsoNormal" style="text-align:justify"><b>
  301.         <span lang="EN-GB" style="font-size:12.0pt;font-family:Arial">Example of 
  302.         a simple building block</span></b></p>
  303.         <p class="MsoNormal" style="text-align:justify">
  304.         <span lang="EN-GB" style="font-family:Arial"><font size="2">The xor 
  305.         operation alters ebx and four bytes of the key data array:</font></span></p>
  306.         <p class="MsoNormal" style="text-align:justify">
  307.         <span lang="EN-GB" style="font-size:8.0pt;font-family:"Courier New"">  
  308.         push ebp;         // save the 
  309.         start address of the key data array for later<br>
  310.   mov eax,123;             
  311.         // load offset: constant data which was calculated by the compiler<br>
  312.   add ebp,eax;<br>
  313.         </span>
  314.         <span style="font-size:8.0pt;font-family:"Courier New""> </span><span lang="EN-GB" style="font-size: 8.0pt; font-family: Courier New"> 
  315.         mov eax,[ebp+0];  // load key[ebp+0] in AL and key[ebp+1] in the 
  316.         next upper byte of eax and<br>
  317.         </span>
  318.         <span lang="EN-GB" style="font-size:8.0pt;font-family:"Courier New"">                    
  319.         // so on up to key[ebp+3]<br>
  320.   xor ebx,eax;             
  321.         // this instruction can be replaced by another or a set of instructions<br>
  322.   xor [ebp+x],ebx;  // change the key data array frequently; x is 
  323.         defined by the compiler and<br>
  324.                    
  325.         </span>
  326.         <span lang="EN-GB" style="font-size: 8.0pt; font-family: Courier New">// 
  327.         chooses one element of the key<br>
  328.         </span>
  329.         <span lang="EN-GB" style="font-size:8.0pt;font-family:"Courier New"">  
  330.         pop ebp;          // 
  331.         restore start address of the key data array</span></p>
  332.         <p class="MsoNormal" style="text-align:justify">
  333.         <font size="2" face="Arial">Instead of xor it is of course possible to 
  334.         calculate sums, to perform shifts, multiplications and modulo divisions, 
  335.         as well as to calculate pseudorandom numbers with more complex 
  336.         instruction combinations. A good implementation of the presented method 
  337.         should rely on a set of building blocks which change a lot of key bytes 
  338.         and not just 32 bit. Simple xor instructions, as well as addition and 
  339.         subtraction are cryptographically weak, but the general code assembly 
  340.         method can be demonstrated best with these. <br>
  341.         <br>
  342.         Instructions should alter the key quite frequently for not to offer the 
  343.         possibility to cryptoanalyze it by using a ciphertext codebook. When the 
  344.         method is used as pseudo random number generator, the result in ebx can 
  345.         be further processed. The internal state represented by the key data 
  346.         array is big enough for not to be directly or indirectly exposed. </font>
  347.         </p>
  348.         <p align="justify"><font size="2" face="Arial">An example for a much 
  349.         more cryptographically safe building block is a CRC32 implementation:  
  350.         </font></p>
  351.         <p align="justify"><font size="2" face="Arial">The function calculates a 
  352.         32 bit CRC according to IEEE 802. The polynomial is: x32 + x26 + x23 + 
  353.         x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 +x + 1. X32 does of 
  354.         course not exist and the 1 only inverts the input data. Thus, the 
  355.         polynomial can be written as: $04C11DB7 </font></p>
  356.         <p class="MsoNormal">
  357.         <span lang="EN-GB" style="font-size:8.0pt;font-family:"Courier New"">  
  358.         push ebp;         // ebp MUST 
  359.         never be really destroyed<br>
  360.   and  eax,127;     // perform an operation with 
  361.         four key bytes at a time using eax from the<br>
  362.                        
  363.         previous instruction block<br>
  364.   add  ebp,eax;<br>
  365.   mov  eax,[ebp+0]; // load key[ebp+0] in AL and key[ebp+1] in the 
  366.         next upper byte of eax<br>
  367.         </span>
  368.         <span style="font-size:8.0pt;font-family:"Courier New"">                   
  369.         </span>
  370.         <span lang="EN-GB" style="font-size: 8.0pt; font-family: Courier New">   
  371.         and so on up to key[ebp+3]<br>
  372.         </span>
  373.         <span lang="EN-GB" style="font-size:8.0pt;font-family:"Courier New"">  
  374.         mov  esi,ebp;     // save ebp for later to 
  375.         alter the key<br>
  376.   pop  ebp;         // get 
  377.         original base of the key data array<br>
  378.   push ebp;         // restore 
  379.         stack frame<br>
  380.   push ebx;         // save ebx for 
  381.         later<br>
  382.   mov  ecx,32;      // counter for the loop<br>
  383.         </span>
  384.         <span style="font-size:8.0pt;font-family:"Courier New""> </span><span lang="EN-GB" style="font-size: 8.0pt; font-family: Courier New"> 
  385.         xor  edx,edx;     // edx is used to clear the 
  386.         zero flag before the loop @rep1 command below<br>
  387.         </span>
  388.         <span lang="EN-GB" style="font-size:8.0pt;font-family:"Courier New"">
  389.         @rep1:rcl ebx,1;    // shift data in from ebx<br>
  390.         </span>
  391.         <span style="font-size:8.0pt;font-family:"Courier New""> </span><span lang="EN-GB" style="font-size: 8.0pt; font-family: Courier New"> 
  392.         rcl  eax,1;       // use eax as CRC 
  393.         buffer<br>
  394.         </span>
  395.         <span lang="EN-GB" style="font-size:8.0pt;font-family:"Courier New"">  
  396.         jnc  @cnt1;       // CRC decision<br>
  397.   xor  eax,$04C11DB7;      // xor with IEEE 
  398.         802 generator polynomial<br>
  399.         @cnt1:add dl,1;     // clear Zero-Flag (will be 
  400.         rarely necessary)<br>
  401.   loop @rep1;<br>
  402.   pop  ebx;         // restore 
  403.         old ebx value. ebx keeps a running 32 bit result<br>
  404.   mov  ebp,esi;     // get the address of the 
  405.         previously selected key data bytes<br>
  406.   mov  [ebp+0],eax; // alter the key<br>
  407.   xor  ebx,eax;     // alter ebx<br>
  408.   // here is the end of the CRC routine<br>
  409.   pop   ebp;         // 
  410.         exit the routine by restoring the original ebp<br>
  411.         <br>
  412.         </span><font face="Arial" size="2">The presented building block only 
  413.         affects four key data bytes. Depending on the size of the key data array 
  414.         it should affect much more key bits for good attack security. It is very 
  415.         simple to extend the routine for satisfying this demand. </font></p>
  416.         <p align="justify"><font face="Arial" size="2">It is possible to add 
  417.         loops over one or more instruction blocks. This is usually performed by 
  418.         adding the 80386 loopne-command. The method spends more time on 
  419.         crunching instructions and that simply slows it down in order to make 
  420.         cryptoanalysis a time-consuming job. By altering ebp with every loop 
  421.         cycle, the key can influence the algorithm more often. </font></p>
  422.         <p align="justify"><font face="Arial" size="2">8192 bit keys are 
  423.         definitely too long. The increase in security with so many key bits is 
  424.         negligible compared to 256 bit. Uncrackable is simply uncrackable. In 
  425.         spite of this, the implementation of PMC in ciphers.deÆs BPP file 
  426.         encryption tool comes with this key size. Why not? </font></p>
  427.         <p class="MsoNormal" style="text-align:justify"><b>
  428.         <span lang="EN-GB" style="font-size:12.0pt;font-family:Arial">Attack 
  429.         security</span></b><span lang="EN-GB" style="font-family:Arial"> </span></p>
  430.         <p class="MsoNormal" style="text-align:justify">
  431.         <span lang="EN-GB" style="font-family:Arial"><font size="2">Each 
  432.         instruction affects at least 32 bits of data and sometimes it alters the 
  433.         key.</font></span></p>
  434.         <p class="MsoNormal" style="text-align:justify">
  435.         <span lang="EN-GB" style="font-family:Arial"><font size="2">If there are 
  436.         only 4 cryptographic instruction blocks and 16 of these blocks can be 
  437.         assembled chaotically one after the other, there exist 4<sup>16</sup> = 
  438.         4294967296 different possibilities for the actual encryption algorithm! 
  439.         If 128 instruction blocks were to be assembled, a choice of 4<sup>128</sup> 
  440.         = 1,158*10<sup>77</sup> combinations would result (standard 128 bit 
  441.         encryption yields a total of 3,403*10<sup>38</sup>).</font></span></p>
  442.         <p class="MsoNormal" style="text-align:justify">
  443.         <span lang="EN-GB" style="font-family:Arial"><font size="2">It is 
  444.         important to note that this is without affecting execution time because 
  445.         there is the requirement for a well-shuffled key data array which must 
  446.         be guaranteed by conventional algorithms as well.</font></span></p>
  447.         <p class="MsoNormal" style="text-align:justify">
  448.         <span lang="EN-GB" style="font-family:Arial"><font size="2">The 
  449.         Polymorphic Method features a substancially higher attack security than 
  450.         any conventional method. In order to calculate the total attack 
  451.         security, the number of code combinations must be multiplied by the 
  452.         number of key combinations. Key size may be 16 bytes = 128 bits; thus 
  453.         there exist 2<sup>128</sup> = 3,403*10<sup>38</sup> combinations for the 
  454.         key stored in the key data array. The two keyspaces multiplied yield 
  455.         1,158*10<sup>77</sup> * 3,403*10<sup>38</sup> = 3,913*10<sup>115</sup> 
  456.         possible key combinations for the Polymorphic Method.</font></span></p>
  457.         <p class="MsoNormal" style="text-align:justify">
  458.         <span lang="EN-GB" style="font-family:Arial"><font size="2">In order to 
  459.         compare conventional cryptographic methods with the Polymorphic Method, 
  460.         the total keyspaces must be compared. As both methods are assumed to 
  461.         work on a 128 bit <u>data</u> key, this comparison is legal. Thus, the 
  462.         polymorphic method beats any conventional method by a factor of 3,913*10<sup>115</sup> 
  463.         / 3,403*10<sup>38</sup> = 1,150*10<sup>77 </sup> (!). This is more than 
  464.         the number of atoms on our planet!</font></span></p>
  465.         <p class="MsoNormal" style="text-align:justify">
  466.         <span lang="EN-GB" style="font-family:Arial"><font size="2">The actual 
  467.         implementation in the cryptographic program äBest Possible Privacyô uses 
  468.         32 instructions and three bit of constant data per instruction. Thus, 
  469.         there are 32 ways to affect the algorithm multiplied by 8 possibilities 
  470.         for constant data => 256 = 2<sup>8</sup> variations</font></span></p>
  471.         <p class="MsoNormal" style="text-align:justify">
  472.         <span lang="EN-GB" style="font-family:Arial"><font size="2">If the 
  473.         algorithm is limited to 1024 instruction blocks, there are 2<sup>(1024 * 
  474.         8)</sup> = 2<sup>8192</sup> different code combinations possible and 
  475.         equally probable! The 256 byte keyspace further enhances attack security 
  476.         to yield 2<sup>8192</sup> * 2<sup>2048 </sup>= 2<sup>10240</sup>. Note 
  477.         that nearly 100% of the security comes from the compiler. The new method 
  478.         uses commonly known techniques but enhances them significantly.</font></span></p>
  479.         <p class="MsoNormal" style="text-align:justify"><b>
  480.         <span lang="EN-GB" style="font-size:12.0pt;font-family:Arial">Attacks 
  481.         and their likelyhood of success on the Polymorphic Method</span></b></p>
  482.         <p class="MsoNormal" style="text-align:justify">
  483.         <span lang="EN-GB" style="font-family:Arial"><font size="2">Attacks are 
  484.         not algorithms, but instead just general approaches which must be 
  485.         reinvented for every new type of </font></span><font size="2">
  486.         <span style="font-family:Arial">c</span><span lang="EN-GB" style="font-family: Arial">ipher.</span><span style="font-family:Arial"><br>
  487.         I</span></font><span lang="EN-GB" style="font-family:Arial"><font size="2">t 
  488.         is generally assumed that The Opponent knows the design of the cipher 
  489.         and has virtually any amount of plaintext and corresponding ciphertext 
  490.         ("known plaintext"). It is further assumed that The Opponent has the 
  491.         real-time ability to obtain "defined plaintext" by enciphering messages 
  492.         at will and collecting the resulting ciphertext.</font></span></p>
  493.         <p class="MsoNormal" style="text-align:justify"><b>
  494.         <span lang="EN-GB" style="font-family:Arial">Exhaustive Search (Brute 
  495.         Force on the keys)</span></b></p>
  496.         <p class="MsoNormal" style="text-align:justify">
  497.         <span lang="EN-GB" style="font-family:Arial"><font size="2">Try each 
  498.         possible key until the message deciphers properly. Try most-likely keys 
  499.         first.</font></span></p>
  500.         <p class="MsoNormal" style="text-align:justify">
  501.         <span lang="EN-GB" style="font-family:Arial"><font size="2">A keyspace 
  502.         of at least 128 bits should be sufficient to prevent exhaustive search 
  503.         in the foreseeable future. The keying system for the Polymorphic Method 
  504.         is hard to implement with less than 256 bits and has usually a keyspace 
  505.         substancially beyond this value - around 2048 bits, not counting the key 
  506.         combinations for the instruction key which usually provide more than 
  507.         99.9999999999% of the total security.</font></span></p>
  508.         <p class="MsoNormal" style="text-align:justify"><b>
  509.         <span lang="EN-GB" style="font-family:Arial">Chosen Key</span></b></p>
  510.         <p class="MsoNormal" style="text-align:justify">
  511.         <span lang="EN-GB" style="font-family:Arial"><font size="2">Try various 
  512.         keys on known plaintext and compare the resulting ciphertext to the 
  513.         actual ciphertext, to try and build the correct key value.</font></span></p>
  514.         <p class="MsoNormal" style="text-align:justify">
  515.         <span lang="EN-GB" style="font-family:Arial"><font size="2">As the key 
  516.         is more or less the algorithm itself, the task of an opponent is 
  517.         hopeless because the one-way polymorphic function comes in different 
  518.         shapes with each key, which is so big, that there is no possibility to 
  519.         isolate and work separately on some kind of table. A computer can only 
  520.         be as big as there are atoms on this planet.</font></span></p>
  521.         <p class="MsoNormal" style="text-align:justify"><b>
  522.         <span lang="EN-GB" style="font-family:Arial">Ciphertext-Only Codebook</span></b></p>
  523.         <p class="MsoNormal" style="text-align:justify">
  524.         <span lang="EN-GB" style="font-family:Arial"><font size="2">Collect as 
  525.         many ciphertexts as possible and try to understand their contents 
  526.         through usage and relationships; then, when a ciphertext occurs, look it 
  527.         up. This treats the block cipher like a code, and is the classic 
  528.         approach to code-breaking.</font></span></p>
  529.         <p class="MsoNormal" style="text-align:justify">
  530.         <span lang="EN-GB" style="font-family:Arial"><font size="2">Just as some 
  531.         letters are more frequently used than others, words and phrases also 
  532.         have usage frequencies, as do blocks which contain plaintext. If the 
  533.         cipher block size is small (under 64 bytes), and if the ciphering key is 
  534.         not changed frequently, it may be possible to build a codebook of block 
  535.         values with their intended meanings.<br>
  536.         Codebook attacks of any sort are ideally prevented by having a large 
  537.         number of block values, which implies a large block size. Once the block 
  538.         size is at least, say, 64 bytes, it can be expected that the amount of 
  539.         uniqueness in each block exceeds anyone's ability to collect and form a 
  540.         codebook.<br>
  541.         Since the complexity of any sort of a codebook attack is related to 
  542.         block size only, doing "triple" anything will not affect increase this 
  543.         complexity. In particular, this means that Triple DES is no stronger 
  544.         than DES itself under this sort of attack, which is based on block size 
  545.         and not transformation complexity.<br>
  546.         The Polymorphic Method is best implemented with a 1024 byte block size 
  547.         and the instruction sequence changing with every block. The method is 
  548.         further ideal for producing a seed for some random number generator 
  549.         which decouples the algorithm from the generation of the confusion 
  550.         sequence. Because a Polymorphic Method comes in different shapes with 
  551.         each key, any kind of codebook will contain mostly noise and will not be 
  552.         of great use.</font></span></p>
  553.         <p class="MsoNormal" style="text-align:justify"><b>
  554.         <span lang="EN-GB" style="font-family:Arial">Known Plaintext</span></b></p>
  555.         <p class="MsoNormal" style="text-align:justify">
  556.         <span lang="EN-GB" style="font-family:Arial"><font size="2">Somehow 
  557.         "obtain" both the plaintext and the corresponding ciphertext for some 
  558.         large number of encipherings under one key.</font></span></p>
  559.         <p class="MsoNormal" style="text-align:justify">
  560.         <span lang="EN-GB" style="font-family:Arial"><font size="2">With this 
  561.         kind of attack, one plaintext-ciphertext pair contains sufficient 
  562.         information to obtain the content of the key data array. In order to 
  563.         identify a key, both keys must be guessed using the Exhaustive Search 
  564.         method.<br>
  565.         As both the input to the compiler as well as the keys are unknown, it is 
  566.         difficult to reveal the full internal state without revealing the 
  567.         underlying crypto system. The Polymorphic Method hides roughly three 
  568.         quarters of the internal state in the actual instruction code and that 
  569.         alone provides sufficient complexity. Note that a single known plaintext 
  570.         and ciphertext pair probably would identify a DES key!</font></span></p>
  571.         <p class="MsoNormal" style="text-align:justify"><b>
  572.         <span lang="EN-GB" style="font-family:Arial">Known-Plaintext Codebook</span></b></p>
  573.         <p class="MsoNormal" style="text-align:justify">
  574.         <span lang="EN-GB" style="font-family:Arial"><font size="2">Collect as 
  575.         many ciphertexts and associated plaintext blocks as possible; then, when 
  576.         a ciphertext occurs, look it up.</font></span></p>
  577.         <p class="MsoNormal" style="text-align:justify">
  578.         <span lang="EN-GB" style="font-family:Arial"><font size="2">Small block 
  579.         ciphers prevent codebook attacks by randomizing the plaintext (often 
  580.         with Cipher Block Chaining) so that the plaintext block values are 
  581.         distributed evenly across all possible block values.<br>
  582.         Codebook attacks are ideally prevented by having a large number of block 
  583.         values, which implies a large block size. To prevent this attack for the 
  584.         future, a block size of 64 bytes is regarded as safe so the uniqueness 
  585.         it does contain assures that there will be too many different blocks to 
  586.         catalog. A 1024 byte block size and the use of a confusion sequence 
  587.         generator with at least 64 byte internal state makes it impossible to 
  588.         gain any ground on this kind of attack.<br>
  589.         As the key is more or less the algorithm itself, the idea to create a 
  590.         table ends in logging noise.</font></span></p>
  591.         <p class="MsoNormal" style="text-align:justify"><b>
  592.         <span lang="EN-GB" style="font-family:Arial">Chosen Plaintext</span></b></p>
  593.         <p class="MsoNormal" style="text-align:justify">
  594.         <span lang="EN-GB" style="font-family:Arial"><font size="2">Without 
  595.         knowing the key, arrange to cipher data at will and capture the 
  596.         associated ciphertext. Dynamically modify the data to reveal the key, or 
  597.         keyed values in the cipher.</font></span></p>
  598.         <p class="MsoNormal" style="text-align:justify">
  599.         <span lang="EN-GB" style="font-family:Arial"><font size="2">The point 
  600.         here is not to decipher the associated ciphertext because the opponent 
  601.         is producing the original plaintext. If the opponents have chosen 
  602.         plaintext capabilities, they can probably also submit arbitrary 
  603.         ciphertext blocks for deciphering.<br>
  604.         The weakness to be exploited here usually depends upon the ciphering 
  605.         system beyond the core cipher per se - a point with little internal 
  606.         state. As far as the Polymorphic Method is concerned, there is no static 
  607.         algorithm with some known weakness. Instead, there are a lot of possible 
  608.         weaknesses û each possible keyed state. The Chosen Plaintext attack is 
  609.         not applicable here.</font></span></p>
  610.         <p class="MsoNormal" style="text-align:justify"><b>
  611.         <span lang="EN-GB" style="font-family:Arial">Chosen-Plaintext Codebook</span></b></p>
  612.         <p class="MsoNormal" style="text-align:justify">
  613.         <span lang="EN-GB" style="font-family:Arial"><font size="2">Create as 
  614.         many ciphertexts and associated plaintext blocks as possible; then, when 
  615.         a ciphertext occurs, look it up.</font></span></p>
  616.         <p class="MsoNormal" style="text-align:justify">
  617.         <span lang="EN-GB" style="font-family:Arial"><font size="2">This is much 
  618.         like the previous codebook attacks, now with the ability to fill the 
  619.         codebook at will and at electronic speeds. Again, the ability to do this 
  620.         depends upon the cipher having a relatively small block size and on a 
  621.         fixed cryptographic algorithm. This attack is again not applicable 
  622.         because itÆs simpler and equally efficient to try all possible keys.</font></span></p>
  623.         <p class="MsoNormal" style="text-align:justify"><b>
  624.         <span lang="EN-GB" style="font-family:Arial">Meet-in-the-Middle</span></b></p>
  625.         <p class="MsoNormal" style="text-align:justify">
  626.         <span lang="EN-GB" style="font-family:Arial"><font size="2">With a 
  627.         multi-layered structure, given known-or defined-plaintext, search the 
  628.         top keyspace to find every possible result, and search the bottom 
  629.         keyspace to find every possible value.</font></span></p>
  630.         <p class="MsoNormal" style="text-align:justify">
  631.         <span lang="EN-GB" style="font-family:Arial"><font size="2">With a 
  632.         two-level construct and a small block size, matches can be verified with 
  633.         a few subsequent known-plaintext/ciphertext pairs. Of course, three and 
  634.         more-level constructs can always be partitioned into two sections so a 
  635.         meet-in-the-middle attack can always be applied; this just may be pretty 
  636.         complex.<br>
  637.         As each layer in a good crypto algorithm contains a huge amount of keyed 
  638.         state or äkeyspaceô, the Polymorphic Method uses a large key and 
  639.         consequently adds a huge amount of unknown algorithm which multiplies 
  640.         with in the beginning unknown data keyspace to yield extraordinary 
  641.         complexity.</font></span></p>
  642.         <p class="MsoNormal" style="text-align:justify"><b>
  643.         <span lang="EN-GB" style="font-family:Arial">Key Bit Bias</span></b></p>
  644.         <p class="MsoNormal" style="text-align:justify">
  645.         <span lang="EN-GB" style="font-family:Arial"><font size="2">Through 
  646.         extensive ciphering of fixed plaintext data under a variety of different 
  647.         keys, it may sometimes be possible to associate key bits with the 
  648.         statistical value of some ciphertext bits. This knowledge will break a 
  649.         conventional cipher quickly.<br>
  650.         As different keys inevitably produce different cipher algorithms, 
  651.         statistics cannot help to link ciphertext with plaintext. ThereÆs simply 
  652.         a new independent variable in the game with the Polymorphic Method as 
  653.         each key state has some pretty unique weakness.</font></span></p>
  654.         <p class="MsoNormal" style="text-align:justify"><b>
  655.         <span lang="EN-GB" style="font-family:Arial">Differential Cryptanalysis</span></b></p>
  656.         <p class="MsoNormal" style="text-align:justify">
  657.         <span lang="EN-GB" style="font-family:Arial"><font size="2">Exploit 
  658.         known properties of particular known substitution tables to effectively 
  659.         reduce the number of "rounds" in an iterated block cipher.</font></span></p>
  660.         <p class="MsoNormal" style="text-align:justify">
  661.         <span lang="EN-GB" style="font-family:Arial"><font size="2">The original 
  662.         form of Differential Cryptanalysis mainly applies to iterated block 
  663.         ciphers with known tables, neither of which are present here. For an 
  664.         iterative cipher like DES, statistical unbalance can be found in known, 
  665.         fixed substitutions and that can be exploited to peer back into previous 
  666.         iteration steps.<br>
  667.         For the Polymorphic Cipher Method, each different input value will 
  668.         actually select a different cipher, and this results in a completely 
  669.         variable transformation. It is hard and very inefficient to attack a 
  670.         transformation which changes itÆs structure completely whenever it is 
  671.         probed.</font></span></p>
  672.         <p class="MsoNormal" style="text-align:justify"><b>
  673.         <span lang="EN-GB" style="font-family:Arial">Summary</span></b></p>
  674.         <p class="MsoNormal" style="text-align:justify">
  675.         <span lang="EN-GB" style="font-family:Arial"><font size="2">Except for 
  676.         the possibility to gain knowledge of the final state of the key data 
  677.         array in the basic configuration, there is nothing else to find out. 
  678.         There is no possibility to identify a key other than by searching 
  679.         exhaustively. The available keyspace is much greater than for any other 
  680.         cryptographic method. In order to compare the presented method with 
  681.         conventional methods, a conventional method has some data keyspace and 
  682.         only one possibility for the algorithm. The presented Polymorphic Method 
  683.         has the same data keyspace and an additional algorithm keyspace. All in 
  684.         all, the new method features a dramatic increase in security compared to 
  685.         common approaches.<br>
  686.         It is worth imagining that cryptographically strong ciphers like DES, 
  687.         GOST, IDEA; Hashes, etc. are the building blocks of the Polymorphic 
  688.         Method. The weaknesses of each specific building block would vanish. The 
  689.         result would probably be a perfect cipher.</font></span></p>
  690.         <p class="MsoNormal" style="text-align:justify"><b>
  691.         <span style="font-size:12.0pt;
  692. font-family:Arial">Speed</span></b></p>
  693.         <p align="justify">
  694.         <img border="0" src="img/pmc_speed.gif" width="800" height="600"></p>
  695.         <p align="justify"><font size="2" face="Arial">The original 
  696.         implementation of PMC in the BPP file encryption tool is by far too slow 
  697.         when compared with the latest developments. The latest variant with 512 
  698.         bit key length is implemented in PMC Ciphers <i>BPP Disk Encryption</i>. 
  699.         This crypto engine comes with an encryption speed of 500Mbit/s, which is 
  700.         approximately 10 times the speed of AES (Rijndael algorithm) operating 
  701.         with 256 bit keys! <i>BPP Disk</i> is a hard disk encryption tool which 
  702.         adds encrypted file-hosted volumes and encrypts raw NTFS partitions. It 
  703.         is available for Windows 2000 ,Windows XP and ôWindows 2003 Serverö 
  704.         operating systems.</font></p>
  705.         <p class="MsoNormal" style="text-align:justify"> </p>
  706.         <p class="MsoNormal" style="text-align:justify"><b>
  707.         <span lang="EN-GB" style="font-size:12.0pt;font-family:Arial">Conclusion</span></b></p>
  708.         <p><font face="Arial" size="2">For PMC, which was secret of state in 
  709.         1999 in Germany, there exists no attack other than exhaustive search. 
  710.         ThereÆs no theoretical or practical way to to reconstruct keys from 
  711.         plaintext.<br>
  712.         The presented method comes with a comparable number of ädata keysô as 
  713.         conventional symmetric encryption methods. It adds a significant amount 
  714.         of possible and equally probable algorithmic keys, thus yielding 
  715.         substancially higher security and speed. </font></p>
  716.         <p><font face="Arial" size="2">The 512 bit PMC crypto engine implemented 
  717.         in our product <i>BPP Disk Encryption </i>uses the most probably fastest 
  718.         encryption algorithm in the world! </font></td>
  719.       </tr>
  720.     </table>
  721.     </td>
  722.   </tr>
  723. </table>
  724.  
  725. </body>
  726.  
  727. </html>
  728.