<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-18669533</id><updated>2011-10-21T16:32:43.022+03:00</updated><title type='text'>RaSol</title><subtitle type='html'>Note de lectura criptografie</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>35</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-18669533.post-115934689279500795</id><published>2006-09-27T11:43:00.000+03:00</published><updated>2007-03-03T11:03:44.576+02:00</updated><title type='text'>Communication with Extraterrestrial Intelligence</title><content type='html'>Nu este o gluma. Este titlul unui raport NSA, ce face parte dintr-o lista mai lunga, recent declasificat.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-115934689279500795?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.thememoryhole.org/nsa/bibs.htm' title='Communication with Extraterrestrial Intelligence'/><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/115934689279500795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=115934689279500795&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/115934689279500795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/115934689279500795'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2006/09/communication-with-extraterrestrial.html' title='Communication with Extraterrestrial Intelligence'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-115891750904911261</id><published>2006-09-22T11:59:00.000+03:00</published><updated>2006-09-22T12:31:49.393+03:00</updated><title type='text'>Windows Vista's BitLocker Drive Encryption</title><content type='html'>AES-CBC + Elephant diffuser algorithm&lt;br&gt;

Daca folosesc laptop-ul:
&lt;UL&gt;
&lt;LI&gt;pentru a calcula banii de cosnita si il pierd, probabil ca vecina nu va fi capabila sa afle pretul la varza murata&lt;/LI&gt;
&lt;LI&gt;pentru a face o analiza de piata, probabil ca nici concurenta nu va fi in stare sa afle ceva&lt;/LI&gt;
&lt;/UL&gt;
Daca am de a face cu domenii cu adevarat sensibile, probabil ca am grija sa nu pierd laptop-ul si in mod sigur folosesc unelte adevarate pentru a-mi proteja datele.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-115891750904911261?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.microsoft.com/downloads/details.aspx?familyid=131dae03-39ae-48be-a8d6-8b0034c92555&amp;displaylang=en' title='Windows Vista&apos;s BitLocker Drive Encryption'/><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/115891750904911261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=115891750904911261&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/115891750904911261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/115891750904911261'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2006/09/windows-vistas-bitlocker-drive.html' title='Windows Vista&apos;s BitLocker Drive Encryption'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-115712792906934602</id><published>2006-09-01T19:22:00.000+03:00</published><updated>2006-09-01T19:25:35.893+03:00</updated><title type='text'>Bruce Scheneier, Security Engineering</title><content type='html'>Nu am citit-o inca dar cred ca merita citita ...
&lt;a href="http://www.cl.cam.ac.uk/%7Erja14/book.html"&gt;cartea&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-115712792906934602?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/115712792906934602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=115712792906934602&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/115712792906934602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/115712792906934602'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2006/09/bruce-scheneier-security-engineering.html' title='Bruce Scheneier, Security Engineering'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113821124467916138</id><published>2006-01-25T19:38:00.000+02:00</published><updated>2006-01-25T19:47:26.406+02:00</updated><title type='text'>Ex: criptare fisier sau sir cu AES128, CBC, PKCS5Padding</title><content type='html'>&lt;br&gt;import java.security.*;
&lt;br&gt;import javax.crypto.*; 
&lt;br&gt;import javax.crypto.spec.*; 
&lt;br&gt;import java.io.*; 

&lt;br&gt;public class AES { 
&lt;br&gt;    private byte functiune;
&lt;br&gt;    private Cipher cifrul;
&lt;br&gt;    SecretKey cheia;
&lt;br&gt;    byte[] IVul; 
&lt;br&gt;    public AES(byte ceFunctiune , byte[] pCheia , byte[] PIVul) throws Exception{
&lt;br&gt;        functiune =ceFunctiune;
&lt;br&gt;        switch(functiune) {
&lt;br&gt;            case 'C': initCriptare();
&lt;br&gt;                      break;
&lt;br&gt;            case 'D': initDecriptare( pCheia , PIVul );
&lt;br&gt;                      break;
&lt;br&gt;            default:  throw new Exception("apel gresit constructor AES");
&lt;br&gt;        }
&lt;br&gt;    }
&lt;br&gt;
&lt;br&gt;    private void initCriptare(){
&lt;br&gt;        try {
&lt;br&gt;            KeyGenerator kgen = KeyGenerator.getInstance("AES"); 
&lt;br&gt;            kgen.init(128); 
&lt;br&gt;            cheia = kgen.generateKey(); 
&lt;br&gt;            //SecretKeyFactory fabrica = SecretKeyFactory.getInstance("AES");
&lt;br&gt;            cifrul = Cipher.getInstance("AES/CBC/PKCS5Padding"); 
&lt;br&gt;            cifrul.init(Cipher.ENCRYPT_MODE, cheia);
&lt;br&gt;            IVul = cifrul.getIV();
&lt;br&gt;        } catch ( NoSuchAlgorithmException e) {
&lt;br&gt;            System.out.println( "exceptie algoritm AES" );
&lt;br&gt;        } catch ( NoSuchPaddingException e ) {
&lt;br&gt;            System.out.println( "exceptie aliniere AES" );
&lt;br&gt;        } catch( InvalidKeyException e) {
&lt;br&gt;            System.out.println( "exceptie cheie AES" );
&lt;br&gt;        }
&lt;br&gt;    }
&lt;br&gt;
&lt;br&gt;    private void initDecriptare( byte[] pCheia , byte[] PIVul){
&lt;br&gt;        try {
&lt;br&gt;            cheia = new SecretKeySpec(pCheia, "AES");
&lt;br&gt;            IVul = PIVul.clone(); 
&lt;br&gt;            cifrul = Cipher.getInstance("AES/CBC/PKCS5Padding"); 
&lt;br&gt;            cifrul.init(Cipher.DECRYPT_MODE, cheia , new IvParameterSpec(IVul) ); 
&lt;br&gt;        } catch ( NoSuchAlgorithmException e) {
&lt;br&gt;            System.out.println( "exceptie algoritm AES" );
&lt;br&gt;        } catch ( NoSuchPaddingException e ) {
&lt;br&gt;            System.out.println( "exceptie aliniere AES" );
&lt;br&gt;        } catch( InvalidKeyException e) {
&lt;br&gt;            System.out.println( "exceptie cheie AES" );
&lt;br&gt;        } catch( InvalidAlgorithmParameterException e) {
&lt;br&gt;            System.out.println( "exceptie vector initializare AES" );
&lt;br&gt;        }
&lt;br&gt;
&lt;br&gt;    }
&lt;br&gt;
&lt;br&gt;    public byte[] getSpecificatiaCheii() {
&lt;br&gt;        return cheia.getEncoded();
&lt;br&gt;    }
&lt;br&gt;
&lt;br&gt;    public byte[] getIV() {
&lt;br&gt;        return IVul.clone();
&lt;br&gt;    }
&lt;br&gt;
&lt;br&gt;    public static String asHex (byte buf[]) { 
&lt;br&gt;        StringBuffer strbuf = new StringBuffer(buf.length * 2);
&lt;br&gt;        int i; 
&lt;br&gt;        for (i = 0; i &lt; buf.length; i++) { 
&lt;br&gt;            if (((int) buf[i] &amp; 0xff) &lt; 0x10) 
&lt;br&gt;                strbuf.append("0"); 
&lt;br&gt;            strbuf.append(Long.toString((int) buf[i] &amp; 0xff, 16)); 
&lt;br&gt;        }
&lt;br&gt;        return strbuf.toString(); 
&lt;br&gt;    }
&lt;br&gt;
&lt;br&gt;    public String actioneaza(byte pTip , String sursa , String destinatie) throws Exception {
&lt;br&gt;        String result = null;
&lt;br&gt;        switch(pTip) {
&lt;br&gt;            case 'F': switch(functiune) {
&lt;br&gt;                          case 'C': try {
&lt;br&gt;                                        FileInputStream fin = new FileInputStream(sursa);
&lt;br&gt;                                        FileOutputStream fout = new FileOutputStream(destinatie);
&lt;br&gt;                                        encryptStream(fin, fout);
&lt;br&gt;                                        result = new String("criptat fisierul "+sursa+" in fisierul"+destinatie);
&lt;br&gt;                                    } catch (FileNotFoundException e) {
&lt;br&gt;                                        System.out.println("fisere negasite la criptare AES");
&lt;br&gt;                                    };
&lt;br&gt;                                    break;
&lt;br&gt;                          case 'D': try {
&lt;br&gt;                                        FileInputStream fin = new FileInputStream(sursa);
&lt;br&gt;                                        FileOutputStream fout = new FileOutputStream(destinatie);
&lt;br&gt;                                        decryptStream(fin, fout);
&lt;br&gt;                                        result = new String("decriptat fisierul "+sursa+" in fisierul"+destinatie);
&lt;br&gt;                                    } catch (FileNotFoundException e) {
&lt;br&gt;                                        System.out.println("fisere negasite la decriptare AES");
&lt;br&gt;                                    };
&lt;br&gt;                                    break;
&lt;br&gt;                      };
&lt;br&gt;                      break;
&lt;br&gt;            case 'S': switch(functiune) {
&lt;br&gt;                          case 'C': result = encryptString(sursa);
&lt;br&gt;                                    result = new String("criptat sirul "+sursa+" cu reprezentarea "+
&lt;br&gt;                                                            asHex(sursa.getBytes())+" in sirul cu reprezentarea "+
&lt;br&gt;                                                            asHex(result.getBytes()));
&lt;br&gt;                                    break;
&lt;br&gt;                          case 'D': result = decryptString(sursa);
&lt;br&gt;                                    result = new String("decriptat sirul cu reprezentarea "+
&lt;br&gt;                                                            asHex(sursa.getBytes())+" in sirul"+result+
&lt;br&gt;                                                            "cu reprezentarea "+
&lt;br&gt;                                                            asHex(result.getBytes()));
&lt;br&gt;                                    break;
&lt;br&gt;                      }
&lt;br&gt;                      break;
&lt;br&gt;            default:  throw new Exception("apel gresit actioneaza AES");
&lt;br&gt;        }
&lt;br&gt;        return result;
&lt;br&gt;    }
&lt;br&gt;
&lt;br&gt;    // metoda criptare String
&lt;br&gt;    private String encryptString(String sursa) {
&lt;br&gt;        String result = null;
&lt;br&gt;        try {
&lt;br&gt;            // Encode the string into bytes using utf-8
&lt;br&gt;            byte[] utf8 = sursa.getBytes("UTF8");
&lt;br&gt;
&lt;br&gt;            // Encrypt
&lt;br&gt;            byte[] enc = cifrul.doFinal(utf8);
&lt;br&gt;
&lt;br&gt;            // Encode bytes to base64 to get a string
&lt;br&gt;            return new sun.misc.BASE64Encoder().encode(enc);
&lt;br&gt;        } catch (javax.crypto.BadPaddingException e) {
&lt;br&gt;            System.out.println("eroare aliniere la criptare sir AES");
&lt;br&gt;        } catch (IllegalBlockSizeException e) {
&lt;br&gt;            System.out.println("eroare dimenisune bloc la criptare sir AES");
&lt;br&gt;        } catch (UnsupportedEncodingException e) {
&lt;br&gt;            System.out.println("eroare codificare la criptare sir AES");
&lt;br&gt;        } catch (java.io.IOException e) {
&lt;br&gt;            System.out.println("eroare IO la criptare sir AES");
&lt;br&gt;        }
&lt;br&gt;        return result;
&lt;br&gt;    }
&lt;br&gt;    
&lt;br&gt;    // metoda decriptare String
&lt;br&gt;    private String decryptString(String sursa) {
&lt;br&gt;        String result = null;
&lt;br&gt;        try {
&lt;br&gt;            byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(sursa);
&lt;br&gt;            byte[] utf8 = cifrul.doFinal(dec);
&lt;br&gt;            return new String(utf8, "UTF8");
&lt;br&gt;        } catch (javax.crypto.BadPaddingException e) {
&lt;br&gt;            System.out.println("eroare aliniere la decriptare sir AES");
&lt;br&gt;        } catch (IllegalBlockSizeException e) {
&lt;br&gt;            System.out.println("eroare dimenisune bloc la decriptare sir AES");
&lt;br&gt;        } catch (UnsupportedEncodingException e) {
&lt;br&gt;            System.out.println("eroare codificare la decriptare sir AES");
&lt;br&gt;        } catch (java.io.IOException e) {
&lt;br&gt;            System.out.println("eroare IO la decriptare sir AES");
&lt;br&gt;        }
&lt;br&gt;        return result;
&lt;br&gt;    }
&lt;br&gt;
&lt;br&gt;    // metoda criptare Stream
&lt;br&gt;    private void encryptStream(InputStream in, OutputStream out) { 
&lt;br&gt;        byte[] buf = new byte[1024];
&lt;br&gt;        try { 
&lt;br&gt;            out = new CipherOutputStream(out, cifrul);
&lt;br&gt;            int numRead = 0;
&lt;br&gt;            while ((numRead = in.read(buf)) &gt;= 0) { 
&lt;br&gt;                out.write(buf, 0, numRead);
&lt;br&gt;            }
&lt;br&gt;            out.close(); 
&lt;br&gt;        } catch (java.io.IOException e) {
&lt;br&gt;        }
&lt;br&gt;    }
&lt;br&gt;
&lt;br&gt;    // metoda decriptare Stream
&lt;br&gt;    private void decryptStream(InputStream in, OutputStream out) {
&lt;br&gt;        byte[] buf = new byte[1024];
&lt;br&gt;        try {
&lt;br&gt;            in = new CipherInputStream(in, cifrul);
&lt;br&gt;            int numRead = 0; 
&lt;br&gt;            while ((numRead = in.read(buf)) &gt;= 0) {
&lt;br&gt;                out.write(buf, 0, numRead); 
&lt;br&gt;            }
&lt;br&gt;            out.close(); 
&lt;br&gt;        } catch (java.io.IOException e) {
&lt;br&gt;        }
&lt;br&gt;     } 
&lt;br&gt;
&lt;br&gt;} 

&lt;br&gt;public class TestAES{
&lt;br&gt;    public static void main(String[] args){
&lt;br&gt;        if (args.length == 2) {
&lt;br&gt;        try{
&lt;br&gt;            AES criptor = new AES((byte)'C', new String("").getBytes() , new String("").getBytes());
&lt;br&gt;            System.out.println("Cheia utilizata: "+AES.asHex(criptor.getSpecificatiaCheii()));
&lt;br&gt;            System.out.println("Vectorul de initializare: "+AES.asHex(criptor.getIV()));
&lt;br&gt;            System.out.println( criptor.actioneaza((byte)'F' , args[0] , args[1]) );
&lt;br&gt;            System.out.println( criptor.actioneaza((byte)'S' , args[0] , new String("")) );            
&lt;br&gt;
&lt;br&gt;            byte[] spec = criptor.getSpecificatiaCheii();
&lt;br&gt;            byte[] iv = criptor.getIV();
&lt;br&gt;            AES decriptor = new AES((byte)'D', spec , iv);
&lt;br&gt;            String numeFisNou = new String(args[0]+"copie");
&lt;br&gt;            System.out.println( decriptor.actioneaza((byte)'F' , args[1] , numeFisNou) );
&lt;br&gt;        } catch(Exception e) {
&lt;br&gt;            System.out.println(e.toString());
&lt;br&gt;        }
&lt;br&gt;        } else {
&lt;br&gt;            System.out.println("apelul este de forma: TestAES fisierIntrare fisierIesire");
&lt;br&gt;        }
&lt;br&gt;    }
&lt;br&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113821124467916138?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113821124467916138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113821124467916138&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113821124467916138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113821124467916138'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2006/01/ex-criptare-fisier-sau-sir-cu-aes128.html' title='Ex: criptare fisier sau sir cu AES128, CBC, PKCS5Padding'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113818634246265542</id><published>2006-01-25T12:51:00.000+02:00</published><updated>2006-01-25T12:55:26.413+02:00</updated><title type='text'>Ex: listarea serviciilor</title><content type='html'>&lt;UL&gt;
&lt;LI&gt;codul sursa
&lt;br&gt;import java.util.*;
&lt;br&gt;import java.security.*;
&lt;br&gt;import javax.crypto.*;
&lt;br&gt;import java.io.*;
&lt;br&gt;
&lt;br&gt;public class ListareServicii{
&lt;br&gt;
&lt;br&gt;    // metoda ce returneaza serviciile pentru toti furnizorii de servicii de criptografie instalati
&lt;br&gt;    // sub forma unui array de String-uri
&lt;br&gt;    public static String[] getServiceTypes() {
&lt;br&gt;        Set result = new HashSet();
&lt;br&gt;        Provider[] providers = Security.getProviders();
&lt;br&gt;        // si pentru fiecare
&lt;br&gt;        for (int i=0; i&amp;#60providers.length; i++) { 
&lt;br&gt;            // construiesc lista cu descrierile native ale serviciilor
&lt;br&gt;            Set&lt;Provider.Service&gt; serviciile = providers[i].getServices();
&lt;br&gt;            for ( Iterator it=serviciile.iterator(); it.hasNext();  ) {
&lt;br&gt;                Provider.Service serviciul = (Provider.Service)it.next(); 
&lt;br&gt;                result.add(serviciul.toString());
&lt;br&gt;            }
&lt;br&gt;        }
&lt;br&gt;        return (String[])result.toArray(new String[result.size()]);
&lt;br&gt;    } 
&lt;br&gt;
&lt;br&gt;    // main-ul
&lt;br&gt;    public static void main(String[] argumente) {
&lt;br&gt;
&lt;br&gt;        // afisare servicii si implementarile lor
&lt;br&gt;        ListareServicii testul = new ListareServicii();
&lt;br&gt;        String[] serviciile = testul.getServiceTypes();
&lt;br&gt;        for (int i=0; i&amp;#60serviciile.length; i++) {
&lt;br&gt;            System.out.println("Serviciul este: "+serviciile[i]);
&lt;br&gt;        }
&lt;br&gt;    }
&lt;br&gt;
&lt;br&gt;}
&lt;/LI&gt;
&lt;LI&gt;exemplu rulare
&lt;UL&gt;
&lt;LI&gt;
Serviciul este: SunJCE: Cipher.PBEWithSHA1AndRC2_40 -&gt; com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndRC2_40
  aliases: [OID.1.2.840.113549.1.12.1.6, 1.2.840.113549.1.12.1.6]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: AlgorithmParameters.DESede -&gt; com.sun.crypto.provider.DESedeParameters
  aliases: [TripleDES]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: SecretKeyFactory.DES -&gt; com.sun.crypto.provider.DESKeyFactory
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunSASL: SaslServerFactory.DIGEST-MD5 -&gt; com.sun.security.sasl.digest.FactoryImpl
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: SecretKeyFactory.PBEWithMD5AndDES -&gt; com.sun.crypto.provider.PBEKeyFactory
  aliases: [OID.1.2.840.113549.1.5.3, 1.2.840.113549.1.5.3]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: Mac.HmacSHA256 -&gt; com.sun.crypto.provider.HmacCore$HmacSHA256
  attributes: {SupportedKeyFormats=RAW}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJSSE: SSLContext.SSLv3 -&gt; com.sun.net.ssl.internal.ssl.SSLContextImpl
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJSSE: TrustManagerFactory.PKIX -&gt; com.sun.net.ssl.internal.ssl.TrustManagerFactoryImpl$PKIXFactory
  aliases: [SunPKIX, X509, X.509]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunRsaSign: Signature.SHA1withRSA -&gt; sun.security.rsa.RSASignature$SHA1withRSA
  aliases: [1.2.840.113549.1.1.5, OID.1.2.840.113549.1.1.5, 1.3.14.3.2.29]
  attributes: {SupportedKeyClasses=java.security.interfaces.RSAPublicKey|java.security.interfaces.RSAPrivateKey}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: KeyGenerator.DESede -&gt; com.sun.crypto.provider.DESedeKeyGenerator
  aliases: [TripleDES]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: KeyGenerator.ARCFOUR -&gt; com.sun.crypto.provider.KeyGeneratorCore$ARCFOURKeyGenerator
  aliases: [RC4]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: AlgorithmParameters.DES -&gt; com.sun.crypto.provider.DESParameters
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: MessageDigest.MD2 -&gt; sun.security.provider.MD2
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJSSE: SSLContext.TLS -&gt; com.sun.net.ssl.internal.ssl.SSLContextImpl
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: AlgorithmParameters.PBEWithSHA1AndRC2_40 -&gt; com.sun.crypto.provider.PBEParameters
  aliases: [OID.1.2.840.113549.1.12.1.6, 1.2.840.113549.1.12.1.6]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: CertificateFactory.X.509 -&gt; sun.security.provider.X509Factory
  aliases: [X509]
  attributes: {ImplementedIn=Software}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJSSE: Signature.MD2withRSA -&gt; sun.security.rsa.RSASignature$MD2withRSA
  aliases: [1.2.840.113549.1.1.2, OID.1.2.840.113549.1.1.2]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: Cipher.ARCFOUR -&gt; com.sun.crypto.provider.ARCFOURCipher
  aliases: [RC4]
  attributes: {SupportedModes=ECB, SupportedKeyFormats=RAW, SupportedPaddings=NOPADDING}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: Cipher.RSA -&gt; com.sun.crypto.provider.RSACipher
  attributes: {SupportedModes=ECB, SupportedKeyClasses=java.security.interfaces.RSAPublicKey|java.security.interfaces.RSAPrivateKey, SupportedPaddings=NOPADDING|PKCS1PADDING|OAEPWITHMD5ANDMGF1PADDING|OAEPWITHSHA1ANDMGF1PADDING|OAEPWITHSHA-1ANDMGF1PADDING|OAEPWITHSHA-256ANDMGF1PADDING|OAEPWITHSHA-384ANDMGF1PADDING|OAEPWITHSHA-512ANDMGF1PADDING}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: KeyStore.JKS -&gt; sun.security.provider.JavaKeyStore$JKS
  attributes: {ImplementedIn=Software}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: Mac.HmacSHA384 -&gt; com.sun.crypto.provider.HmacCore$HmacSHA384
  attributes: {SupportedKeyFormats=RAW}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: KeyGenerator.AES -&gt; com.sun.crypto.provider.AESKeyGenerator
  aliases: [Rijndael]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: Signature.NONEwithDSA -&gt; sun.security.provider.DSA$RawDSA
  aliases: [RawDSA]
  attributes: {SupportedKeyClasses=java.security.interfaces.DSAPublicKey|java.security.interfaces.DSAPrivateKey}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: Cipher.Blowfish -&gt; com.sun.crypto.provider.BlowfishCipher
  attributes: {SupportedModes=ECB|CBC|PCBC|CTR|CFB|OFB|CFB8|CFB16|CFB24|CFB32|CFB40|CFB48|CFB56|CFB64|OFB8|OFB16|OFB24|OFB32|OFB40|OFB48|OFB56|OFB64, SupportedKeyFormats=RAW, SupportedPaddings=NOPADDING|PKCS5PADDING|ISO10126PADDING}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJGSS: GssApiMechanism.1.2.840.113554.1.2.2 -&gt; sun.security.jgss.krb5.Krb5MechFactory
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: SecretKeyFactory.DESede -&gt; com.sun.crypto.provider.DESedeKeyFactory
  aliases: [TripleDES]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: KeyGenerator.Blowfish -&gt; com.sun.crypto.provider.BlowfishKeyGenerator
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: KeyGenerator.RC2 -&gt; com.sun.crypto.provider.KeyGeneratorCore$RC2KeyGenerator
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: Cipher.DESedeWrap -&gt; com.sun.crypto.provider.DESedeWrapCipher
  attributes: {SupportedModes=CBC, SupportedKeyFormats=RAW, SupportedPaddings=NOPADDING}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: AlgorithmParameters.RC2 -&gt; com.sun.crypto.provider.RC2Parameters
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: Cipher.AES -&gt; com.sun.crypto.provider.AESCipher
  aliases: [Rijndael]
  attributes: {SupportedModes=ECB|CBC|PCBC|CTR|CFB|OFB|CFB8|CFB16|CFB24|CFB32|CFB40|CFB48|CFB56|CFB64|OFB8|OFB16|OFB24|OFB32|OFB40|OFB48|OFB56|OFB64|CFB72|CFB80|CFB88|CFB96|CFB104|CFB112|CFB120|CFB128|OFB72|OFB80|OFB88|OFB96|OFB104|OFB112|OFB120|OFB128, SupportedKeyFormats=RAW, SupportedPaddings=NOPADDING|PKCS5PADDING|ISO10126PADDING}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: KeyGenerator.HmacMD5 -&gt; com.sun.crypto.provider.HmacMD5KeyGenerator
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: Mac.HmacMD5 -&gt; com.sun.crypto.provider.HmacMD5
  attributes: {SupportedKeyFormats=RAW}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: MessageDigest.MD5 -&gt; sun.security.provider.MD5
  attributes: {ImplementedIn=Software}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunRsaSign: Signature.SHA512withRSA -&gt; sun.security.rsa.RSASignature$SHA512withRSA
  aliases: [1.2.840.113549.1.1.13, OID.1.2.840.113549.1.1.13]
  attributes: {SupportedKeyClasses=java.security.interfaces.RSAPublicKey|java.security.interfaces.RSAPrivateKey}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: CertStore.LDAP -&gt; sun.security.provider.certpath.LDAPCertStore
  attributes: {ImplementedIn=Software, LDAPSchema=RFC2587}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJSSE: TrustManagerFactory.SunX509 -&gt; com.sun.net.ssl.internal.ssl.TrustManagerFactoryImpl$SimpleFactory
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: SecureRandom.SHA1PRNG -&gt; sun.security.provider.SecureRandom
  attributes: {ImplementedIn=Software}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: Cipher.PBEWithMD5AndTripleDES -&gt; com.sun.crypto.provider.PBEWithMD5AndTripleDESCipher
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: KeyStore.JCEKS -&gt; com.sun.crypto.provider.JceKeyStore
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: AlgorithmParameters.Blowfish -&gt; com.sun.crypto.provider.BlowfishParameters
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: SecretKeyFactory.PBEWithSHA1AndRC2_40 -&gt; com.sun.crypto.provider.PBEKeyFactory
  aliases: [OID.1.2.840.113549.1.12.1.6, 1.2.840.113549.1.12.1.6]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: Cipher.RC2 -&gt; com.sun.crypto.provider.RC2Cipher
  attributes: {SupportedModes=ECB|CBC|PCBC|CTR|CFB|OFB|CFB8|CFB16|CFB24|CFB32|CFB40|CFB48|CFB56|CFB64|OFB8|OFB16|OFB24|OFB32|OFB40|OFB48|OFB56|OFB64, SupportedKeyFormats=RAW, SupportedPaddings=NOPADDING|PKCS5PADDING|ISO10126PADDING}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJSSE: Signature.MD5andSHA1withRSA -&gt; com.sun.net.ssl.internal.ssl.RSASignature
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: SecretKeyFactory.PBEWithSHA1AndDESede -&gt; com.sun.crypto.provider.PBEKeyFactory
  aliases: [OID.1.2.840.113549.1.12.1.3, 1.2.840.113549.1.12.1.3]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: KeyGenerator.HmacSHA1 -&gt; com.sun.crypto.provider.HmacSHA1KeyGenerator
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: AlgorithmParameters.PBEWithMD5AndTripleDES -&gt; com.sun.crypto.provider.PBEParameters
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJSSE: KeyManagerFactory.SunX509 -&gt; com.sun.net.ssl.internal.ssl.KeyManagerFactoryImpl$SunX509
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: AlgorithmParameters.PBEWithMD5AndDES -&gt; com.sun.crypto.provider.PBEParameters
  aliases: [OID.1.2.840.113549.1.5.3, 1.2.840.113549.1.5.3]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: Signature.SHA1withDSA -&gt; sun.security.provider.DSA$SHA1withDSA
  aliases: [DSA, DSS, SHA/DSA, SHA-1/DSA, SHA1/DSA, SHAwithDSA, DSAWithSHA1, OID.1.2.840.10040.4.3, 1.2.840.10040.4.3, 1.3.14.3.2.13, 1.3.14.3.2.27]
  attributes: {ImplementedIn=Software, KeySize=1024, SupportedKeyClasses=java.security.interfaces.DSAPublicKey|java.security.interfaces.DSAPrivateKey}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunRsaSign: Signature.MD2withRSA -&gt; sun.security.rsa.RSASignature$MD2withRSA
  aliases: [1.2.840.113549.1.1.2, OID.1.2.840.113549.1.1.2]
  attributes: {SupportedKeyClasses=java.security.interfaces.RSAPublicKey|java.security.interfaces.RSAPrivateKey}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunRsaSign: Signature.MD5withRSA -&gt; sun.security.rsa.RSASignature$MD5withRSA
  aliases: [1.2.840.113549.1.1.4, OID.1.2.840.113549.1.1.4]
  attributes: {SupportedKeyClasses=java.security.interfaces.RSAPublicKey|java.security.interfaces.RSAPrivateKey}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: Mac.HmacSHA512 -&gt; com.sun.crypto.provider.HmacCore$HmacSHA512
  attributes: {SupportedKeyFormats=RAW}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: AlgorithmParameterGenerator.DiffieHellman -&gt; com.sun.crypto.provider.DHParameterGenerator
  aliases: [DH, OID.1.2.840.113549.1.3.1, 1.2.840.113549.1.3.1]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: CertPathValidator.PKIX -&gt; sun.security.provider.certpath.PKIXCertPathValidator
  attributes: {ImplementedIn=Software, ValidationAlgorithm=RFC3280}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: CertStore.Collection -&gt; sun.security.provider.certpath.CollectionCertStore
  attributes: {ImplementedIn=Software}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: Cipher.AESWrap -&gt; com.sun.crypto.provider.AESWrapCipher
  attributes: {SupportedModes=ECB, SupportedKeyFormats=RAW, SupportedPaddings=NOPADDING}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: AlgorithmParameters.DiffieHellman -&gt; com.sun.crypto.provider.DHParameters
  aliases: [DH, OID.1.2.840.113549.1.3.1, 1.2.840.113549.1.3.1]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: CertStore.com.sun.security.IndexedCollection -&gt; sun.security.provider.certpath.IndexedCollectionCertStore
  attributes: {ImplementedIn=Software}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: AlgorithmParameters.PBEWithSHA1AndDESede -&gt; com.sun.crypto.provider.PBEParameters
  aliases: [OID.1.2.840.113549.1.12.1.3, 1.2.840.113549.1.12.1.3]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunSASL: SaslClientFactory.DIGEST-MD5 -&gt; com.sun.security.sasl.digest.FactoryImpl
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunRsaSign: KeyPairGenerator.RSA -&gt; sun.security.rsa.RSAKeyPairGenerator
  aliases: [1.2.840.113549.1.1, OID.1.2.840.113549.1.1]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJSSE: Signature.MD5withRSA -&gt; sun.security.rsa.RSASignature$MD5withRSA
  aliases: [1.2.840.113549.1.1.4, OID.1.2.840.113549.1.1.4]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: AlgorithmParameters.DSA -&gt; sun.security.provider.DSAParameters
  aliases: [1.3.14.3.2.12, 1.2.840.10040.4.1]
  attributes: {ImplementedIn=Software}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunSASL: SaslClientFactory.EXTERNAL -&gt; com.sun.security.sasl.ClientFactoryImpl
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: KeyFactory.DSA -&gt; sun.security.provider.DSAKeyFactory
  aliases: [1.3.14.3.2.12, 1.2.840.10040.4.1]
  attributes: {ImplementedIn=Software}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: MessageDigest.SHA-256 -&gt; sun.security.provider.SHA2
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: SecretKeyFactory.PBEWithMD5AndTripleDES -&gt; com.sun.crypto.provider.PBEKeyFactory
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: Mac.HmacSHA1 -&gt; com.sun.crypto.provider.HmacSHA1
  attributes: {SupportedKeyFormats=RAW}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: AlgorithmParameters.OAEP -&gt; com.sun.crypto.provider.OAEPParameters
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: Cipher.PBEWithSHA1AndDESede -&gt; com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndDESede
  aliases: [OID.1.2.840.113549.1.12.1.3, 1.2.840.113549.1.12.1.3]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: KeyGenerator.HmacSHA512 -&gt; com.sun.crypto.provider.KeyGeneratorCore$HmacSHA512KG
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: KeyGenerator.DES -&gt; com.sun.crypto.provider.DESKeyGenerator
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: KeyGenerator.HmacSHA256 -&gt; com.sun.crypto.provider.KeyGeneratorCore$HmacSHA256KG
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJSSE: SSLContext.SSL -&gt; com.sun.net.ssl.internal.ssl.SSLContextImpl
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: CertPathBuilder.PKIX -&gt; sun.security.provider.certpath.SunCertPathBuilder
  attributes: {ImplementedIn=Software, ValidationAlgorithm=RFC3280}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: Cipher.DES -&gt; com.sun.crypto.provider.DESCipher
  attributes: {SupportedModes=ECB|CBC|PCBC|CTR|CFB|OFB|CFB8|CFB16|CFB24|CFB32|CFB40|CFB48|CFB56|CFB64|OFB8|OFB16|OFB24|OFB32|OFB40|OFB48|OFB56|OFB64, SupportedKeyFormats=RAW, SupportedPaddings=NOPADDING|PKCS5PADDING|ISO10126PADDING}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunRsaSign: Signature.SHA256withRSA -&gt; sun.security.rsa.RSASignature$SHA256withRSA
  aliases: [1.2.840.113549.1.1.11, OID.1.2.840.113549.1.1.11]
  attributes: {SupportedKeyClasses=java.security.interfaces.RSAPublicKey|java.security.interfaces.RSAPrivateKey}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJSSE: KeyStore.PKCS12 -&gt; com.sun.net.ssl.internal.ssl.PKCS12KeyStore
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: MessageDigest.SHA-384 -&gt; sun.security.provider.SHA5$SHA384
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: KeyPairGenerator.DSA -&gt; sun.security.provider.DSAKeyPairGenerator
  aliases: [OID.1.2.840.10040.4.1, 1.2.840.10040.4.1, 1.3.14.3.2.12]
  attributes: {ImplementedIn=Software, KeySize=1024}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: Cipher.PBEWithMD5AndDES -&gt; com.sun.crypto.provider.PBEWithMD5AndDESCipher
  aliases: [OID.1.2.840.113549.1.5.3, 1.2.840.113549.1.5.3]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunSASL: SaslServerFactory.GSSAPI -&gt; com.sun.security.sasl.gsskerb.FactoryImpl
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: SecretKeyFactory.PBE -&gt; com.sun.crypto.provider.PBEKeyFactory
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: Cipher.DESede -&gt; com.sun.crypto.provider.DESedeCipher
  aliases: [TripleDES]
  attributes: {SupportedModes=ECB|CBC|PCBC|CTR|CFB|OFB|CFB8|CFB16|CFB24|CFB32|CFB40|CFB48|CFB56|CFB64|OFB8|OFB16|OFB24|OFB32|OFB40|OFB48|OFB56|OFB64, SupportedKeyFormats=RAW, SupportedPaddings=NOPADDING|PKCS5PADDING|ISO10126PADDING}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: MessageDigest.SHA -&gt; sun.security.provider.SHA
  aliases: [SHA-1, SHA1]
  attributes: {ImplementedIn=Software}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJSSE: KeyFactory.RSA -&gt; sun.security.rsa.RSAKeyFactory
  aliases: [1.2.840.113549.1.1, OID.1.2.840.113549.1.1]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunSASL: SaslClientFactory.CRAM-MD5 -&gt; com.sun.security.sasl.ClientFactoryImpl
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJSSE: KeyManagerFactory.NewSunX509 -&gt; com.sun.net.ssl.internal.ssl.KeyManagerFactoryImpl$X509
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: Mac.HmacPBESHA1 -&gt; com.sun.crypto.provider.HmacPKCS12PBESHA1
  attributes: {SupportedKeyFormats=RAW}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunSASL: SaslClientFactory.GSSAPI -&gt; com.sun.security.sasl.gsskerb.FactoryImpl
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJSSE: SSLContext.TLSv1 -&gt; com.sun.net.ssl.internal.ssl.SSLContextImpl
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunRsaSign: KeyFactory.RSA -&gt; sun.security.rsa.RSAKeyFactory
  aliases: [1.2.840.113549.1.1, OID.1.2.840.113549.1.1]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: AlgorithmParameters.PBE -&gt; com.sun.crypto.provider.PBEParameters
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: MessageDigest.SHA-512 -&gt; sun.security.provider.SHA5$SHA512
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: KeyFactory.DiffieHellman -&gt; com.sun.crypto.provider.DHKeyFactory
  aliases: [DH, OID.1.2.840.113549.1.3.1, 1.2.840.113549.1.3.1]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunSASL: SaslServerFactory.CRAM-MD5 -&gt; com.sun.security.sasl.ServerFactoryImpl
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: KeyGenerator.HmacSHA384 -&gt; com.sun.crypto.provider.KeyGeneratorCore$HmacSHA384KG
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: KeyAgreement.DiffieHellman -&gt; com.sun.crypto.provider.DHKeyAgreement
  aliases: [DH, OID.1.2.840.113549.1.3.1, 1.2.840.113549.1.3.1]
  attributes: {SupportedKeyClasses=javax.crypto.interfaces.DHPublicKey|javax.crypto.interfaces.DHPrivateKey}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: KeyStore.CaseExactJKS -&gt; sun.security.provider.JavaKeyStore$CaseExactJKS
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJSSE: Signature.SHA1withRSA -&gt; sun.security.rsa.RSASignature$SHA1withRSA
  aliases: [1.2.840.113549.1.1.5, OID.1.2.840.113549.1.1.5, 1.3.14.3.2.29, OID.1.3.14.3.2.29]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJSSE: KeyPairGenerator.RSA -&gt; sun.security.rsa.RSAKeyPairGenerator
  aliases: [1.2.840.113549.1.1, OID.1.2.840.113549.1.1]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunRsaSign: Signature.SHA384withRSA -&gt; sun.security.rsa.RSASignature$SHA384withRSA
  aliases: [1.2.840.113549.1.1.12, OID.1.2.840.113549.1.1.12]
  attributes: {SupportedKeyClasses=java.security.interfaces.RSAPublicKey|java.security.interfaces.RSAPrivateKey}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SUN: AlgorithmParameterGenerator.DSA -&gt; sun.security.provider.DSAParameterGenerator
  attributes: {ImplementedIn=Software, KeySize=1024}
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunSASL: SaslClientFactory.PLAIN -&gt; com.sun.security.sasl.ClientFactoryImpl
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: AlgorithmParameters.AES -&gt; com.sun.crypto.provider.AESParameters
  aliases: [Rijndael]
&lt;/LI&gt;
&lt;LI&gt;
Serviciul este: SunJCE: KeyPairGenerator.DiffieHellman -&gt; com.sun.crypto.provider.DHKeyPairGenerator
  aliases: [DH, OID.1.2.840.113549.1.3.1, 1.2.840.113549.1.3.1]
&lt;/LI&gt;

&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113818634246265542?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113818634246265542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113818634246265542&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113818634246265542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113818634246265542'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2006/01/ex-listarea-serviciilor.html' title='Ex: listarea serviciilor'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113810804271410623</id><published>2006-01-24T15:06:00.000+02:00</published><updated>2007-02-20T21:02:53.846+02:00</updated><title type='text'>Extensia de criptografie Java (JCE)</title><content type='html'>&lt;UL&gt;
&lt;LI&gt;Caracteristici generale
&lt;br&gt;JCE implementeaza servicii criptografice specificate in cadrul mai larg al JCA (furrnizorul de servicii criptografice "SunJCE")
&lt;UL&gt;
&lt;LI&gt;cifrurile DES, Triple DES, Blowfish in modurile
&lt;UL&gt;
&lt;LI&gt;ECB&lt;/LI&gt;
&lt;LI&gt;CBC&lt;/LI&gt;
&lt;LI&gt;CFB&lt;/LI&gt;
&lt;LI&gt;OFB&lt;/LI&gt;
&lt;LI&gt;PCBC&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;generatoare de chei pentru
&lt;UL&gt;
&lt;LI&gt;DES&lt;/LI&gt;
&lt;LI&gt;Triple DES&lt;/LI&gt;
&lt;LI&gt;Blowfish&lt;/LI&gt;
&lt;LI&gt;HMAC-MD5&lt;/LI&gt;
&lt;LI&gt;HMAC-SHA1&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;MD5 cu PBE pentru DES-CBC (PKCS#5)&lt;/LI&gt;
&lt;LI&gt;generatoare de obiecte cheie si conversia catre/de la informatia de cheie pentru cifruri simetrice: DES, Triple DES si PBE si asimetrice: Diffie-Hellman&lt;/LI&gt;
&lt;LI&gt;acordul Diffie-Hellman asupra cheilor pentru mai multe entitati&lt;/LI&gt;
&lt;LI&gt;generator Diffie-Hellman de perechi de chei&lt;/LI&gt;
&lt;LI&gt;generator de parametri pentru algoritmul Diffie-Hellman&lt;/LI&gt;
&lt;LI&gt;implementare HMAC-MD5 si HMAC-SHA1 pentru algoritmi de hash (RFC 2104)&lt;/LI&gt;
&lt;LI&gt;implementare pentru schema de aliniere PKCS#5&lt;/LI&gt;
&lt;LI&gt;magazia de chei, JCEKS, pentru schema proprietara&lt;/LI&gt;
&lt;/UL&gt;
si este un cadru de lucru (javax.crypto) care permite implementari proprietare pentru servicii criptografice.
&lt;/LI&gt;
&lt;LI&gt;Detalii
&lt;DL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;Clase de baza&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;clasa cifru&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;crearea unui obiect Cipher
&lt;UL&gt;
&lt;LI&gt;public static Cipher getInstance(String transformation)&lt;/LI&gt;
&lt;LI&gt;public static Cipher getInstance(String transformation , String provider)&lt;/LI&gt;
&lt;/UL&gt;
transformation este de forma
&lt;UL&gt;
&lt;LI&gt;"algorithm/mode/padding"&lt;/LI&gt;
&lt;LI&gt;"algorithm"&lt;/LI&gt;
&lt;/UL&gt;
ce au domeniile
&lt;UL&gt;
&lt;LI&gt;algorithm
&lt;UL&gt;
&lt;LI&gt;AES&lt;/LI&gt;
&lt;LI&gt;ARCFOUR/RC4&lt;/LI&gt;
&lt;LI&gt;Blowfish&lt;/LI&gt;
&lt;LI&gt;DES&lt;/LI&gt;
&lt;LI&gt;DESede&lt;/LI&gt;
&lt;LI&gt;ECIES&lt;/LI&gt;
&lt;LI&gt;PBEWith&amp;#60digest&amp;#62And&amp;#60encryption&amp;#62 sau PBEWith&amp;#60prf&amp;#62And&amp;#60encryption&amp;#62&lt;/LI&gt;
&lt;LI&gt;RC2, RC4 sau RC5&lt;/LI&gt;
&lt;LI&gt;RSA&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;mode
&lt;UL&gt;
&lt;LI&gt;NONE&lt;/LI&gt;
&lt;LI&gt;CBC (FIPS PUB 81)&lt;/LI&gt;
&lt;LI&gt;CFB (FIPS PUB 81)&lt;/LI&gt;
&lt;LI&gt;ECB (FIPS PUB 81)&lt;/LI&gt;
&lt;LI&gt;OFB (FIPS PUB 81)&lt;/LI&gt;
&lt;LI&gt;PCBC (Kerberos v4)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;padding
&lt;UL&gt;
&lt;LI&gt;ISO10126Padding&lt;/LI&gt;
&lt;LI&gt;NoPadding&lt;/LI&gt;
&lt;LI&gt;OAEPWith&amp;#60digest&amp;#62And&amp;#60mgf&amp;#62Padding (Optimal Asymmetric Encryption Padding, PKCS#1)&lt;/LI&gt;
&lt;LI&gt;PKCS5Padding&lt;/LI&gt;
&lt;LI&gt;SSL3Padding&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;initializarea unui obiect Cipher
&lt;UL&gt;
&lt;LI&gt;public void init(int opmode , Key key)&lt;/LI&gt;
&lt;LI&gt;public void init(int opmode , Certificate certificate )&lt;/LI&gt;
&lt;LI&gt;public void init(int opmode , Key key , SecureRandom random)&lt;/LI&gt;
&lt;LI&gt;public void init(int opmode , Certificate certificate , SecureRandom random)&lt;/LI&gt;
&lt;LI&gt;public void init(int opmode , Key key , AlgorithmParameterSpec params)&lt;/LI&gt;
&lt;LI&gt;public void init(int opmode , Key key , AlgorithmParameterSpec params, SecureRandom random)&lt;/LI&gt;
&lt;LI&gt;public void init(int opmode , Key key , AlgorithmParameters params)&lt;/LI&gt;
&lt;LI&gt;public void init(int opmode , Key key , AlgorithmParameters params, SecureRandom random)&lt;/LI&gt;
&lt;/UL&gt;
unde opmode are domeniul
&lt;UL&gt;
&lt;LI&gt;ENCRYPT_MODE
&lt;br&gt;criptare
&lt;/LI&gt;
&lt;LI&gt;DECRYPT_MODE
&lt;br&gt;decriptare
&lt;/LI&gt;
&lt;LI&gt;WRAP_MODE
&lt;br&gt;impachetarea cheii pentru transport
&lt;/LI&gt;
&lt;LI&gt;UNWRAP_MODE
&lt;br&gt;despachetarea cheii intr-un obiect java.security.Key
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;criptarea si decriptarea
&lt;UL&gt;
&lt;LI&gt;intr-un singur pas
&lt;UL&gt;
&lt;LI&gt;public byte[] doFinal(byte[] input)&lt;/LI&gt;
&lt;LI&gt;public byte[] doFinal(byte[] input , int inputOffset , int inputLen)&lt;/LI&gt;
&lt;LI&gt;public byte[] doFinal(byte[] input , int inputOffset , int inputLen , byte[] output)&lt;/LI&gt;
&lt;LI&gt;public byte[] doFinal(byte[] input , int inputOffset , int inputLen , byte[] output , int outputOffset)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;in mai multi pas
&lt;UL&gt;
&lt;LI&gt;apel repetat pentru metodele
&lt;UL&gt;
&lt;LI&gt;public byte[] update(byte[] input)&lt;/LI&gt;
&lt;LI&gt;public byte[] update(byte[] input , int inputOffset , int inputLen)&lt;/LI&gt;
&lt;LI&gt;public byte[] update(byte[] input , int inputOffset , int inputLen , byte output)&lt;/LI&gt;
&lt;LI&gt;public byte[] update(byte[] input , int inputOffset , int inputLen , byte output , int outputOffset)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;urmate de un singur apel al
&lt;UL&gt;
&lt;LI&gt;public byte[] doFinal(byte[] input)&lt;/LI&gt;
&lt;LI&gt;public byte[] doFinal(byte[] input , int inputOffset , int inputLen)&lt;/LI&gt;
&lt;LI&gt;public byte[] doFinal(byte[] input , int inputOffset , int inputLen , byte[] output)&lt;/LI&gt;
&lt;LI&gt;public byte[] doFinal(byte[] input , int inputOffset , int inputLen , byte[] output , int outputOffset)&lt;/LI&gt;
&lt;LI&gt;public byte[] doFinal()&lt;/LI&gt;
&lt;LI&gt;public byte[] doFinal(byte[] input , int outputOffset)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
orice apel la o metoda doFinal reseteaza obiectul aducandu-l in starea de dupa initializare
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;impachetarea si despachetarea cheilor
&lt;UL&gt;
&lt;LI&gt;impachetarea
&lt;br&gt;public final byte[] wrap(Key key)
&lt;/LI&gt;
&lt;LI&gt;despachetarea
&lt;br&gt;sunt necesare
&lt;UL&gt;
&lt;LI&gt;cheia impachetata&lt;/LI&gt;
&lt;LI&gt;numele algoritmului pentru cheie&lt;/LI&gt;
&lt;LI&gt;tipul cheii impachetate (Cipher.SECRET_KEY, Cipher.PRIVATE_KEY , Cipher.PUBLIC_KEY)&lt;/LI&gt;
&lt;/UL&gt;
&lt;br&gt;public final Key unwrap(byte[] wrappedKey , String wrappedKeyAlgorithm , int wrappedKeyType)
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;gestionarea parametrilor algoritmului&lt;/LI&gt;
&lt;LI&gt;consideratii asupra iesirii
&lt;br&gt;daca se utilizeaza una dintre metodele doFinal care permite specificarea buffer-ului de iesire se poate utiliza metoda
&lt;br&gt; public int getOutputSize(int inputLen)
&lt;br&gt;pentru a verifica daca acesta este suficient
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;clase cifru fluide&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;clasa cifru fluid de intrare&lt;/DT&gt;&lt;DD&gt;
CipherInputStream
&lt;br&gt;este un FilterInputStream care foloseste un Cipher (care trebuie initializat inainte de utilizarea CipherInputStream);este importanta utilizarea doar a metodelor care au fost suprascrise sau definite in aceasta clasa;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;clasa cifru fluid de iesire&lt;/DT&gt;&lt;DD&gt;
CipherOutputStream
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;clasa generator de chei&lt;/DT&gt;
pentru algoritmi simetrici
&lt;UL&gt;
&lt;LI&gt;crearea unui obiect KeyGenerator
&lt;UL&gt;
&lt;LI&gt;public static KeyGenerator getInstance(String algorithm)&lt;/LI&gt;
&lt;LI&gt;public static KeyGenerator getInstance(String algorithm , String provider)&lt;/LI&gt;
&lt;/UL&gt;
unde algorithm are domeniul
&lt;UL&gt;
&lt;LI&gt;AES&lt;/LI&gt;
&lt;LI&gt;ARCFOUR/RC4&lt;/LI&gt;
&lt;LI&gt;Blowfish&lt;/LI&gt;
&lt;LI&gt;DES&lt;/LI&gt;
&lt;LI&gt;DESeed&lt;/LI&gt;
&lt;LI&gt;HmacMD5&lt;/LI&gt;
&lt;LI&gt;HmacSHA1&lt;/LI&gt;
&lt;LI&gt;HmacSHA256&lt;/LI&gt;
&lt;LI&gt;HmacSHA384&lt;/LI&gt;
&lt;LI&gt;HmacSHA512&lt;/LI&gt;
&lt;LI&gt;RC2&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;initializarea unui obiect KeyGenerator
&lt;UL&gt;
&lt;LI&gt;initializare independenta de algoritm
&lt;UL&gt;
&lt;LI&gt;public void init (SecureRandom random)&lt;/LI&gt;
&lt;LI&gt;public void init(int keysize)&lt;/LI&gt;
&lt;LI&gt;public void init (int keysize , SecureRandom random)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;initializare specifica unui algoritm
&lt;UL&gt;
&lt;LI&gt;public void init(AlgorithmParameterSpec params)&lt;/LI&gt;
&lt;LI&gt;public void init(AlgorithmParameterSpec params , SecureRandom random)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;crearea unei chei
&lt;br&gt;public SecretKey generateKey()
&lt;/LI&gt;
&lt;/UL&gt;
&lt;DD&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;clasa convertor obiecte cheie/specificatii de cheie pentru chei simetrice&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;un obiect javax.crypto.SecretKeyFactory lucreaza pe chei simetrice&lt;/LI&gt;
&lt;LI&gt;un obiect java.security.KeyFactory lucreaza pe o pereche de chei asimetrice&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;clasa obiect sigilat&lt;/DT&gt;&lt;DD&gt;
un obiect a carui confidentialitate este asigurata de un algoritm criptografic
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;clasa acord asupra cheilor&lt;/DT&gt;&lt;DD&gt;
asigura functionalitatea unui protocol de acord asupra cheilor
&lt;br&gt;cheile implicate implicate in distributia unui secret sunt create
&lt;UL&gt;
&lt;LI&gt;de catre generatoare de chei: KeyPairGenerator, KeyGenerator&lt;/LI&gt;
&lt;LI&gt;de catre KeyFactory&lt;/LI&gt;
&lt;LI&gt;ca rezultat al unei faze intermediare a unui protocol de acord asupra cheilor&lt;/LI&gt;
&lt;/UL&gt;
utilizare
&lt;UL&gt;
&lt;LI&gt;crearea unui obiect KeyAgreement
&lt;UL&gt;
&lt;LI&gt;public static KeyAgreement getInstance(String algorithm)&lt;/LI&gt;
&lt;LI&gt;public static KeyAgreement getInstance(String algorithm , String provider)&lt;/LI&gt;
&lt;/UL&gt;
algorithm avand domeniul
&lt;UL&gt;
&lt;LI&gt;DiffieHellman (PKCS#3)&lt;/LI&gt;
&lt;LI&gt;ECDH (Elliptic Curve Diffie-Hellman, RFC3278)&lt;/LI&gt;
&lt;LI&gt;ECMQV (Elliptic Curve Menezes-Qu-Vanstone)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;initializarea unui obiect KeyAgreement
&lt;br&gt;initializarea se face cu o cheie privata si suplimentar prin specificarea unei surse pseudoaleatoare si a unei multimi de parametri de algoritm
&lt;UL&gt;
&lt;LI&gt;public void init(Key key)&lt;/LI&gt;
&lt;LI&gt;public void init(Key key , SecureRandom random)&lt;/LI&gt;
&lt;LI&gt;public void init(Key key , AlgorithmParameterSpec params)&lt;/LI&gt;
&lt;LI&gt;public void init(Key key , AlgorithmParameterSpec params , SecureRandom random)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;realizarea fazei de acord
&lt;br&gt;rularea cel putin o data a metodei
&lt;br&gt;public Key doPhase(Key key , boolean lastPhase)
&lt;br&gt;pentru care key este o cheie publica sau o cheie interemediara generata in faza anterioara
&lt;/LI&gt;
&lt;LI&gt;generarea secretului partajat
&lt;br&gt;prin apelul uneia din metodele
&lt;UL&gt;
&lt;LI&gt;public byte[] generateSecret()&lt;/LI&gt;
&lt;LI&gt;public int generateSecret(byte[] sharedSecret , int offset)&lt;/LI&gt;
&lt;LI&gt;public SecretKey generateSecret(String algorithm)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;clasa cod de autentificare mesaj&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;crearea unui obiect Mac
&lt;UL&gt;
&lt;LI&gt;public static Mac getInstance(String algorithm)&lt;/LI&gt;
&lt;LI&gt;public static Mac getInstance(String algorithm , String provider)&lt;/LI&gt;
&lt;/UL&gt;
unde algorithm are domeniul
&lt;UL&gt;
&lt;LI&gt;HmacMD5&lt;/LI&gt;
&lt;LI&gt;HmacSHA1&lt;/LI&gt;
&lt;LI&gt;HmacSHA256&lt;/LI&gt;
&lt;LI&gt;HmacSHA384&lt;/LI&gt;
&lt;LI&gt;HmacSHA512&lt;/LI&gt;
&lt;LI&gt;PBEWith&amp;#60mac&amp;#62&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;initializarea unui obiect Mac
&lt;UL&gt;
&lt;LI&gt;public void init(Key key)&lt;/LI&gt;
&lt;LI&gt;public void init(Key key , AlgorithmParameterSpec params)&lt;/LI&gt;
&lt;/UL&gt;
key este un obiect care implementeaza interfata javax.crypto.SecretKey
&lt;/LI&gt;
&lt;LI&gt;calcularea valorii de MAC
&lt;UL&gt;
&lt;LI&gt;intr-un singur pas
&lt;br&gt;public byte[] doFinal(byte[] input)
&lt;/LI&gt;
&lt;LI&gt;in mai multi pasi
&lt;br&gt;apel repetat la una dintre metodele
&lt;UL&gt;
&lt;LI&gt;public void update(byte input)&lt;/LI&gt;
&lt;LI&gt;public void update(byte[] input)&lt;/LI&gt;
&lt;LI&gt;public void update(byte[] input , int inputOffset , int inputLen)&lt;/LI&gt;
&lt;/UL&gt;
si un apel de terminare la una dintre metodele
&lt;UL&gt;
&lt;LI&gt;public byte[] doFinal()&lt;/LI&gt;
&lt;LI&gt;public byte[] doFinal(byte[] input)&lt;/LI&gt;
&lt;LI&gt;public byte[] doFinal(byte[] output , int outOffset)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DL&gt;
&lt;/LI&gt;
&lt;/UL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113810804271410623?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113810804271410623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113810804271410623&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113810804271410623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113810804271410623'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2006/01/extensia-de-criptografie-java-jce.html' title='Extensia de criptografie Java (JCE)'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113810795730274976</id><published>2006-01-24T15:05:00.000+02:00</published><updated>2006-01-24T15:05:57.586+02:00</updated><title type='text'>Arhitectura de criptografie JAVA</title><content type='html'>&lt;DL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;JCA (Java Cryptography Architecture)&lt;/DT&gt;&lt;DD&gt;este un cadru de lucru ce permite accesarea si dezvoltarea de functiuni criptografice in platforma Java
&lt;br&gt;obiective
&lt;UL&gt;
&lt;LI&gt;independenta implementarii si interoperabilitate&lt;/LI&gt;
&lt;LI&gt;independenta algoritmilor si extensibilitate&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;serviciu criptografic&lt;/DT&gt;&lt;DD&gt;un algoritm sau un tip care fie asigura operatii criptografice (ex: semnaturi digitale) fie genereaza sau furnizeaza informatie criptografica (ex: chei sau parametri) fie genereaza obiecte date (ex: magazii de chei sau certificate) care incapsuleaza chei&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;furnizor de servicii criptografice&lt;/DT&gt;&lt;DD&gt;un pachet care implementeaza o submultime a cerintelor prevazute in &lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/security/spec/security-spec.doc.html"&gt;"Security Architecture"&lt;/a&gt; legate de criptografie&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;furnizorul implicit de servicii criptografice - SunJCE&lt;/DT&gt;&lt;DD&gt;este implementat de Sun si include implementari pentru:
&lt;UL&gt;
&lt;LI&gt;DSA&lt;/LI&gt;
&lt;LI&gt;MD5 si SHA-1&lt;/LI&gt;
&lt;LI&gt;generator de perechi de chei publica/privata prin algoritmul DSA&lt;/LI&gt;
&lt;LI&gt;generator de parametri prin algoritmul DSA&lt;/LI&gt;
&lt;LI&gt;gestionar de parametri generati prin algoritmul DSA&lt;/LI&gt;
&lt;LI&gt;generator de chei prin algoritmul DSA cu facilitate de conversie intre perechile de chei publica/privata si informatia de cheie&lt;/LI&gt;
&lt;LI&gt;generator de numere pseudoaleatoare conform cu IEEE-P1363&lt;/LI&gt;
&lt;LI&gt;constructor de cai de certificare (X.509) si validator pentru infrastructura de chei publice (cu revocare prin liste - CRL)&lt;/LI&gt;
&lt;LI&gt;stocarea si revocarea certificatelor prin CRL si LDAP&lt;/LI&gt;
&lt;LI&gt;generator de certificate X.509 si CRL&lt;/LI&gt;
&lt;LI&gt;stocare de chei pentru stocare proprietara - JKS&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
marimile implicite ale cheilor
&lt;LI&gt;generator de cheie
&lt;UL&gt;
&lt;LI&gt;DES: 56 biti&lt;/LI&gt;
&lt;LI&gt;TripleDES: 112 biti&lt;/LI&gt;
&lt;LI&gt;Blowfish: 56 biti&lt;/LI&gt;
&lt;LI&gt;HmacMD5: 64 biti&lt;/LI&gt;
&lt;LI&gt;HmacSHA1: 64 biti&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;generator de perechi de chei
&lt;br&gt;Diffie-Hellman: 1024 biti
&lt;/LI&gt;
&lt;LI&gt;generator parametri algoritm
&lt;br&gt;Diffie-Hellman: 1024 biti
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;clasa motor&lt;/DT&gt;&lt;DD&gt;defineste un serviciu criptografic intr-o maniera abstracta; o asemenea clasa asigura o interfata (interfata abstracta SPI - Service Provider Interface) pentru un tip de serviciu criptografic specificat; o instanta a unei clase motor ( contine ca un camp membru privat o instanta a clasei SPI corespondente care are acelasi nume cu cel al clasei motor) se creeaza printr-un apel la metoda getInstance a clasei motor; clasele SPI sunt abstracte astfel ca un furnizor de servicii criptografice trebuie sa contina clase derivate si implementari ale metodelor abstracte&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;JCA contine&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;clasele din pachetul "Java SDK Security" legate de criptografie
&lt;UL&gt;
&lt;LI&gt;Provider&lt;DT&gt;&lt;/DT&gt;&lt;DD&gt;
este interfata catre furnizorul de servicii criptografice
&lt;br&gt;realizeaza inregistrarea serviciilor criptografice si poate fi folosita pentru a inregistra servicii de securitate
&lt;br&gt;la crearea unei instante pentru o clasa motor se poate specifica optional furnizorul de servicii criptografice; daca nu se specifica, metoda getInstance cauta furnizorii care implementeaza serviciul criptografic cerut asociat cu numele algoritmului; Orice JVM are o lista de preferinte pentru aceasta cautare
&lt;UL&gt;
instalarea unui furnizor de servicii criptografice
&lt;LI&gt;instalarea
&lt;br&gt;inserarea in "classpath" a cai unde se afla jar-ul sau zip-ul
&lt;/LI&gt;
&lt;LI&gt;configurarea
&lt;br&gt;se insereaza in fisierul java.security o linie "security.provider.n = masterClassName"
&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
metode
&lt;LI&gt;public String getName()&lt;/LI&gt;
&lt;LI&gt;public double getVersion()&lt;/LI&gt;
&lt;LI&gt;public String getInfo()&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;Security&lt;DT&gt;&lt;/DT&gt;&lt;DD&gt;
contine metode statice, nu se instantiaza si gestioneaza furnizorii de servicii criptografice si setarile generale de securitate care pot fi apelate numai in programe de incredere
&lt;br&gt;un program de incredere este:
&lt;UL&gt;
&lt;LI&gt;o aplicatie locala care ruleaza sub un gestionar de securitate&lt;/LI&gt;
&lt;LI&gt;un applet sau o aplicatie care are drepturi de rulare a acestor metode&lt;/LI&gt;
&lt;/UL&gt;
codul rulat are o sursa care poate fi URL-ul dar poate fi o referinta catre cheia publica corespunzatoare cheii private utilizate pentru semnarea codului; cheile publice sunt referite prin aliasuri din magazia de stocare
&lt;br&gt;intr-un fisier de configurare a politicii, codul sursa este reprezentat prin URL si alias
&lt;br&gt;ex:
&lt;UL&gt;
grant codeBase "...", signedBy "..." (
&lt;LI&gt;permission java.security.SecurityPermisssion "insertProvider.";&lt;/LI&gt;
&lt;LI&gt;permission java.security.SecurityPermisssion "removeProvider.";&lt;/LI&gt;
&lt;LI&gt;permission java.security.SecurityPermisssion "putProviderProperty.";&lt;/LI&gt;
};
&lt;/UL&gt;
&lt;UL&gt;
metode
&lt;LI&gt;gestionarea furnizorilor
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;functie&lt;/td&gt;&lt;td&gt;nume metoda&lt;/td&gt;&lt;td&gt;obs.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;interogare&lt;/td&gt;&lt;td&gt;static Provider[] getProvider()&lt;/td&gt;&lt;td&gt;ordinea in vector este data de ordinea de preferinta a furnizorilor&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;interogare&lt;/td&gt;&lt;td&gt;static Provider getProvider(Stirng providerName)&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;adaugare&lt;/td&gt;&lt;td&gt;static int addProvider(Provider provider)&lt;/td&gt;&lt;td&gt;adauga la sfarsitul listei si returneaza ordine de preferinta sau -1 daca furnizorul exista deja&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;adaugare&lt;/td&gt;&lt;td&gt;insertProviderAt(Provider provider , int position)&lt;/td&gt;&lt;td&gt;insereaza in lista la pozitia "position", aluneca in jos restul listei si returneaza ordinea de preferinta&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;stergere&lt;/td&gt;&lt;td&gt;static void removeProvider(String name)&lt;/td&gt;&lt;td&gt;dupa stergerea furnizorului componentele listei sunt alunecate in fata cu o pozitie&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/LI&gt;
&lt;LI&gt;proprietati de securitate
&lt;UL&gt;
&lt;LI&gt;static String getProperty(String key)&lt;/LI&gt;
&lt;LI&gt;static String setProperty(String key , String datum)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;clase motor
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;MessageDigest&lt;/DT&gt;&lt;DD&gt;calcularea unei valori de hash
&lt;UL&gt;
&lt;LI&gt;crearea unui obiect MessageDigest
&lt;UL&gt;
&lt;LI&gt;static MessageDigest getInstance(String algorithm)&lt;/LI&gt;
&lt;LI&gt;static MessageDigest getInstance(String algorithm , String provider)&lt;/LI&gt;
&lt;LI&gt;static MessageDigest getInstance(String algorithm , Provider provider)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;incarcarea mesajului in obiectul creat
&lt;UL&gt;
&lt;LI&gt;void update(byte input)&lt;/LI&gt;
&lt;LI&gt;void update(byte[] input)&lt;/LI&gt;
&lt;LI&gt;void update(byte[] input , int offset , int len)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;calcularea valorii de hash
&lt;UL&gt;
&lt;LI&gt;byte[] digest()&lt;/LI&gt;
&lt;LI&gt;byte[] digest(byte[] input)&lt;/LI&gt;
&lt;LI&gt;byte[] digest(byte[] input , int offset , int len)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;Signature&lt;/DT&gt;&lt;DD&gt;semnarea si verificarea digitala
&lt;br&gt;un obiect Signature este modal (este intotdeauna intr-o stare data si poate face o singura operatie)
&lt;UL&gt;
starile unui obiect Signature
&lt;LI&gt;UNINITIALIZED - starea imediat la crearea obiectului&lt;/LI&gt;
&lt;LI&gt;SIGN - obiect pentru semnare&lt;/LI&gt;
&lt;LI&gt;VERIFY - obiect pentru verificare verificare&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;crearea unui obiect Signature
&lt;UL&gt;
&lt;LI&gt;static Signature getInstance(String algorithm)&lt;/LI&gt;
&lt;LI&gt;static Signature getInstance(String algorithm , String provider)&lt;/LI&gt;
&lt;LI&gt;static Signature getInstance(String algorithm , Provider provider)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;
initializarea unui obiect Signature
&lt;UL&gt;
&lt;LI&gt;final void initSign(PrivateKey privateKey) - obiectul este pus in starea SIGN&lt;/LI&gt;
&lt;LI&gt;final void initVerify(PublicKey publicKey) - obiectul este pus in starea VERIFY&lt;/LI&gt;
&lt;LI&gt;final void initVerify(Certificate certificate) - obiectul este pus in starea VERIFY&lt;/LI&gt;
acelasi obiect poate fi folosit si la semnare si la verificare
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;semnarea
&lt;UL&gt;
incarcarea cu date
&lt;LI&gt;final void update(byte b)&lt;/LI&gt;
&lt;LI&gt;final void update(byte[] data)&lt;/LI&gt;
&lt;LI&gt;final void update(byte[] data , int off , int len)&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
generarea semnaturii
&lt;LI&gt;final byte[] sign()&lt;/LI&gt;
&lt;LI&gt;final int sign(byte[] outbuf , int offset , int len)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;verificarea
&lt;UL&gt;
incarcarea cu date
&lt;LI&gt;final void update(byte b)&lt;/LI&gt;
&lt;LI&gt;final void update(byte[] data)&lt;/LI&gt;
&lt;LI&gt;final void update(byte[] data , int off , int len)&lt;/LI&gt;
dupa apel obiectul ajunge in starea SIGN
&lt;/UL&gt;
&lt;UL&gt;
generarea semnaturii
&lt;LI&gt;final boolean verify(byte[] signature)&lt;/LI&gt;
&lt;LI&gt;final boolean verify(byte[] signature , int offset , int length)&lt;/LI&gt;
dupa apel obiectul ajunge in starea VERIFY
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;KeyPairGenerator&lt;/DT&gt;&lt;DD&gt;generarea unei perechi de chei publica/privata
&lt;UL&gt;
&lt;LI&gt;crearea unui obiect KeyPairGenerator
&lt;UL&gt;
&lt;LI&gt;static KeyPairGenerator getInstance(String algorithm)&lt;/LI&gt;
&lt;LI&gt;static KeyPairGenerator getInstance(String algorithm , String provider)&lt;/LI&gt;
&lt;LI&gt;static KeyPairGenerator getInstance(String algorithm , Provider provider)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;initializarea unui obiect KeyPairGenerator
&lt;UL&gt;
&lt;LI&gt;independent de algoritm
&lt;UL&gt;
&lt;LI&gt;void initialize(int keysize , SecureRandom random)&lt;/LI&gt;
&lt;LI&gt;void initialize(int keysize)&lt;/LI&gt;
este la latitudinea furnizorului ceea ce se intampla cu parametrii specifici algoritmului
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;specific unui algoritm
&lt;UL&gt;
&lt;LI&gt;void initialize (AlgorithmParameterSpec params , SecureRandom random)&lt;/LI&gt;
&lt;LI&gt;void initialize (AlgorithmParameterSpec params)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;generarea unei perechi de chei
&lt;br&gt;KeyPair generateKeyPair()
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;KeyFactory&lt;/DT&gt;&lt;DD&gt;conversia intre tipul criptografic Key si specificatiile de cheie care sunt reprezentari transparente ale informatiile de cheie
&lt;br&gt;un asemenea obiect poate fi utilizat la conversia intre specificatii compatibile de chei
&lt;UL&gt;
&lt;LI&gt;crearea unui obiect KeyFactory
&lt;UL&gt;
&lt;LI&gt;static KeyFactory getInstance(String algorithm)&lt;/LI&gt;
&lt;LI&gt;static KeyFactory getInstance(String algorithm , String provider)&lt;/LI&gt;
&lt;LI&gt;static KeyFactory getInstance(String algorithm , Provider provider)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;conversia de la o specificatie de cheie la un obiect cheie
&lt;UL&gt;
&lt;LI&gt;PublicKey generatePublic(KeySpec keySpec)&lt;/LI&gt;
&lt;LI&gt;PrivateKey generatePrivate(KeySpec keySpec)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;conversia de la un obiect cheie la o specificatie de cheie
&lt;UL&gt;
&lt;LI&gt;KeySpec getKeySpec(Key key , Class keySpec)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;CertificateFactory&lt;/DT&gt;&lt;DD&gt;crearea obiectelor certificate cu cheie publica si a listelor de revocare certificate (CRL) dintr-o codificarea adecvata
&lt;br&gt;un asemenea obiect pentru X.509 returneaza o instanta a java.security.cert.X509Certificate si un CRL care este instanta a java.security.cert.X509CRL
&lt;UL&gt;
&lt;LI&gt;crearea unui obiect CertificateFactory
&lt;UL&gt;
&lt;LI&gt;static CertificateFactory getInstance(String type)&lt;/LI&gt;
&lt;LI&gt;static CertificateFactory getInstance(String type , String provider)&lt;/LI&gt;
&lt;LI&gt;static CertificateFactory getInstance(String type , Provider provider)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;generarea obiectelor certificat
&lt;UL&gt;
&lt;LI&gt;final Certificate generateCertificates(InputStream inStream)&lt;/LI&gt;
&lt;LI&gt;final Collection generateCertificates(InputStream inStream)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;generarea obiectelor CRL
&lt;UL&gt;
&lt;LI&gt;final CRL generateCRL(InputStream inStream)&lt;/LI&gt;
&lt;LI&gt;final Collection generateCRL(InputStream inStream)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;generarea obiectelor CertPath
&lt;UL&gt;
&lt;LI&gt;final CertPath generateCertPath(InputStream inStream)&lt;/LI&gt;
&lt;LI&gt;final CertPath generateCertPath(InputStream inStream , String encoding)&lt;/LI&gt;
&lt;LI&gt;final CertPath generateCertPath(List certificates)&lt;/LI&gt;
&lt;LI&gt;final Iterator getCertPathEncodings()&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;KeyStore&lt;/DT&gt;&lt;DD&gt;generarea si gestionarea unei baze de date a cheilor si stocarea certificatelor; cheile private au asociat un lant de certificare ceea ce autentifica cheile publice
&lt;br&gt;aceasta clasa reprezinta o stocare in memorie a colectiilor de chei si certificate
&lt;UL&gt;
&lt;LI&gt;cheie
&lt;br&gt;este secreta sau privata, stocata in format protejat
&lt;/LI&gt;
&lt;LI&gt;certificat de incredere
&lt;br&gt;
certificat cu cheie publica
&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;crearea unui obiect KeyStore
&lt;UL&gt;
&lt;LI&gt;static KeyStore getInstance(String type)&lt;/LI&gt;
&lt;LI&gt;static KeyStore getInstance(String type , String provider)&lt;/LI&gt;
&lt;LI&gt;static KeyStore getInstance(String type , Provider provider)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;incarcarea in memorie a unui obiect KeyStore
&lt;br&gt;pentru a putea fi utilizat o instanta a acestei clase trebuie incarcata in memorie
&lt;br&gt;
final void load( InputStream , char[] password)
&lt;br&gt;
parola este optionala si daca este furnizata se va face o verificare de integritate
&lt;/LI&gt;
&lt;LI&gt;obtinerea unei liste a alias-uri dintr-un obiect KeyStore
&lt;br&gt;final Enumeration aliases()
&lt;/LI&gt;
&lt;LI&gt;determinarea tipurilor intrarilor stocat intr-un obiect KeyStore
&lt;UL&gt;
&lt;LI&gt;final boolean isKeyEntry( String alias)&lt;/LI&gt;
&lt;LI&gt;final boolean isCertificateEntry( String alias)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;adaugarea/modificarea si stergerea intrarilor dintr-un obiect KeyStore
&lt;UL&gt;
&lt;LI&gt;adaugare/modificare
&lt;UL&gt;
&lt;LI&gt;certificate
&lt;br&gt;final void setCertificateEntry( String alias , Certificate entry)
&lt;/LI&gt;
&lt;LI&gt;chei
&lt;UL&gt;
&lt;LI&gt;final void setKeyEntry( String alias , Key key , char[] password , Certificate[] chain)&lt;/LI&gt;
&lt;LI&gt;final void setKeyEntry( String alias , byte[] key , Certificate[] chain)
&lt;br&gt;array-ul de octeti este in format protejat
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;stergere
&lt;br&gt;final void deleteEntry(String alias)
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;obtinerea intrarilor stocate intr-un obiect KeyStore
&lt;UL&gt;
&lt;LI&gt;certificate
&lt;UL&gt;
&lt;LI&gt;final Certificate getCertificate(String alias)&lt;/LI&gt;
&lt;LI&gt;final Certificate[] getCertificate(String alias)&lt;/LI&gt;
&lt;LI&gt;final String getCertificateAlias(Certificate cert)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;chei
&lt;br&gt;final Key getKey(String alias , char[] password)
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;salvarea unui obiect KeyStore
&lt;br&gt;final void store(OutputStream stream , char[] password)
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;AlgorithmParameters&lt;/DT&gt;&lt;DD&gt;gestionarea parametrilor unui algoritm
&lt;br&gt;reprezentarea nu este trasnparenta, neobtinandu-se accesul direct la parametri ci numai numele algoritmului asociat multimiii parametrilor si o codificare a acestora
&lt;UL&gt;
&lt;LI&gt;crearea unui obiect AlgorithmParameters
&lt;UL&gt;
&lt;LI&gt;static AlgorithmParameters getInstance( String algorithm)&lt;/LI&gt;
&lt;LI&gt;static AlgorithmParameters getInstance( String algorithm , String provider)&lt;/LI&gt;
&lt;LI&gt;static AlgorithmParameters getInstance( String algorithm , Provider provider)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;initializarea unui obiect AlgorithmParameters
&lt;UL&gt;
&lt;LI&gt;void init(AlgorithmParameterSpec paramSpec)&lt;/LI&gt;
&lt;LI&gt;void init(byte[] params)&lt;/LI&gt;
&lt;LI&gt;void init(byte[] params , String format)&lt;/LI&gt;
params este un array de octeti codificati, format este numele decodificarii (daca lipseste se utilizeaza formatul de decodificare primar care este ASN.1)
&lt;/UL&gt;
obiectul se initializeaza o singura data, nefiind reutilizabil
&lt;/LI&gt;
&lt;LI&gt;obtinerea codificarii parametrilor
&lt;UL&gt;
&lt;LI&gt;codificarea in forma primara
&lt;br&gt;byte[] getEncoded()
&lt;/LI&gt;
&lt;LI&gt;cu specificarea codificarii
&lt;br&gt;byte[] getEncoded( String format)&lt;/LI&gt;
&lt;/UL&gt;
furnizorul implicit de servicii criptografice ignora formatul codificarii
&lt;/LI&gt;
&lt;LI&gt;obtinerea parametrilor in mod transparent
&lt;br&gt;AlgorithmParameterSpec getParameterSPec(Class paramSpec)
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;AlgorithmParameterGenerator&lt;/DT&gt;&lt;DD&gt;generarea unei multimi de parametri pentru un algoritm specificat
&lt;UL&gt;
&lt;LI&gt;crearea unui obiect AlgorithmParameterGenerator
&lt;UL&gt;
&lt;LI&gt;static AlgorithmParameterGenerator getInstance( String algorithm)&lt;/LI&gt;
&lt;LI&gt;static AlgorithmParameterGenerator getInstance( String algorithm , String provider)&lt;/LI&gt;
&lt;LI&gt;static AlgorithmParameterGenerator getInstance( String Provider , String provider)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;initializarea unui obiect AlgorithmParameterGenerator&lt;/LI&gt;
&lt;LI&gt;generarea parametrilor
&lt;br&gt;o data creat si initializat obiectul poate genera parametrii
&lt;br&gt;AlgorithmParameters generateParameters()
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;SecureRandom&lt;/DT&gt;&lt;DD&gt;generarea de numere pseudoaleatoare
&lt;UL&gt;
&lt;LI&gt;crearea unui obiect SecureRandom
&lt;UL&gt;
&lt;LI&gt;static SecureRandom getInstance( String algorithm)&lt;/LI&gt;
&lt;LI&gt;static SecureRandom getInstance( String algorithm , String provider)&lt;/LI&gt;
&lt;LI&gt;static SecureRandom getInstance( String algorithm , Provider provider)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;initializarea cheii de generare
&lt;UL&gt;
&lt;LI&gt;synchronized public void setSeed( byte[] seed)&lt;/LI&gt;
&lt;LI&gt;public void setSeed( long seed)&lt;/LI&gt;
&lt;/UL&gt;
apelurile repetate conduc la o cheie de generare obtinuta din vechea cheie la care se adauga noua cheie
&lt;/LI&gt;
&lt;LI&gt;uzul unui obiect SecureRandom
&lt;br&gt;synchronized public void nextBytes( byte[] bytes)
&lt;/LI&gt;
&lt;LI&gt;generarea de chei de generare
&lt;br&gt;byte[] generateSeed ( int numBytes)
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;CertPathBuilder&lt;/DT&gt;&lt;DD&gt;construirea de cai de certificare
&lt;UL&gt;
&lt;LI&gt;instantierea clasei CertPathBuilder
&lt;UL&gt;
&lt;LI&gt;static CertPathBuilder getInstance( String algorithm)&lt;/LI&gt;
&lt;LI&gt;static CertPathBuilder getInstance( String algorithm , String provider)&lt;/LI&gt;
&lt;LI&gt;static CertPathBuilder getInstance( String algorithm , Provider provider)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;construirea unei cai de certificare
&lt;br&gt;CertPathBuilderResult build (CertPathParameters params)
&lt;/LI&gt;
&lt;LI&gt;interogari
&lt;UL&gt;
&lt;LI&gt;furnizor
&lt;br&gt;Provider getProvider()
&lt;/LI&gt;
&lt;LI&gt;algoritm
&lt;br&gt;String getAlgoithm()
&lt;/LI&gt;
&lt;LI&gt;tip
&lt;br&gt;static String getDefaultType()
&lt;br&gt;returneaza tipul asa cum este specificat in fisierul de configurare de securitate sau "PKIX" altfel
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;CertPathValidator&lt;/DT&gt;&lt;DD&gt;validarea lanturilor (cailor) de certificate
&lt;UL&gt;
&lt;LI&gt;creare obiect CertPathValidator
&lt;UL&gt;
&lt;LI&gt;static CertPathValidator getInstance( String algorithm)&lt;/LI&gt;
&lt;LI&gt;static CertPathValidator getInstance( String algorithm , String provider)&lt;/LI&gt;
&lt;LI&gt;static CertPathValidator getInstance( String algorithm , Provider provider)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;validarea unei cai de certificare
&lt;br&gt;CertPathValidatorResult validate( CertPath certPath , CertPathParameters params)
&lt;/LI&gt;
&lt;LI&gt;interogari
&lt;UL&gt;
&lt;LI&gt;String getAlgorithm()&lt;/LI&gt;
&lt;LI&gt;static String getDefaultType()&lt;/LI&gt;
&lt;LI&gt;Provider getProvider()&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;CertStore&lt;/DT&gt;&lt;DD&gt;obtinerea de certificate, care nu sunt de incredere, si CRL-uri (ex: CertStore implementat ca o implementare LDAP); utilizeaza o arhitectura specifica furnizorului de servicii criptografice;
&lt;UL&gt;
&lt;LI&gt;crearea unui obiect &lt;/LI&gt;
&lt;LI&gt;obtinerea unui  certificat&lt;/LI&gt;
&lt;LI&gt;obtinerea ueni CRL&lt;/LI&gt;
&lt;LI&gt;interogari&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;clase si interfete care implementeaza sau extind interfata Key (specificare opaca)&lt;/DT&gt;&lt;DD&gt;
o reprezentare opaca a unei chei se face fara a avea acces la informatia de cheie
&lt;br&gt;o reprezentare transparenta a unei chei permite accesul la informatia de cheie
&lt;br&gt;interfata Key este radacina ierarhiei pentru specificarea opaca a cheilor, definind functionalitatile necesare
&lt;UL&gt;
caracteristici
&lt;LI&gt;algoritmul cheii
&lt;br&gt;String getAlgorithm()
&lt;/LI&gt;
&lt;LI&gt;forma codificata
&lt;br&gt;care se foloseste atunci cand este nevoie de reprezentarea standard (ex: X.509, PKCS#8) a cheii in afara JVM
&lt;br&gt;byte[] getEncoded()
&lt;/LI&gt;
&lt;LI&gt;formatul
&lt;br&gt;String getFormat()
&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
mod de lucru
&lt;LI&gt;obtinerea cheilor din
&lt;UL&gt;
&lt;LI&gt;generatoare de chei&lt;/LI&gt;
&lt;LI&gt;certificate&lt;/LI&gt;
&lt;LI&gt;specificatori de chei (prin KeyFactory)&lt;/LI&gt;
&lt;LI&gt;implementari ale KeyStore&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;parsingul cheilor codificate, KeyFactory&lt;/LI&gt;
&lt;LI&gt;parsingul certificatelor, CertificateFactory&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
interfete care extind interfata Key (definita in pachetul java.security.interfaces)
&lt;LI&gt;DHPrivateKey&lt;/LI&gt;
&lt;LI&gt;DHPublicKey&lt;/LI&gt;
&lt;LI&gt;DSAPrivateKey&lt;/LI&gt;
&lt;LI&gt;DSAPublicKey&lt;/LI&gt;
&lt;LI&gt;PBEKey&lt;/LI&gt;
&lt;LI&gt;PrivateKey&lt;/LI&gt;
&lt;LI&gt;PublicKey&lt;/LI&gt;
&lt;LI&gt;RSAMultiPrimePrivateCrtKey&lt;/LI&gt;
&lt;LI&gt;RSAPrivateCrtKey&lt;/LI&gt;
&lt;LI&gt;RSAPrivateKey&lt;/LI&gt;
&lt;LI&gt;RSAPublicKey&lt;/LI&gt;
&lt;LI&gt;SecretKey&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;clase si interfete pentru specificarea parametrilor algoritmilor&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;interfata AlgorithmParameterSpec
&lt;br&gt;nu contine metode sau constante si are rolul de a grupa specificarile parametrilor
&lt;/LI&gt;
&lt;LI&gt;clasa DSAParameterSpec
&lt;br&gt;este o implementare a interfetei AlgorithmParameterSpec ce specifica multimea parametrilor utilizati de algoritmul DSA
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;clase si interfete pentru specificarea cheii (specificare tansparenta)&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;interfete
&lt;br&gt;interfata KeySpec nu contine metode sau constante si are rolul de a grupa specificarile parametrilor
&lt;/LI&gt;
&lt;LI&gt;clase
&lt;UL&gt;
&lt;LI&gt;DSAPrivateKeySpec&lt;/LI&gt;
&lt;LI&gt;DSAPublicKeySpec&lt;/LI&gt;
&lt;LI&gt;RSAPrivateKeySpec&lt;/LI&gt;
&lt;LI&gt;RSAPrivateCrtKeySpec&lt;/LI&gt;
&lt;LI&gt;RSAMultiPrimePrivateCrtKeySpec&lt;/LI&gt;
&lt;LI&gt;RSAPublicKeySpec&lt;/LI&gt;
&lt;LI&gt;EncodedKeySpec&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113810795730274976?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113810795730274976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113810795730274976&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113810795730274976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113810795730274976'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2006/01/arhitectura-de-criptografie-java.html' title='Arhitectura de criptografie JAVA'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113776696350616566</id><published>2006-01-20T16:22:00.000+02:00</published><updated>2006-01-20T16:22:43.843+02:00</updated><title type='text'>Tehnici de gestionare a cheilor</title><content type='html'>&lt;DL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;cadru de lucru&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;context&lt;/DT&gt;&lt;DD&gt;
Gestionarea cheilor are loc in contextul politicii de securitate care defineste in mod implicit/explicit amenintarile la care trebuie sa faca fata un sistem si de aici cerintele criptografice.
&lt;br&gt;Politica de securitate defineste
&lt;UL&gt;
&lt;LI&gt;proceduri privitoare la aspectele tehnnice si administrative ale gestionarii cheilor&lt;/LI&gt;
&lt;LI&gt;responsabilitatile partilor&lt;/LI&gt;
&lt;LI&gt;tipurile de inregistrari care sa permita rapoarte ulterioare unui eveniment de securitate&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;obiectiv&lt;/DT&gt;&lt;DD&gt;
pastrarea in siguranta a informatiilor referitoare la chei ai sa fie contracarate amenintari cum ar fi:
&lt;UL&gt;
&lt;LI&gt;compromiterea confidentialitatii cheilor secrete&lt;/LI&gt;
&lt;LI&gt;compromiterea autenticitatii cheilor secrete sau publice&lt;/LI&gt;
&lt;LI&gt;utilizarea neautorizata a cheilor publice sau secrete&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;modele de distributie a cheilor&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;problema distributiei cheilor
&lt;br&gt;intr-un sistem cu chei simetrice cu n utilizatori, daca fiecare pereche de utilizatori partajeaza o cheie secreta distincta, numarul de chei este n ( n - 1 ) / 2, ceea ce pentru n mare conduce la un numar de chei inacceptabil de mare si de aici necesitatea unui server central 
&lt;/LI&gt;
&lt;LI&gt;mecanisme
&lt;UL&gt;
&lt;LI&gt;punct la punct
&lt;br&gt;A si B partajeaza a priori o cheie secreta
&lt;/LI&gt;
&lt;LI&gt;cu terta parte
&lt;br&gt;A si B partajeaza fiecare o cheie secreta cu serverul
&lt;UL&gt;
&lt;LI&gt;centru de distributie a cheilor (KDC)
&lt;br&gt;KDC distirbuie chei utilizatorilor care partajeaza secrete cu acesta
&lt;/LI&gt;
&lt;LI&gt;centru de translatie a cheilor (KTC)
&lt;br&gt;functioneaza ca un KDC dar cheia de sesiune este generata de una dintre parti
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
cheile partajate sunt distribuite prin tehnici necriptografice si garanteaza autenticitatea partilor
&lt;/LI&gt;
&lt;LI&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;functii ale tertului, T&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;clasificare dupa criteriul interactiunii in timp real
&lt;UL&gt;
&lt;LI&gt;in-line
&lt;br&gt;T este un intermediar ce are rolulu de mijloc de comunicatie intre A si B
&lt;/LI&gt;
&lt;LI&gt;on-line
&lt;br&gt;T este implicat in fiecare sesiune, comunicand cu o parte sau cu ambele, dar A si B comunica direct intre ei
&lt;/LI&gt;
&lt;LI&gt;off-line
&lt;br&gt;T nu este implicat in protocol in timp real dar pregateste a priori informatii care sunt disponibile lui A si/sau B care sunt utilizate in protocol
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;clasificare pentru tert intr-un sistem de certificate cu cheie publica
&lt;UL&gt;
&lt;LI&gt;autoritate de certificare (CA)
&lt;br&gt;responsabila pentru distributia cheilor publice carora le garanteaza autenticitatea
&lt;br&gt;in sistemele bazate pe certificate, cheile publice sunt legate de nume prin certificate semnate; autoritatea gestioneaza numerele certificatelor si revocarea acestora
&lt;/LI&gt;
&lt;LI&gt;server de nume
&lt;br&gt;gestioneaza spatiul de nume
&lt;/LI&gt;
&lt;LI&gt;autoritate de inregistrare
&lt;br&gt;autorizeaza entitatile, care sunt identificate prin nume unice, ca membri ai domeniului de securitate
&lt;/LI&gt;
&lt;LI&gt;generator de chei
&lt;br&gt;creeaza perechi de chei publice/private
&lt;br&gt;poate fi parte a entitatii, a CA sau un sistem de infcredere independent
&lt;/LI&gt;
&lt;LI&gt;director de certificate
&lt;br&gt;gestionar al unei baze de date cu certificate ce este gestionata de CA sau de catre entitati
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;functii primare
&lt;UL&gt;
&lt;LI&gt;server de autentificare
&lt;br&gt;realizeaza distributia cheilor intre entitati, inclusiv autentificarea acestora
&lt;/LI&gt;
&lt;LI&gt;gestionar de chei
&lt;br&gt;realizeaza stocarea cheilor, informatiilor de auditare, aplicarea cerintelor de ciclu de viata a cheilor
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;alte functii
&lt;UL&gt;
&lt;LI&gt;agent de marcare timp
&lt;br&gt;valideaza existenta unui document la un moment de timp sua lipirea unei date calendaristice la o tranzactie sau mesaj digital
&lt;/LI&gt;
&lt;LI&gt;notar
&lt;br&gt;verifica o semnatura digitala la un moment dat de timp sau mai general, atesta o depozitie data intr-o anumita jurisdictie la un moment dat de timp
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;comparatie intre tehnicile, cu cheie publica si cele cu cheie simetrica, de gestionare a cheilor&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
avantaje ale tehnicilor cu cheie publica
&lt;LI&gt;gestionare simplificata a cheilor&lt;/LI&gt;
&lt;LI&gt;nu este necesar un server de incredere on-line&lt;/LI&gt;
&lt;LI&gt;functiuni suplimentare&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;tehnici pentru distribuirea cheilor private si a cheilor secrete&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;clasificarea cheilor dupa modul de utilizare
&lt;UL&gt;
&lt;LI&gt;chei sablon
&lt;br&gt;chei neprotejate criptografic ce sunt distribuite manual sau instalate initial si sunt protejate prin proceduri de control si/sau izolare fizica
&lt;/LI&gt;
&lt;LI&gt;chei de criptare a cheilor
&lt;br&gt;sunt chei simterice sau publice ce sunt folosite in protocoalele de transport ale cheilor; pot fi protejate prin alte chei
&lt;/LI&gt;
&lt;LI&gt;chei de date
&lt;br&gt;sunt utilizate in operatiile criptografice asupra datelor utilizatorului; in general sunt chei simetrice
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;criptoperioada unei chei
&lt;br&gt;este intervalul de timp in care o cheie este valida pentru folosire de catre partile indreptatite
&lt;/LI&gt;
&lt;LI&gt;clasificarea cheilor dupa criteriul temporalitatii
&lt;UL&gt;
&lt;LI&gt;chei pe termne lung
&lt;br&gt;cheile sablon, deseori cheile de criptare a cheilor, cheile utilizate pentru acordul asupra cheilor
&lt;/LI&gt;
&lt;LI&gt;chei pe termen scurt
&lt;br&gt;cheile ce sunt stabilitate prin transport sau acord si deseori cheile de date sau cheile de sesiune
&lt;/LI&gt;
in general comunicatia se face cu chei de termen scurt in timp ce stocarea se face utilizand chei de termen lung
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;KTC si certificate cu cheie simetrica
&lt;UL&gt;
&lt;LI&gt;protocol translatie mesaj prin KTC
&lt;UL&gt;
&lt;LI&gt;
&lt;UL&gt;
&lt;LI&gt;A interactioneaza cu KTC si cu B&lt;/LI&gt;
&lt;LI&gt;A transfera un mesaj secret, M sau o cheie de sesiune B&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;OL&gt;
&lt;LI&gt;E este un algoritm de criptare simetrica&lt;/LI&gt;
&lt;LI&gt;setare initiala: A si T partajeaza cheia K&lt;sub&gt;AT&lt;/sub&gt;, B si T partajeaza cheia K&lt;sub&gt;BT&lt;/sub&gt;&lt;/LI&gt;
&lt;LI&gt;mesaje
&lt;UL&gt;
&lt;LI&gt;A &amp;#8594 T: A, E&lt;sub&gt;K&lt;sub&gt;AT&lt;/sub&gt;&lt;/sub&gt;(B, M)&lt;/LI&gt;
&lt;LI&gt;A &amp;#8592 T: A, E&lt;sub&gt;K&lt;sub&gt;BT&lt;/sub&gt;&lt;/sub&gt;(B, M)&lt;/LI&gt;
&lt;LI&gt;A &amp;#8594 B: A, E&lt;sub&gt;K&lt;sub&gt;BT&lt;/sub&gt;&lt;/sub&gt;(B, M)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;actiuni
&lt;OL type=a&gt;
&lt;LI&gt;A cripteaza M sub K&lt;sub&gt;AT&lt;/sub&gt; si trimite lui T impreuna cu identificatorul propriu&lt;/LI&gt;
&lt;LI&gt;T decripteaza M, determina destinatarul, cripteaza M cu cheia destinataruluiu&lt;/LI&gt;
&lt;LI&gt;T trimite lui A mesajul pe care acesta il va trimite lui B; T poate trimite direct lui B&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;certificate cu cheie simetrica
&lt;br&gt;pot constitui un mijloc prin care KTC evita necesitatea unei baze de date sigure cu secretele utilizatorilor
&lt;br&gt;cheia fiecarui utilizator este ambalata intr-un certificat, E&lt;sub&gt;K&lt;sub&gt;T&lt;/sub&gt;&lt;/sub&gt;(K&lt;sub&gt;BT&lt;/sub&gt; , B), criptat cu o cheie sablon simetrica, K&lt;sub&gt;T&lt;/sub&gt;, cunoscuta doar lui T astfel ca stocarea sigura este necesaraa doar pentru aceasta cheie
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;tehnici pentru distribuirea cheilor publice&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;obtinerea cheilor publice
&lt;UL&gt;
&lt;LI&gt;livrarea punct la punct pe un canal de incredere
&lt;br&gt;cheile sunt obtinute direct de la alti utilizatori
&lt;/LI&gt;
&lt;LI&gt;accesul direct la un fisier public de incredere
&lt;br&gt;cheile sunt obtinute dintr-o baza de date publica a carei integritate este de incredere; o metoda poate fi autentificarea fisierului public prin autententificarea arborescenta a cheilor publice
&lt;/LI&gt;
&lt;LI&gt;utilizarea unui server on-line de incredere
&lt;br&gt;ce asigura accesul la echivalentul unui fisier public ce contine cheile publice autentice; transmisiile cheilor sunt semnate
&lt;/LI&gt;
&lt;LI&gt;utilizarea unui server off-line si acertificatelor
&lt;br&gt;entitatea A contacteaza CA pentru a-si inregistra cheia publica si obtine semnatura de verificare; CA certifica cheia publica a lui A legand-o de un sir care-l identifica pe A; partile obtin cheile publice autentice prin schimbarea certificatelor sau direct dintr-un director public
&lt;/LI&gt;
&lt;LI&gt;utilizarea unor sisteme care garanteaza implicit autenticitatea parametrilor publici
&lt;br&gt;utilizarea unor algoritmi ce permit ca o modificare a parametrilor publici sa conduca la un insucces, detectabil si necompromitatoar, al tehnicilor criptografice
&lt;br&gt;aceste sisteme includ sistemele bazate pe identitate
&lt;/LI&gt;
&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;certificate cu cheie publica&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;certificat cu cheie publica&lt;/DT&gt;&lt;DD&gt;
o structura de date ce compusa dintr-o parte de date si o parte de semnatura; partea de date contine text in clar, cel putin o cheie publica si un sir de identificare a entitatii. Partea de semnatura contine semnatura digitala, emisa de CA, asupra partii de date.
&lt;br&gt;sirul de identificare a entitatii trebuie sa fie un nume unic in sistem pe care CA il asociaza ueni entiati reale
&lt;br&gt;CA poseda propria pereche semnatura-cheie, ce poate fi facuta disponibila prin mijloace necriptografice
&lt;UL&gt;
&lt;LI&gt;crearea certificateleor
&lt;UL&gt;
&lt;LI&gt;tertul creeaza perechea de chei
&lt;br&gt;, include identitatea entitaii si cheia publica intr-un certificat; entitatea obtine cheia privata pe un canal sigur (autentic si privat)
&lt;/LI&gt;
&lt;LI&gt;entitatea isi creeaza prorpia pereche de chei
&lt;br&gt;si transfera cheia publica tertului pe un canal sigur
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;utilizarea si verificarea certificatelor
&lt;OL&gt;
entitatea B utilizeaza un certificat pentru a obtine cheia publica autentica a lui A
&lt;LI&gt;(o singura data) obtine cheia publica autentica a CA&lt;/LI&gt;
&lt;LI&gt;obtine un sir care identifica in mod unic entitatea A&lt;/LI&gt;
&lt;LI&gt;obtine un certificat cu cheie publica care corespunde entiatii A si care este in acord cu sirul de identificare&lt;/LI&gt;
&lt;LI&gt;
&lt;OL type=a&gt;
&lt;LI&gt;verifica perioada de validitate a certificatului folosind data si ora curente obtinute de la un ceas de incredere&lt;/LI&gt;
&lt;LI&gt;verifica validitatea cheii publice a CA&lt;/LI&gt;
&lt;LI&gt;verifica semnatura din certificatul lui A folosind cheia publica a CA&lt;/LI&gt;
&lt;LI&gt;verifica daca certificatul nu a fost revocat&lt;/LI&gt;
&lt;/OL&gt;
&lt;LI&gt;daca toate verificarile au succes accepta cheia publica din certificat ca fiind cheia autentica a lui A&lt;/LI&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;certificate de atribute
&lt;br&gt;sunt similare certificatelor cu chei publice dar au rolul de a permite specificarea altor informatii decat cheile publice 
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;sisteme bazate pe identitate&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;sistem criptografic bazat pe identitate&lt;/DT&gt;&lt;DD&gt;
Sistem asimetric in care informatia publica de identificare a unei entitati joaca rolul cheii publice si este utilizata de catre tert pentru a calcula cheia privata
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;autentificarea in sisteme bazate pe identitate&lt;/DT&gt;&lt;DD&gt;
Motivatia este de a crea un sistem criptografic care modeleaza un sistem de posta ideal in care numele unei persoane este suficient pentru a trimite mesaje care pot fi citite doar de catre destinatar si care sa permita verificarea unei semnaturi pe care numai aceea persoana o poate emite. In asemenea sisteme:
&lt;UL&gt;
&lt;LI&gt;utilizatori nu schmiba chei&lt;/LI&gt;
&lt;LI&gt;nu sunt necesare directoare publice&lt;/LI&gt;
&lt;LI&gt;serviciile unui tert sunt necesare doar in faza initiala&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;chei publice certificate implicit&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;caracteristici
&lt;UL&gt;
&lt;LI&gt;cheile publice ale entitatilor pot fi reconstruite din informatii publice, care astfel inlocuiesc certificate;e&lt;/LI&gt;
&lt;LI&gt;informatia publica include
&lt;UL&gt;
&lt;LI&gt;informatii publice asociate tertului&lt;/LI&gt;
&lt;LI&gt;identitatea entitatii (nume, adresa, etc.)&lt;/LI&gt;
&lt;LI&gt;informatii publice suplimentare despre entitate&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;integritatea unei chei publice reconstruite nu este verificabila direct dar o cheie publica poate fi reconstruita doar din informatiile autentice despre o entitate&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;tehnici pentru controlul utilizarii cheilor&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;separarea cheilor&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
Informatia care s-ar putea asocia cheilor:
&lt;LI&gt;proprietarul cheii&lt;/LI&gt;
&lt;LI&gt;perioada de validitate&lt;/LI&gt;
&lt;LI&gt;identificatorul cheii (referinte noncriptografice)&lt;/LI&gt;
&lt;LI&gt;utilizarea destinata&lt;/LI&gt;
&lt;LI&gt;algoritmul&lt;/LI&gt;
&lt;LI&gt;numele entitatilor asociate generarii cheii, inregistrarii si certificarii&lt;/LI&gt;
&lt;LI&gt;suma de control a cheii&lt;/LI&gt;
&lt;/UL&gt;
Principiul separarii cheilor: cheile utilizate in scopuri diferite trebuie sa fie separate criptografic
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;tehnici pentru controlul utilizarii cheilor simetrice&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;marcaje de chei si variante de chei
&lt;br&gt;Marcajele de cheie asigura o metoda simpla pentru specificarea utilizarilor permise ale cheilor
&lt;br&gt;Marcajul de cheie este un vector de biti sau un camp structurat care acompaniaza cheia pe intreaga sa durata de viata, fiind criptat impreuna cu aceasta
&lt;UL&gt;
Tehnici de separare
&lt;LI&gt;derivarea unor chei variante dntr-o cheie de baza utilizand parametri si o functie care nu sunt secrete&lt;/LI&gt;
&lt;LI&gt;compensarea cheii: o cheie de criptare K este modificata ca o functie de un contor care se incrementeaza la fiecare utilizare&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;notarizarea cheilor
&lt;br&gt;este un mecanism pentru distribuirea cheiolor autentificate
&lt;br&gt;este o tehnica destinata prtevenirii substitutiei cheii prin specificarea explicita a identitatilor entitatilor implicate
&lt;br&gt;o cheie este autentificata in functie de identitatile partilor, prin modificarea unei chei de criptareai ai recuperarea cheii protejate se poate face doar specificand corect identitatile; cheia este sigilata cu aceste identitati
&lt;br&gt;notarizarea simpla a cheii: un server de incredere (notar) sau una dintre parti cripteaza cheia de sesiune, S, utilizand cheia de criptare, K, E&lt;sub&gt;K &amp;#8853 ( A || B)&lt;/sub&gt;; cheia de sesiune S este destinata uzului entitatilor A si B; entitatea care doreste sa recupereze S trebuie sa partajeze K si sa specifice A si B in ordinea corecta
&lt;/LI&gt;
&lt;LI&gt;vectori de control
&lt;br&gt;este o metoda pentru controlul utilizarii cheilor ce combina marcajele de cheie cu mecanismul de notarizare
&lt;br&gt;fiecarei chei S ii este asociat un vector de control C, un camp de date, ce defineste utilizarile autorizate ale cheii; criptarea este E&lt;sub&gt;K &amp;#8853 C&lt;/sub&gt;(S)
&lt;br&gt;decriptarea necesita specificarea corecta a vectorului de control C si cheii de criptare, K
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;gestionarea cheilor intre domenii&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;domeniu de securitate&lt;/DT&gt;&lt;DD&gt;
Un sistem care este sub controlul unei singure autoritati si in care entitatile din domeniu au incredere
&lt;br&gt;fiecare entitate
&lt;UL&gt;
&lt;LI&gt;
partajeaza un secret sau o parola - in cazul simetric
&lt;/LI&gt;
&lt;LI&gt;
detine cheia publica autentica a CA- in cazul asimetric
&lt;/LI&gt;
&lt;/UL&gt;
ceea ce permite comunicatia pe un canal sigur cu autoritatea sau cu o alta entitate
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;increderea intre doua domenii&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;entitatile A si B apartinand domeniilor D&lt;sub&gt;A&lt;/sub&gt; si D&lt;sub&gt;B&lt;/sub&gt; ce au autoritatile T&lt;sub&gt;A&lt;/sub&gt; si T&lt;sub&gt;B&lt;/sub&gt; doresc sa comunice; A si B fie
&lt;UL&gt;
&lt;LI&gt;partajeaza o cheie simetrica&lt;/LI&gt;
&lt;LI&gt;partajeaza chei publice de incredere&lt;/LI&gt;
&lt;/UL&gt;
ambele fiind posibile daca T&lt;sub&gt;A&lt;/sub&gt; si T&lt;sub&gt;B&lt;/sub&gt; au o relatie de incredere
&lt;br&gt;A si B delega pe T&lt;sub&gt;A&lt;/sub&gt; si T&lt;sub&gt;B&lt;/sub&gt; prin intermediul canalelor sigure (A , T&lt;sub&gt;A&lt;/sub&gt;) , (T&lt;sub&gt;A&lt;/sub&gt; , T&lt;sub&gt;B&lt;/sub&gt; ) , ( B , T&lt;sub&gt;B&lt;/sub&gt; ) in stabilirea relatiei de incredere ( A , B)
&lt;br&gt;daca T&lt;sub&gt;A&lt;/sub&gt; si T&lt;sub&gt;B&lt;/sub&gt; nu au o relatie de incredre directa, vor face apel la T&lt;sub&gt;C&lt;/sub&gt; in care au ambiele incredere

&lt;/LI&gt;
&lt;LI&gt;metode
&lt;UL&gt;
&lt;LI&gt;cheie simetrica de incredere
&lt;UL&gt;
&lt;LI&gt;A cere lui T&lt;sub&gt;A&lt;/sub&gt; sa obtina o cheie pe care sa o partajeze cu B&lt;/LI&gt;
&lt;LI&gt;T&lt;sub&gt;A&lt;/sub&gt; si T&lt;sub&gt;B&lt;/sub&gt; stabilesc o cheie de termen scurt K&lt;sub&gt;AB&lt;/sub&gt;&lt;/LI&gt;
&lt;LI&gt;T&lt;sub&gt;A&lt;/sub&gt; si T&lt;sub&gt;B&lt;/sub&gt; distribuie K&lt;sub&gt;AB&lt;/sub&gt; lui A si B&lt;/LI&gt;
&lt;LI&gt;A comunica direct cu B utilizand K&lt;sub&gt;AB&lt;/sub&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;cheie publica de incredere
&lt;UL&gt;
&lt;LI&gt;A cere lui T&lt;sub&gt;A&lt;/sub&gt; cheia publica a lui B&lt;/LI&gt;
&lt;LI&gt;T&lt;sub&gt;A&lt;/sub&gt; o obtine de la T&lt;sub&gt;B&lt;/sub&gt; care garanteaza autenticitatea&lt;/LI&gt;
&lt;LI&gt;T&lt;sub&gt;A&lt;/sub&gt; transfera aceasta cheie lui A&lt;/LI&gt;
&lt;LI&gt;A comunica direct cu B utilizand K&lt;sub&gt;AB&lt;/sub&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;certificat incrucisat
&lt;br&gt;un certificat creat de CA&lt;sub&gt;1&lt;/sub&gt; prin care se certifica cheia publica a CA&lt;sub&gt;2&lt;/sub&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;modele de incredere cu mai multe CA-uri&lt;/DT&gt;&lt;DD&gt;
Relatiile de incredere intre CA-uri, in sisteme cu cheie publica, pot fi organizate in mai multe moduri
&lt;UL&gt;
&lt;LI&gt;lanturi de certificate si cai de certificare
&lt;br&gt;o entitate doreste sa obtina o cheie publica autentica, verificand un certicat emis de o alta CA decat CA in care are incredere
&lt;br&gt;calea de certificare este un drum in graful ce contine CA-urile, pentru care nodul initial este CA-ul in care entitatea are incredere si cel final este CA-ul care a emis certificatul pe care entitatea doreste sa-l verificae
&lt;br&gt;un lant de certificate este secventa de certificate emise de CA-urile dintr-o cale de certificare
&lt;/LI&gt;
&lt;LI&gt;domenii separate
&lt;br&gt;CA-urile trebuie sa aiba relatii de incredere pentru ca o entitate dintr-un domeniu sa poata comunica criptografic cu o entitate din alt domeniu; implicit CA-urile definesc separate de securitate care nu au relatii de incredere ai entitatile dintr-un domeniu nu pot verifica autenticitatea certificatelor emise in alt domeniu
&lt;br&gt;CA-ul este radacina unui arbore in care entitatile sunt frunze
&lt;/LI&gt;
&lt;LI&gt;model de incredere strict ierarhic
&lt;br&gt;CA-urile sunt nodurile neterminale ale unui arbore la care radacina este un CA si entiatile sunt frunze
&lt;br&gt;CA-ul parinte emite certificate pentru CA-urile copil
&lt;br&gt;pot fi organizate in paduri pentru care radacinile arborilor au relatii de incredere
&lt;/LI&gt;
&lt;LI&gt;certificate inverse si modelul de incredere bigraf
&lt;br&gt;topologia este aceeasi ca in modelul strict ierarhic dar un CA copil poate emite certificate pentru CA-ul parinte
&lt;br&gt;tipurile de certificate
&lt;UL&gt;
&lt;LI&gt;certificat direct
&lt;br&gt;este certificatul emis de CA parinte pentru CA copil
&lt;/LI&gt;
&lt;LI&gt;certificat invers
&lt;br&gt;este certificatul emis de CA  copil pentru CA parinte
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;distribuirea si revocarea certificatelor&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;distribuirea certificatelor
&lt;UL&gt;
&lt;LI&gt;modelul extragere
&lt;br&gt;este cel implementat print-un director de certificate, entitatile extragand certificatul de care au nevoie 
&lt;/LI&gt;
&lt;LI&gt;modelul promovare
&lt;br&gt;toate certificatele sunt trnsmise periodic tututror entitatilor
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;retragerea certificatelor
&lt;UL&gt;
&lt;LI&gt;expirarea datei din certificat&lt;/LI&gt;
&lt;LI&gt;notificare manuala
&lt;br&gt;entitatile sunt informate pe un canal out-of-band asupra cheilor revocate
&lt;/LI&gt;
&lt;LI&gt;fisier public cu chei revocate
&lt;br&gt;ce contine cheile revocate si care trebuie consultat de catre entiati inainte de a folosi o cheie
&lt;/LI&gt;
&lt;LI&gt;liste de revocare a certificatelor (CRL)
&lt;/LI&gt;
&lt;LI&gt;certificate de revocare&lt;/LI&gt;
&lt;br&gt;certificate cu cheie publica ce contin un flag si un timp de revocare si care se folosesc pentru anularea certificatului corespondent
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113776696350616566?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113776696350616566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113776696350616566&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113776696350616566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113776696350616566'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2006/01/tehnici-de-gestionare-cheilor.html' title='Tehnici de gestionare a cheilor'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113689067264090861</id><published>2006-01-10T12:56:00.000+02:00</published><updated>2007-03-06T23:25:07.736+02:00</updated><title type='text'>Protocoale de distribuire a cheilor</title><content type='html'>&lt;DL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;cadrul de lucru&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;protocol&lt;/DT&gt;&lt;DD&gt;un algoritm ce specifica pasii prin care doua sau mai multe entitati conclucreaza pentru atingerea unui obiectiv&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;distribuirea cheilor&lt;/DT&gt;&lt;DD&gt;un protocol prin care un secret partajat devine disponibil partilor spre uz criptografic viitor&lt;/DD&gt;
&lt;UL&gt;
multe dintre protocoalele de distribuire a cheilor implica existenta unei entitati centrale sau a unei entitati de incredere. Aceasta entitate se poate intalni sub diferite denumiri
&lt;LI&gt;trusted third party&lt;/LI&gt;
&lt;LI&gt;trusted server&lt;/LI&gt;
&lt;LI&gt;authentication server&lt;/LI&gt;
&lt;LI&gt;key distribution center (KDC)&lt;/LI&gt;
&lt;LI&gt;key translation center (KTC)&lt;/LI&gt;
&lt;LI&gt;certification authority (CA)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;transportul cheilor&lt;/DT&gt;&lt;DD&gt;un protocol prin care partile creeaza sau obtin un secret pe care il transfera intr-un mod sigur intre ele&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;acordul asupra cheilor&lt;/DT&gt;&lt;DD&gt;un protocol prin care partile deduc un secret partajat in baza informatiilor asociate fiecarei parti ai nici una dintre parti nu poate prezice rezultatul&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;schema de predistribuire a cheilor&lt;/DT&gt;&lt;DD&gt;un caz particular de distribuire a cheilor in care cheile sunt determinate a priori din informatia asociata partilor&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;distribuirea dinamica a cheilor&lt;/DT&gt;&lt;DD&gt;un caz particular de distribuire a cheilor in care cheile variaza de la o sesiune la alta&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;autentificarea cheii&lt;/DT&gt;&lt;DD&gt;o entitate se asigura ca nici o alta entitate in afara entitatii/entitatilor identificate nu are acces la o anumita cheie secreta&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;confirmarea cheii&lt;/DT&gt;&lt;DD&gt;o entitate se asigura ca o alta entitate (posibil neidentificata) este in posesia unei anumite chei secrete&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;autentificarea explicita a cheii&lt;/DT&gt;&lt;DD&gt;sunt simultan valabile autentificarea cheii si confirmarea cheii&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;distribuirea cheii autentificate&lt;/DT&gt;&lt;DD&gt;un protocol care asigura autentificarea cheii&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;distribuirea cheilor bazata pe identitate&lt;/DT&gt;&lt;DD&gt;un protocol de distribuire a cheilor in care informatia de identificare a entitatii se foloseste drept cheie publica&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;distribuirea independenta de mesaj a cheilor &lt;/DT&gt;&lt;DD&gt;un protocol de distribuire a cheilor in care sunt implicate doar doua entitati si in care mesajele schimbate intre acestea nu depind de informatia de sesiune&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;caracteristici ale protocoalelor de distribuire a cheilor&lt;/DT&gt;&lt;DD&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;DT&gt;natura autentificarii&lt;/DT&gt;&lt;DD&gt;o combinatie a urmatoarelor
&lt;UL&gt;
&lt;LI&gt;autentificarea entitatii&lt;/LI&gt;
&lt;LI&gt;autentificarea cheii&lt;/LI&gt;
&lt;LI&gt;confirmarea cheii&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;reciprocitatea autentificarii&lt;/DT&gt;&lt;DD&gt;fiecare dintre autentificarile de mai sus pot fi unilaterale sau mutuale&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;prospetimea cheii&lt;/DT&gt;&lt;DD&gt;din punctul de vedere al unei entitati o cheie proaspata este o cheie ce nu a mai fost utilizata&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;controlul cheii&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;o entitate alege o cheie&lt;/LI&gt;
&lt;LI&gt;cheia este derivata din informatioa asociata partilor si nici o parte nu poate o poate prevedea&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;eficienta&lt;/DT&gt;&lt;DD&gt;
&lt;OL type=a&gt;
&lt;LI&gt;numarul de mesaje schimbate intre parti&lt;/LI&gt;
&lt;LI&gt;latimea de banda necesara&lt;/LI&gt;
&lt;LI&gt;complexitatea calculelor&lt;/LI&gt;
&lt;LI&gt;posibilitatea de a face calcule off-line&lt;/LI&gt;
&lt;/OL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;cerinte privitoare la o terta parte&lt;/DT&gt;&lt;DD&gt;
&lt;OL type=a&gt;
&lt;LI&gt;existenta, on-line sau off-line sau inexistenta unei terte parti&lt;/LI&gt;
&lt;LI&gt;gradul de incredere cerut unei terte parti&lt;/LI&gt;
&lt;/OL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;tipul de certificat utilizat daca este cazul&lt;/DT&gt;&lt;DD&gt;maniera de distributie a informatiei initiale&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;nonrepudierea&lt;/DT&gt;&lt;DD&gt;un protocol trebuie sa asigure o confirmare a primirii cheii&lt;/DD&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;atac pasiv&lt;/DT&gt;&lt;DD&gt;atacul realizat de catre un adversar care inregistreaza traficul si apoi incearca analiza&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;atac activ&lt;/DT&gt;&lt;DD&gt;atacul realizat de catre un adversar ce modifica sau injecteaza mesaje&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;confidentialitate perfecta inainte&lt;/DT&gt;&lt;DD&gt;se spune despre un protocol ca are aceasta proprietate daca compromiterea cheilor de lunga durata nu duce la compromiterea cheilor din sesiunile din trecut&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;vulnerabil la atac cu cheie cunoscuta&lt;/DT&gt;&lt;DD&gt;se spune despre un protocol ca are aceasta proprietate daca compromiterea cheilor de sesiune din trecut permite unui adversar activ sa compromita cheile de sesiune din viitor sau impersonalizarea in viitor realizata de catre un adversar activ &lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;distribuire prin criptare si tehnici simetrice&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;transportul cheilor prin criptare simetrica&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;derivarea si transportul cheilor in lipsa unui server
&lt;UL&gt;
&lt;LI&gt;actualizarea punct-la-punct a cheii prin criptare simetrica&lt;/LI&gt;
&lt;LI&gt;actualizarea punct-la-punct a cheii prin prin derivarea cheii si functii neinversabile&lt;/LI&gt;
&lt;LI&gt;transportul cheii fara chei partajate initiale&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Kerberos si protocoale cu server
&lt;UL&gt;
&lt;LI&gt;protocolul de autentificare Kerberos
&lt;UL&gt;
&lt;LI&gt;
sunt implicate trei entitati: A(client), B(server si verificator) si T(server de autentificare Kerberos)
&lt;br&gt;initial A si B nu partajeaza nici un secret in timp ce T partajeaza cate un secret cu fiecare
&lt;br&gt;scopul lui B este acela de a verifica identitatea lui A si ca efect colateral, stabilirea unei chei partajate
&lt;br&gt;optional A si B se autentifica reciproc si stabilesc o cheie secreta care nu este cunoscuta de T
&lt;br&gt;A cere lui T referinte care sa-i permita sa se autentifice fata de B
&lt;br&gt;T returneaza lui A o cheie de sesiune criptata pentru A si un tichet criptat pentru B
&lt;br&gt;A transmite lui B tichetul si identitatea lui A
&lt;br&gt;A se autentifica fata de B print-un mesaj, ce contine un marcaj de timp, criptat cu cheia de sesiune
&lt;/LI&gt;
&lt;LI&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;UL&gt;
&lt;LI&gt;E este un algoritm de criptare simetrica&lt;/LI&gt;
&lt;LI&gt;N&lt;sub&gt;A&lt;/sub&gt; este o informatie aleasa de A; T&lt;sub&gt;A&lt;/sub&gt; este un marcaj de timp dedus din ceasul local al lui A&lt;/LI&gt;
&lt;LI k este o cheie de sesiune aleasa de T&gt;&lt;/LI&gt;
&lt;LI&gt;L este durata de validitate&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;A si T partajeaza cheia K&lt;sub&gt;AT&lt;/sub&gt; iar B si T partajeaza cheia K&lt;sub&gt;BT&lt;/sub&gt;; tichet&lt;sub&gt;B&lt;/sub&gt; = E&lt;sub&gt;K&lt;sub&gt;BT&lt;/sub&gt;&lt;/sub&gt;(k, A, L); autentificator = E&lt;sub&gt;k&lt;/sub&gt;(A, T&lt;sub&gt;A&lt;/sub&gt;, A&lt;sub&gt;subcheie&lt;/sub&gt;) &lt;/LI&gt;
&lt;LI&gt;
&lt;UL&gt;
mesaje
&lt;LI&gt;A &amp;#8594 T: A, B, N&lt;sub&gt;A&lt;/sub&gt;
&lt;/LI&gt;
&lt;LI&gt;A &amp;#8592 T: tichet&lt;sub&gt;B&lt;/sub&gt;, E&lt;sub&gt;K&lt;sub&gt;AT&lt;/sub&gt;&lt;/sub&gt;(k, N&lt;sub&gt;A&lt;/sub&gt;, L, B)&lt;/LI&gt;
&lt;LI&gt;A &amp;#8594 B: tichet&lt;sub&gt;B&lt;/sub&gt;, autentificator&lt;/LI&gt;
&lt;LI&gt;A &amp;#8592 B: E&lt;sub&gt;k&lt;/sub&gt;(T&lt;sub&gt;A&lt;/sub&gt;, B&lt;sub&gt;subcheie&lt;/sub&gt;)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;OL type=a&gt;
actiunile
&lt;LI&gt;A genereaza informatia N&lt;sub&gt;A&lt;/sub&gt; si trimite lui T mesajul&lt;/LI&gt;
&lt;LI&gt;T genereaza o cheie de sesiuen k, defineste o perioada de validitate, L, a tichetului (timp de expirare, optional timp de incepere); cripteaza cheia, informatia primita de la A, durata de validitate si identitatea lui B utilizand cheia lui A; T creeaza un tichet criptat cu cheia lui B ce contine cheia,k, identitatea lui A si durata de validitate; ambele sunt transmise lui A&lt;/LI&gt;
&lt;LI&gt;A decripteaza partea de mesaj ce-i este adresata si recupreaza cheia, k, informatia transmisa initial, N&lt;sub&gt;A&lt;/sub&gt;, durata de validitate, L si identitatea lui B; A verifica ca identitatea lui B si informatia, N&lt;sub&gt;A&lt;/sub&gt; sunt cele transmisie initila lui T si salveaza L; T cripteaza propria identitate, un marcaj de timp si optional un secret, A&lt;sub&gt;subcheie&lt;/sub&gt; utilizand cheia de sesiune si transmite lui B&lt;/LI&gt;
&lt;LI&gt;B decripteaza tichetul utilizand cheia, K&lt;sub&gt;BT&lt;/sub&gt; si recupreaza cheia de sesiuen, k pe care o foloseste pentru decriptarea autentificatorului si verifica
&lt;OL type=i&gt;
&lt;LI&gt;ca identitatea lui A din tichet si din autentificator corespunf&lt;/LI&gt;
&lt;LI&gt;daca marcajul de timp din autentificator este valid&lt;/LI&gt;
&lt;LI&gt;daca timpul local propriu este in intervalul specificat prin L&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;(optional autentificare mutuala) B cripteaza marcajul de timp al lui A si o subcheie (care sa permita o negociere ulterioara a unei subcehi de sesiune) cu cheia de sesiune, k, si trimite lui A&lt;/LI&gt;
&lt;LI&gt;A decripteza si recupereaza subcheia lui B, daca marcajul de timp corespunde&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;protocolul cu chei partajate Needham-Schroeder&lt;/LI&gt;
&lt;LI&gt;protocolul Otway-Rees&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;acordul asupra cheilor prin tehnici simetrice&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;u&gt;sistem de distribuire chei&lt;/u&gt; (KDS - key distribution system) este o metoda prin care, in timpul unei perioade de initializare, un server de incredere genereaza si distribuie date secrete utilizatorilor ai orice pereche de utilizatori poate sa calculeze o cheie partajata, necunoscuta altor utilizatori, exceptie facand serverul
&lt;br&gt;pentru o pereche de chei fixate, KDS este o scheme de predistributie
&lt;/LI&gt;
&lt;LI&gt;&lt;u&gt;KDS j-sigur&lt;/u&gt; pentru o pereche de utilizatori, orice coalitie de j sau mai putin utilizatori ce partajeaza datele proprii nu pot calcula cheia partajata de perechea initiala mai bine decat simpla ghicire&lt;/LI&gt;
&lt;LI&gt;&lt;u&gt;limita Blom pentru KDS&lt;/u&gt; intr-un KDS j-sigur ce asigura perechi de chei pe m biti, datele secrete stocate de catre fiecare utilizator trebuie sa aiba cel putin m(j+1) biti&lt;/LI&gt;
&lt;LI&gt;sistemul simetric Blom de predistribuire a cheii&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;distribuire prin criptare si tehnici asimetrice&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;transportul cheilor prin criptare cu cheie publica&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;protocoale fara semnaturi
&lt;UL&gt;
&lt;LI&gt;Needham-Schroeder cu cheie publica&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;protocoale cu semnaturi
&lt;UL&gt;
&lt;LI&gt;criptarea cheilor semnate&lt;/LI&gt;
&lt;LI&gt;criptare si semnare separat&lt;/LI&gt;
&lt;LI&gt;semnarea cheilor criptate&lt;/LI&gt;
&lt;LI&gt;protocoale de autentificare X.509
&lt;UL&gt;
&lt;LI&gt;este in categoria protocoalelor cu semneaza cheile criptate; recomandarea defineste protocoale de autentificare "strong two-way" si "strong three-way" (cu doua si trei treceri) cu autentificarea mutuala a entitatilor si transportul optional al cheilor, cu marcaje de timp si intrebare-raspuns ai sa raspunda urmatoarelor cerinte:
&lt;UL&gt;
&lt;LI&gt;inf. criptografice primite de entitatea B au fost construite de catre entitatea A, care nu le poate altera ulterior&lt;/LI&gt;
&lt;LI&gt;inf. criptografice primite de entitatea B sunt destinate lui B&lt;/LI&gt;
&lt;LI&gt;inf. criptografice primite de entitatea B sunt proaspete&lt;/LI&gt;
&lt;LI&gt;secretul mutual al cheilor transferate&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;protocol cu doua treceri
&lt;OL&gt;
A trimite lui B un mesaj si B raspunde cu un mesaj
&lt;br&gt;in caz de reusita, ambele entitati sunt mutual autentificate si se face transportul cheilor autentificate
&lt;LI&gt;Notatie
&lt;UL&gt;
&lt;LI&gt;P&lt;sub&gt;A&lt;/sub&gt;(x) este rezultatul aplicarii cheii publice a lui A la datele x&lt;/LI&gt;
&lt;LI&gt;S&lt;sub&gt;A&lt;/sub&gt;(x) este rezultatul aplicarii cheii private de semnare a lui A la datele x&lt;/LI&gt;
&lt;LI&gt;r&lt;sub&gt;A&lt;/sub&gt; si r&lt;sub&gt;B&lt;/sub&gt; sunt numere ce nu se refolosesc&lt;/LI&gt;
&lt;LI&gt;cert&lt;sub&gt;A&lt;/sub&gt; este un certificat ce asociaza entitatea A la o cheie publica adecvata atat pentru criptare cat si pentru verificarea semnaturii&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;initializarea sistemului
&lt;OL type=a&gt;
&lt;LI&gt;fiecare entitate are propria pereche de chei pentru criptare si semnare&lt;/LI&gt;
&lt;LI&gt;entitatea A trebuie sa obtina si sa autentifice cheia publica de criptare a lui B&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;mesajele protocolului
&lt;br&gt;fie D&lt;sub&gt;A&lt;/sub&gt; = (t&lt;sub&gt;A&lt;/sub&gt;, r&lt;sub&gt;A&lt;/sub&gt;, B, date&lt;sub&gt;1&lt;/sub&gt;, P&lt;sub&gt;B&lt;/sub&gt;(k&lt;sub&gt;1&lt;/sub&gt;)) si D&lt;sub&gt;B&lt;/sub&gt; = (t&lt;sub&gt;b&lt;/sub&gt;, r&lt;sub&gt;B&lt;/sub&gt;, A, r&lt;sub&gt;A&lt;/sub&gt;,  date&lt;sub&gt;2&lt;/sub&gt;, P&lt;sub&gt;A&lt;/sub&gt;(k&lt;sub&gt;2&lt;/sub&gt;))
&lt;UL&gt;
&lt;LI&gt;A &amp;#8594 B: cert&lt;sub&gt;A&lt;/sub&gt;, D&lt;sub&gt;A&lt;/sub&gt;, S&lt;sub&gt;A&lt;/sub&gt;(D&lt;sub&gt;A&lt;/sub&gt;)&lt;/LI&gt;
&lt;LI&gt;A &amp;#8592 B: cert&lt;sub&gt;B&lt;/sub&gt;, D&lt;sub&gt;B&lt;/sub&gt;, S&lt;sub&gt;B&lt;/sub&gt;(D&lt;sub&gt;B&lt;/sub&gt;)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;actiunile
&lt;OL type=a&gt;
&lt;LI&gt;A obtine marcajul de timp t&lt;sub&gt;A&lt;/sub&gt; care indica timpul de expirare, genereaza r&lt;sub&gt;A&lt;/sub&gt; si optional cheia simetrica k&lt;sub&gt;1&lt;/sub&gt;; date&lt;sub&gt;1&lt;/sub&gt; sunt date optionale pentru care se doreste autentificarea originii&lt;/LI&gt;
&lt;LI&gt;B verifica autenticitatea lui cert&lt;sub&gt;A&lt;/sub&gt;, extrage cheia publica de semnare a lui A si verifica semnatura lui A pe blocul D&lt;sub&gt;A&lt;/sub&gt;; B verifica ca el este destinatarul mesajului, ca marcajul de timp este valid si ca r&lt;sub&gt;A&lt;/sub&gt; nu a fost inlocuit (r&lt;sub&gt;A&lt;/sub&gt; contime o secventa pe care B o compara cu o informatie de stare locala in ceea ce priveste unicitatea pentru intervalul de validitate definit prin t&lt;sub&gt;A&lt;/sub&gt;)&lt;/LI&gt;
&lt;LI&gt;daca verificarile au succes B dautentifica pe A, decripteaza k&lt;sub&gt;1&lt;/sub&gt; utilizand propria cheie privata si o salveaza; A este autentificat
&lt;br&gt;daca se doreste autentificare mutuala, B obtine t&lt;sub&gt;B&lt;/sub&gt;, genereaza r&lt;sub&gt;B&lt;/sub&gt; si trimite lui A un mesaj similar
&lt;/LI&gt;
&lt;LI&gt;A parcurge aceeasi secventa de actiuni; A si B sunt mutual autentificate; A si B partajeaza sceretele mutual k&lt;sub&gt;1&lt;/sub&gt; si k&lt;sub&gt;2&lt;/sub&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
se foloseste aceeasi pereche de chei pentru semnare si criptare; deoarece nu se folosesc identificatori, D&lt;sub&gt;A&lt;/sub&gt; = D&lt;sub&gt;A&lt;/sub&gt; (... P&lt;sub&gt;B&lt;/sub&gt;(...) ...) nu exista garantia ca entitatatea care semneaza, S&lt;/sub&gt;A&lt;/sub&gt;(D&lt;/sub&gt;A&lt;/sub&gt;) este sursa
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;protocol cu trei treceri
&lt;OL&gt;
A si B schimba 3 mesaje; protocolul difera de cel anterior dupa cum urmeaza:
&lt;LI&gt;marcajele de timp t&lt;sub&gt;A&lt;/sub&gt; si t&lt;sub&gt;B&lt;/sub&gt; sunt setate la zero si nu se verifica&lt;/LI&gt;
&lt;LI&gt;A verifica ca r&lt;sub&gt;A&lt;/sub&gt; este acelasi ca in primul mesaj&lt;/LI&gt;
&lt;LI&gt;A trimite un al treilea mesaj catre B
&lt;br&gt;A &amp;#8594 B: (r&lt;sub&gt;B&lt;/sub&gt;, B), S&lt;sub&gt;A&lt;/sub&gt;(r&lt;sub&gt;B&lt;/sub&gt;, B)
&lt;/LI&gt;
&lt;LI&gt;B verifica semnatura cu mesajul in clar, corectitudinea identitatii B si ca r&lt;sub&gt;B&lt;/sub&gt; este acelasi cu cel initial&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;protocoale hibride
&lt;UL&gt;
aceste protocoale aplica o criptare simetrica peste criptarea cu cheie publica si peste semnatura
&lt;LI&gt;protocolul Beller-Yacobi
&lt;br&gt;asigura autentificarea mutuala a entitatilor si autentificarea explicita a cheii
&lt;br&gt;a fost prioectat pentru aplicatiile in care exista un dezchilibru intre puterile de calcul ale celor doua parti pentru a minimiza cerintele de putere de calcul ale partii mai slabe; identitatea partii mai slabe ramane ascunsa adversarului
&lt;br&gt;fie A entitatea mai slaba si B entitatea mai puternica; A se autentifica lui B prim semnarea unei intraberi in timp ce B se autentifica lui A demonstrand cunoasterea unei chei pe care numai B insusi o poate recupera
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;acordul asupra cheilor prin tehnici asimetrice&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;Diffie-Helllman si protocoale inrudite
&lt;UL&gt;
&lt;LI&gt;acordul Diffie-Hellman asupra cheilor
&lt;br&gt;a fost prima solutie practica la problema distributiei cheilor care a permis celor doua parti sa partajeze un secret fara a cunoaste a priori o alta informatie, pe un canal deschis
&lt;OL&gt;
A si B trimit cate un mesaj peste un canal deschis, la final A si B partajeaza secretul K
&lt;LI&gt;pas premergator, o singura data
&lt;br&gt;se selecteaza un numar prim p si un generator &amp;#945 al lui &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;&lt;sup&gt;*&lt;/sup&gt; si se publica
&lt;/LI&gt;
&lt;LI&gt;mesaje
&lt;UL&gt;
&lt;LI&gt;A &amp;#8594 B: &amp;#945&lt;sup&gt;x&lt;/sup&gt; mod p&lt;/LI&gt;
&lt;LI&gt;A &amp;#8592 B: &amp;#945&lt;sup&gt;y&lt;/sup&gt; mod p&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;actiuni
&lt;OL type=a&gt;
&lt;LI&gt;A selecteaza aleator un secret x, 1 &amp;#8806 x &amp;#8806 p-2 si trimite lui B&lt;/LI&gt;
&lt;LI&gt;B selecteaza aleator un secret x, 1 &amp;#8806 x &amp;#8806 p-2 si trimite lui A&lt;/LI&gt;
&lt;LI&gt;B calculeaza K = (&amp;#945&lt;sup&gt;x&lt;/sup&gt;)&lt;sup&gt;y&lt;/sup&gt; mod p &lt;/LI&gt;
&lt;LI&gt;A calculeaza K = (&amp;#945&lt;sup&gt;y&lt;/sup&gt;)&lt;sup&gt;x&lt;/sup&gt; mod p &lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;acordul ElGamal intr-o singura trecere&lt;/LI&gt;
&lt;LI&gt;protocoale MTI cu doua treceri&lt;/LI&gt;
&lt;LI&gt;protocolul STS (Station-to-Station)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Chei publice certificate implicit
&lt;UL&gt;
&lt;LI&gt;Gunther&lt;/LI&gt;
&lt;LI&gt;Girault&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Protocoale Diffie-Hellman cu chei certificate implicit&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113689067264090861?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113689067264090861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113689067264090861&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113689067264090861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113689067264090861'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2006/01/protocoale-de-distribuire-cheilor.html' title='Protocoale de distribuire a cheilor'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113654509004704806</id><published>2006-01-06T12:57:00.000+02:00</published><updated>2006-01-06T13:05:33.840+02:00</updated><title type='text'>Algoritmi semnatura digitala</title><content type='html'>&lt;DL&gt;
&lt;UL&gt;
majoritatea schemelor cu recuperarea mesajului sunt aplicate mesajelor de lungime fixa, in timp ce schemele cu anexa se aplica mesajelor de lungimi variabile
&lt;LI&gt;scheme cu anexa
&lt;UL&gt;
algoritmul de verificare primeste ca intrare mesajul
&lt;LI&gt;&lt;DT&gt;algoritmi generali&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;generarea cheii
&lt;OL&gt;
fiecare entitate creeaza o cheie privata pentru semnarea mesajelor si o cheie publica pentru verificare
&lt;LI&gt;o entitatea A selecteaza o cheie privata ce defineste o multime a transformarilor de semnare &lt;b&gt;S&lt;/b&gt;&lt;sub&gt;A&lt;/sub&gt; = {S&lt;sub&gt;A,k&lt;/sub&gt;/ k &amp;#8712 &lt;b&gt;I&lt;/b&gt;} unde fiecare S&lt;sub&gt;A,k&lt;/sub&gt; este o functie injectiva de la P&lt;sub&gt;s&lt;/sub&gt; la S &lt;/LI&gt;
&lt;LI&gt;&lt;b&gt;S&lt;/b&gt;&lt;sub&gt;A&lt;/sub&gt; defineste o transformare de verificare V&lt;sub&gt;A&lt;/sub&gt; :&lt;b&gt;P&lt;sub&gt;s&lt;/sub&gt;&lt;/b&gt;x &lt;b&gt;S&lt;/b&gt; &amp;#8594 {adevarat, fals} ai
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;adevarat&lt;/td&gt;&lt;td&gt;daca &lt;b&gt;S&lt;/b&gt;&lt;sub&gt;A,k&lt;/sub&gt;(&lt;u&gt;p&lt;/u&gt;) = s&lt;sup&gt;*&lt;/sup&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;V&lt;sub&gt;A&lt;/sub&gt;(&lt;u&gt;p&lt;/u&gt;, s&lt;sup&gt;*&lt;/sup&gt;) = &lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;fals&lt;/td&gt;&lt;td&gt;altfel&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&amp;#8704 &lt;u&gt;p&lt;/u&gt; &amp;#8712 &lt;b&gt;P&lt;/b&gt;&lt;sub&gt;h&lt;/sub&gt;, s&lt;sup&gt;*&lt;/sup&gt; &amp;#8712 &lt;b&gt;S&lt;/b&gt;, &lt;u&gt;p&lt;/u&gt; = h(p) cu p &amp;#8712 &lt;b&gt;P&lt;/b&gt;
&lt;br&gt;V&lt;sub&gt;A&lt;/sub&gt; poate fi calculata fara a cunoaste semnatura privata a emitentului
&lt;/LI&gt;
&lt;LI&gt;cheia publica a lui A este V&lt;sub&gt;A&lt;/sub&gt; si cheia privata este multimea &lt;b&gt;S&lt;/b&gt;&lt;sub&gt;A&lt;/sub&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;semnarea/verificarea
&lt;OL&gt;
o entitatea A produce o semnatura s &amp;#8712 &lt;b&gt;S&lt;/b&gt; pentru un mesaj p &amp;#8712 P ce mai tarziu poate fi verificata de o alta entitate B
&lt;LI&gt;semnarea
&lt;OL type=a&gt;
entitatea A executa
&lt;LI&gt;selecteaza un element k &amp;#8712 &lt;b&gt;I&lt;/b&gt;&lt;/LI&gt;
&lt;LI&gt;calculeaza &lt;u&gt;p&lt;/u&gt; = h(p) si s&lt;sup&gt;*&lt;/sup&gt; = S&lt;sub&gt;A,k&lt;/sub&gt;(&lt;u&gt;p&lt;/u&gt;)&lt;/LI&gt;
&lt;LI&gt;semnatura lui A pentru p este s&lt;sup&gt;*&lt;/sup&gt;; atat p cat si s&lt;sup&gt;*&lt;/sup&gt; sunt puse la dispozitia entitatilor care doresc sa verifice semnatura&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;verificarea
&lt;OL type=a&gt;
entitatea B executa
&lt;LI&gt;obtine cheia publica autentica, V&lt;sub&gt;A&lt;/sub&gt; a lui A&lt;/LI&gt;
&lt;LI&gt;calculeaza &lt;u&gt;p&lt;/u&gt; = h(p) si v = V&lt;sub&gt;A&lt;/sub&gt;(&lt;u&gt;p&lt;/u&gt;, s&lt;sup&gt;*&lt;/sup&gt;)&lt;/LI&gt;
&lt;LI&gt;accepta semnatura daca si numai daca v = adevarat&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;ElGamal&lt;/DT&gt;&lt;DD&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;DSA&lt;/DT&gt;&lt;DD&gt;
este o varianta a semnaturii ElGamal
&lt;UL&gt;
&lt;LI&gt;generarea cheilor
&lt;OL&gt;
&lt;LI&gt;selecteaza un numar prim q ai 2&lt;sup&gt;159&lt;/sup&gt; &amp;#60 q &amp;#60 2&lt;sup&gt;160&lt;/sup&gt;&lt;/LI&gt;
&lt;LI&gt;alege t ai 0 &amp;#8806 t &amp;#8806 8 si un numar prim p, 2&lt;sup&gt;511+64t&lt;/sup&gt; &amp;#60 p &amp;#60 2&lt;sup&gt;511+64t&lt;/sup&gt; cu proprietatea q|(p-1) &lt;/LI&gt;
&lt;LI&gt;selecteaza un generator &amp;#945 al grupului ciclic de ord q din &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;&lt;sup&gt;*&lt;/sup&gt;
&lt;OL&gt;
&lt;LI&gt;selecteaza un element g &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;&lt;sup&gt;*&lt;/sup&gt; si calculeaza &amp;#945 = g&lt;sup&gt;(p-1)/q&lt;/sup&gt; mod p&lt;/LI&gt;
&lt;LI&gt;daca &amp;#945 = 1 at reia de la pasul anterior&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;selecteaza aleator un intreg a ai 1 &amp;#8806 a &amp;#8806 q-1&lt;/LI&gt;
&lt;LI&gt;calculeaza y = &amp;#945&lt;sup&gt;a&lt;/sup&gt; mod p&lt;/LI&gt;
&lt;LI&gt;cheia publica a lui A este (p, q, &amp;#945, y) si cheia privata este a&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;semnarea/verificarea
&lt;UL&gt;
&lt;LI&gt;semnarea
&lt;OL&gt;
entitatea A semneaza un mesaj, p, de lungime arbitrara
&lt;LI&gt;selecteaza aleator un intreg k, 0 &amp;#60 k &amp;#60 q, k va ramane secret&lt;/LI&gt;
&lt;LI&gt;calculeaza r = (&amp;#945&lt;sup&gt;k&lt;/sup&gt; mod p) mod q&lt;/LI&gt;
&lt;LI&gt;calculeaza k&lt;sup&gt;-1&lt;/sup&gt; mod q&lt;/LI&gt;
&lt;LI&gt;calculeaza s = (k&lt;sup&gt;-1&lt;/sup&gt;(h(p)+ar)) mod q&lt;/LI&gt;
&lt;LI&gt;semnatura lui A este (r, s)&lt;/LI&gt;
&lt;/OL&gt;
in standardul DSS functia h este SHA-1
&lt;/LI&gt;
&lt;LI&gt;verificarea
&lt;OL&gt;
entitatea B verifica semnatura lui A, (r, s) pentru mesajul p
&lt;LI&gt;obtine cheia publica autentica a lui A, (p, q, &amp;#945, y)&lt;/LI&gt;
&lt;LI&gt;verifica ca 0 &amp;#60 r &amp;#60 q si 0 &amp;#60 s &amp;#60 q, altfel respinge semnatura &lt;/LI&gt;
&lt;LI&gt;calculeaza w = s&lt;sup&gt;-1&lt;/sup&gt; mod q si h(p)&lt;/LI&gt;
&lt;LI&gt;calculeaza u&lt;sub&gt;1&lt;/sub&gt; = (wh(m)) mod q si u&lt;sub&gt;2&lt;/sub&gt; = (rw) mod q&lt;/LI&gt;
&lt;LI&gt;calculeaza v = ( (a&lt;sup&gt;u&lt;sub&gt;1&lt;/sub&gt;&lt;/sup&gt; y&lt;sup&gt;u&lt;sub&gt;2&lt;/sub&gt;&lt;/sup&gt;) ) mod q&lt;/LI&gt;
&lt;LI&gt;accepta semnatura daca v = r&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;PKCS#1&lt;/DT&gt;&lt;DD&gt;
aceasta schema nu utilizeaza caracteristica de recuperare a mesajului a schemei RSA si foloseste o functie de dispersie (MD-2 sau MD-5)
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;Schnorr&lt;/DT&gt;&lt;DD&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;Feige-Fiat-Shamir&lt;/DT&gt;&lt;DD&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;scheme cu recuperarea mesajului
&lt;UL&gt;
algoritmul de verificare nu necesita mesajul
&lt;LI&gt;&lt;DT&gt;algoritmi generali&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;generarea cheii
&lt;OL&gt;
fiecare entitate creeaza o cheie privata pentru semnarea mesajelor si o cheie publica pentru verificare
&lt;LI&gt;o entitatea A selecteaza o cheie privata ce defineste o multime a transformarilor de semnare &lt;b&gt;S&lt;/b&gt;&lt;sub&gt;A&lt;/sub&gt; = {S&lt;sub&gt;A,k&lt;/sub&gt;/ k &amp;#8712 &lt;b&gt;I&lt;/b&gt;} unde fiecare S&lt;sub&gt;A,k&lt;/sub&gt; este o functie injectiva de la P&lt;sub&gt;s&lt;/sub&gt; la S &lt;/LI&gt;
&lt;LI&gt;&lt;b&gt;S&lt;/b&gt;&lt;sub&gt;A&lt;/sub&gt; defineste o transformare de verificare V&lt;sub&gt;A&lt;/sub&gt; :&lt;b&gt;S&lt;/b&gt; &amp;#8594 &lt;b&gt;P&lt;sub&gt;s&lt;/sub&gt;&lt;/b&gt; ai
&amp;#8704 &lt;u&gt;p&lt;/u&gt; &amp;#8712 &lt;b&gt;P&lt;/b&gt;&lt;sub&gt;s&lt;/sub&gt;, &amp;#8704 k &amp;#8712 &lt;b&gt;I&lt;/b&gt;, V&lt;sub&gt;A&lt;/sub&gt; &amp;#186 S&lt;sub&gt;A,k&lt;/sub&gt; = 1&lt;sub&gt;&lt;b&gt;P&lt;/b&gt;&lt;sub&gt;s&lt;/sub&gt;&lt;/sub&gt;
&lt;br&gt;V&lt;sub&gt;A&lt;/sub&gt; poate fi calculata fara a cunoaste semnatura privata a emitentului
&lt;/LI&gt;
&lt;LI&gt;cheia publica a lui A este V&lt;sub&gt;A&lt;/sub&gt; si cheia privata este multimea &lt;b&gt;S&lt;/b&gt;&lt;sub&gt;A&lt;/sub&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;semnarea/verificarea
&lt;OL&gt;
o entitatea A produce o semnatura s &amp;#8712 &lt;b&gt;S&lt;/b&gt; pentru un mesaj p &amp;#8712 P ce mai tarziu poate fi verificata de o alta entitate B; mesajul p este recuperat din s
&lt;LI&gt;semnarea
&lt;OL type=a&gt;
entitatea A executa
&lt;LI&gt;selecteaza un element k &amp;#8712 &lt;b&gt;I&lt;/b&gt;&lt;/LI&gt;
&lt;LI&gt;calculeaza &lt;u&gt;p&lt;/u&gt; = r(p) si s&lt;sup&gt;*&lt;/sup&gt; = S&lt;sub&gt;A,k&lt;/sub&gt;(&lt;u&gt;p&lt;/u&gt;)&lt;/LI&gt;
&lt;LI&gt;semnatura lui A este s&lt;sup&gt;*&lt;/sup&gt;; s&lt;sup&gt;*&lt;/sup&gt; este pus la dispozitia entitatilor care doresc sa verifice semnatura&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;verificarea
&lt;OL type=a&gt;
entitatea B executa
&lt;LI&gt;obtine cheia publica autentica, V&lt;sub&gt;A&lt;/sub&gt; a lui A&lt;/LI&gt;
&lt;LI&gt;calculeaza &lt;u&gt;p&lt;/u&gt; = V&lt;sub&gt;A&lt;/sub&gt;(s&lt;sup&gt;*&lt;/sup&gt;)&lt;/LI&gt;
&lt;LI&gt;verifica ca &lt;u&gt;p&lt;/u&gt; &amp;#8712 &lt;b&gt;P&lt;/b&gt;&lt;sub&gt;r&lt;/sub&gt; si in acest caz accepta semnatura&lt;/LI&gt;
&lt;LI&gt;recupereaza mesajul p din &lt;u&gt;p&lt;/u&gt; calculand r&lt;sup&gt;-1&lt;/sup&gt;(&lt;u&gt;p&lt;/u&gt;) &lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
functia redundanta r si inversa sa sunt cunoscute public; selectia lui r este critica pentru securitatea sistemului
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;RSA&lt;/DT&gt;&lt;DD&gt;
atat spatiul de semnare &lt;b&gt;P&lt;/b&gt;&lt;sub&gt;s&lt;/sub&gt; cat si spatiul semnaturilor &lt;b&gt;S&lt;/b&gt; sunt reprezentate de &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;n&lt;/sub&gt;
&lt;UL&gt;
&lt;LI&gt;generarea cheilor
&lt;OL&gt;
fiecare entitate creeaza o cheie publica RSA si o cheie privata corespondenta; o entitate A executa
&lt;LI&gt;genereaza doua numere prime distincte, p si q, de acceasi marime&lt;/LI&gt;
&lt;LI&gt;calculeaza n = pq si &amp;#966 = (p-1)(q-1)&lt;/LI&gt;
&lt;LI&gt;selecteaza aleator in intreg e, 1 &amp;#60 e &amp;#60 &amp;#966 ai cmmdc(e, &amp;#966) = 1&lt;/LI&gt;
&lt;LI&gt;calculeaza intregul (Euclid extins) d, 1 &amp;#60 d &amp;#60 &amp;#966 ai ed &amp;#8801 1 mod &amp;#966 &lt;/LI&gt;
&lt;LI&gt;cheia publica a lui A este (n, e) si cheia privata este d&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;semnarea/verificarea
&lt;OL&gt;
entitatea A semneaza un mesaj p &amp;#8712 &lt;b&gt;P&lt;/b&gt; si oricare alta entitate B poate verifica smenatura lui A si recupera mesajul p din semnatura
&lt;LI&gt;semnarea
&lt;OL&gt;
o entitate A executa
&lt;LI&gt;calculeaza &lt;u&gt;p&lt;/u&gt; = r(p) ca un intreg in intervalul [0, n-1]&lt;/LI&gt;
&lt;LI&gt;calculeaza s = &lt;u&gt;p&lt;/u&gt;&lt;sup&gt;d&lt;/sup&gt; mod n &lt;/LI&gt;
&lt;LI&gt;semnatura lui A pentru p este s&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;verificarea
&lt;OL&gt;
o alta entitate B executa
&lt;LI&gt;obtine cheia publica autentica a lui A, (n, e)&lt;/LI&gt;
&lt;LI&gt;calculeaza &lt;u&gt;p&lt;/u&gt; = s&lt;sup&gt;e&lt;/sup&gt; mod n&lt;/LI&gt;
&lt;LI&gt;verifica ca &lt;u&gt;p&lt;/u&gt; &amp;#8712 P&lt;sub&gt;r&lt;/sub&gt; si daca nu rejecteaza semnatura&lt;/LI&gt;
&lt;LI&gt;recupereaza mesajul p = r&lt;sup&gt;-1&lt;/sup&gt;(&lt;u&gt;p&lt;/u&gt;)&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;Rabin&lt;/DT&gt;&lt;DD&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;Nyberg-Rueppel&lt;/DT&gt;&lt;DD&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DL&gt;

&lt;a href="http://csrc.nist.gov/publications/fips/fips186-2/fips186-2-change1.pdf"&gt;DSS&lt;/a&gt;
&lt;a href="ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-1.pdf"&gt;PKCS#1&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113654509004704806?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113654509004704806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113654509004704806&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113654509004704806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113654509004704806'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2006/01/algoritmi-semnatura-digitala.html' title='Algoritmi semnatura digitala'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113647654620093519</id><published>2006-01-05T17:55:00.000+02:00</published><updated>2006-01-05T17:55:46.406+02:00</updated><title type='text'>Algoritmi functii dispersie - sumar</title><content type='html'>&lt;DL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;MDC&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;functii hash bazate pe cifruri bloc&lt;/DT&gt;&lt;DD&gt;
valoarea de hash are aceeasi lungime cu cea a blocului cifrat sau lungime dubla (lungime simpla si lungime dubla)
&lt;UL&gt;
&lt;LI&gt;cifru bloc (n, r)
&lt;br&gt;un cifru bloc care defineste o functie de la multimea textelor in clar de lungime n in biti la multimea textelor cifrate de lungime n biti, folosinf o cheie de lungime r biti; E&lt;sub&gt;k&lt;/sub&gt;(x) este criptarea lui x cu cheia k
&lt;/LI&gt;
&lt;LI&gt;functie hash iterata
&lt;br&gt;este o functie hash, h, care primeste o intrare x de lungime finita pe care o imparte in blocuri x&lt;sub&gt;i&lt;/sub&gt; de lungime r, eventual adauga biti la x pentru a obtine o lungime divizibila cu r; fiecare bloc x&lt;sub&gt;i&lt;/sub&gt; este prelucrat de o functie hash de lungime fixa, f, care se numeste functia de compresie a lui h; un rezultat intermediar H(x&lt;sub&gt;i&lt;/sub&gt;) = f(H(x&lt;sub&gt;i-1&lt;/sub&gt;) , x&lt;sub&gt;i&lt;/sub&gt;)
&lt;/LI&gt;
&lt;LI&gt;rata unei functii de hash iterate, h
&lt;br&gt; care are o functie de compresi f ce realizeaza s criptari de bloc pentru a procesa un bloc de mesaj de lungime n, este 1/s
&lt;/LI&gt;
&lt;LI&gt;MDC-uri de lungime simpla cu rata 1
&lt;UL&gt;
componente comune
&lt;OL&gt;
&lt;LI&gt;un cifru E&lt;sub&gt;k&lt;/sub&gt; cu lungimea blocului n&lt;/LI&gt;
&lt;LI&gt;o functie g care mapeaza intrarile de n biti catre cheile K&lt;/LI&gt;
&lt;LI&gt;o valoare intiala, pe n biti, IV&lt;/LI&gt;
&lt;/OL&gt;
pentru urmatorii algoritmi
&lt;LI&gt;&lt;DT&gt;Matyas-Meyer-Oseas&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;intrare: sirul de biti, x&lt;/LI&gt;
&lt;LI&gt;iesire: valoarea de hash a lui x
&lt;OL&gt;
&lt;LI&gt;intrarea x este impartita in blocuri de n biti si completata, x&lt;sub&gt;1&lt;/sub&gt;x&lt;sub&gt;2&lt;/sub&gt;...x&lt;sub&gt;t&lt;/sub&gt;&lt;/LI&gt;
&lt;LI&gt;iesirea H&lt;sub&gt;t&lt;/sub&gt; este definita de: H&lt;sub&gt;0&lt;/sub&gt; = IV, H&lt;sub&gt;i&lt;/sub&gt; = E&lt;sub&gt;g(H&lt;sub&gt;i-1&lt;/sub&gt;)&lt;/sub&gt;(x&lt;sub&gt;i&lt;/sub&gt;) &amp;#8853 x&lt;sub&gt;i&lt;/sub&gt;, 1 &amp;#8806 i &amp;#8806 t&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;Davies-Meyer&lt;/DT&gt;&lt;DD&gt;&lt;/DD&gt;
&lt;UL&gt;
&lt;LI&gt;intrare: sirul de biti, x&lt;/LI&gt;
&lt;LI&gt;iesire: valoarea de hash a lui x
&lt;OL&gt;
&lt;LI&gt;intrarea x este impartita in blocuri de n biti si completata, x&lt;sub&gt;1&lt;/sub&gt;x&lt;sub&gt;2&lt;/sub&gt;...x&lt;sub&gt;t&lt;/sub&gt;&lt;/LI&gt;
&lt;LI&gt;iesirea H&lt;sub&gt;t&lt;/sub&gt; este definita de: H&lt;sub&gt;0&lt;/sub&gt; = IV, H&lt;sub&gt;i&lt;/sub&gt; = E&lt;sub&gt;x&lt;sub&gt;i&lt;/sub&gt;&lt;/sub&gt;(H&lt;sub&gt;i-1&lt;/sub&gt;) &amp;#8853 H&lt;sub&gt;i-1&lt;/sub&gt;, 1 &amp;#8806 i &amp;#8806 t&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;Miyaguchi-Preneel&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;intrare: sirul de biti, x&lt;/LI&gt;
&lt;LI&gt;iesire: valoarea de hash a lui x
&lt;OL&gt;
&lt;LI&gt;intrarea x este impartita in blocuri de n biti si completata, x&lt;sub&gt;1&lt;/sub&gt;x&lt;sub&gt;2&lt;/sub&gt;...x&lt;sub&gt;t&lt;/sub&gt;&lt;/LI&gt;
&lt;LI&gt;iesirea H&lt;sub&gt;t&lt;/sub&gt; este definita de: H&lt;sub&gt;0&lt;/sub&gt; = IV, H&lt;sub&gt;i&lt;/sub&gt; = E&lt;sub&gt;g(H&lt;sub&gt;i-1&lt;/sub&gt;)&lt;/sub&gt;(x&lt;sub&gt;i&lt;/sub&gt;) &amp;#8853 x&lt;sub&gt;i&lt;/sub&gt; &amp;#8853 H&lt;sub&gt;i-1&lt;/sub&gt;, 1 &amp;#8806 i &amp;#8806 t&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;MDC-uri de lungime dubla: MDC-2 si MDC-4
&lt;br&gt;MDC-2 si MDC-4 necesita 2 si respectiv 4 operatii de cifru bloc pentru un bloc de hash; folosesc 2 si 4 iteratii Matyas_Meyer_Oseas pentru a produce un hash de lungime dubla; cand sunt folosite ca in specificatia orginala, cu DES ca cifru bloc, produc valori de hash de 128 biti
&lt;UL&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;functii hash ad-hoc bazate pe MD4&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;MD4
&lt;br&gt;proiectat pentru implementare soft pe masini de 32 biti; motive de securitate au condus la aparitia MD5
&lt;/LI&gt;
&lt;LI&gt;MD5
&lt;UL&gt;
&lt;LI&gt;intrare: un sir de biti de lungime arbitrara b &amp;#8807 0&lt;/LI&gt;
&lt;LI&gt;iesire: valoarea de hash a lui pe 128 biti&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;SHA-1, SHA-256, SHA-512, SHA-384&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;functii hash bazate pe aritmetica modulo&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;MASH-1, MASH-2&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;MAC&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;MAC bazat pe cifruri bloc&lt;/LI&gt;
&lt;LI&gt;MAC construit din MDC&lt;/LI&gt;
&lt;LI&gt;MAC ad hoc&lt;/LI&gt;
&lt;LI&gt;MAC pentru cifru flux&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DL&gt;

&lt;a href="http://www.rfc-editor.org/rfc/rfc1321.txt"&gt;MD-5&lt;/a&gt;
&lt;a href="http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf"&gt;familia SHA&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113647654620093519?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113647654620093519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113647654620093519&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113647654620093519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113647654620093519'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2006/01/algoritmi-functii-dispersie-sumar.html' title='Algoritmi functii dispersie - sumar'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113646678047514302</id><published>2006-01-05T15:12:00.000+02:00</published><updated>2006-01-05T15:13:00.686+02:00</updated><title type='text'>Criptarea cu cheie publica</title><content type='html'>&lt;DL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;Schema de criptare cu cheie publica&lt;/DT&gt;
&lt;DD&gt;
este o tripleta (G, E, D) de algoritmi PTP care satisfac urmatoarele:
&lt;UL&gt;
&lt;LI&gt;algoritmul de generare a cheii
&lt;br&gt;un algoritm PTP, G, care primeste ca intare o sceventa l&lt;sup&gt;k&lt;/sup&gt; (parametrul de securitate) si produce o pereche (e, d) unde e se numeste cheia publica si d este cheia privata corespondenta; (e, d) &amp;#8712 G(l&lt;sup&gt;k&lt;/sup&gt;) este o pereche de chei de criptare/decriptare
&lt;/LI&gt;
&lt;LI&gt;algoritmul de criptare
&lt;br&gt;un algoritm PTP, E, care primeste ca intrare:
&lt;UL&gt;
&lt;LI&gt;un parametru de securitate l&lt;sup&gt;k&lt;/sup&gt;&lt;/LI&gt;
&lt;LI&gt;o cheie publica e &amp;#8712 G(l&lt;sup&gt;k&lt;/sup&gt;)&lt;/LI&gt;
&lt;LI&gt;un text in clar m &amp;#8712 {0,1}&lt;sup&gt;k&lt;/sup&gt;&lt;/LI&gt;
&lt;/UL&gt;
si produce un text cifrat c &amp;#8712 {0,1}&lt;sup&gt;k&lt;/sup&gt;, c &amp;#8712 E(l&lt;sup&gt;k&lt;/sup&gt;, e, m)
&lt;/LI&gt;
&lt;LI&gt;algoritmul de decriptare
&lt;br&gt;un algoritm PTP, D, care primeste ca intrare
&lt;UL&gt;
&lt;LI&gt;un parametru de securitate l&lt;sup&gt;k&lt;/sup&gt;&lt;/LI&gt;
&lt;LI&gt;o cheie privata d &amp;#8712 G(l&lt;sup&gt;k&lt;/sup&gt;)&lt;/LI&gt;
&lt;LI&gt;un text cifrat c &amp;#8712 E(l&lt;sup&gt;k&lt;/sup&gt;, e, m)&lt;/LI&gt;
&lt;/UL&gt;
si produce un text m' &amp;#8712 {0, 1}&lt;sup&gt;*&lt;/sup&gt; ai
&lt;UL&gt;
&lt;LI&gt;&amp;#8704 (e, d) &amp;#8712 G(l&lt;sup&gt;k&lt;/sup&gt;)&lt;/LI&gt;
&lt;LI&gt;&amp;#8704 m&lt;/LI&gt;
&lt;LI&gt;&amp;#8704 c &amp;#8712 E(l&lt;sup&gt;k&lt;/sup&gt;, e, m)&lt;/LI&gt;
&lt;LI&gt;prob(D(l&lt;sup&gt;k&lt;/sup&gt;, e, m) &amp;#8800  m') este neglijabila&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;Obs. definitie&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;singura diferenta fata de definitia unui sistem de criptare cu cheie secreta (vezi blogul "Cifru") este ca adversarul cunoaste cheia publica&lt;/LI&gt;
&lt;LI&gt;textele in clar cu lungime diferita de k (lungimea cheii de criptare) vor fi criptate dupa spargerea in blocuri de lungime k ai
&lt;br&gt;E&lt;sub&gt;e&lt;/sub&gt;(a&lt;sub&gt;1&lt;/sub&gt;a&lt;sub&gt;2&lt;/sub&gt;...a&lt;sub&gt;l&lt;/sub&gt;a&lt;sub&gt;l+1&lt;/sub&gt;) = E&lt;sub&gt;e&lt;/sub&gt;(a&lt;sub&gt;1&lt;/sub&gt;)E&lt;sub&gt;e&lt;/sub&gt;(a&lt;sub&gt;2&lt;/sub&gt;)...E&lt;sub&gt;e&lt;/sub&gt;(a&lt;sub&gt;l&lt;/sub&gt;)E&lt;sub&gt;e&lt;/sub&gt;(a&lt;sub&gt;l+1&lt;/sub&gt;) unde |a&lt;sub&gt;1&lt;/sub&gt;|=|a&lt;sub&gt;2&lt;/sub&gt;|=...=|a&lt;sub&gt;l&lt;/sub&gt;|=k si |a&lt;sub&gt;1&lt;/sub&gt;|&amp;#8660k
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;Modelul functiei cu trapa&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;G primeste ca intare parametrul de securitate l&lt;sup&gt;k&lt;/sup&gt; si prduce perechi (f, t&lt;sub&gt;f&lt;/sub&gt;) unde f este o functie cu trapa si t&lt;sub&gt;f&lt;/sub&gt; este trapa&lt;/LI&gt;
&lt;LI&gt;&amp;#8704 m, E(f, m) = f(m)&lt;/LI&gt;
&lt;LI&gt;fiind date c &amp;#8712 E(f, m) si t&lt;sub&gt;f&lt;/sub&gt;, D(t&lt;sub&gt;f&lt;/sub&gt;,c) = f&lt;sup&gt;-1&lt;/sup&gt;(c) = f&lt;sup&gt;-1&lt;/sup&gt;(f(m)) = m&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;
probleme
&lt;UL&gt;
&lt;LI&gt;&lt;u&gt;alegerea spatiului de mesaje&lt;/u&gt; faptul ca f este o functie cu trapa nu implica ca inversarea lui f(x) este grea at cand x este prost ales&lt;/LI&gt;
&lt;LI&gt;&lt;u&gt;informatie partiala&lt;/u&gt; faptul ca este o functie cu trapa nu implica faptul ca f(x) ascunde toate informatiile despre x&lt;/LI&gt;
&lt;LI&gt;&lt;u&gt;relatii intre textele criptate&lt;/u&gt; trimiterea de mai multe ori a aceluiasi mesaj este detectabila&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;RSA&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;colectii RSA de posibile functii cu trapa
&lt;br&gt;fie p, q prime, &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;n&lt;/sub&gt;&lt;sup&gt;*&lt;/sup&gt; grupul multiplicativ cu ordinul &amp;#966(n) = (p-1)(q-1) si e &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p-1&lt;/sub&gt; relativ prim cu &amp;#966(n); setul de indici va fi I={(n, e) / n = pq, |p|=|q|} si trapa ptr. (n, e) este d ai ed = 1 mod &amp;#966(n); RSA = {RSA&lt;sub&gt;(n, e)&lt;/sub&gt; : &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;n&lt;/sub&gt;&lt;sup&gt;*&lt;/sup&gt; &amp;#8594 &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;n&lt;/sub&gt;&lt;sup&gt;*&lt;/sup&gt;}&lt;sub&gt;(n, e) &amp;#8712 I&lt;/sub&gt; unde RSA&lt;sub&gt;(n, e)&lt;/sub&gt;(x) = x&lt;sup&gt;e&lt;/sup&gt; mod n
&lt;/LI&gt;
&lt;LI&gt;spatii rare de mesaje
&lt;br&gt;ptr o pereche (n, e) fie este greu de inversat RSA&lt;sub&gt;(n, e)&lt;/sub&gt; pentru toti x din &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;n&lt;/sub&gt;&lt;sup&gt;*&lt;/sup&gt; in afara unei fractiuni neglijabile, fie este usor de inversat pentru orice x
&lt;/LI&gt;
&lt;LI&gt;generarea cheilor
&lt;OL&gt;
o entitate A executa:
&lt;LI&gt;se genereaza aleator doua numere prime distincte de aceeasi marime, p si q&lt;/LI&gt;
&lt;LI&gt;se calculeaza n = pq si &amp;#966=(p-1)(q-1)&lt;/LI&gt;
&lt;LI&gt;se selecteaza aleator un interg, e, 1 &amp;#60 e &amp;#60 &amp;#966 ai cmmdc(e, &amp;#966) = 1&lt;/LI&gt;
&lt;LI&gt;se calculeaza (Euclid extins) intregul d, 1 &amp;#60 d &amp;#60 &amp;#966 ai ed &amp;#8801 1 mod &amp;#966&lt;/LI&gt;
&lt;LI&gt;cheia publicA A este (n, e) si cheia privata a lui A este d&lt;/LI&gt;
e se numeste exponent de criptare, d se numeste exponent de decriptare si n se numeste modul
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;criptarea/decriptarea
B cripteaza un mesaj m pentru A pe care acesta il va decripta
&lt;OL&gt;
&lt;LI&gt;criptarea
&lt;OL type=a&gt;
&lt;LI&gt;obtine cheia publica (n, e) autentica a lui A&lt;/LI&gt;
&lt;LI&gt;reprezinta mesajul m ca un intreg in intervalul [0, n-1]&lt;/LI&gt;
&lt;LI&gt;calculeaza c = m&lt;sup&gt;e&lt;/sup&gt; mod n&lt;/LI&gt;
&lt;LI&gt;trimite c lui A&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;decriptarea
&lt;OL type=a&gt;
&lt;LI&gt;foloseste cheia privata, d, pentru a obtine m = e&lt;sup&gt;d&lt;/sup&gt; mod n&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;Rabin&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;f&lt;sub&gt;n&lt;/sub&gt;(m) &amp;#8801 m&lt;sup&gt;2&lt;/sup&gt; mod n unde n = pq cu p si q prime&lt;/LI&gt;
&lt;LI&gt;f&lt;sub&gt;n&lt;/sub&gt;&lt;sup&gt;-1&lt;/sup&gt;(m&lt;sup&gt;2&lt;/sup&gt;) = x ai x&lt;sup&gt;2&lt;/sup&gt; = m&lt;sup&gt;2&lt;/sup&gt; mod n
&lt;br&gt; si ptr. a identifica una dintre cele 4 radacini se poate poate folosi intreg spatiul de mesaje daca acesta este rar in &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;n&lt;/sub&gt;&lt;sup&gt;*&lt;/sup&gt;
&lt;/LI&gt;
&lt;LI&gt;
generarea cheilor
&lt;OL&gt;
fiecare entitate, A, creeaza o cheie publica si o cheie privata
&lt;LI&gt;se genereaza aleator doua numere prime distincte de aceeasi marime, p si q&lt;/LI&gt;
&lt;LI&gt;se calculeaza n = pq&lt;/LI&gt;
&lt;LI&gt;cheia publica a lui A este n, cheia privata a lui A este (p, q)&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;
criptarea/decriptarea
&lt;OL&gt;
B cripteaza un mesaj, m, pentru A pe care acesta il decripteaza
&lt;LI&gt;criptarea
&lt;OL type=a&gt;
&lt;LI&gt;obtine cheia publica a lui A&lt;/LI&gt;
&lt;LI&gt;reprezinta mesajul, m, ca un intreg in multimea {0, 1, ..., n-1}&lt;/LI&gt;
&lt;LI&gt;calculeaza c = m&lt;sup&gt;2&lt;/sup&gt; mod n&lt;/LI&gt;
&lt;LI&gt;trimite c lui A&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;decriptarea
&lt;OL type=a&gt;
&lt;LI&gt;calculeaza cele 4 radacini m&lt;sub&gt;1&lt;/sub&gt;, m&lt;sub&gt;2&lt;/sub&gt;, m&lt;sub&gt;3&lt;/sub&gt;, m&lt;sub&gt;4&lt;/sub&gt; pentru c &lt;/LI&gt;
&lt;LI&gt;A decide care dintre radacini este m&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;rucsace&lt;/DT&gt;&lt;DD&gt;
sisteme bazate pe problema NP-completa, a rucsacului:
&lt;br&gt;fie un vector a=(a&lt;sub&gt;1&lt;/sub&gt;, a&lt;sub&gt;2&lt;/sub&gt;, ..., a&lt;sub&gt;n&lt;/sub&gt;) de intregi si C o valoare tinta; sa se determine daca exista un vector x &amp;#8712 {0, 1}&lt;sup&gt;n&lt;/sup&gt; ai a x = C
&lt;br&gt;vectorul a este cheia publica; textul criptat c = m a unde m este textul clar
&lt;UL&gt;
&lt;LI&gt;Merkle-Hellman&lt;/LI&gt;
&lt;LI&gt;Chor-Rivest&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;ElGamal&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;generarea cheilor
&lt;OL&gt;
entitatea A creeaza cheile
&lt;LI&gt;genereaza aleator un numar prim, p si un generator, &amp;#945, al grupului multiplicativ &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;&lt;sup&gt;*&lt;/sup&gt;&lt;/LI&gt;
&lt;LI&gt;selecteaza aleator un inter, a, 1 &amp;#8806 a &amp;#8806 p-2 si calculeaza &amp;#945&lt;sup&gt;a&lt;/sup&gt; mod p&lt;/LI&gt;
&lt;LI&gt;cheia publica a lui A este (p,&amp;#945,&amp;#945&lt;sup&gt;a&lt;/sup&gt;) iar cheia privata este a&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;criptarea/decriptarea
&lt;OL&gt;
B cripteaza un mesaj, m, pentru A pe care A il decripteaza
&lt;LI&gt;criptarea
&lt;OL type=a&gt;
&lt;LI&gt;obtine cheia publica, (p,&amp;#945,&amp;#945&lt;sup&gt;a&lt;/sup&gt;), autentica&lt;/LI&gt;
&lt;LI&gt;reprezinta mesajul ca un intreg in multimea {0, 1, ..., p-1}&lt;/LI&gt;
&lt;LI&gt;selecteaza aleator un intreg, k, 1 &amp;#8806 k &amp;#8806 p-2&lt;/LI&gt;
&lt;LI&gt;calculeaza &amp;#947 = &amp;#945&lt;sup&gt;k&lt;/sup&gt; mod p si &amp;#948 = m (&amp;#945&lt;sup&gt;a&lt;/sup&gt;)&lt;sup&gt;k&lt;/sup&gt; mod p&lt;/LI&gt;
&lt;LI&gt;trimite textul cifrat c = (&amp;#947, &amp;#948) lui A&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;decriptarea
&lt;OL type=a&gt;
A decripteaza c pentru a obtine m
&lt;LI&gt;foloseste cheia privata &amp;#945 pentru a calcula &amp;#947&lt;sup&gt;p-1-a&lt;/sup&gt; mod p&lt;/LI&gt;
&lt;LI&gt;afla pe m calculand (&amp;#947&lt;sup&gt;-a&lt;/sup&gt;) &amp;#948 mod p&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;McEliece&lt;/DT&gt;&lt;DD&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;probabilistic&lt;/DT&gt;&lt;DD&gt;
schemele RSA, Rabin si rucsac sunt deterministe: ptr. o cheie publica fixata un text in clar este intotdeuana criptat in acelasi text criptat
&lt;UL&gt;
&lt;LI&gt;Goldwasser-Micali&lt;/LI&gt;
&lt;LI&gt;Blum-Goldwasser&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;TABLE&gt;
&lt;tr&gt;&lt;td&gt;schema&lt;/td&gt;&lt;td&gt;problema de calcul&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;RSA&lt;/td&gt;&lt;td&gt;descompunerea in factori, problema RSA&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Rabin&lt;/td&gt;&lt;td&gt;descompunerea in factori, radacina patrata modul n compozit&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ElGamal&lt;/td&gt;&lt;td&gt;logaritm discret, problema Diffie-Hellman&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;McEliece&lt;/td&gt;&lt;td&gt;decodarea unui cod liniar&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Merkle Hellman&lt;/td&gt;&lt;td&gt;problema rucsacului&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Chor-Rivest&lt;/td&gt;&lt;td&gt;problema rucsacului&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Goldwasser-Micali&lt;/td&gt;&lt;td&gt;reziduri patratice&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Blum-Goldwasser&lt;/td&gt;&lt;td&gt;descompunerea in factori&lt;/td&gt;&lt;/tr&gt;
&lt;/TABLE&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113646678047514302?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113646678047514302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113646678047514302&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113646678047514302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113646678047514302'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2006/01/criptarea-cu-cheie-publica.html' title='Criptarea cu cheie publica'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113638957166628910</id><published>2006-01-04T17:45:00.000+02:00</published><updated>2006-01-04T17:46:11.903+02:00</updated><title type='text'>AES - sumar</title><content type='html'>&lt;UL&gt;
&lt;LI&gt;cripteaza blocuri de 128 biti utilizand chei de 128, 192 sau 256 biti, operatiile fiind realizate la nivel de octet; fiecare octet este privit ca un element al GF(2&lt;sup&gt;8&lt;/sup&gt;) la care polinomul ireductibil este x&lt;sup&gt;8&lt;/sup&gt;+x&lt;sup&gt;4&lt;/sup&gt;+x&lt;sup&gt;3&lt;/sup&gt;+x+1&lt;/LI&gt;
&lt;LI&gt;intrarea si iesirea sunt vectori unidimensionali obtinuti prin partitionarea mesajului in octeti cu adresarea in[i] sau out[i] unde 0 &amp;#8806 i &amp;#8806 4Nb-1 si Nb=N/32=4 (N este lungimea mesajului)&lt;/LI&gt;
&lt;LI&gt;operatiile intermediare se efectueaza asupra unui vector bidimensional ce are 4 randuri si Nb coloane  denumit State&lt;/LI&gt;
&lt;LI&gt;corespondenta intre intrare si stare respectiv stare si iesire este de forma:
&lt;br&gt; s[r, c] = in [r+4c] cu 0 &amp;#8806 r &amp;#8806 4 si 0 &amp;#8806 c &lt; Nb
&lt;br&gt; out[r+4c] = s[r, c]
&lt;/LI&gt;
&lt;LI&gt;lungimea cheii este reprezentata prin Nk = 4, 6 sau 8&lt;/LI&gt;
&lt;LI&gt;numarul de runde este Nr =10, 12 sau 14&lt;/LI&gt;
&lt;LI&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;lungimea cheii (Nk cuvinte)&lt;/td&gt;&lt;td&gt;lungimea blocului (Nb cuvinte)&lt;/td&gt;&lt;td&gt;numarul de runde (Nr)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;AES-128&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;AES-192&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;AES-256&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/LI&gt;
&lt;LI&gt;expandarea cheii
&lt;br&gt;genereaza Nb(Nr+1) cuvinte pornind de la Nb cuvinte (de 4 octeti), fiecare din cele Nr runde necesitand Nb cuvinte; cheile rezulta sub forma unui vector unidimensional  [w&lt;sub&gt;i&lt;/sub&gt;] cu 0 &amp;#8806 i &amp;#8806 Nb(Nr+1) 
&lt;br&gt;KeyExpansion (byte key[4*Nk], word w[Nb*(Nr+1)], Nk)
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;begin&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;word temp&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;i = 0&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;while (i &lt; Nk)&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;w[i] = word(key[4*i], key[4*i+1], key(4*i+2), key[4*i+3])&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;i = I=1&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;end while&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;i=Nk&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;while (i &amp;#60 Nb * (Nr+1))&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;temp = w[i-1]&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;if (i mod Nk = 0)&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;temp = SubWord(RotWord(temp)) xor Rcon[i/Nk]&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;else if (Nk &gt; 6 and i mod Nk =4)&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;temp = SubWord(temp)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;end if&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;w[i] = w[i-Nk] xor temp&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;i = i+1&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;end while&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;end&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;UL&gt;
&lt;LI&gt;SubWord() este o functie care aplica Sbox cate unui cuvant o data&lt;/LI&gt;
&lt;LI&gt;RotWord() este o functie care transforma un cuvant [a&lt;sub&gt;0&lt;/sub&gt;, a&lt;sub&gt;1&lt;/sub&gt;, a&lt;sub&gt;2&lt;/sub&gt;, a&lt;sub&gt;3&lt;/sub&gt;] in cuvantul [a&lt;sub&gt;1&lt;/sub&gt;, a&lt;sub&gt;2&lt;/sub&gt;, a&lt;sub&gt;3&lt;/sub&gt;, a&lt;sub&gt;0&lt;/sub&gt;]&lt;/LI&gt;
&lt;LI&gt;Rcon[i] = ( a&lt;sup&gt;i-1&lt;/sup&gt;, '00', '00', '00'), a fiind un element generator al lui GF(2&lt;sup&gt;8&lt;/sup&gt;)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;algoritm criptare&lt;br&gt;
Cipher( byte in[4*Nb] , byte out[4*Nb] , word w[Nb*(Nr+1)])
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;begin&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;byte state [4, Nb]&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;state = in&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;AddRoundKey (state, w[0, Nb-1])&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;for round = 1 step 1 to Nr-1&lt;/td&gt;&lt;/tr&gt;
        &lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;SubBytes(state)&lt;/td&gt;&lt;/tr&gt;
        &lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;ShiftRows(state)&lt;/td&gt;&lt;/tr&gt;
        &lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;MixColumns(state)&lt;/td&gt;&lt;/tr&gt;
        &lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;end for&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;SubBytes(state)&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;ShiftRows(state)&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1)&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;out = state&lt;/td&gt;&lt;/tr&gt;
&lt;td&gt;end&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;UL&gt;
&lt;LI&gt;functia de runda este compusa din 4 transformari orientate octet:
&lt;UL&gt;
&lt;LI&gt;susbstitutie SubBytes(state)&lt;br&gt;neliniara, fiecare octet al starii este substituit independent, ce foloseste o tabela de substitutie  formata prin compunerea a doua transformari
&lt;UL&gt;
&lt;LI&gt;orice byte nenul se inlocuieste cu inversul sau in GF(2&lt;sub&gt;8&lt;/sub&gt;)&lt;/LI&gt;
&lt;LI&gt;rezultatul este modificat printr-o transformare afina peste &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;2&lt;/sub&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;y&lt;sub&gt;0&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;x&lt;sub&gt;0&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;y&lt;sub&gt;1&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;x&lt;sub&gt;1&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;y&lt;sub&gt;2&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;x&lt;sub&gt;2&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;y&lt;sub&gt;3&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;=&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;x&lt;sub&gt;3&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;+&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;y&lt;sub&gt;4&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;x&lt;sub&gt;4&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;y&lt;sub&gt;5&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;x&lt;sub&gt;5&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;y&lt;sub&gt;6&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;x&lt;sub&gt;6&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;y&lt;sub&gt;7&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;x&lt;sub&gt;7&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/LI&gt;
&lt;/UL&gt;
rezultand o matrice inversabila de substitutie (Sbox)
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;a&lt;/td&gt;&lt;td&gt;b&lt;/td&gt;&lt;td&gt;c&lt;/td&gt;&lt;td&gt;d&lt;/td&gt;&lt;td&gt;e&lt;/td&gt;&lt;td&gt;f&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;63&lt;/td&gt;&lt;td&gt;7c&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;ca&lt;/td&gt;&lt;td&gt;82&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;b7&lt;/td&gt;&lt;td&gt;fd&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;04&lt;/td&gt;&lt;td&gt;c7&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;09&lt;/td&gt;&lt;td&gt;83&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;53&lt;/td&gt;&lt;td&gt;d1&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;d0&lt;/td&gt;&lt;td&gt;ef&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;51&lt;/td&gt;&lt;td&gt;a3&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;cd&lt;/td&gt;&lt;td&gt;0c&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;60&lt;/td&gt;&lt;td&gt;81&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;a&lt;/td&gt;&lt;td&gt;e0&lt;/td&gt;&lt;td&gt;32&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;b&lt;/td&gt;&lt;td&gt;e7&lt;/td&gt;&lt;td&gt;c8&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;c&lt;/td&gt;&lt;td&gt;ba&lt;/td&gt;&lt;td&gt;78&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;d&lt;/td&gt;&lt;td&gt;70&lt;/td&gt;&lt;td&gt;3e&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;e&lt;/td&gt;&lt;td&gt;e1&lt;/td&gt;&lt;td&gt;f8&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;f&lt;/td&gt;&lt;td&gt;8c&lt;/td&gt;&lt;td&gt;a1&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/LI&gt;
&lt;LI&gt;alunecare la nivel de rand ShiftRows(state)
&lt;br&gt;primul rand se lasa neschimbat iar pentru ultimele trei randuri se face o alunecare
&lt;br&gt;s[r, c] = s[r, (c+shift(r, Nb))mod Nb] unde 0 &amp;#60 r &amp;#60 4, 0 &amp;#8806 c &amp;#60 Nb
&lt;br&gt;si shift(r, Nb) este dat de
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;Nb/r&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/LI&gt;
&lt;LI&gt;mixare pe coloana MixColumns(state)
&lt;br&gt;opereaza asupra starii, coloana cu coloana, tratand fiecare coloana ca un polinom de grad 3 cu coeficienti in GF(2&lt;sup&gt;8&lt;/sup&gt;) care este inmultit modulo x&lt;sup&gt;4&lt;/sup&gt;+1 cu un polinom fix a(x)='03'x&lt;sup&gt;3&lt;/sup&gt;+'01'x&lt;sup&gt;2&lt;/sup&gt;+'01'x+'02'
&lt;br&gt;sub forma matriciala
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;s&lt;sub&gt;0, c&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;'02'&lt;/td&gt;&lt;td&gt;'03'&lt;/td&gt;&lt;td&gt;'01'&lt;/td&gt;&lt;td&gt;'01'&lt;/td&gt;&lt;td&gt;s&lt;sub&gt;0, c&lt;/sub&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;s&lt;sub&gt;1, c&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;=&lt;/td&gt;&lt;td&gt;'01'&lt;/td&gt;&lt;td&gt;'02'&lt;/td&gt;&lt;td&gt;'03'&lt;/td&gt;&lt;td&gt;'01'&lt;/td&gt;&lt;td&gt;s&lt;sub&gt;1, c&lt;/sub&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;s&lt;sub&gt;2, c&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;'01'&lt;/td&gt;&lt;td&gt;'01'&lt;/td&gt;&lt;td&gt;'02'&lt;/td&gt;&lt;td&gt;'03'&lt;/td&gt;&lt;td&gt;s&lt;sub&gt;2, c&lt;/sub&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;s&lt;sub&gt;3, c&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;'03'&lt;/td&gt;&lt;td&gt;'01'&lt;/td&gt;&lt;td&gt;'01'&lt;/td&gt;&lt;td&gt;'02'&lt;/td&gt;&lt;td&gt;s&lt;sub&gt;3, c&lt;/sub&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/LI&gt;
&lt;LI&gt;adaugarea unei chei de runda AddRoundKey(...)
&lt;br&gt;XOR intre stare si cheia de runda; fiecare cheie de runda consta in Nb cuvinte
&lt;br&gt;[s&lt;sub&gt;0, c&lt;/sub&gt;, s&lt;sub&gt;1, c&lt;/sub&gt;, s&lt;sub&gt;2, c&lt;/sub&gt;, s&lt;sub&gt;3, c&lt;/sub&gt;] = [s&lt;sub&gt;0, c&lt;/sub&gt;, s&lt;sub&gt;1, c&lt;/sub&gt;, s&lt;sub&gt;2, c&lt;/sub&gt;, s&lt;sub&gt;3, c&lt;/sub&gt;] &amp;#8853  [w&lt;sub&gt;runda * Nb + c&lt;/sub&gt;] unde 0 &amp;#8806 c &amp;#60 Nb, 0 &amp;#8806 runda &amp;#60 Nr
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;

&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;algoritm decriptare&lt;br&gt;
InvCipher( byte in[4*Nb] , byte out[4*Nb] , word w[Nb*(Nr+1)])
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;begin&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;byte state [4, Nb]&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;state = in&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;AddRoundKey (state, w[Nr*Nb, (Nr+1)*Nb-1])&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;for round = Nr-1 step -1 downto 1&lt;/td&gt;&lt;/tr&gt;
        &lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;InvShiftRows(state)&lt;/td&gt;&lt;/tr&gt;
        &lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;InvSubBytes(state)&lt;/td&gt;&lt;/tr&gt;
        &lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])&lt;/td&gt;&lt;/tr&gt;
        &lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;InvMixColumns(state)&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;end for&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;InvShiftRows(state)&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;InvSubBytes(state)&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;AddRoundKey(state, w[0, Nb-1)&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;out = state&lt;/td&gt;&lt;/tr&gt;
&lt;td&gt;end&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;UL&gt;
&lt;LI&gt;functia de runda este compusa din 4 transformari
&lt;UL&gt;
&lt;LI&gt;InvShiftRows()
&lt;br&gt; este inversa transformarii ShiftRows() astfel ca s[r, (c+shift(r, Nb)) mod Nb] = s[r, c]
&lt;/LI&gt;
&lt;LI&gt;InvSubBytes este inversa SubBytes()&lt;/LI&gt;
&lt;LI&gt;InvMixColumns() este inversa transformarii MixColumns()
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;s&lt;sub&gt;0, c&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;'0e'&lt;/td&gt;&lt;td&gt;'0b'&lt;/td&gt;&lt;td&gt;'0d'&lt;/td&gt;&lt;td&gt;'09'&lt;/td&gt;&lt;td&gt;s&lt;sub&gt;0, c&lt;/sub&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;s&lt;sub&gt;1, c&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;=&lt;/td&gt;&lt;td&gt;'09'&lt;/td&gt;&lt;td&gt;'0e'&lt;/td&gt;&lt;td&gt;'0b'&lt;/td&gt;&lt;td&gt;'0d'&lt;/td&gt;&lt;td&gt;s&lt;sub&gt;1, c&lt;/sub&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;s&lt;sub&gt;2, c&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;'0d'&lt;/td&gt;&lt;td&gt;'09'&lt;/td&gt;&lt;td&gt;'0e'&lt;/td&gt;&lt;td&gt;'0b'&lt;/td&gt;&lt;td&gt;s&lt;sub&gt;2, c&lt;/sub&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;s&lt;sub&gt;3, c&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;'0b'&lt;/td&gt;&lt;td&gt;'0d'&lt;/td&gt;&lt;td&gt;'09'&lt;/td&gt;&lt;td&gt;'0e'&lt;/td&gt;&lt;td&gt;s&lt;sub&gt;3, c&lt;/sub&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/LI&gt;
&lt;LI&gt;AddRoundKey() este aceeasi (este propria inversa)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;cheile de runda sunt identice cu cele folosite la criptare&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;algoritm decriptare echivalent&lt;br&gt;
EqInvCipher( byte in[4*Nb] , byte out[4*Nb] , word w[Nb*(Nr+1)])
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;begin&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;byte state [4, Nb]&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;state = in&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;AddRoundKey (state, dw[Nr*Nb, (Nr+1)*Nb-1])&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;for round = Nr-1 step -1 downto 1&lt;/td&gt;&lt;/tr&gt;
        &lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;InvSubBytes(state)&lt;/td&gt;&lt;/tr&gt;
        &lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;InvShiftRows(state)&lt;/td&gt;&lt;/tr&gt;
        &lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;InvMixColumns(state)&lt;/td&gt;&lt;/tr&gt;
        &lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;AddRoundKey(state, dw[round*Nb, (round+1)*Nb-1])&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;end for&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;InvSubBytes(state)&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;InvShiftRows(state)&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;AddRoundKey(state, dw[0, Nb-1)&lt;/td&gt;&lt;/tr&gt;
    &lt;td&gt;&lt;/td&gt;&lt;td&gt;out = state&lt;/td&gt;&lt;/tr&gt;
&lt;td&gt;end&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;UL&gt;
&lt;LI&gt;functia de runda este compusa din 4 transformari
&lt;UL&gt;
&lt;LI&gt;InvShiftRows()
&lt;br&gt; este inversa transformarii ShiftRows() astfel ca s[r, (c+shift(r, Nb)) mod Nb] = s[r, c]
&lt;/LI&gt;
&lt;LI&gt;InvSubBytes este inversa SubBytes()&lt;/LI&gt;
&lt;LI&gt;InvMixColumns() este inversa transformarii MixColumns()
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;s&lt;sub&gt;0, c&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;'0e'&lt;/td&gt;&lt;td&gt;'0b'&lt;/td&gt;&lt;td&gt;'0d'&lt;/td&gt;&lt;td&gt;'09'&lt;/td&gt;&lt;td&gt;s&lt;sub&gt;0, c&lt;/sub&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;s&lt;sub&gt;1, c&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;=&lt;/td&gt;&lt;td&gt;'09'&lt;/td&gt;&lt;td&gt;'0e'&lt;/td&gt;&lt;td&gt;'0b'&lt;/td&gt;&lt;td&gt;'0d'&lt;/td&gt;&lt;td&gt;s&lt;sub&gt;1, c&lt;/sub&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;s&lt;sub&gt;2, c&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;'0d'&lt;/td&gt;&lt;td&gt;'09'&lt;/td&gt;&lt;td&gt;'0e'&lt;/td&gt;&lt;td&gt;'0b'&lt;/td&gt;&lt;td&gt;s&lt;sub&gt;2, c&lt;/sub&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;s&lt;sub&gt;3, c&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;'0b'&lt;/td&gt;&lt;td&gt;'0d'&lt;/td&gt;&lt;td&gt;'09'&lt;/td&gt;&lt;td&gt;'0e'&lt;/td&gt;&lt;td&gt;s&lt;sub&gt;3, c&lt;/sub&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/LI&gt;
&lt;LI&gt;AddRoundKey() este aceeasi (este propria inversa)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;algoritmul pentru chei se modifica prin adaugarea urmatoarelor linii
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;for i = 0 step 1 to (Nr+1)*Nb-1&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;dw[i] = w[i]&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;end for&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;for round = 1 step 1 to Nr-1&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;InvMixColumns(dw[round*Nb, (round+1)*Nb-1])&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;end for&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;

&lt;a href="http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf"&gt;FIPS 197&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113638957166628910?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113638957166628910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113638957166628910&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113638957166628910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113638957166628910'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2006/01/aes-sumar.html' title='AES - sumar'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113637248781939287</id><published>2006-01-04T13:00:00.000+02:00</published><updated>2006-01-04T13:07:47.966+02:00</updated><title type='text'>Memento algebra - continuare</title><content type='html'>&lt;UL&gt;
&lt;DL&gt;
&lt;LI&gt;
inele de polinoame
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;inelul F[x] de polinoame in x peste campul F&lt;/DT&gt;&lt;DD&gt;fie (F,+,.) un camp; un polinom de variabila x peste F este o expresie de forma f(x) = a&lt;sub&gt;0&lt;/sub&gt;+a&lt;sub&gt;1&lt;/sub&gt; . x + a&lt;sub&gt;2&lt;/sub&gt; . x&lt;sup&gt;2&lt;/sup&gt; + ... + a&lt;sub&gt;n&lt;/sub&gt; . x&lt;sup&gt;n&lt;/sup&gt; unde coeficientii a&lt;sub&gt;i&lt;/sub&gt; sunt elemente ale lui F si n este un intreg pozitiv&lt;br&gt;cel mai mare i ptr. care a&lt;sub&gt;i&lt;/sub&gt; &amp;#8800 0 se numeste gradul lui f(x)&lt;br&gt;&amp;#8704 F, inelul F[x] este un domeniu de integritate&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;polinom ireductibil&lt;/DT&gt;&lt;DD&gt;fie f(x) &amp;#8712 F[x] un polinom cu gradul cel putin 1. Se spune ca f(x) este ireductibil peste F daca nu poate fi scris ca produsul a doua polinoame din F[x], fiecare de grad pozitiv&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;impartire&lt;/DT&gt;&lt;DD&gt;fie g(x), h(x) &amp;#8712 F[x] cu h(x) &amp;#8800 0 at g(x) = c(x)h(x) + r(x) cu grad r(x) &lt; grad h(x), c(x) si r(x) sunt unice&lt;br&gt;c(x) se noteaza g(x) div h(x0 si r(x) se noteaza g(x) mod h(x) &lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;divizor&lt;/DT&gt;&lt;DD&gt;fie g(x), h(x) &amp;#8712F[x]; h(x) divide pe g(x) , h(x)|g(x) daca g(x) mod h(x) = 0&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;congruenta&lt;/DT&gt;&lt;DD&gt;fie g(x), h(x) &amp;#8712F[x]; se spune ca g(x) este congruent cu h(x) modulo f(x) daca f(x)| g(x)-h(x) si se noteaza g(x) &amp;#8801 h(x) (mod f(x))&lt;br&gt;congruenta are proprietatile unei relatii de echivalenta: reflexivitate, simetrie si tranzitivitate&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;clase de echivalenta&lt;/DT&gt;&lt;DD&gt;multimea claselor de echivalenta modulo f(x) ale polinoamelor peste F[x] se noteaza F[x]/(f(x))&lt;br&gt; F[x]/(f(x)) cu adunarea si inmultirea modulo f(x) formeaza un inel comutativ&lt;br&gt;daca f(x) este ireductibil peste F[x] at. F[x]/(f(x)) este camp&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;
campuri finite
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;camp finit&lt;/DT&gt;&lt;DD&gt;un camp F care are un numar finit de elemente&lt;br&gt;ordinul lui F este numarul sau de elemente&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;existenta si unicitate&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;daca F este un camp finit at F contine p&lt;sup&gt;m&lt;/sup&gt; elemente unde p este prim si m este un intreg pozitiv&lt;/LI&gt;&lt;LI&gt;ptr fiecare p&lt;sup&gt;m&lt;/sup&gt; exista un camp finit unic (clasa de izomorfism) de ordinul p&lt;sup&gt;m&lt;/sup&gt;; campul se noteaza &lt;b&gt;F&lt;/b&gt;&lt;sub&gt;p&lt;sup&gt;m&lt;/sup&gt;&lt;/sub&gt; sau GF(p&lt;sup&gt;m&lt;/sup&gt;)&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;daca F este un camp de ordin q=p&lt;sup&gt;m&lt;/sup&gt; cu p prim at. caracteristica lui F&lt;sub&gt;q&lt;/sub&gt; este p&lt;/LI&gt;&lt;LI&gt;F&lt;sub&gt;q&lt;/sub&gt; contine o copie a lui &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt; ca subcamp&lt;/LI&gt;&lt;LI&gt;&amp;#8704 subcamp al lui F&lt;sub&gt;q&lt;/sub&gt; are ordinul p&lt;sup&gt;n&lt;/sup&gt; unde n este un divizor pozitiv al lui m&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;grupul multiplicativ F&lt;sup&gt;*&lt;/sup&gt;&lt;sub&gt;q&lt;/sub&gt;&lt;/DT&gt;&lt;DD&gt;elementele nenule ale lui F&lt;sub&gt;q&lt;/sub&gt; formeaza grup cu inmultirea&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;F&lt;sup&gt;*&lt;/sup&gt;&lt;sub&gt;q&lt;/sub&gt; grup ciclic&lt;/DT&gt;&lt;DD&gt;de ordinul q-1&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;element generator&lt;/DT&gt;&lt;DD&gt;un generator al lui F&lt;sup&gt;*&lt;/sup&gt;&lt;sub&gt;q&lt;/sub&gt; se numeste generator pentru F&lt;sub&gt;q&lt;/sub&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt; ( a + b ) &lt;sup&gt;p&lt;sup&gt;t&lt;/sup&gt;&lt;/sup&gt; =  a &lt;sup&gt;p&lt;sup&gt;t&lt;/sup&gt;&lt;/sup&gt;  + b &lt;sup&gt;p&lt;sup&gt;t&lt;/sup&gt;&lt;/sup&gt; cu a, b &amp;#8712 F&lt;sub&gt;q&lt;/sub&gt; si p caracteristica campului&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;Euclid in &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;[x]&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;cmmdc&lt;br&gt;fie g(x), h(x) &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;[x], ambele nenule; cmmdc(g(x), h(x)) este monomul cu cel mai mare grad care divide pe g(x) si pe h(x) &lt;/LI&gt;
&lt;LI&gt;&lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;[x] este domeniu unic de descompunere in factori&lt;br&gt;&amp;#8704 f(x) &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;[x] admite o descompunere in factori de forma f(x) = a f&lt;sub&gt;1&lt;/sub&gt;(x)&lt;sup&gt;e&lt;sub&gt;1&lt;/sub&gt;&lt;/sup&gt;f&lt;sub&gt;2&lt;/sub&gt;(x)&lt;sup&gt;e&lt;sub&gt;2&lt;/sub&gt;&lt;/sup&gt;...f&lt;sub&gt;k&lt;/sub&gt;(x)&lt;sup&gt;e&lt;sub&gt;k&lt;/sub&gt;&lt;/sup&gt; unde f&lt;sub&gt;i&lt;/sub&gt;(x) sunt monoame ireductibile in &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;[x] si e&lt;sub&gt;i&lt;/sub&gt; sunt intregi pozitivi iar a &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;&lt;br&gt;descompunerea este unica&lt;/LI&gt;
&lt;LI&gt;algoritm Euclid
&lt;UL&gt;
&lt;LI&gt;intrare: g(x), h(x) &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;[x] &lt;/LI&gt;
&lt;LI&gt;iesire: cmmdc(g(x), h(x))&lt;/LI&gt;
&lt;/UL&gt;
&lt;OL&gt;
&lt;LI&gt;while h(x) &amp;#8800 0 do&lt;br&gt; r(x)=g(x) mod h(x) , g(x)=h(x) , h(x) = r(x)&lt;/LI&gt;
&lt;LI&gt;return g(x)&lt;/LI&gt;
&lt;/OL&gt;
algoritm cu O(m&lt;sup&gt;2&lt;/sup&gt;) operatii in &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt; sau O(m&lt;sup&gt;2&lt;/sup&gt;(lg p)&lt;sup&gt;2&lt;/sup&gt;) operatii binare
&lt;/LI&gt;
&lt;LI&gt;algoritm Euclid extins
&lt;UL&gt;
&lt;LI&gt;intrare: g(x), h(x) &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;[x] &lt;/LI&gt;
&lt;LI&gt;iesire: d(x) = cmmdc(g(x), h(x)) si doua polinoame s(x) , t(x) &amp;#8712  &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;[x] care satisfac: s(x)g(x) + t(x)h(x) = d(x)&lt;/LI&gt;
&lt;/UL&gt;
&lt;OL&gt;
&lt;LI&gt;if h(x) = 0 then d(x)=g(x), s(x) = 1, t(x)=0 , return (d(x),s(x),t(x0)&lt;/LI&gt;
&lt;LI&gt;else s&lt;sub&gt;2&lt;/sub&gt;(x)=1, s&lt;sub&gt;1&lt;/sub&gt;(x)=0, t&lt;sub&gt;2&lt;/sub&gt;(x)=0, t&lt;sub&gt;1&lt;/sub&gt;(x)=1&lt;/LI&gt;
&lt;LI&gt;while h(x) &amp;#8800 0 do
&lt;br&gt; q(x)=g(x) div h(x), r(x)=g(x)-h(x)q(x)
&lt;br&gt; s(x)=s&lt;sub&gt;2&lt;/sub&gt;(x)-q(x)s&lt;sub&gt;1&lt;/sub&gt;(x), t(x)=t&lt;sub&gt;2&lt;/sub&gt;(x)-q(x)t&lt;sub&gt;1&lt;/sub&gt;(x)
&lt;br&gt; g(x)=h(x), h(x)=r(x)
&lt;br&gt; s&lt;sub&gt;2&lt;/sub&gt;(x)=s&lt;sub&gt;1&lt;/sub&gt;(x), s&lt;sub&gt;1&lt;/sub&gt;(x)=s(x), t&lt;sub&gt;2&lt;/sub&gt;(x)=t&lt;sub&gt;1&lt;/sub&gt;(x), t&lt;sub&gt;1&lt;/sub&gt;(x)=t(x)
&lt;/LI&gt;
&lt;LI&gt;d(x)=g(x), s(x)=s&lt;sub&gt;2&lt;/sub&gt;(x), t(x)=t&lt;sub&gt;2&lt;/sub&gt;(x)&lt;/LI&gt;
&lt;LI&gt;return (d(x),s(x),t(x0)&lt;/LI&gt;
&lt;/OL&gt;
algoritm cu O(m&lt;sup&gt;2&lt;/sup&gt;) operatii in &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt; sau O(m&lt;sup&gt;2&lt;/sup&gt;(lg p)&lt;sup&gt;2&lt;/sup&gt;) operatii binare
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;aritmetica polinoamelor&lt;/DT&gt;&lt;DD&gt;&lt;/DD&gt;
&lt;UL&gt;
&lt;LI&gt;polinoame ireductibile
&lt;UL&gt;
&lt;LI&gt;functia M&amp;#246bius, &amp;#956
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;daca m=1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;daca m este divizibil cu patratul unui numar prim&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;(-1)&lt;sup&gt;k&lt;/sup&gt;&lt;/td&gt;&lt;td&gt;daca m este produsul a k numre prime distincte&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/LI&gt;
&lt;LI&gt;numarul de polinoame ireductibile de grad m in &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;[x] este N&lt;sub&gt;p&lt;/sub&gt;(m) = 1/m &amp;#931&lt;sub&gt;d|m&lt;/sub&gt; &amp;#956(d)p&lt;sup&gt;m/d&lt;/sup&gt;
&lt;/LI&gt;
&lt;LI&gt;algoritm testare ireductibilitate polinom
&lt;UL&gt;
&lt;LI&gt;intrare: un nuamr prim p si un monom f(x) de grad m in &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;[x]&lt;/LI&gt;
&lt;LI&gt;iesire: raspuns la intrebarea "este f(x) ireductibil ?"&lt;/LI&gt;
&lt;/UL&gt;
&lt;OL&gt;
&lt;LI&gt;u(x)=x&lt;/LI&gt;
&lt;LI&gt;for i from 1 to [m/2]
&lt;br&gt;u(x) = u(x)&lt;sup&gt;p&lt;/sup&gt; mod f(x) (prin algoritmul de exponentiere)
&lt;br&gt;d(x) = cmmdc(f(x), u(x)-x)
&lt;br&gt;if d(x) &amp;#8800 1 return "reductibil"
&lt;/LI&gt;
&lt;LI&gt;return "ireductibil"&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;algoritm calcul inversului
&lt;UL&gt;
&lt;LI&gt;intrare: un polinom nenul g(x) &amp;#8712 F&lt;sub&gt;p&lt;sup&gt;m&lt;/sup&gt;&lt;/sub&gt; (elementele campului F&lt;sub&gt;p&lt;sup&gt;m&lt;/sup&gt;&lt;/sub&gt; sunt reprezentate ca &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;[x]/(f(x)) unde f(x) este un polinom ireductibil de grad m peste &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;&lt;/LI&gt;
&lt;LI&gt;iesire: g(x)&lt;sup&gt;-1&lt;/sup&gt; &amp;#8712 F&lt;sub&gt;p&lt;sup&gt;m&lt;/sup&gt;&lt;/sub&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;OL&gt;
&lt;LI&gt;se aplica Euclid extins pentru a gasi s(x) si t(x0 ai s(x)g(x)+t(x)f(x) = 1&lt;/LI&gt;
&lt;LI&gt;se returneaza s(x)&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;algoritm exponentiere
&lt;UL&gt;
&lt;LI&gt;intrare: g(x) &amp;#8712 F&lt;sub&gt;p&lt;sup&gt;m&lt;/sup&gt;&lt;/sub&gt;, un intreg 0 &amp;#8806 k &amp;#60 p&lt;sup&gt;m&lt;/sup&gt;-1 ce are reprentarea binara k = &amp;#931 &lt;sub&gt;i=0&lt;/sub&gt;&lt;sup&gt;t&lt;/sup&gt; k&lt;sub&gt;i&lt;/sub&gt;2&lt;sup&gt;i&lt;/sup&gt; &lt;/LI&gt;
&lt;LI&gt;iesire: g(x)&lt;sup&gt;k&lt;/sup&gt; mod f(x)&lt;/LI&gt;
&lt;/UL&gt;
&lt;OL&gt;
&lt;LI&gt;s(x)=1; if k=0 then return s(x0&lt;/LI&gt;
&lt;LI&gt;G(x)=g(x)&lt;/LI&gt;
&lt;LI&gt;if k&lt;sub&gt;0&lt;/sub&gt;=1 then s(x)=g(x)&lt;/LI&gt;
&lt;LI&gt;for i from 1 to t do
&lt;br&gt;G(x)=G(x)&lt;sup&gt;2&lt;/sup&gt; mod f(x)
&lt;br&gt;if k&lt;sub&gt;i&lt;/sub&gt;=1 then s(x)=G(x)s(x) mod f(x)
&lt;/LI&gt;
&lt;LI&gt;return s(x)&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;complexitatea operatiilor
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;operatia&lt;/td&gt;&lt;td&gt;complexitatea (numarul de operatii &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;adunare&lt;/td&gt;&lt;td&gt;O(m)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;scadere&lt;/td&gt;&lt;td&gt;O(m)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;inmultire&lt;/td&gt;&lt;td&gt;O(m&lt;sup&gt;2&lt;/sup&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;inversare&lt;/td&gt;&lt;td&gt;O(m&lt;sup&gt;2&lt;/sup&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;exponentiere&lt;/td&gt;&lt;td&gt;O(m&lt;sup&gt;3&lt;/sup&gt;lg(p))&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/LI&gt;
&lt;LI&gt;polinom primitiva
&lt;UL&gt;
&lt;LI&gt;este un polinom ireductibil f(x) &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;[x] de grad m care este genrator al grupului multiplicativ F&lt;sup&gt;*&lt;/sup&gt;&lt;sub&gt;q&lt;/sub&gt;&lt;/LI&gt;
&lt;LI&gt;f(x) este polinom primitva &amp;#8660 f(x) divide x&lt;sup&gt;k&lt;/sup&gt;-1 pentru k=p&lt;sup&gt;m&lt;/sup&gt;-1&lt;/LI&gt;
&lt;LI&gt;ptr m &amp;#8807 1 exista &amp;#966(p&lt;sup&gt;m&lt;/sup&gt;-1)/m monoame primitive de grad m peste &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;/sub&gt;&lt;/LI&gt;
&lt;LI&gt;algoritm testarea primitivitatii unui polinom ireductibil
&lt;UL&gt;
&lt;LI&gt;intrare: un numar prim p, un intreg pozitiv m, factorii primi distincti r&lt;sub&gt;1&lt;/sub&gt;, r&lt;sub&gt;2&lt;/sub&gt;, ,,,, r&lt;sub&gt;t&lt;/sub&gt; si un polinom ireductibil de grad m, f(x)&lt;/LI&gt;
&lt;LI&gt;iesire: un raspuns la intrebarea "este f(x) primitiva?"&lt;/LI&gt;
&lt;/UL&gt;
&lt;OL&gt;
&lt;LI&gt;for i from 1 to t do
&lt;br&gt; l(x) = x&lt;sup&gt;(p&lt;sup&gt;m&lt;/sup&gt;-1)/r&lt;sub&gt;i&lt;/sub&gt;&lt;/sup&gt;
&lt;br&gt; if l(x) =1 return "nu este primitiva"
&lt;/LI&gt;
&lt;LI&gt;return "este primitiva"&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/DL&gt;
&lt;/UL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113637248781939287?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113637248781939287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113637248781939287&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113637248781939287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113637248781939287'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2006/01/memento-algebra-continuare.html' title='Memento algebra - continuare'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113636310784089755</id><published>2006-01-04T10:24:00.000+02:00</published><updated>2006-01-04T10:25:07.903+02:00</updated><title type='text'>Memento algebra</title><content type='html'>&lt;UL&gt;
&lt;DL&gt;
&lt;LI&gt;&lt;DT&gt;relatie binara&lt;/DT&gt;&lt;DD&gt;o relatie binara pe o multime S este o functie * : S x S &amp;#8594 S; daca (a,b) &amp;#8712 S x S at. a*b indica imaginea lui (a,b)&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;fie * o relatie binara pe multimea S
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;* este asociativa daca&lt;/DT&gt;&lt;DD&gt;x*(y*z) = (x*y)*z, &amp;#8704 x, y, x &amp;#8712 S&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;e &amp;#8712 S este element neutru fata de * daca&lt;/DT&gt;&lt;DD&gt;x*e = e*x = x, &amp;#8704 x &amp;#8712 S&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;daca e &amp;#8712 S este elem. neutru pentru *, pentru un x &amp;#8712 S fixat se spune ca y &amp;#8712 S este element invers daca&lt;/DT&gt;&lt;DD&gt;x*y = e si y*x = e&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;* este comutativa daca&lt;/DT&gt;&lt;DD&gt;x*y = y*x, &amp;#8704x, y &amp;#8712 S&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;a &amp;#8712 S este idempotent fata de * daca&lt;/DT&gt;&lt;DD&gt;a*a = a&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;z &amp;#8712 S este un zero pentru * daca&lt;/DT&gt;&lt;DD&gt;z*x = z si x*z=z, &amp;#8704 x &amp;#8712 S&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;grup&lt;/DT&gt;&lt;DD&gt;un grup este o pereche ordonata (G, *) unde G este o multime si * este o relatie binara pe G care satisface proprietatile&lt;UL&gt;&lt;LI&gt;asociativitate&lt;/LI&gt;&lt;LI&gt;poseda element neutru&lt;/LI&gt;&lt;LI&gt;&amp;#8704 x &amp;#8712 G este inversabil&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;grup abelian&lt;/DT&gt;&lt;DD&gt;un grup (G,*) pentru care * este comutativa&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;daca (G,*) este un grup atunci &lt;UL&gt;&lt;LI&gt;elementul neutru este unic&lt;/LI&gt;&lt;LI&gt;elementul invers este unic&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;fie (G,*) un grup care are elementul neutru e. At:&lt;UL&gt;&lt;LI&gt;daca a*c=a*b at. c=b&lt;/LI&gt;&lt;LI&gt;daca c*a = b*a at. c = b&lt;/LI&gt;&lt;LI&gt;fie a, b &amp;#8712 G, &amp;#8707 x &amp;#8712 G, unic. ai a*x=b&lt;/LI&gt;&lt;LI&gt;fie a, b &amp;#8712 G, &amp;#8707 x &amp;#8712 G, unic. ai x*a=b&lt;/LI&gt;&lt;LI&gt;daca a*b=a at b=e&lt;/LI&gt;&lt;LI&gt;daca b*a = a at b=e&lt;/LI&gt;&lt;LI&gt;daca a*a = a at. a = e&lt;/LI&gt;&lt;LI&gt;(a&lt;sup&gt;-1&lt;/sup&gt;)&lt;sup&gt;-1&lt;/sup&gt; = a&lt;/LI&gt;&lt;LI&gt;(a * b)&lt;sup&gt;-1&lt;/sup&gt; = b&lt;sup&gt;-1&lt;/sup&gt; * a&lt;sup&gt;-1&lt;/sup&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;fie (G,*) un grup cu e elementul neutru; &amp;#8704 n, m &amp;#8712 &lt;b&gt;Z&lt;/b&gt; avem: &lt;UL&gt;&lt;LI&gt;a&lt;sup&gt;n&lt;/sup&gt;*a&lt;sup&gt;m&lt;/sup&gt; = a&lt;sup&gt;n+m&lt;/sup&gt;&lt;/LI&gt;&lt;LI&gt;(a&lt;sup&gt;n&lt;/sup&gt;)&lt;sup&gt;m&lt;/sup&gt; = a&lt;sup&gt;nm&lt;/sup&gt;&lt;/LI&gt;&lt;/UL&gt; si daca a*b = b*a at (a * b)&lt;sup&gt;n&lt;/sup&gt; = a&lt;sup&gt;n&lt;/sup&gt; * b&lt;sup&gt;n&lt;/sup&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;subgrup&lt;/DT&gt;&lt;DD&gt;fie (G,.) un grup; un subgrup al lui G este o submultime H a lui G care satisface urmatoarele: &lt;UL&gt;&lt;LI&gt;e &amp;#8712 H&lt;/LI&gt;&lt;LI&gt;daca a, b &amp;#8712 H at a.b &amp;#8712 H&lt;/LI&gt;&lt;LI&gt;daca a &amp;#8712 H at a&lt;sup&gt;-1&lt;/sup&gt; &amp;#8712 H&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;ordinul grupului&lt;/DT&gt;&lt;DD&gt;fie (G,*) un grup; numarul de elemente ale lui G se numeste ordinul lui G si se noteaza |G|&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;ordinul unui element&lt;/DT&gt;&lt;DD&gt;fie a un element al grupului G; daca &amp;#8707 n &amp;#8712 &lt;b&gt;N&lt;/b&gt; ai a&lt;sup&gt;n&lt;/sup&gt; = e se spune ca a are un ordin finit si se defineste o(a)=min{n&amp;#8712&lt;b&gt;N&lt;/b&gt;/a&lt;sup&gt;n&lt;/sup&gt; = e}; daca a&lt;sup&gt;n&lt;/sup&gt; &amp;#8800 e at se spune ca a are un ordin infinit si se defineste o(a) = &amp;#8734&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;subgrup generat de un element&lt;/DT&gt;&lt;DD&gt;fie a un element al lui G. Se defineste subgrupul lui G generat de catre a &amp;#60a&amp;#62 = {a&lt;sup&gt;i&lt;/sup&gt;, i&amp;#8712 &lt;b&gt;Z&lt;/b&gt;}&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;&amp;#8704 a &amp;#8712 G, (G, *) grup at. &amp;#60a&amp;#62 este subgrup al lui G care il contine pe a si este cel mai mic subgrup cu aceasta proprietate&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;&amp;#8704 a &amp;#8712 G, (G, *) grup; daca o(a)=1 at &amp;#60a&amp;#62 = {e}; daca o(a)=n at &amp;#60a&amp;#62 = {e, a, a&lt;sup&gt;2&lt;/sup&gt;, ..., a&lt;sup&gt;n-1&lt;/sup&gt; } si elementele e, a, a&lt;sup&gt;2&lt;/sup&gt;, ..., a&lt;sup&gt;n-1&lt;/sup&gt; sunt distincte ai o(a)=|&amp;#60a&amp;#62|&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;daca G este un grup finit at &amp;#8704 a &amp;#8712 G are ordin finit&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;secventa de ordine&lt;/DT&gt;&lt;DD&gt;fie g={ g&lt;sub&gt;1&lt;/sub&gt;, g&lt;sub&gt;2&lt;/sub&gt; , ... , g&lt;sub&gt;n&lt;/sub&gt; } , o(g&lt;sub&gt;i&lt;/sub&gt;) = k&lt;sub&gt;i&lt;/sub&gt; ptr. i = 1, 2, ..., n; secventa { k&lt;sub&gt;1&lt;/sub&gt;, k&lt;sub&gt;2&lt;/sub&gt; , ... , k&lt;sub&gt;n&lt;/sub&gt; } este secventa de ordine a grupului G; se presupune ca elementele sunt ordonate ai k&lt;sub&gt;1&lt;/sub&gt; &amp;#8806 k&lt;sub&gt;2&lt;/sub&gt; &amp;#8806 ... &amp;#8806 k&lt;sub&gt;n&lt;/sub&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;homomorfism, izomorfism de grupuri&lt;/DT&gt;&lt;DD&gt;fie (G,*) si (H,+) doua grupuri. O functie f : G &amp;#8594 H este un homomorfism de la G la H daca f(a*b) = f(a) + f(b), &amp;#8704 a, b &amp;#8712 G. Daca f este bijectiva atunci se numeste izomorfism de la G la H&lt;/DD&gt;&lt;br&gt; G si H sunt izomorfe, G &amp;#8776 H &amp;#8660 &amp;#8707 un izomorfism de la G la H&lt;br&gt;un izomorfism este o relatie de echivalenta; daca G, H si K sunt grupyuri at. &lt;UL&gt;&lt;LI&gt;G &amp;#8776 G&lt;/LI&gt;&lt;LI&gt;daca G &amp;#8776 H at. H &amp;#8776 G&lt;/LI&gt;&lt;LI&gt;daca G &amp;#8776 H si H &amp;#8776 K at G &amp;#8776 K&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;fie (G,*) si (H,+) grupuri, f : G &amp;#8594 H un homomorfism, e&lt;sub&gt;G&lt;/sub&gt; si e&lt;sub&gt;H&lt;/sub&gt; elem. neutre at. &lt;UL&gt;&lt;LI&gt;f(e&lt;sub&gt;G&lt;/sub&gt;) = e&lt;sub&gt;H&lt;/sub&gt;&lt;/LI&gt;&lt;LI&gt;f(a&lt;sup&gt;-1&lt;/sup&gt;) = f(a)&lt;sup&gt;-1&lt;/sup&gt;&lt;/LI&gt;&lt;LI&gt;f(a&lt;sup&gt;n&lt;/sup&gt;) = f(a)&lt;sup&gt;n&lt;/sup&gt;, &amp;#8704 n &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;fie (G,*) si (H,+) grupuri, f : G &amp;#8594 H un izomorfism at. o(a) = o(f(a)), &amp;#8704 a &amp;#8712 G &lt;br&gt;G si H au acelasi numar de elemente cu acelasi ordine&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;daca G &amp;#8776 H si G abelian at. H abelian&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;grup ciclic&lt;/DT&gt;&lt;DD&gt;&amp;#8707 a &amp;#8712 G ai &amp;#60a&amp;#62 = G iar a se numeste generator&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;daca G &amp;#8776 H si G ciclic at. H ciclic&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;fie a elem. al lui G, at. &lt;UL&gt;&lt;LI&gt;daca o(a) = &amp;#8734 at &amp;#60a&amp;#62 &amp;#8776 &lt;b&gt;Z&lt;/b&gt;&lt;/LI&gt;&lt;LI&gt;daca o(a) = n at &amp;#60a&amp;#62 &amp;#8776 &lt;b&gt;Z&lt;sub&gt;n&lt;/sub&gt;&lt;/b&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;coset&lt;/DT&gt;&lt;DD&gt;fie G un grup si H un subgrup al lui G; &amp;#8704 a &amp;#8712 G se defineste a*H = { a*h / h &amp;#8712 H} , cosetul lui H in G generat de a&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;fie G un grup finit si H un subgrup al lui G, a, b &amp;#8712 G at. &lt;UL&gt;&lt;LI&gt;a &amp;#8712 a*H&lt;/LI&gt;&lt;LI&gt;|a*H|=|H|&lt;/LI&gt;&lt;LI&gt;daca a*H si b*H nu sunt disjuncte at. a*H = b*H&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T(Lagrange)&lt;/DT&gt;&lt;DD&gt;daca G este un grup fint si H este un subgrup al lui G at |H| divide pe |G|&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;daca G este un grup finit si a elem. al lui G at o(a) divide pe |G|&lt;/LI&gt;&lt;LI&gt;daca G este un grup finit si a elem. al lui G at a&lt;sup&gt;|G|&lt;/sup&gt; = e&lt;/LI&gt;&lt;LI&gt;(analog mica teormea Fermat) daca p este prim si a elem. al lui &lt;b&gt;Z&lt;sub&gt;p&lt;/sub&gt;&lt;/b&gt; at. a&lt;sup&gt;p-1&lt;/sup&gt; = 1&lt;/LI&gt;&lt;LI&gt;daca |G|= p si p prim at. G este ciclic&lt;/LI&gt;&lt;LI&gt;daca G si H sunt grupuri de ord. p cu p prim at. G &amp;#8776 H&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;clase de izomorfism&lt;/DT&gt;&lt;DD&gt;se spune ca sunt k clase de izomorfism ale grupurilor de ordin n daca &amp;#8707 k grupuri G&lt;sub&gt;1&lt;/sub&gt;, G&lt;sub&gt;2&lt;/sub&gt;, ..., G&lt;sub&gt;k&lt;/sub&gt; ai &lt;UL&gt;&lt;LI&gt;G&lt;sub&gt;i&lt;/sub&gt; si G&lt;sub&gt;j&lt;/sub&gt; nu sunt izomorfe ptr i &amp;#8800 j&lt;/LI&gt;&lt;LI&gt;&amp;#8704 grup de ordin n este izomorf cu unul din grupurile G&lt;sub&gt;i&lt;/sub&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;produsul direct&lt;/DT&gt;&lt;DD&gt;daca G&lt;sub&gt;1&lt;/sub&gt;, G&lt;sub&gt;2&lt;/sub&gt;, ..., G&lt;sub&gt;n&lt;/sub&gt; sunt grupuri, se defineste relatia binara * : G&lt;sub&gt;1&lt;/sub&gt; x G&lt;sub&gt;2&lt;/sub&gt; x ... x G&lt;sub&gt;n&lt;/sub&gt; &amp;#8594 G&lt;sub&gt;1&lt;/sub&gt; x G&lt;sub&gt;2&lt;/sub&gt; x ... x G&lt;sub&gt;n&lt;/sub&gt; ai a&lt;sub&gt;i&lt;/sub&gt;*b&lt;sub&gt;i&lt;/sub&gt; este relatia din grupul G&lt;sub&gt;i&lt;/sub&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T(fundamentala a grupurilor finite abeliene)&lt;/DT&gt;&lt;DD&gt;daca G este un grup finit abelian cu |G| &amp;#8807 2 at. G &amp;#8776 &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;sub&gt;1&lt;/sub&gt;&lt;sup&gt;n&lt;sub&gt;1&lt;/sub&gt;&lt;/sup&gt;&lt;/sub&gt; x &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;sub&gt;2&lt;/sub&gt;&lt;sup&gt;n&lt;sub&gt;2&lt;/sub&gt;&lt;/sup&gt;&lt;/sub&gt; ... &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;p&lt;sub&gt;s&lt;/sub&gt;&lt;sup&gt;n&lt;sub&gt;s&lt;/sub&gt;&lt;/sup&gt;&lt;/sub&gt; unde p&lt;sub&gt;i&lt;/sub&gt; este prim si n&lt;sub&gt;i&lt;/sub&gt; este intreg pozitiv &lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;inel&lt;/DT&gt;&lt;DD&gt;un inel este o tripleta ordonata (R, +, .) unde R este o multime iar + si . sunt relatii binare pe R care satisfac urmatoarele: &lt;UL&gt;&lt;LI&gt;(R,+) grup abelian, 0 este elem. neutru&lt;/LI&gt;&lt;LI&gt;. este asociativa&lt;/LI&gt;&lt;LI&gt;a.(b+c) = a.b + a.c&lt;/LI&gt;&lt;LI&gt;(b+c).a = b.a + c.a&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;inel cu elem neutru&lt;/DT&gt;&lt;DD&gt;un inel (R, +, .) cu element neutru, 1,  fata de .&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;inel comutativ&lt;/DT&gt;&lt;DD&gt;un inel (R, +, .) cu . comutativa&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;domeniu de integritate&lt;/DT&gt;&lt;DD&gt;un inel (R, +, .) cu proprietatile &lt;UL&gt;&lt;LI&gt;. comutativa&lt;/LI&gt;&lt;LI&gt;&amp;#8707 1, 1 &amp;#8800 0 &lt;/LI&gt;&lt;LI&gt;nu are divizori ai lui 0: a, b &amp;#8712 R si a.b=0 at. a =0 sau b = 0&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;camp&lt;/DT&gt;&lt;DD&gt;un inel (R, +, .) cu proprietatile &lt;UL&gt;&lt;LI&gt;. comutativa&lt;/LI&gt;&lt;LI&gt;&amp;#8707 1, 1 &amp;#8800 0 &lt;/LI&gt;&lt;LI&gt;&amp;#8704 x &amp;#8712 R si x &amp;#8800 0 at. &amp;#8707 y &amp;#8712 R ai x.y = 1&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;caracteristica unui camp&lt;/DT&gt;&lt;DD&gt;caracteristica unui camp este 0 daca &amp;#931&lt;sup&gt;m&lt;/sup&gt;&lt;sub&gt;1&lt;/sub&gt; 1 &amp;#8800 0, &amp;#8704 m intreg pozitiv; altfel caracteristica este cel mai mic intreg pozitiv m ai &amp;#931&lt;sup&gt;m&lt;/sup&gt;&lt;sub&gt;1&lt;/sub&gt; 1 = 0&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;element unitate&lt;/DT&gt;&lt;DD&gt;fie un inel (R, +, .) cu elem. neutru fata de ., 1. Un element a &amp;#8712 R se numeste unitate a lui R daca este inversabil fata de .&lt;br&gt;se noteaza cu U(R) multimea unitatilor lui R&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;grupul unitatilor&lt;/DT&gt;&lt;DD&gt;(U(R), .) este grup&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;a&lt;sup&gt;n&lt;/sup&gt;&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;(R, +, .) inel, a &amp;#8712 R, n &amp;#8712 &lt;b&gt;N&lt;/b&gt; at a&lt;sup&gt;1&lt;/sup&gt; = a si a&lt;sup&gt;n&lt;/sup&gt; = a . a . a ... a&lt;/LI&gt;&lt;LI&gt;(R, +, .) inel cu 1 , a &amp;#8712 R, a unitate at a&lt;sup&gt;0&lt;/sup&gt; = a , a&lt;sup&gt;-1&lt;/sup&gt; este inversul prin .  si a&lt;sup&gt;-n&lt;/sup&gt; = ( a&lt;sup&gt;-1&lt;/sup&gt; )&lt;sup&gt;n&lt;/sup&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;(R, +, .) camp &amp;#8658 (R, +, .) domeniu de integritate&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;(&lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;n&lt;/sub&gt;, &amp;#8853, &amp;#8857) camp &amp;#8660 (&lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;n&lt;/sub&gt;, &amp;#8853, &amp;#8857) domeniu de integritate&lt;/LI&gt;&lt;LI&gt;(&lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;n&lt;/sub&gt;, &amp;#8853, &amp;#8857) camp &amp;#8660 n este prim&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;homomorfism, izomorfism de inele&lt;/DT&gt;&lt;DD&gt;fie (R, +, .) si (S, *, #) doua inele. O functie f : R &amp;#8594 S se numeste homomorfism daca &amp;#8704 a, b &amp;#8712 R &lt;UL&gt;&lt;LI&gt;f(a . b) = f(a) * f(b)&lt;/LI&gt;&lt;LI&gt;f(a+b) = f(a) # f(b)&lt;br&gt;daca f este bijectiva se numeste izomorfism si se spune ca R si S sunt izomorfe si se noteaza R &amp;#8776 S&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;subinel, subcamp&lt;/DT&gt;&lt;DD&gt;fie S &amp;#8834 R, (S,+,.) este subinel al inelului (R,+,.) daca &lt;UL&gt;&lt;LI&gt;0 &amp;#8712 S&lt;/LI&gt;&lt;LI&gt;daca a &amp;#8712 S at -a &amp;#8712 S&lt;/LI&gt;&lt;LI&gt;daca a, b &amp;#8712 S at. a+b &amp;#8712 S si a . b &amp;#8712 S&lt;/LI&gt;&lt;/UL&gt;daca (R, +, .) este camp , (S, +, .) este subcamp daca sunt indeplinite si &lt;UL&gt;&lt;LI&gt;1 &amp;#8712 S&lt;/LI&gt;&lt;LI&gt;daca a &amp;#8712 S si a &amp;#8800 0 at a&lt;sup&gt;-1&lt;/sup&gt; &amp;#8712 S&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;/DL&gt;
&lt;/UL&gt;
&lt;a href="http://www.math.usf.edu/~eclark/#ELEMENTARY_ABSTRACT_ALGEBRA"&gt;ELEMENTARY ABSTRACT ALGEBRA&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113636310784089755?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113636310784089755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113636310784089755&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113636310784089755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113636310784089755'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2006/01/memento-algebra.html' title='Memento algebra'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113636295328568837</id><published>2006-01-04T10:21:00.000+02:00</published><updated>2006-01-04T10:22:34.243+02:00</updated><title type='text'>DES - sumar</title><content type='html'>&lt;DL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;cifru bloc iterat&lt;/DT&gt;&lt;DD&gt;e&lt;sub&gt;K&lt;sub&gt;i&lt;/sub&gt;&lt;/sub&gt; : { 0 , 1 }&lt;sup&gt;K&lt;sub&gt;i&lt;/sub&gt;&lt;/sup&gt; x { 0 , 1}&lt;sup&gt;l&lt;/sup&gt;&lt;/DD&gt; &amp;#8594 { 0 , 1}&lt;sup&gt;l&lt;/sup&gt; este functia de tur (runda, iteratie); cheia de runda K&lt;sub&gt;i&lt;/sub&gt; se obtine din cheia K; e&lt;sub&gt;k&lt;sub&gt;i&lt;/sub&gt;&lt;/sub&gt; este bijectiva; 1 &amp;#8806 i &amp;#8806 t, t este numarul de tururi&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;cifru Feistel&lt;/DT&gt;&lt;DD&gt;este un cifru bloc iterat care cripteaza un mesaj in clar de lungime 2l, in biti, (L&lt;sub&gt;0&lt;/sub&gt; , R&lt;sub&gt;0&lt;/sub&gt;) in mesajul cifrat (L&lt;sub&gt;t&lt;/sub&gt; , R&lt;sub&gt;t&lt;/sub&gt;) pentru care functia de tur este e&lt;sub&gt;K&lt;sub&gt;i&lt;/sub&gt;&lt;/sub&gt; cu (L&lt;sub&gt;i&lt;/sub&gt; , R&lt;sub&gt;i&lt;/sub&gt;) = e&lt;sub&gt;K&lt;sub&gt;i&lt;/sub&gt;&lt;/sub&gt; (L&lt;sub&gt;i-1&lt;/sub&gt; , R&lt;sub&gt;i-1&lt;/sub&gt;) unde:
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;L&lt;sub&gt;i&lt;/sub&gt; = &lt;/td&gt;&lt;td&gt;R&lt;sub&gt;i-1&lt;/sub&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;R&lt;sub&gt;i&lt;/sub&gt; = &lt;/td&gt;&lt;td&gt; L&lt;sub&gt;i-1&lt;/sub&gt; &amp;#8853 f(R&lt;sub&gt;i-1&lt;/sub&gt; , K&lt;sub&gt;i&lt;/sub&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;DES&lt;/DT&gt;&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;este un cifru Feistel pentru care l = 32, k=56, t=16&lt;/LI&gt;
&lt;LI&gt;cheia K are o lungime de 64 biti la care pozitiile 8, 16, 24 .., 64 pot fi folosite pentru paritate; cheia de runda K&lt;sub&gt;i&lt;/sub&gt; are o lungime de 48 biti&lt;/LI&gt;
&lt;LI&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;L&lt;sub&gt;i&lt;/sub&gt; = &lt;/td&gt;&lt;td&gt;R&lt;sub&gt;i-1&lt;/sub&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;R&lt;sub&gt;i&lt;/sub&gt; = &lt;/td&gt;&lt;td&gt; L&lt;sub&gt;i-1&lt;/sub&gt; &amp;#8853 f(R&lt;sub&gt;i-1&lt;/sub&gt; , K&lt;sub&gt;i&lt;/sub&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
unde f(R&lt;sub&gt;i-1&lt;/sub&gt; , K&lt;sub&gt;i&lt;/sub&gt;) = P ( S ( E ( R&lt;sub&gt;i-1&lt;/sub&gt;) &amp;#8853 K&lt;sub&gt;i&lt;/sub&gt; ) ) cu E o permutare,fixata, de expansiune de la 32 la 48 biti, P o lata permutare fixata pe 32 biti
&lt;/LI&gt;
&lt;LI&gt;algoritm generare chei
&lt;UL&gt;
&lt;LI&gt;din cheia K se elimina bitii de paritate; se aplica permutarea PC1
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;57&lt;/td&gt;&lt;td&gt;49&lt;/td&gt;&lt;td&gt;41&lt;/td&gt;&lt;td&gt;33&lt;/td&gt;&lt;td&gt;25&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;58&lt;/td&gt;&lt;td&gt;50&lt;/td&gt;&lt;td&gt;42&lt;/td&gt;&lt;td&gt;34&lt;/td&gt;&lt;td&gt;26&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;59&lt;/td&gt;&lt;td&gt;51&lt;/td&gt;&lt;td&gt;43&lt;/td&gt;&lt;td&gt;35&lt;/td&gt;&lt;td&gt;27&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;19&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;60&lt;/td&gt;&lt;td&gt;52&lt;/td&gt;&lt;td&gt;44&lt;/td&gt;&lt;td&gt;36&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;63&lt;/td&gt;&lt;td&gt;55&lt;/td&gt;&lt;td&gt;47&lt;/td&gt;&lt;td&gt;39&lt;/td&gt;&lt;td&gt;31&lt;/td&gt;&lt;td&gt;23&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;62&lt;/td&gt;&lt;td&gt;54&lt;/td&gt;&lt;td&gt;46&lt;/td&gt;&lt;td&gt;38&lt;/td&gt;&lt;td&gt;30&lt;/td&gt;&lt;td&gt;22&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;61&lt;/td&gt;&lt;td&gt;53&lt;/td&gt;&lt;td&gt;45&lt;/td&gt;&lt;td&gt;37&lt;/td&gt;&lt;td&gt;29&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;21&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;28&lt;/td&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
rezultand doua secvente de 28 biti ( C&lt;sub&gt;0&lt;/sub&gt; , D&lt;sub&gt;0&lt;/sub&gt;)
&lt;/LI&gt;
&lt;LI&gt;pentru fiecare tur K&lt;sub&gt;i&lt;/sub&gt; rezulta prin aplicarea permutarii PC2
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;24&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;28&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;21&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;23&lt;/td&gt;&lt;td&gt;19&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;26&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;27&lt;/td&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;41&lt;/td&gt;&lt;td&gt;52&lt;/td&gt;&lt;td&gt;31&lt;/td&gt;&lt;td&gt;37&lt;/td&gt;&lt;td&gt;47&lt;/td&gt;&lt;td&gt;55&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;30&lt;/td&gt;&lt;td&gt;40&lt;/td&gt;&lt;td&gt;51&lt;/td&gt;&lt;td&gt;45&lt;/td&gt;&lt;td&gt;33&lt;/td&gt;&lt;td&gt;48&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;44&lt;/td&gt;&lt;td&gt;49&lt;/td&gt;&lt;td&gt;39&lt;/td&gt;&lt;td&gt;56&lt;/td&gt;&lt;td&gt;34&lt;/td&gt;&lt;td&gt;53&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;46&lt;/td&gt;&lt;td&gt;42&lt;/td&gt;&lt;td&gt;50&lt;/td&gt;&lt;td&gt;36&lt;/td&gt;&lt;td&gt;29&lt;/td&gt;&lt;td&gt;32&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
asupra lui ( C&lt;sub&gt;i&lt;/sub&gt; , D&lt;sub&gt;i&lt;/sub&gt;) unde C&lt;sub&gt;i&lt;/sub&gt; si D&lt;sub&gt;i&lt;/sub&gt; se obtin din C&lt;sub&gt;i-1&lt;/sub&gt; , D&lt;sub&gt;i-1&lt;/sub&gt; prin alunecare stanga cu o pozitie pentru tururile 1,2, 9, 16 sau cu doua pozitii pentru celelate tururi
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;algoritm criptare
&lt;UL&gt;
&lt;LI&gt;blocului de text in clar i se aplica permutarea IC
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;58&lt;/td&gt;&lt;td&gt;50&lt;/td&gt;&lt;td&gt;42&lt;/td&gt;&lt;td&gt;34&lt;/td&gt;&lt;td&gt;26&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;60&lt;/td&gt;&lt;td&gt;52&lt;/td&gt;&lt;td&gt;44&lt;/td&gt;&lt;td&gt;36&lt;/td&gt;&lt;td&gt;28&lt;/td&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;62&lt;/td&gt;&lt;td&gt;54&lt;/td&gt;&lt;td&gt;46&lt;/td&gt;&lt;td&gt;38&lt;/td&gt;&lt;td&gt;30&lt;/td&gt;&lt;td&gt;22&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;64&lt;/td&gt;&lt;td&gt;56&lt;/td&gt;&lt;td&gt;48&lt;/td&gt;&lt;td&gt;40&lt;/td&gt;&lt;td&gt;32&lt;/td&gt;&lt;td&gt;24&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;57&lt;/td&gt;&lt;td&gt;49&lt;/td&gt;&lt;td&gt;41&lt;/td&gt;&lt;td&gt;33&lt;/td&gt;&lt;td&gt;25&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;59&lt;/td&gt;&lt;td&gt;51&lt;/td&gt;&lt;td&gt;43&lt;/td&gt;&lt;td&gt;35&lt;/td&gt;&lt;td&gt;27&lt;/td&gt;&lt;td&gt;19&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;61&lt;/td&gt;&lt;td&gt;53&lt;/td&gt;&lt;td&gt;45&lt;/td&gt;&lt;td&gt;37&lt;/td&gt;&lt;td&gt;29&lt;/td&gt;&lt;td&gt;21&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;63&lt;/td&gt;&lt;td&gt;55&lt;/td&gt;&lt;td&gt;47&lt;/td&gt;&lt;td&gt;39&lt;/td&gt;&lt;td&gt;31&lt;/td&gt;&lt;td&gt;23&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
rezultand secventele de 32 de biti ( L&lt;sub&gt;0&lt;/sub&gt; , R&lt;sub&gt;0&lt;/sub&gt; )
&lt;/LI&gt;
&lt;LI&gt;pentru fiecare tur i se calculeaza L&lt;sub&gt;i&lt;/sub&gt; = R&lt;sub&gt;i-1&lt;/sub&gt; si R&lt;sub&gt;i&lt;/sub&gt; = L&lt;sub&gt;i-1&lt;/sub&gt; &amp;#8853 f(R&lt;sub&gt;i-1&lt;/sub&gt; , K&lt;sub&gt;i&lt;/sub&gt;) unde f(R&lt;sub&gt;i-1&lt;/sub&gt; , K&lt;sub&gt;i&lt;/sub&gt;) se caluleza astfel:
&lt;UL&gt;
&lt;LI&gt;se expandeaza R&lt;sub&gt;i-1&lt;/sub&gt; de la 32 biti la 48 biti, E(R&lt;sub&gt;i-1&lt;/sub&gt;) unde E este data de
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;32&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;19&lt;/td&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;21&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;21&lt;/td&gt;&lt;td&gt;22&lt;/td&gt;&lt;td&gt;23&lt;/td&gt;&lt;td&gt;24&lt;/td&gt;&lt;td&gt;25&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;24&lt;/td&gt;&lt;td&gt;25&lt;/td&gt;&lt;td&gt;26&lt;/td&gt;&lt;td&gt;27&lt;/td&gt;&lt;td&gt;28&lt;/td&gt;&lt;td&gt;29&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;28&lt;/td&gt;&lt;td&gt;29&lt;/td&gt;&lt;td&gt;30&lt;/td&gt;&lt;td&gt;31&lt;/td&gt;&lt;td&gt;32&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/LI&gt;
&lt;LI&gt;se face un XOR intre E(R&lt;sub&gt;i-1&lt;/sub&gt;) si K&lt;sub&gt;i&lt;/sub&gt; rezultand 8 secvente de 6 biti ( B&lt;sub&gt;1&lt;/sub&gt; , ..., B&lt;sub&gt;8&lt;/sub&gt;)&lt;/LI&gt;
&lt;LI&gt;fiecarei secvente B&lt;sub&gt;j&lt;/sub&gt; i se aplica maparea S&lt;sub&gt;j&lt;/sub&gt;; pentru B&lt;sub&gt;j&lt;/sub&gt; = b&lt;sub&gt;1&lt;/sub&gt;b&lt;sub&gt;2&lt;/sub&gt; .. b&lt;sub&gt;6&lt;/sub&gt; se calculeaza randul r = 2 b&lt;sub&gt;1&lt;/sub&gt; + b&lt;sub&gt;6&lt;/sub&gt; si coloana c = b&lt;sub&gt;2&lt;/sub&gt;b&lt;sub&gt;3&lt;/sub&gt;b&lt;sub&gt;4&lt;/sub&gt;b&lt;sub&gt;5&lt;/sub&gt;; cu r si c astfel calculati se obtin maparile conform cu tabelele
&lt;br&gt;S&lt;sub&gt;1&lt;/sub&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;r/c&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;br&gt;S&lt;sub&gt;2&lt;/sub&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;r/c&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;br&gt;S&lt;sub&gt;3&lt;/sub&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;r/c&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;br&gt;S&lt;sub&gt;4&lt;/sub&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;r/c&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;br&gt;S&lt;sub&gt;5&lt;/sub&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;r/c&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;br&gt;S&lt;sub&gt;6&lt;/sub&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;r/c&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;br&gt;S&lt;sub&gt;7&lt;/sub&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;r/c&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;br&gt;S&lt;sub&gt;8&lt;/sub&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;r/c&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/LI&gt;
&lt;LI&gt;secventei obtinute prin concatenarea celor 8 secvente de 4 biti S&lt;sub&gt;j&lt;/sub&gt;( B&lt;sub&gt;j&lt;/sub&gt; ) i se aplica permutarea P
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;21&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;29&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;28&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;23&lt;/td&gt;&lt;td&gt;26&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;31&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;24&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;32&lt;/td&gt;&lt;td&gt;27&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;19&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;30&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;22&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;25&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;secventei de 64 biti ( R&lt;sub&gt;16&lt;/sub&gt; , L&lt;sub&gt;16&lt;/sub&gt;) i se aplica inversa permutarii IC&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;algoritm decriptarare&lt;br&gt; se foloseste algoritmul de criptare cu cheile in ordine inversa&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DL&gt;

&lt;a href="http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf"&gt;FIPS-46-3&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113636295328568837?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113636295328568837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113636295328568837&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113636295328568837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113636295328568837'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2006/01/des-sumar.html' title='DES - sumar'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113500761173326487</id><published>2005-12-19T17:52:00.000+02:00</published><updated>2005-12-20T14:27:25.466+02:00</updated><title type='text'>Moduri de operare cifruri bloc</title><content type='html'>&lt;UL&gt;
&lt;LI&gt;
Criterii de evaluare cifruri bloc si moduri de operare
&lt;UL&gt;
&lt;LI&gt;nivelul de securitate estimat&lt;br&gt;increderea intr-un cifru creste daca acesta a constituit subiect de criptanaliza pentru o perioada indelungata de timp. Cantitatea de text cifrat necesara pentru realizarea de atacuri poate uneori depasi distanta de unicitate a unui cifru care estimeaza cantitatea de text cifrat necesara pentru regasirea cheii&lt;/LI&gt;
&lt;LI&gt;marimea cheii&lt;br&gt;lungimea in biti a cheii defineste o limita superioara a securitatii unui cifru (la cautarea completa) dar o lungime mai mare a cheii implica costuri aditionale&lt;/LI&gt;
&lt;LI&gt;volumul&lt;br&gt;este legat de complexitatea  maparii criptografice si de modul de implementare pe o anumita platforma&lt;/LI&gt;
&lt;LI&gt;marimea blocului&lt;br&gt;este un compromis intre o lungime cat mai mare (motive de securitate) si o lungime cat mai mica (motive de implementare)&lt;/LI&gt;
&lt;LI&gt;expandarea datelor&lt;br&gt;nu este de dorit a se realiza expandarea; apare la substitutia homofonica si la tehnicile pseudoaleatoare&lt;/LI&gt;
&lt;LI&gt;propagarea erorii&lt;br&gt;biti eronati in textul cifrat au efecte diverse la decriptare&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;
Moduri de operare pentru confidentialitate
&lt;DL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;modul ECB (electronic codebook)&lt;/DT&gt;
&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;algoritm&lt;BR&gt;intrarea consta in blocurile textului in clar p&lt;sub&gt;1&lt;/sub&gt;,p&lt;sub&gt;2&lt;/sub&gt;,...,p&lt;sub&gt;t&lt;/sub&gt; (blocuri de lungime n) si iesirea in blocurile textului cifrat c&lt;sub&gt;1&lt;/sub&gt;,c&lt;sub&gt;2&lt;/sub&gt;,...,c&lt;sub&gt;t&lt;/sub&gt; (blocuri de lungime n) unde c&lt;sub&gt;i&lt;/sub&gt; = e&lt;sub&gt;k&lt;/sub&gt; ( p&lt;sub&gt;i&lt;/sub&gt; ) si p&lt;sub&gt;i&lt;/sub&gt; = d&lt;sub&gt;k&lt;/sub&gt; ( c&lt;sub&gt;i&lt;/sub&gt; ) cu 1 &amp;#8806 i &amp;#8806 t, p&lt;sub&gt;i&lt;/sub&gt; &amp;#8712 &lt;b&gt;P&lt;/b&gt;, c&lt;sub&gt;i&lt;/sub&gt; &amp;#8712 &lt;b&gt;C&lt;/b&gt;, k &amp;#8712 &lt;b&gt;K&lt;/b&gt;&lt;/LI&gt;
&lt;LI&gt;proprietati&lt;UL&gt;&lt;LI&gt;un bloc de text in clar se cripteaza intotdeauna in acelasi bloc de text criptat, pentru aceeasi cheie&lt;/LI&gt;&lt;LI&gt;blocurile de text in clar se cripteaza independent de alte blocuri de text in clar; reordonarea blocurilor de text criptata conduce la o reordonare a blocurilor de text in clar&lt;/LI&gt;&lt;LI&gt;erorile de bit intr-un bloc de text criptata afecteaza numai decriptarea acelui bloc&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;observatii&lt;br&gt;este recomandat pentru mesaje ce constau intr-un singur bloc; eventual, blocurile de text clar pot fi completate cu secvente aleatoare&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;modul CBC (cipher-block chaining)&lt;/DT&gt;
&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;algoritm&lt;br&gt;intrarea consta in blocurile textului in clar p&lt;sub&gt;1&lt;/sub&gt;,p&lt;sub&gt;2&lt;/sub&gt;,...,p&lt;sub&gt;t&lt;/sub&gt; (blocuri de lungime n) si iesirea in blocurile textului cifrat c&lt;sub&gt;1&lt;/sub&gt;,c&lt;sub&gt;2&lt;/sub&gt;,...,c&lt;sub&gt;t&lt;/sub&gt; (blocuri de lungime n) unde c&lt;sub&gt;i&lt;/sub&gt; = e&lt;sub&gt;k&lt;/sub&gt; ( c&lt;sub&gt;i-1&lt;/sub&gt; &amp;#8853 p&lt;sub&gt;i&lt;/sub&gt; ) si p&lt;sub&gt;i&lt;/sub&gt; = c&lt;sub&gt;i-1&lt;/sub&gt; &amp;#8853 d&lt;sub&gt;k&lt;/sub&gt; ( c&lt;sub&gt;i&lt;/sub&gt; ) cu 1 &amp;#8806 i &amp;#8806 t, p&lt;sub&gt;i&lt;/sub&gt; &amp;#8712 &lt;b&gt;P&lt;/b&gt;, c&lt;sub&gt;i&lt;/sub&gt; &amp;#8712 &lt;b&gt;C&lt;/b&gt;, k &amp;#8712 &lt;b&gt;K&lt;/b&gt;, c&lt;sub&gt;0&lt;/sub&gt; se obtine dintr-un vector de initializare de lungime n biti&lt;/LI&gt;
&lt;LI&gt;proprietati&lt;UL&gt;&lt;LI&gt;un bloc de text in clar se cripteaza intotdeauna in acelasi bloc de text criptat, pentru aceeasi cheie si acelasi vector de initializare&lt;/LI&gt;&lt;LI&gt;deoarece un bloc de text criptat depinde de blocurile criptate anterioare, reordonarea blocurilor criptate afecteaza decriptarea corecta&lt;/LI&gt;&lt;LI&gt;erorile de bit afecteaza decriptararea blocurilor urmatoare&lt;/LI&gt;&lt;LI&gt;acest mod este autosincronizabil in sensul ca o eroare in blocul criptat i nu afecteaza decriptarea blocului i+2 daca blocul i+1 nu are erori&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;observatii&lt;UL&gt;&lt;LI&gt;nu se poate folosi in aplicatiile ce utilizeaza accesul aleator scriere/citire la date criptate deoarece o modificare intr-unul din blocurile textului in clar afecteaza criptarea in toate blocrile ulterioare criptate &lt;/LI&gt;&lt;LI&gt;pierderile de bit afecteaza delimitarea blocurilor criptate&lt;/LI&gt;&lt;LI&gt;se recomanda utilizarea unui vector de initializare secret; mecanismul de criptare garanteaza numai confidentialitatea nu si integritatea&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;modul CFB (cipher feedback)&lt;/DT&gt;
&lt;DD&gt;
aplicatiile ar putea necesita criptarea unor blocuri de text in clar de lungime r, 1 &amp;#8806 r &amp;#8806 n ( in mod tipic r =1 sau r = 8)
&lt;UL&gt;
&lt;LI&gt;algoritm&lt;br&gt;intrarea consta in blocurile textului in clar p&lt;sub&gt;1&lt;/sub&gt;,p&lt;sub&gt;2&lt;/sub&gt;,...,p&lt;sub&gt;u&lt;/sub&gt; (blocuri de lungime r) si iesirea in blocurile textului cifrat c&lt;sub&gt;1&lt;/sub&gt;,c&lt;sub&gt;2&lt;/sub&gt;,...,c&lt;sub&gt;u&lt;/sub&gt; (blocuri de lungime r) unde c&lt;sub&gt;i&lt;/sub&gt; = p&lt;sub&gt;i&lt;/sub&gt; &amp;#8853 s&lt;sub&gt;i&lt;/sub&gt; si p&lt;sub&gt;i&lt;/sub&gt; = c&lt;sub&gt;i&lt;/sub&gt; &amp;#8853 s&lt;sub&gt;i&lt;/sub&gt; cu 1 &amp;#8806 i &amp;#8806 u, p&lt;sub&gt;i&lt;/sub&gt; &amp;#8712 &lt;b&gt;P&lt;/b&gt;, c&lt;sub&gt;i&lt;/sub&gt; &amp;#8712 &lt;b&gt;C&lt;/b&gt;, k &amp;#8712 &lt;b&gt;K&lt;/b&gt; si secventa&lt;UL&gt;( I&lt;sub&gt;1&lt;/sub&gt; se obtine dintr-un vector de initializare de lungime n biti) &lt;LI&gt;O&lt;sub&gt;i&lt;/sub&gt; = e&lt;sub&gt;k&lt;/sub&gt; ( I&lt;sub&gt;i&lt;/sub&gt; )&lt;/LI&gt;&lt;LI&gt;s&lt;sub&gt;i&lt;/sub&gt; sunt cei mai semnificativi r biti din O&lt;sub&gt;i&lt;/sub&gt;&lt;/LI&gt;&lt;LI&gt;I&lt;sub&gt;i+1&lt;/sub&gt; = 2&lt;sup&gt;r&lt;/sup&gt;I&lt;sub&gt;i&lt;/sub&gt; + c&lt;sub&gt;i&lt;/sub&gt; mod 2&lt;sup&gt;n&lt;/sup&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;proprietati&lt;UL&gt;&lt;LI&gt;un bloc de text in clar se cripteaza intotdeauna in acelasi bloc de text criptat, pentru aceeasi cheie si acelasi vector de initializare&lt;/LI&gt;&lt;LI&gt;deoarece un bloc de text criptat depinde de blocurile criptate anterioare, reordonarea blocurilor criptate afecteaza decriptarea corecta; decriptarea corecta necesita [n/r] blocuri anterioare criptate corecte&lt;/LI&gt;&lt;LI&gt;erorile de bit afecteaza decriptararea urmatoarelor [n/r] blocuri (pana ce blocul eronat a fost curatat din registrul de alunecare)&lt;/LI&gt;&lt;LI&gt;acest mod este autosincronizabil dar dupa [n/r] blocuri&lt;/LI&gt;&lt;LI&gt;pentru r &amp;#60 n, volumul scade cu un factor n/r comaparat cu modul CBC&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;observatii&lt;UL&gt;&lt;LI&gt;nu este neaparat necesar ca vectorul de initializare sa fie secret&lt;/LI&gt;&lt;LI&gt;deoarece atat la criptare cat si la decriptare se foloseste e&lt;sub&gt;k&lt;/sub&gt;, acest mod nu se foloseste decat daca e nu este un algoritm cu cheie publica&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;modul OFB (output feedback)&lt;/DT&gt;
&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;algoritm&lt;UL&gt;&lt;LI&gt;OFB cu feedback complet&lt;br&gt;intrarea consta in blocurile textului in clar p&lt;sub&gt;1&lt;/sub&gt;,p&lt;sub&gt;2&lt;/sub&gt;,...,p&lt;sub&gt;u&lt;/sub&gt; (blocuri de lungime r) si iesirea in blocurile textului cifrat c&lt;sub&gt;1&lt;/sub&gt;,c&lt;sub&gt;2&lt;/sub&gt;,...,c&lt;sub&gt;u&lt;/sub&gt; (blocuri de lungime r) unde c&lt;sub&gt;i&lt;/sub&gt; = p&lt;sub&gt;i&lt;/sub&gt; &amp;#8853 s&lt;sub&gt;i&lt;/sub&gt; si p&lt;sub&gt;i&lt;/sub&gt; = c&lt;sub&gt;i&lt;/sub&gt; &amp;#8853 s&lt;sub&gt;i&lt;/sub&gt; cu 1 &amp;#8806 i &amp;#8806 u, p&lt;sub&gt;i&lt;/sub&gt; &amp;#8712 &lt;b&gt;P&lt;/b&gt;, c&lt;sub&gt;i&lt;/sub&gt; &amp;#8712 &lt;b&gt;C&lt;/b&gt;, k &amp;#8712 &lt;b&gt;K&lt;/b&gt; si secventa&lt;UL&gt;( I&lt;sub&gt;1&lt;/sub&gt; se obtine dintr-un vector de initializare de lungime n biti) &lt;LI&gt;O&lt;sub&gt;i&lt;/sub&gt; = e&lt;sub&gt;k&lt;/sub&gt; ( I&lt;sub&gt;i&lt;/sub&gt; )&lt;/LI&gt;&lt;LI&gt;s&lt;sub&gt;i&lt;/sub&gt; sunt cei mai semnificativi r biti din O&lt;sub&gt;i&lt;/sub&gt;&lt;/LI&gt;&lt;LI&gt;I&lt;sub&gt;i+1&lt;/sub&gt; = O&lt;sub&gt;i&lt;/sub&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;OFB cu feedback pe r biti&lt;br&gt;intrarea consta in blocurile textului in clar p&lt;sub&gt;1&lt;/sub&gt;,p&lt;sub&gt;2&lt;/sub&gt;,...,p&lt;sub&gt;u&lt;/sub&gt; (blocuri de lungime r) si iesirea in blocurile textului cifrat c&lt;sub&gt;1&lt;/sub&gt;,c&lt;sub&gt;2&lt;/sub&gt;,...,c&lt;sub&gt;u&lt;/sub&gt; (blocuri de lungime r) unde c&lt;sub&gt;i&lt;/sub&gt; = p&lt;sub&gt;i&lt;/sub&gt; &amp;#8853 s&lt;sub&gt;i&lt;/sub&gt; si p&lt;sub&gt;i&lt;/sub&gt; = c&lt;sub&gt;i&lt;/sub&gt; &amp;#8853 s&lt;sub&gt;i&lt;/sub&gt; cu 1 &amp;#8806 i &amp;#8806 u, p&lt;sub&gt;i&lt;/sub&gt; &amp;#8712 &lt;b&gt;P&lt;/b&gt;, c&lt;sub&gt;i&lt;/sub&gt; &amp;#8712 &lt;b&gt;C&lt;/b&gt;, k &amp;#8712 &lt;b&gt;K&lt;/b&gt; si secventa&lt;UL&gt;( I&lt;sub&gt;1&lt;/sub&gt; se obtine dintr-un vector de initializare de lungime n biti) &lt;LI&gt;O&lt;sub&gt;i&lt;/sub&gt; = e&lt;sub&gt;k&lt;/sub&gt; ( I&lt;sub&gt;i&lt;/sub&gt; )&lt;/LI&gt;&lt;LI&gt;s&lt;sub&gt;i&lt;/sub&gt; sunt cei mai semnificativi r biti din O&lt;sub&gt;i&lt;/sub&gt;&lt;/LI&gt;&lt;LI&gt;I&lt;sub&gt;i+1&lt;/sub&gt; = 2&lt;sup&gt;r&lt;/sup&gt;I&lt;sub&gt;i&lt;/sub&gt; + s&lt;sub&gt;i&lt;/sub&gt; mod 2&lt;sup&gt;n&lt;/sup&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;proprietati&lt;UL&gt;&lt;LI&gt;un bloc de text in clar se cripteaza intotdeauna in acelasi bloc de text criptat, pentru aceeasi cheie si acelasi vector de initializare&lt;/LI&gt;&lt;LI&gt;fluxul de chei este independent de textul in clar&lt;/LI&gt;&lt;LI&gt;unul sau mai multi biti eronati in blocul c&lt;sub&gt;i&lt;/sub&gt; afecteaza numai decriptarea blocului respectiv&lt;/LI&gt;&lt;LI&gt;nu se autosincronizeaza la pierderea bitilor din blocuri cifrate&lt;/LI&gt;&lt;LI&gt;pentru r &amp;#60 n, volumul scade cu un factor n/r comaparat cu modul CBC; fluxul de chei poate fi calculat avnd cheia si secventa de initializare&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;observatii&lt;UL&gt;&lt;LI&gt;nu este neaparat necesar ca vectorul de initializare sa fie secret, dar acesta trebuie modificat la reutilizarea unei chei&lt;/LI&gt;&lt;LI&gt;deoarece atat la criptare cat si la decriptare se foloseste e&lt;sub&gt;k&lt;/sub&gt;, acest mod nu se foloseste decat daca e nu este un algoritm cu cheie publica&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;DT&gt;modul CTR (counter mode)&lt;/DT&gt;
&lt;DD&gt;
&lt;UL&gt;
&lt;LI&gt;algoritm: este o simplificare a OFB la care I&lt;sub&gt;i+1&lt;/sub&gt; = I&lt;sub&gt;i&lt;/sub&gt;+1&lt;/LI&gt;
&lt;LI&gt;proprietati: decriptarea lui c&lt;sub&gt;i+1&lt;/sub&gt; nu necesita decriptarea lui c&lt;sub&gt;i&lt;/sub&gt; astfel ca accesul este secvential&lt;/LI&gt;
&lt;LI&gt;observatii
&lt;UL&gt;
&lt;LI&gt;pentru toate mesajele criptate cu aceeasi cheie, contoarele trebuie sa fie diferite &lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Moduri de operare pentru autentificare date&lt;/LI&gt;
&lt;LI&gt;Moduri de operare pentru autentificare date si confidentialitate&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DL&gt;
&lt;a href="http://www.itl.nist.gov/fipspubs/fip81.htm"&gt;FIPS81&lt;/a&gt;
&lt;a href="http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf"&gt;SP800-38A&lt;/a&gt;
&lt;a href="http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38c.pdf"&gt;SP800-38C&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113500761173326487?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113500761173326487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113500761173326487&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113500761173326487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113500761173326487'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2005/12/moduri-de-operare-cifruri-bloc.html' title='Moduri de operare cifruri bloc'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113352515692127657</id><published>2005-12-02T14:04:00.000+02:00</published><updated>2005-12-02T14:05:57.006+02:00</updated><title type='text'>Cativa algoritmi teoria numerelor</title><content type='html'>&lt;UL&gt;
&lt;DL&gt;
&lt;LI&gt;&lt;DT&gt;cmmdc/inversul mod&lt;/DT&gt;&lt;DD&gt;&lt;DL&gt;&lt;UL&gt;&lt;LI&gt;&lt;DT&gt;Euclid&lt;/DT&gt;&lt;DD&gt;
Functia Euclid(a,b)
&lt;BR&gt;if b = 0 return a
&lt;BR&gt;return(Euclid(b; a(modb)))
&lt;BR&gt;end Euclid.&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;Euclid extins&lt;/DT&gt;&lt;DD&gt;Functia Euclid-Extins(a,b)
&lt;BR&gt;if b = 0 return (a; 1; 0)
&lt;BR&gt; a = bk + r.
&lt;BR&gt;(d; x; y) = Euclid-Extins(b; r)
&lt;BR&gt;return(d; y; x - ky )
&lt;br&gt;end  Euclid-Extins&lt;/DD&gt;
&lt;UL&gt;&lt;LI&gt;Euclid extins aplicat intregilor pe n biti ruleaza in O(n&lt;sup&gt;3&lt;/sup&gt;)&lt;/LI&gt;&lt;LI&gt;Euclid extins aplicat polinoamelor de grad n, peste orice camp, ruleaza in O(n&lt;sup&gt;2&lt;/sup&gt;)&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;/UL&gt;&lt;/DL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;congruente liniare de o variabila&lt;br&gt;transformarile in ambele sensuri intre reprezentarile x mod N si x &amp;#8801 a&lt;sub&gt;i&lt;/sub&gt; mod p&lt;sub&gt;i&lt;/sub&gt; unde cmmdc(p&lt;sub&gt;i&lt;/sub&gt;, p&lt;sub&gt;j&lt;/sub&gt;) = 1 ptr i &amp;#8800 j ,  i, j &amp;#8712 {1, 2, ..., r} si &amp;#928&lt;sub&gt;i=1&lt;/sub&gt;&lt;sup&gt;r&lt;/sup&gt; p&lt;sub&gt;i&lt;/sub&gt; ( din teorema chineza a resturilor)&lt;/DT&gt;&lt;DD&gt;&lt;DL&gt;&lt;UL&gt;&lt;LI&gt;de la x mod N catre x &amp;#8801 a&lt;sub&gt;i&lt;/sub&gt; mod p&lt;sub&gt;i&lt;/sub&gt; este trivial&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;de la x &amp;#8801 a&lt;sub&gt;i&lt;/sub&gt; mod p&lt;sub&gt;i&lt;/sub&gt; catre x mod N&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;N = &amp;#928&lt;sub&gt;i=1&lt;/sub&gt;&lt;sup&gt;r&lt;/sup&gt; p&lt;sub&gt;i&lt;/sub&gt;&lt;/LI&gt;&lt;LI&gt;N&lt;sub&gt;i&lt;/sub&gt; = n / p&lt;sub&gt;i&lt;/sub&gt;&lt;/LI&gt;&lt;LI&gt;N&lt;sub&gt;i&lt;/sub&gt;N&lt;sub&gt;i&lt;/sub&gt;&lt;sup&gt;-1&lt;/sup&gt; &amp;#8801 1 ( mod p&lt;sub&gt;i&lt;/sub&gt; ); N&lt;sub&gt;i&lt;/sub&gt;&lt;sup&gt;-1&lt;/sup&gt; se calculeaza prin Euclid extins &lt;/LI&gt;&lt;LI&gt;x = &amp;#931&lt;sub&gt;i=1&lt;/sub&gt;&lt;sup&gt;r&lt;/sup&gt; a&lt;sub&gt;i&lt;/sub&gt;N&lt;sub&gt;i&lt;/sub&gt;N&lt;sup&gt;-1&lt;/sup&gt;&lt;sub&gt;i&lt;/sub&gt;&lt;/LI&gt;&lt;/UL&gt;ruleaza in O(n&lt;sup&gt;3&lt;/sup&gt;)&lt;/DD&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;teste primalitate&lt;/DT&gt;&lt;DD&gt;&lt;DL&gt;&lt;UL&gt;&lt;LI&gt;&lt;DT&gt;&lt;/DT&gt;testul Miller-Rabin&lt;DD&gt;&lt;UL&gt;se testeaza numarul n &amp;#8712 &lt;b&gt;N&lt;/b&gt; cu n -1 = 2&lt;sup&gt;s&lt;/sup&gt; t, unde t este impar si s &amp;#8807 1; se alege aleator a&lt;LI&gt;se calculeaza u&lt;sub&gt;0&lt;/sub&gt; = a&lt;sup&gt;t&lt;/sup&gt; ( mod n)&lt;/LI&gt;&lt;LI&gt;se calculeaza u&lt;sub&gt;i+1&lt;/sub&gt; = u&lt;sup&gt;2&lt;/sup&gt;&lt;sub&gt;i&lt;/sub&gt; ( mod n)&lt;/LI&gt;&lt;br&gt;se declara n probabil prim daca u&lt;sub&gt;0&lt;/sub&gt; = 1 sau &amp;#8707 i ai u&lt;sub&gt;i&lt;/sub&gt; = -1&lt;/UL&gt;Testul Miller-Rabin repetat de k ori declara intotdeauna un prim ca probabil prim. Un numar compozit este declarat probabil prim cu o probabilitate de cel mutl 2&lt;sup&gt;-k&lt;/sup&gt;&lt;br&gt;ruleaza in O(k n&lt;sup&gt;3&lt;/sup&gt;)&lt;/DD&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;descompunerea in factori primi&lt;/DT&gt;&lt;DD&gt;&lt;DL&gt;&lt;UL&gt;&lt;LI&gt;&lt;DT&gt;metoda &amp;#961 a lui Pollard&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;se alege x&lt;sub&gt;0&lt;/sub&gt; &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;n&lt;/sub&gt;&lt;/LI&gt;&lt;LI&gt;se defineste secventa cu relatia de recurenta x&lt;sub&gt;i+1&lt;/sub&gt; = x&lt;sub&gt;i+1&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt; + 1 mod n&lt;/LI&gt;&lt;LI&gt;se calculeaza cmmdc(x&lt;sub&gt;2i&lt;/sub&gt; - x&lt;sub&gt;i&lt;/sub&gt; , n) si se opreste calculul daca d &gt; 1&lt;/LI&gt;&lt;LI&gt; se testeaza primalitatea factorului gasit anterior&lt;/LI&gt;&lt;/UL&gt;din practica, O(n&lt;sup&gt;1/4&lt;/sup&gt;)&lt;/DD&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;logaritmul discret&lt;/DT&gt;&lt;DD&gt;logaritmul discret al lui y in baza g modulo p este x ai g&lt;sup&gt;x&lt;/sup&gt; &amp;#8801 y mod p unde p este prim si g &amp;#8712 U&lt;sub&gt;p&lt;/sub&gt; &lt;DL&gt;&lt;UL&gt;&lt;LI&gt;&lt;DT&gt;algoritmul pas pitic/pas gigant&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;se calculeaza a ca parte intreaga din p&lt;sup&gt;1/2&lt;/sup&gt;&lt;/LI&gt;&lt;LI&gt;se construieste lista: 1, g&lt;sup&gt;a&lt;/sup&gt;, g&lt;sup&gt;2a&lt;/sup&gt;, g&lt;sup&gt;3a&lt;/sup&gt;, ,,,, g&lt;sup&gt;a&lt;sup&gt;2&lt;/sup&gt;&lt;/sup&gt;&lt;/LI&gt;&lt;LI&gt;se construieste lista y, yg, yg&lt;sup&gt;2&lt;/sup&gt;, yg&lt;sup&gt;3&lt;/sup&gt;, ..., , yg&lt;sup&gt;a-1&lt;/sup&gt;&lt;/LI&gt;&lt;LI&gt;se cauta numarul z care apare in ambele liste&lt;br
&gt;z &amp;#8801 yg&lt;sup&gt;k&lt;/sup&gt; &amp;#8801 g&lt;sup&gt;la&lt;/sup&gt; mod p&lt;br&gt; y &amp;#8801 g&lt;sup&gt;la-k&lt;/sup&gt; &amp;#8801 g&lt;sup&gt;x&lt;/sup&gt; mod p&lt;br&gt;x &amp;#8801 la-k mod ( p - 1 )&lt;/LI&gt;&lt;/UL&gt;ruleaza in O( (log p)&lt;sup&gt;2&lt;/sup&gt; p&lt;sup&gt;1/2&lt;/sup&gt;)&lt;/DD&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;/DL&gt;
&lt;/UL&gt;

&lt;a href="http://www.nada.kth.se/~johanh/"&gt;Algoritmi avansati, Johan Hastad&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113352515692127657?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113352515692127657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113352515692127657&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113352515692127657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113352515692127657'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2005/12/cativa-algoritmi-teoria-numerelor.html' title='Cativa algoritmi teoria numerelor'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113326529879392653</id><published>2005-11-29T13:54:00.000+02:00</published><updated>2007-02-20T19:31:11.406+02:00</updated><title type='text'>Memento teoria numerelor</title><content type='html'>&lt;UL&gt;
&lt;DL&gt;
&lt;LI&gt;&lt;DT&gt;divizibilitate&lt;/DT&gt;&lt;DD&gt;d|n, d divide n (d este un divizor al lui n, d este un factor al lui n, n este un multiplu al lui d), d, n &amp;#8712 &lt;b&gt;Z&lt;/b&gt; &amp;#8660 &amp;#8707 k &amp;#8712 &lt;b&gt;Z&lt;/b&gt; ai n = d * k&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;teorema impartirii&lt;/DT&gt;&lt;UL&gt;&lt;LI&gt;&lt;dd&gt;a &amp;#8712 &lt;b&gt;Z&lt;/b&gt;, b &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sup&gt;*&lt;/sup&gt; at &amp;#8707 q, r &amp;#8712 &lt;b&gt;Z&lt;/b&gt;, unici, ai a = b * q + r si 0 &amp;#8806 r &lt; b &lt;/LI&gt;&lt;LI&gt;&lt;dd&gt;a &amp;#8712 &lt;b&gt;Z&lt;/b&gt;, b &amp;#8800 0 at &amp;#8707 q, r &amp;#8712 &lt;b&gt;Z&lt;/b&gt;, unici, ai a = b * q + r si 0 &amp;#8806 r &lt; | b | &lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;modulo&lt;/DT&gt;&lt;dd&gt;a mod b = { b /  a &amp;#8712 &lt;b&gt;Z&lt;/b&gt;, b &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sup&gt;*&lt;/sup&gt;, a = b * q + r }&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;cmmdc&lt;/DT&gt;&lt;dd&gt;cmmdc(a, b) &amp;#8660 a, b &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sup&gt;*&lt;/sup&gt;, &lt;b&gt;D&lt;/b&gt; = {d | d|a &amp;#8743 d|b}, cmmdc(a, b) = sup &lt;b&gt;D&lt;/b&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;proprietati&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;&amp;#8704 a, b &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sup&gt;*&lt;/sup&gt;, &amp;#8707 cmmdc(a, b) si 0 &lt; cmmdc(a, b) &amp;#8806 min ( | a |, | b |)&lt;/LI&gt;&lt;LI&gt;&amp;#8704 a &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sup&gt;*&lt;/sup&gt; at cmmmdc(a, 0) = 0&lt;/LI&gt;&lt;LI&gt;&amp;#8704 a, b &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sup&gt;+&lt;/sup&gt;, cmmdc(a, b) = cmmdc (b, r) unde a = b * q +r&lt;/LI&gt;&lt;LI&gt;Lema Bezout: &amp;#8704 a, b &amp;#8712 &lt;b&gt;Z&lt;/b&gt; &amp;#8707 s, t ai cmmdc(a, b) = s * a + t * b&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;numar prim&lt;/DT&gt;&lt;DD&gt;p &amp;#8712 &lt;b&gt;Z&lt;/b&gt;, p &amp;#8807 2, se numeste prim &amp;#8660 D = { d / d | p} contine numai pe 1 si pe p (altfel se numeste numar compozit)&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;n &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sup&gt;+&lt;/sup&gt; este compozit &amp;#8660 &amp;#8707 a, b , 1 &lt; a &lt; n, 1 &lt; b &lt; n ai n = a * b&lt;/LI&gt;&lt;LI&gt;&amp;#8704 n &gt; 1, &amp;#8707 p, un numar prim, ai p | n&lt;/LI&gt;&lt;LI&gt;(Euclid) exista un numar infinit de numere prime&lt;/LI&gt;&lt;LI&gt;daca n &gt; 1, este un numar compozit at. &amp;#8707 p, un numar prim, ai p | n si p  &amp;#8806 n&lt;sup&gt;1/2&lt;/sup&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;&amp;#960 ( x )&lt;/DT&gt;&lt;DD&gt;reprezinta cardinalul multimiii numerelor prime mai mici decat x &amp;#8712 &lt;b&gt;R&lt;/b&gt;&lt;sup&gt;+&lt;/sup&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;&amp;#960 ( x ) ~ x / ln ( x ), x &amp;#8712 &lt;b&gt;R&lt;/b&gt;&lt;sup&gt;+&lt;/sup&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;Teorema fundamentala a aritmeticii (descompunerea in factori primi)&lt;/DT&gt;&lt;DD&gt;&amp;#8704 n intreg, n &gt; 1, poate fi scris sub forma n = p&lt;sub&gt;1&lt;/sub&gt;p&lt;sub&gt;2&lt;/sub&gt;...p&lt;sub&gt;s&lt;/sub&gt; unde s este un intreg pozitiv si p&lt;sub&gt;1&lt;/sub&gt;p&lt;sub&gt;2&lt;/sub&gt;...p&lt;sub&gt;s&lt;/sub&gt; sunt prime ce satisfac relatia p&lt;sub&gt;1&lt;/sub&gt;&amp;#8806p&lt;sub&gt;2&lt;/sub&gt;&amp;#8806...&amp;#8806p&lt;sub&gt;s&lt;/sub&gt;&lt;br&gt;descompunerea in factori primi exista si este unica&lt;br&gt;daca a si b sunt doua numere supraunitare cu descompunerile in factori primi a = p&lt;sub&gt;1&lt;/sub&gt;&lt;sup&gt;a&lt;sub&gt;1&lt;/sub&gt;&lt;/sup&gt;p&lt;sub&gt;2&lt;/sub&gt;&lt;sup&gt;a&lt;sub&gt;2&lt;/sub&gt;&lt;/sup&gt;...p&lt;sub&gt;k&lt;/sub&gt;&lt;sup&gt;a&lt;sub&gt;k&lt;/sub&gt;&lt;/sup&gt; si b = p&lt;sub&gt;1&lt;/sub&gt;&lt;sup&gt;b&lt;sub&gt;1&lt;/sub&gt;&lt;/sup&gt;p&lt;sub&gt;2&lt;/sub&gt;&lt;sup&gt;b&lt;sub&gt;2&lt;/sub&gt;&lt;/sup&gt;...p&lt;sub&gt;k&lt;/sub&gt;&lt;sup&gt;b&lt;sub&gt;k&lt;/sub&gt;&lt;/sup&gt; at. cmmdc( a , b ) = p&lt;sub&gt;1&lt;/sub&gt;&lt;sup&gt;min ( a&lt;sub&gt;1&lt;/sub&gt; , b&lt;sub&gt;1&lt;/sub&gt; )&lt;/sup&gt;p&lt;sub&gt;2&lt;/sub&gt;&lt;sup&gt;min ( a&lt;sub&gt;2&lt;/sub&gt; , b&lt;sub&gt;2&lt;/sub&gt; )&lt;/sup&gt;...p&lt;sub&gt;k&lt;/sub&gt;&lt;sup&gt;min ( a&lt;sub&gt;k&lt;/sub&gt; , b&lt;sub&gt;k&lt;/sub&gt; )&lt;/sup&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;numere relativ prime&lt;/DT&gt;&lt;DD&gt;a, b sunt relativ prime &amp;#8660 cmmdc ( a , b ) = 1&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;fie a &gt; 1 si n &gt; 1 &lt;UL&gt;&lt;LI&gt;a&lt;sup&gt;n&lt;/sup&gt;-1 este prim &amp;#8658 a = 2 si n este prim&lt;/LI&gt;&lt;LI&gt;a&lt;sup&gt;n&lt;/sup&gt;+1 este prim &amp;#8658 a este impar si &amp;#8707 k &gt; 1 ai n = 2&lt;sup&gt;k&lt;/sup&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;numere Mersenne&lt;/DT&gt;&lt;DD&gt;Daca un numar este de forma M&lt;sub&gt;n&lt;/sub&gt; = 2&lt;sup&gt;n&lt;/sup&gt;-1 se numeste numar Mersenne. Daca M&lt;sub&gt;n&lt;/sub&gt; este prim se numeste prim Mersenne&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;numere Fermat&lt;/DT&gt;&lt;DD&gt;Daca un numar este de forma F&lt;sub&gt;n&lt;/sub&gt; = 2&lt;sup&gt;2&lt;sup&gt;n&lt;/sup&gt;-1&lt;/sup&gt; se numeste numar Fermat. Daca F&lt;sub&gt;n&lt;/sub&gt; este prim se numeste prim Fermat&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;Daca M&lt;sub&gt;n&lt;/sub&gt; este prim at. n este prim&lt;/LI&gt;&lt;LI&gt;(Lucas-Lehmer)&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;functiile &amp;#963 si &amp;#964&lt;/DT&gt;&lt;DD&gt;fie n &gt; 0; se noteaza &lt;UL&gt;&lt;LI&gt;&amp;#964 ( n ) cardinalul multimii formate de divizorii pozitiv ai lui n&lt;/LI&gt;&lt;LI&gt;&amp;#963 ( n ) suma divizorilor pozitiv ai lui n&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;fie descompunerea in factori a lui n = p&lt;sub&gt;1&lt;/sub&gt;&lt;sup&gt;e&lt;sub&gt;1&lt;/sub&gt;&lt;/sup&gt;p&lt;sub&gt;2&lt;/sub&gt;&lt;sup&gt;e&lt;sub&gt;2&lt;/sub&gt;&lt;/sup&gt;...p&lt;sub&gt;r&lt;/sub&gt;&lt;sup&gt;e&lt;sub&gt;r&lt;/sub&gt;&lt;/sup&gt; unde r &amp;#8807 1 , p&lt;sub&gt;1&lt;/sub&gt;&amp;#8806p&lt;sub&gt;2&lt;/sub&gt;&amp;#8806...&amp;#8806p&lt;sub&gt;r&lt;/sub&gt; sunt prime si e&lt;sub&gt;i&lt;/sub&gt; &amp;#8807 0, &amp;#8704 i &amp;#8712 { 1 , 2, ... , r }. At. &lt;UL&gt;&lt;LI&gt;&amp;#964 ( n ) = ( e&lt;sub&gt;1&lt;/sub&gt; + 1 )( e&lt;sub&gt;2&lt;/sub&gt; + 1 ) ... ( e&lt;sub&gt;r&lt;/sub&gt; + 1 )&lt;/LI&gt;&lt;LI&gt;&amp;#963 ( n ) = ( p&lt;sub&gt;1&lt;/sub&gt;&lt;sup&gt;e&lt;sub&gt;1&lt;/sub&gt; + 1&lt;/sup&gt; - 1 ) / ( p&lt;sub&gt;1&lt;/sub&gt; - 1) ( p&lt;sub&gt;2&lt;/sub&gt;&lt;sup&gt;e&lt;sub&gt;2&lt;/sub&gt; + 1&lt;/sup&gt; - 1 ) / ( p&lt;sub&gt;2&lt;/sub&gt; - 1) ... ( p&lt;sub&gt;r&lt;/sub&gt;&lt;sup&gt;e&lt;sub&gt;r&lt;/sub&gt; + 1&lt;/sup&gt; - 1 ) / ( p&lt;sub&gt;r&lt;/sub&gt; - 1)&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;numere perfecte&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;se noteaza &amp;#963&lt;sup&gt;*&lt;/sup&gt;( n ) suma divizorilor pozitivi mai mici ca n, ai lui n&lt;/LI&gt;&lt;LI&gt;ptr n &amp;#8807 2, &amp;#963&lt;sup&gt;*&lt;/sup&gt;( n ) = &amp;#963( n ) -n&lt;/LI&gt;&lt;LI&gt;&lt;/LI&gt;un numar este perfect daca &amp;#963&lt;sup&gt;*&lt;/sup&gt;( n ) = n&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;congruente&lt;/DT&gt;&lt;DD&gt;&lt;DL&gt;&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;a congruent cu b modulo m&lt;/DT&gt;&lt;DD&gt;a &amp;#8801 b (mod m) &amp;#8660 ptr m &amp;#8807 0, m | a - b&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;m &gt; 0, &amp;#8704 a, b : a &amp;#8801 b (mod m) &amp;#8660 a mod m = b mod m ptr m &amp;#8807&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;proprietati relatie congruenta&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;(reflexivitate) a &amp;#8801 a ( mod m)&lt;/LI&gt;&lt;LI&gt;(simetrie) a &amp;#8801 b (mod m) &amp;#8658 b &amp;#8801 a (mod m) &lt;/LI&gt;&lt;LI&gt;(tranzitivitate) a &amp;#8801 b (mod m) si b &amp;#8801 c (mod m) &amp;#8658 a &amp;#8801 c (mod m)&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;element invers&lt;/DT&gt;&lt;DD&gt;daca cmmdc( a , m ) = 1 at &amp;#8707 a', 0 &lt; a' &lt; m , unic, ai aa' &amp;#8801 (mod m)&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T operatii&lt;/DT&gt;&lt;DD&gt;a &amp;#8801 b ( mod m) si a &amp;#8801 b ( mod m) &amp;#8658&lt;UL&gt;&lt;LI&gt;a &amp;#177 b &amp;#8801 c &amp;#177 d ( mod m)&lt;/LI&gt;&lt;LI&gt;ac &amp;#8801 bd ( mod m)&lt;/LI&gt;&lt;LI&gt;a&lt;sup&gt;n&lt;/sup&gt; &amp;#8801 b&lt;sup&gt;n&lt;/sup&gt; ( mod m ) &amp;#8704 n &amp;#8807 1&lt;/LI&gt;&lt;LI&gt;f ( a ) &amp;#8801 f ( b ) , &amp;#8704 f ( x) , polinom cu coeficienti intregi&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;ptr c &gt; 0 , m &gt; 0 : a &amp;#8801 b ( mod m) &amp;#8660 ca &amp;#8801 cb ( mod cm)&lt;/LI&gt;&lt;LI&gt;ptr. m &gt; 0 si d = cmmdc ( c , m) : ca &amp;#8801 cb ( mod m) &amp;#8658 a &amp;#8801 b ( mod m/d)&lt;/LI&gt;&lt;LI&gt;m &gt; 0 , a &amp;#8801 b ( mod m) &amp;#8658 cmmdc ( a, m) = cmmdc ( b , m)&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;&lt;/DL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;clase de resturi&lt;/DT&gt;&lt;DD&gt;&lt;DL&gt;&lt;UL&gt;&lt;LI&gt;&lt;DT&gt;clasa de resturi a modulo m&lt;/DT&gt;&lt;DD&gt;pt. m &gt; o fixat si ptr a intreg se defineste [a] = { x / x &amp;#8801 a ( mod m) }&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;ptr. m &gt; 0: [ a ] = { mq + a / q &amp;#8712 &lt;b&gt;Z&lt;/b&gt; }&lt;/LI&gt;&lt;LI&gt;ptr. m &gt; 0 :  [ a ] = [ b ] &amp;#8660 a &amp;#8801 b ( mod m)&lt;/LI&gt;&lt;LI&gt;ptr. m &gt; 0, &amp;#8704 a, &amp;#8707 r, 0 &amp;#8806 r &lt; m, unic, ai [ a ] = [ r ]&lt;/LI&gt;&lt;LI&gt;ptr. m &gt; 0 sunt exact m clase distincte de resturi, [ 0 ] , [ 1 ] , ... , [ m - 1 ]&lt;/LI&gt;&lt;/UL&gt;&lt;/DL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;sisteme de resturi&lt;/DT&gt;&lt;DD&gt;&lt;DL&gt;m &gt; 0&lt;UL&gt;&lt;LI&gt;&lt;DT&gt;inelul intregilor modulo m&lt;/DT&gt;&lt;DD&gt;&lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;m&lt;/sub&gt; = { [ a ] / a &amp;#8712 &lt;b&gt;Z&lt;/b&gt;}&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;sistem complet de resturi modulo m&lt;/DT&gt;&lt;DD&gt;multimea de intregi { a&lt;sub&gt;1&lt;/sub&gt; , a&lt;sub&gt;2&lt;/sub&gt; , ... , a&lt;sub&gt;m&lt;/sub&gt; } se numeste sistem complet de resturi modulo m daca &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;m&lt;/sub&gt; = { [ a&lt;sub&gt;1&lt;/sub&gt; ] , [ a&lt;sub&gt;2&lt;/sub&gt; ] , ... , [ a&lt;sub&gt;m&lt;/sub&gt; ] }&lt;/DD&gt;&lt;/LI&gt;&lt;UL&gt;&lt;LI&gt;daca m = 2k at. {0, 1, 2, ..., k-1, k, -(k-1), ..., -2, -1} este un sistem complet de resturi modulo m&lt;/LI&gt;&lt;LI&gt;daca m = 2k + 1 at. {0, 1, 2, ..., k, -k, ..., -2, -1} este un sistem complet de resturi modulo m&lt;/LI&gt;&lt;/UL&gt;&lt;LI&gt;&lt;DT&gt;adunarea si inmultirea in &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;m&lt;/sub&gt;&lt;/DT&gt;&lt;DD&gt;fie [ a ], [ b ] &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;m&lt;/sub&gt;, se definesc: [ a ] + [ b ] = [ a + b } si [ a ][ b ] = [ ab ]&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;J&lt;sub&gt;m&lt;/sub&gt; = {0, 1, ... m - 1} cu operatiile a &amp;#8853 b = ( a + b) mod m si a &amp;#8857 b = ( ab ) mod m formeaza un inel izomorf cu &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;m&lt;/sub&gt;&lt;/LI&gt;&lt;LI&gt;o clasa de resturi [ a ] &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;m&lt;/sub&gt; este unitara daca nu este inversabila &amp;#8660 cmmdc ( a , m) = 1&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;grupul unitatilor&lt;/DT&gt;&lt;DD&gt;U&lt;sub&gt;m&lt;/sub&gt; = { [ i ] / 1 &amp;#8806 i &amp;#8806 m si cmmmdc( i , m) = 1} impreuna cu inmultirea (din &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;m&lt;/sub&gt;) formeaza un grup abelian&lt;UL&gt;&lt;LI&gt;daca p este prim, at. &amp;#8707 a &amp;#8712 U&lt;sub&gt;p&lt;/sub&gt; ai  U&lt;sub&gt;p&lt;/sub&gt; = &amp;#60a&amp;#62 &lt;/LI&gt;&lt;LI&gt;daca n &amp;#8807 2 , at. &amp;#8707 a &amp;#8712 U&lt;sub&gt;p&lt;/sub&gt; ai  U&lt;sub&gt;p&lt;/sub&gt; = &amp;#60a&amp;#62 &amp;#8660 a este de froma 2, 4, p&lt;sup&gt;k&lt;/sup&gt;, 2 p &lt;sup&gt;k&lt;/sup&gt; unde p &amp;#8807 2, p este prim si k &amp;#8712 &lt;b&gt;N&lt;/b&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;functia &amp;#966 Euler&lt;/DT&gt;&lt;DD&gt;ordinul lui U&lt;sub&gt;m&lt;/sub&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;proprietati &amp;#966 Euler&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;ptr. a &gt; 0, b &gt; 0 si cmmdc ( a , b ) = 1 : &amp;#966( ab ) = &amp;#966( a )&amp;#966( b )&lt;/LI&gt;&lt;LI&gt;ptr. p, prim, si n &gt; 0 : &amp;#966( p&lt;sup&gt;n&lt;/sup&gt; ) = p&lt;sup&gt;n&lt;/sup&gt; - p&lt;sup&gt;n-1&lt;/sup&gt;&lt;/LI&gt;&lt;LI&gt;ptr. p&lt;sub&gt;1&lt;/sub&gt;, p&lt;sub&gt;2&lt;/sub&gt;, ..., p&lt;sub&gt;k&lt;/sub&gt;, prime distincte, si n&lt;sub&gt;1&lt;/sub&gt;, n&lt;sub&gt;2&lt;/sub&gt;, ..., n&lt;sub&gt;k&lt;/sub&gt;, intregi pozitivi : &amp;#966(p&lt;sub&gt;1&lt;/sub&gt;&lt;sup&gt;n&lt;sub&gt;1&lt;/sub&gt;&lt;/sup&gt; p&lt;sub&gt;2&lt;/sub&gt;&lt;sup&gt;n&lt;sub&gt;2&lt;/sub&gt;&lt;/sup&gt; ... p&lt;sub&gt;k&lt;/sub&gt;&lt;sup&gt;n&lt;sub&gt;k&lt;/sub&gt;&lt;/sup&gt;) = ( p&lt;sub&gt;1&lt;/sub&gt;&lt;sup&gt;n&lt;sub&gt;1&lt;/sub&gt;&lt;/sup&gt; - p&lt;sub&gt;1&lt;/sub&gt;&lt;sup&gt;n&lt;sub&gt;1&lt;/sub&gt;-1&lt;/sup&gt; ) ... ( p&lt;sub&gt;k&lt;/sub&gt;&lt;sup&gt;n&lt;sub&gt;k&lt;/sub&gt;&lt;/sup&gt; - p&lt;sub&gt;k&lt;/sub&gt;&lt;sup&gt;n&lt;sub&gt;k&lt;/sub&gt;-1&lt;/sup&gt; ) &lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;T&lt;/DT&gt;&lt;DD&gt;fie a, b &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sup&gt;+&lt;/sup&gt;, cmmdc( a , b ) = 1 si n = ab. Se defineste f ( [ x ]&lt;sub&gt;n&lt;/sub&gt; ) = ( [ x ]&lt;sub&gt;a&lt;/sub&gt; , [ x ]&lt;sub&gt;b&lt;/sub&gt; )&lt;UL&gt;&lt;LI&gt;(teorema chineza a resturilor) f : &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;n&lt;/sub&gt; &amp;#8594 &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;a&lt;/sub&gt; x &lt;b&gt;Z&lt;/b&gt;&lt;sub&gt;b&lt;/sub&gt; este bijectiva &lt;/LI&gt;&lt;LI&gt; f : &lt;b&gt;U&lt;/b&gt;&lt;sub&gt;n&lt;/sub&gt; &amp;#8594 &lt;b&gt;U&lt;/b&gt;&lt;sub&gt;a&lt;/sub&gt; x &lt;b&gt;U&lt;/b&gt;&lt;sub&gt;b&lt;/sub&gt; este bijectiva &lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;teste primalitate&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;DL&gt;&lt;LI&gt;&lt;DT&gt;mica teorma a lui Fermat&lt;/DT&gt;&lt;DD&gt;daca p este prim si a, cmmdc( a , p) = 1 at. a&lt;sup&gt;p-1&lt;/sup&gt; &amp;#8801 1 ( mod p)&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;teorema lui Euler&lt;/DT&gt;&lt;DD&gt;ptr. m &gt; 0 si a, cmmdc( a , m ) = 1 : a&lt;sup&gt;&amp;#966(m)&lt;/sup&gt; &amp;#8801 1 ( mod m )&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;a&lt;sup&gt;p&lt;/sup&gt; &amp;#8801 a ( mod p), &amp;#8704 a si p prim&lt;/LI&gt;&lt;LI&gt;ptr. m &amp;#8807 2, &amp;#8704 a, 1 &amp;#8806 a &amp;#8806 m -1, a&lt;sup&gt;m-1&lt;/sup&gt; &amp;#8801 1 ( mod m) &amp;#8658 m prim &lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;reprezentarea lui n in baza b&lt;/DT&gt;&lt;DD&gt;ptr. b &amp;#8807 2, n &gt; 0 , n = [a&lt;sub&gt;k&lt;/sub&gt;, a&lt;sub&gt;k-1&lt;/sub&gt;, ..., a&lt;sub&gt;1&lt;/sub&gt;, a&lt;sub&gt;0&lt;/sub&gt;]&lt;sub&gt;b&lt;/sub&gt; este reprezentarea in baza b a lui n &amp;#8660 &amp;#8707 k &amp;#8807 0 ai n = a&lt;sub&gt;k&lt;/sub&gt;b&lt;sup&gt;k&lt;/sup&gt; + a&lt;sub&gt;k-1&lt;/sub&gt;b&lt;sup&gt;k-1&lt;/sup&gt; + ... + a&lt;sub&gt;1&lt;/sub&gt;b + a&lt;sub&gt;0&lt;/sub&gt; unde a&lt;sub&gt;i&lt;/sub&gt; &amp;#8712 {0, 1, ..., b-1}, i &amp;#8712 {0, 1, ..., k}&lt;br&gt;reprezentarea este unica&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;metoda binara pentru calculul lui x&lt;sup&gt;n&lt;/sup&gt;, x &amp;#8712 &lt;b&gt;R&lt;/b&gt;, n &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sup&gt;+&lt;/sup&gt;&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;se gaseste reprezentarea binara n = [ a&lt;sub&gt;r&lt;/sub&gt; , ... , a&lt;sub&gt;1&lt;/sub&gt; ,a&lt;sub&gt;0&lt;/sub&gt; ]&lt;sub&gt;2&lt;/sub&gt;&lt;/LI&gt;&lt;LI&gt;se calculeaza puterile x&lt;sup&gt;2&lt;/sup&gt; , x&lt;sup&gt;2&lt;sup&gt;2&lt;/sup&gt;&lt;/sup&gt; , ... , x&lt;sup&gt;2&lt;sup&gt;r&lt;/sup&gt;&lt;/sup&gt;&lt;/LI&gt;&lt;LI&gt;se calculeaza produsul x&lt;sup&gt;n&lt;/sup&gt; = x&lt;sup&gt;a&lt;sub&gt;r&lt;/sub&gt;2&lt;sup&gt;r&lt;/sup&gt;&lt;/sup&gt; x&lt;sup&gt;a&lt;sub&gt;r-1&lt;/sub&gt;2&lt;sup&gt;r-1&lt;/sup&gt;&lt;/sup&gt; x&lt;sup&gt;a&lt;sub&gt;1&lt;/sub&gt;2&lt;/sup&gt; x&lt;sup&gt;a&lt;sub&gt;0&lt;/sub&gt;&lt;/sup&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;metoda binara pentru calculul lui x&lt;sup&gt;n&lt;/sup&gt; ( mod m) , x &amp;#8712 &lt;b&gt;R&lt;/b&gt;, n &amp;#8712 &lt;b&gt;Z&lt;/b&gt;&lt;sup&gt;+&lt;/sup&gt;&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;se gaseste reprezentarea binara n = [ a&lt;sub&gt;r&lt;/sub&gt; , ... , a&lt;sub&gt;1&lt;/sub&gt; ,a&lt;sub&gt;0&lt;/sub&gt; ]&lt;sub&gt;2&lt;/sub&gt;&lt;/LI&gt;&lt;LI&gt;se calculeaza redusele modulo m ale puterilor x&lt;sup&gt;2&lt;/sup&gt; , x&lt;sup&gt;2&lt;sup&gt;2&lt;/sup&gt;&lt;/sup&gt; , ... , x&lt;sup&gt;2&lt;sup&gt;r&lt;/sup&gt;&lt;/sup&gt; , m&lt;sub&gt;1&lt;/sub&gt; = x&lt;sup&gt;2&lt;/sup&gt; mod m , m&lt;sub&gt;2&lt;/sub&gt; = x&lt;sup&gt;2&lt;sup&gt;2&lt;/sup&gt;&lt;/sup&gt; mod m , ... , m&lt;sub&gt;r&lt;/sub&gt; = x&lt;sup&gt;2&lt;sup&gt;r&lt;/sup&gt;&lt;/sup&gt; mod m&lt;/LI&gt;&lt;LI&gt;se calculeaza produsul x&lt;sup&gt;n&lt;/sup&gt; mod m = m&lt;sub&gt;r&lt;/sub&gt;m&lt;sub&gt;r-1&lt;/sub&gt; ... m&lt;sub&gt;1&lt;/sub&gt; m&lt;sub&gt;0&lt;/sub&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;/DL&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;/DL&gt;
&lt;/UL&gt;
&lt;a href="http://www.math.usf.edu/~eclark/#ELEMENTARY_NUMBER_THEORY"&gt;Introducere in teoria numerelor, Edwin Clark&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113326529879392653?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113326529879392653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113326529879392653&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113326529879392653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113326529879392653'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2005/11/memento-teoria-numerelor.html' title='Memento teoria numerelor'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113318523190528337</id><published>2005-11-28T15:39:00.000+02:00</published><updated>2005-11-28T15:40:32.096+02:00</updated><title type='text'>Functii cu trapa</title><content type='html'>&lt;UL&gt;
&lt;DL&gt;
&lt;LI&gt;&lt;DT&gt;functie cu trapa&lt;/DT&gt;&lt;DD&gt;f : &lt;b&gt;N&lt;/b&gt; &amp;#8594 &lt;b&gt;R&lt;/b&gt; este o functie cu trapa &amp;#8660&lt;UL&gt;&lt;LI&gt;f este o functie cu sens unic&lt;/LI&gt;&lt;LI&gt; &amp;#8707 p, o functie polinomiala, si &amp;#8707 A, un algoritm PTP ai&lt;UL&gt;&lt;LI&gt; &amp;#8704 k, &amp;#8707 t&lt;sub&gt;k&lt;/sub&gt; &amp;#8712 {0, 1}&lt;sup&gt;*&lt;/sup&gt; cu | t&lt;sub&gt;k&lt;/sub&gt; | &amp;#8806 p ( k ) &lt;/LI&gt;&lt;LI&gt;&amp;#8704 x &amp;#8712 {0, 1}&lt;sup&gt;*&lt;/sup&gt;, A( f ( x) , t&lt;sub&gt;k&lt;/sub&gt;) = y ai f ( y ) = f ( x)&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;familie de functii puternice cu trapa si cu sens unic&lt;/DT&gt;&lt;DD&gt;&lt;b&gt;F&lt;/b&gt; = { f&lt;sub&gt;i&lt;/sub&gt; : &lt;b&gt;D&lt;/b&gt;&lt;sub&gt;i&lt;/sub&gt; &amp;#8594 &lt;b&gt;D&lt;/b&gt;&lt;sub&gt;i&lt;/sub&gt; }&lt;sub&gt;i&amp;#8712&lt;b&gt;I&lt;/b&gt;&lt;/sub&gt;, unde i &amp;#8712 &lt;b&gt;I&lt;/b&gt;, ,multimea indicilor, este o familie de functii puternice cu trapa si cu sens unic daca:&lt;UL&gt;&lt;LI&gt;&amp;#8707 S&lt;sub&gt;1&lt;/sub&gt;, o MTP, si p, o functie polinomiala, ai ( i , t&lt;sub&gt;i&lt;/sub&gt; ) &amp;#8592 S&lt;sub&gt;1&lt;/sub&gt; ( x &amp;#8712 {0, 1}&lt;sup&gt;k&lt;/sup&gt; ), i &amp;#8712 {0, 1}&lt;sup&gt;k&lt;/sup&gt; &amp;#8745 &lt;b&gt;I&lt;/b&gt; si | t&lt;sub&gt;i&lt;/sub&gt; | &lt; p ( k ); t&lt;sub&gt;i&lt;/sub&gt; se numeste trapa pentru i&lt;/LI&gt;&lt;LI&gt;&amp;#8707 S&lt;sub&gt;2&lt;/sub&gt;, o MTP, ai x &amp;#8592 S&lt;sub&gt;2&lt;/sub&gt; ( i &amp;#8712 &lt;b&gt;I&lt;/b&gt; ), x&amp;#8712 &lt;b&gt;D&lt;/b&gt;&lt;sub&gt;i&lt;/sub&gt;&lt;/LI&gt;&lt;LI&gt;&amp;#8707 A&lt;sub&gt;1&lt;/sub&gt;, o MTP, ai A&lt;sub&gt;1&lt;/sub&gt; ( i , x ) = f&lt;sub&gt;i&lt;/sub&gt;( x ), unde i &amp;#8712 &lt;b&gt;I&lt;/b&gt;, x &amp;#8712 &lt;b&gt;D&lt;/b&gt;&lt;sub&gt;i&lt;/sub&gt;&lt;/LI&gt;&lt;LI&gt;&amp;#8704 A, un algoritm PTP, &amp;#8707 m&lt;sub&gt;A&lt;/sub&gt;, o functie neglijabila, ai P [ f&lt;sub&gt;i&lt;/sub&gt; ( z ) = y ; x &amp;#8712 &lt;b&gt;D&lt;/b&gt;&lt;sub&gt;i&lt;/sub&gt;; i &amp;#8712 &lt;b&gt;I&lt;/b&gt; ; y &amp;#8592 f&lt;sub&gt;i&lt;/sub&gt; ( x ) ; z &amp;#8592 A ( i , y ) ] &amp;#8806  m&lt;sub&gt;A&lt;/sub&gt; pentru k suficient de mare&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;probabilitatea este luata peste alegerile lui i si x pentru A echiprobabila&lt;/DL&gt;
&lt;/UL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113318523190528337?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113318523190528337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113318523190528337&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113318523190528337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113318523190528337'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2005/11/functii-cu-trapa.html' title='Functii cu trapa'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113293007524393583</id><published>2005-11-25T16:46:00.000+02:00</published><updated>2005-11-25T16:47:55.860+02:00</updated><title type='text'>Functii cu sens unic</title><content type='html'>&lt;UL&gt;
&lt;DL&gt;
&lt;LI&gt;&lt;DT&gt;functie neglijabila&lt;/DT&gt;&lt;DD&gt;f : &lt;b&gt;N&lt;/b&gt; &amp;#8594 &lt;b&gt;R&lt;/b&gt; este neglijabila &amp;#8660 &amp;#8704 c &gt; 0, &amp;#8707 k&lt;sub&gt;c&lt;/sub&gt;, ai f(k) &lt; k&lt;sup&gt;-c&lt;/sup&gt;, &amp;#8704 k &gt; k&lt;sub&gt;c&lt;/sub&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;functie puternica cu sens unic&lt;/DT&gt;&lt;DD&gt;f : {0, 1}&lt;sup&gt;*&lt;/sup&gt; &amp;#8594 {0, 1}&lt;sup&gt;*&lt;/sup&gt; este puternica, cu sens unic &amp;#8660: &lt;UL&gt;&lt;LI&gt;&amp;#8707 A, un algoritm PTP (probabilstic de timp polinomial), care obtine y = f(x), pentru x dat&lt;/LI&gt;&lt;LI&gt;&amp;#8704 A, &amp;#8707 m&lt;sub&gt;A&lt;/sub&gt;, o functie neglijabila, ai P [ f ( z ) = y ; x &amp;#8712 {0, 1}&lt;sup&gt;*&lt;/sup&gt; ; y &amp;#8592 f ( x ) ; z &amp;#8592 A ( y ) ] &amp;#8806  m&lt;sub&gt;A&lt;/sub&gt; pentru k suficient de mare&lt;/LI&gt;&lt;/UL&gt; Garantia este probilista, distributia de probabilitate este pe intreg domeniul lui f; nu se cere sa determine x ci sa se gaseasca o inversa ptr y; algoritmul primeste ca intrare f ( x ) si ruleaza in timp polinomial pe |x|&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;functie slaba cu sens unic&lt;/DT&gt;&lt;DD&gt;f : {0, 1}&lt;sup&gt;*&lt;/sup&gt; &amp;#8594 {0, 1}&lt;sup&gt;*&lt;/sup&gt; este slaba, cu sens unic &amp;#8660: &lt;UL&gt;&lt;LI&gt;&amp;#8707 A, un algoritm PTP, care obtine y = f(x), pentru x dat&lt;/LI&gt;&lt;LI&gt;&amp;#8704 A, &amp;#8707 Q, o functie polinomiala, ai P [ f ( z ) &amp;#8800 y ; x &amp;#8712 {0, 1}&lt;sup&gt;*&lt;/sup&gt; ; y &amp;#8592 f ( x ) ; z &amp;#8592 A ( y ) ] &amp;#8807  m&lt;sub&gt;A&lt;/sub&gt; pentru k suficient de mare&lt;/LI&gt;&lt;/UL&gt; Diferenta intre cele tipuri de functii este ca o functie slaba cu sens unic este greu de inversat pe o fractiune neglijabila a domeniului in timp ce o functie puternica cu sens unic este greu de inversat pe tot domeniul mai putin o fractiune neglijabila&lt;br&gt;&amp;#8707 functii slabe &amp;#8660 &amp;#8707 functii puternice&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;familie de functii puternice cu sens unic&lt;/DT&gt;&lt;DD&gt;&lt;b&gt;F&lt;/b&gt; = { f&lt;sub&gt;i&lt;/sub&gt; : &lt;b&gt;D&lt;/b&gt;&lt;sub&gt;i&lt;/sub&gt; &amp;#8594 &lt;b&gt;R&lt;/b&gt;&lt;sub&gt;i&lt;/sub&gt; }&lt;sub&gt;i&amp;#8712&lt;b&gt;I&lt;/b&gt;&lt;/sub&gt;, unde i &amp;#8712 &lt;b&gt;I&lt;/b&gt;, ,multimea indicilor, este o familie de functii puternice cu sens unic daca:&lt;UL&gt;&lt;LI&gt;&amp;#8707 S&lt;sub&gt;1&lt;/sub&gt;, un algoritm PTP, ai i &amp;#8592 S&lt;sub&gt;1&lt;/sub&gt; ( x &amp;#8712 {0, 1}&lt;sup&gt;k&lt;/sup&gt; ), i&amp;#8712 {0, 1}&lt;sup&gt;k&lt;/sup&gt; &amp;#8745 &lt;b&gt;I&lt;/b&gt;&lt;/LI&gt;&lt;LI&gt;&amp;#8707 S&lt;sub&gt;2&lt;/sub&gt;, un algoritm PTP, ai x &amp;#8592 S&lt;sub&gt;2&lt;/sub&gt; ( i &amp;#8712 &lt;b&gt;I&lt;/b&gt; ), x&amp;#8712 &lt;b&gt;D&lt;/b&gt;&lt;sub&gt;i&lt;/sub&gt;&lt;/LI&gt;&lt;LI&gt;&amp;#8707 A&lt;sub&gt;1&lt;/sub&gt;, un algoritm PTP, ai A&lt;sub&gt;1&lt;/sub&gt; ( i , x ) = f&lt;sub&gt;i&lt;/sub&gt;( x ), unde i &amp;#8712 &lt;b&gt;I&lt;/b&gt;, x &amp;#8712 &lt;b&gt;D&lt;/b&gt;&lt;sub&gt;i&lt;/sub&gt;&lt;/LI&gt;&lt;LI&gt;&amp;#8704 A, un algoritm PTP, &amp;#8707 m&lt;sub&gt;A&lt;/sub&gt;, o functie neglijabila, ai P [ f&lt;sub&gt;i&lt;/sub&gt; ( z ) = y ; x &amp;#8712 &lt;b&gt;D&lt;/b&gt;&lt;sub&gt;i&lt;/sub&gt;; i &amp;#8712 &lt;b&gt;I&lt;/b&gt; ; y &amp;#8592 f&lt;sub&gt;i&lt;/sub&gt; ( x ) ; z &amp;#8592 A ( i , y ) ] &amp;#8806  m&lt;sub&gt;A&lt;/sub&gt; pentru k suficient de mare&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;probabilitatea este luata peste alegerile lui i si x pentru A echiprobabil&lt;br&gt;&amp;#8707 o familie de functii puternice cu sens unic &amp;#8660 &amp;#8707 functii puternice&lt;/LI&gt;
&lt;/DL&gt;
&lt;/UL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113293007524393583?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113293007524393583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113293007524393583&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113293007524393583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113293007524393583'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2005/11/functii-cu-sens-unic.html' title='Functii cu sens unic'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113292086734832681</id><published>2005-11-25T14:13:00.000+02:00</published><updated>2005-11-25T14:14:27.360+02:00</updated><title type='text'>Secvente pseudoaleatoare</title><content type='html'>&lt;DL&gt;
&lt;DT&gt;Generator bit pseudo-aleator (GBPSA)&lt;/DT&gt;
&lt;DD&gt;Este un algoritm determinist care porneste de la o secventa binara aleatoare de lungime k, numita cheie de generare, si produce o secventa binara de lungime l&gt;&gt;k, numita secventa de biti pseudo-aleatori&lt;br&gt;
Un GBPSA este un program determinist de timp polinomial G:{0, 1}&lt;sup&gt;k&lt;/sup&gt; &amp;#8594 {0, 1}&lt;sup&gt;l&lt;/sup&gt; care satisface:
&lt;UL&gt;
&lt;LI&gt;l &gt; k&lt;/LI&gt;
&lt;LI&gt;distributia de probabilitate G&lt;sub&gt;l&lt;/sub&gt; se obtine din distributia normala U&lt;sub&gt;k&lt;/sub&gt; astfel: y=G(x), y &amp;#8712 G&lt;sub&gt;l&lt;/sub&gt;, x &amp;#8712 U&lt;sub&gt;k&lt;/sub&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DD&gt;
&lt;DT&gt;Teste in timp polinomial&lt;/DT&gt;
&lt;DD&gt;Un generator bit pseudo-aleator trece toate testele statistice in timp polinomal daca un algoritm de timp polinomial nu poate face distinctia intre o secventa de la iesirea generatorului de bit pseudo-aleator si o secventa aleatoare de bit cu o probabilitate semnificativ mai mare ca 1/2&lt;br&gt;
Fie X&lt;sub&gt;n&lt;/sub&gt; si Y&lt;sub&gt;n&lt;/sub&gt; doua distributii de probabilitate pe {0, 1}&lt;sup&gt;n&lt;/sup&gt;. {X&lt;sub&gt;n&lt;/sub&gt;} este indistinctibila in timp polinomial de {Y&lt;sub&gt;n&lt;/sub&gt;} daca &amp;#8704 MTP, A, &amp;#8704 polinom Q, &amp;#8707 n&gt;n&lt;sub&gt;0&lt;/sub&gt; ai | Pr&lt;sub&gt;t&amp;#8712X&lt;sub&gt;n&lt;/sub&gt;&lt;/sub&gt; (A(t)=1) - Pr&lt;sub&gt;t&amp;#8712Y&lt;sub&gt;n&lt;/sub&gt;&lt;/sub&gt; (A(t)=1) | &lt; 1/Q(n)&lt;br&gt;
Pentru distributia uniforma de probabilitate U&lt;sub&gt;n&lt;/sub&gt;, &amp;#8704 a &amp;#8712 {0, 1}&lt;sup&gt;n&lt;/sup&gt;, Pr&lt;sub&gt;x&amp;#8712U&lt;sub&gt;n&lt;/sub&gt;&lt;/sub&gt; [x=a] = 1/ 2&lt;sup&gt;n&lt;/sup&gt;
&lt;/DD&gt;
&lt;DT&gt;Testul bitului urmator&lt;/DT&gt;
&lt;DD&gt;Un generator bit pseudo-aleator trece testul bitului urmator daca nu exista un algoritm de timp polinomial care sa poata prezice bitul "l+1" cu o probabilitate semnificativ mai mare ca 1/2, in baza primilor "l" biti ai unei secventa de la iesirea generatorului de bit pseudo-aleator&lt;br&gt;Un generator de bit pseudo-laeator trece testul bitului urmator &amp;#8660 generatorul de bit pseudo-aleator trece testele de timp polinomial&lt;/DD&gt;
&lt;DT&gt;Generator sigur criptografic de bit pseudo-aleator&lt;/DT&gt;
&lt;DD&gt;Este un GBPSA care trece testul bitului urmator, posibil in niste ipoteze matematice plauzibile, dar nedemonstrate&lt;/DD&gt;
&lt;/DL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113292086734832681?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113292086734832681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113292086734832681&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113292086734832681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113292086734832681'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2005/11/secvente-pseudoaleatoare.html' title='Secvente pseudoaleatoare'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113223227942761064</id><published>2005-11-17T14:57:00.000+02:00</published><updated>2005-11-17T14:57:59.440+02:00</updated><title type='text'>Clase de complexitate</title><content type='html'>&lt;UL&gt;
&lt;LI&gt;Limite&lt;UL&gt;&lt;DL&gt;
&lt;LI&gt;&lt;DT&gt;Echivalenta&lt;/DT&gt;&lt;DD&gt;&amp;#8704 functie g(n), &amp;#920(g(n)) = { f(n) / &amp;#8707c&lt;sub&gt;1&lt;/sub&gt; &gt;0, c&lt;sub&gt;1&lt;/sub&gt; &gt;0 ai 0 &amp;#8806 c&lt;sub&gt;1&lt;/sub&gt;g(n) &amp;#8806 f(n) &amp;#8806 c&lt;sub&gt;2&lt;/sub&gt;G(n), &amp;#8704 n &amp;#8807 n&lt;sub&gt;0&lt;/sub&gt; } reprezinta multimea functiilor asimptotic echivalente cu g(n)&lt;/DT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;Limita inferioara&lt;/DT&gt;&lt;DD&gt;&amp;#8704 functie g(n), &amp;#937(g(n)) = { f(n) / &amp;#8707c &gt;0 ai 0 &amp;#8806 cg(n) &amp;#8806 f(n) , &amp;#8704 n &amp;#8807 n&lt;sub&gt;0&lt;/sub&gt; } reprezinta multimea functiilor marginite asimptotic inferior de g(n)&lt;/DT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;Limita superioara&lt;/DT&gt;&lt;DD&gt;&amp;#8704 functie g(n), O(g(n)) = { f(n) / &amp;#8707c &gt;0 ai 0 &amp;#8806 f(n) &amp;#8806 cg(n) , &amp;#8704 n &amp;#8807 n&lt;sub&gt;0&lt;/sub&gt; } reprezinta multimea functiilor marginite asimptotic superior de g(n)&lt;/DT&gt;&lt;/LI&gt;
&lt;/DL&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Clase&lt;OL&gt;
&lt;LI&gt;Limbaje&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;P&lt;/DT&gt;&lt;DD&gt;multimea limbajelor acceptate de o MTD in timp polinomial&lt;br&gt;Limbajul L &amp;#8712 P &amp;#8660 &amp;#8707 M o MTD, &amp;#8707 Q(y), o functie polinomiala ai &lt;UL&gt;&lt;LI&gt;v &amp;#8712 L &amp;#8660 M accepta v&lt;/LI&gt;&lt;LI&gt;M termina dupa cel mult Q(|v|) pasi&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;NP&lt;/DT&gt;&lt;DD&gt;multimea limbajelor acceptate de o MTN in timp polinomial&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;co-NP&lt;/DT&gt;&lt;DD&gt;&lt;/DD&gt;multimea limbajelor neacceptate de o MTN in timp polinomial&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;PSPACE&lt;/DT&gt;&lt;DD&gt;multimea limbajelor acceptate de o MTD in spatiu polinomial&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;NPSPACE&lt;/DT&gt;&lt;DD&gt;multimea limbajelor acceptate de o MTN in spatiu polinomial&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;LOGSPACE&lt;/DT&gt;&lt;DD&gt;multimea limbajelor acceptate de o MTD in spatiu logaritmic&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;NLOGSPACE&lt;/DT&gt;&lt;DD&gt;multimea limbajelor acceptate de o MTN in spatiu logaritmic&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;EXP&lt;/DT&gt;&lt;DD&gt;multimea limbajelor acceptate de o MTD in t(n)=2&lt;sup&gt;cn&lt;/sup&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;NEXP&lt;/DT&gt;&lt;DD&gt;multimea limbajelor acceptate de o MTN in t(n)=2&lt;sup&gt;cn&lt;/sup&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;PEXP&lt;/DT&gt;&lt;DD&gt;multimea limbajelor acceptate de o MTD in t(n)=2&lt;sup&gt;p(n)&lt;/sup&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;NPEXP&lt;/DT&gt;&lt;DD&gt;multimea limbajelor acceptate de o MTN in t(n)=2&lt;sup&gt;p(n)&lt;/sup&gt;&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;UP&lt;/DT&gt;&lt;DD&gt;multimea limbajelor acceptate de o MTN neambigua, care are cel putin o acceptare pentru orice intrare, in timp polinomial&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;PP&lt;/DT&gt;&lt;DD&gt;multimea limbajelor acceptate de o MTP (pseudo-aleatoare) in timp polinomial&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;BPP (bounded error, probabilistic, polynomial time)&lt;/DT&gt;&lt;DD&gt;multimea limbajelor acceptate de o MTP (echiprobabila) in timp polinomial&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;RP&lt;/DT&gt;&lt;DD&gt;multimea limbajelor acceptate de o MTP () in timp polinomial&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;co-RP&lt;/DT&gt;&lt;DD&gt;multimea limbajelor acceptate de MTP-RP la care probilitatiel de acceptare si neacceptare sunt inversate&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;ZPP&lt;/DT&gt;&lt;DD&gt;multimea limbajelor acceptate este intersectia RP si co-RP&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI&gt;Functii&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;DT&gt;PF&lt;/DT&gt;&lt;DD&gt;Multimes functiilor calculate de o MTD in timp polinomial&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;NPF&lt;/DT&gt;&lt;DD&gt;Multimes functiilor calculate de o MTN in timp polinomial&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;PSPACEF&lt;/DT&gt;&lt;DD&gt;Multimes functiilor calculate de o MTD in spatiu polinomial&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;#P&lt;/DT&gt;&lt;DD&gt;Multimes functiilor care enumera calculele ale MTN-urilor&lt;/DD&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/OL&gt;&lt;/LI&gt;
&lt;/UL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113223227942761064?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113223227942761064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113223227942761064&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113223227942761064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113223227942761064'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2005/11/clase-de-complexitate.html' title='Clase de complexitate'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113215033872208967</id><published>2005-11-16T16:11:00.000+02:00</published><updated>2005-11-17T12:53:29.136+02:00</updated><title type='text'>Modele calcul - automate</title><content type='html'>&lt;DL&gt;&lt;DT&gt;Clasificare&lt;/DT&gt;&lt;DD&gt;&lt;TABLE&gt;&lt;tr&gt;&lt;td&gt;Clasificarea Chomsky&lt;/td&gt;&lt;td&gt;Gramatica&lt;/td&gt;&lt;td&gt;Limbajul&lt;/td&gt;&lt;td&gt;Automatul minimal&lt;/td&gt;&lt;td&gt;Forma normala&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;tip 0&lt;/td&gt;&lt;td&gt;fara restrictie&lt;/td&gt;&lt;td&gt;recursiv enumerabil&lt;/td&gt;&lt;td&gt;MTN&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;fara restrictie&lt;/td&gt;&lt;td&gt;recursiv&lt;/td&gt;&lt;td&gt;decidor&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;tip 1&lt;/td&gt;&lt;td&gt;dependenta de context&lt;/td&gt;&lt;td&gt;dependent de context&lt;/td&gt;&lt;td&gt;marginit liniar&lt;/td&gt;&lt;td&gt;KURODA&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;tip 2&lt;/td&gt;&lt;td&gt;independenta de context&lt;/td&gt;&lt;td&gt;independent de context&lt;/td&gt;&lt;td&gt;push down&lt;/td&gt;&lt;td&gt;CHOMSKY, GREIBACH&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;tip 3&lt;/td&gt;&lt;td&gt;regulara&lt;/td&gt;&lt;td&gt;regular&lt;/td&gt;&lt;td&gt;finit&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;/TABLE&gt;&lt;/DD&gt;&lt;DT&gt;Gramatici si limbaje&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;O multime finita si nevida, &amp;#931, se numeste &lt;u&gt;alfabet&lt;/u&gt; iar elementele se numesc &lt;u&gt;simboluri&lt;/u&gt;&lt;/LI&gt;&lt;LI&gt;O succesiune de simboluri se numeste &lt;u&gt;secventa&lt;/u&gt; si o submultime ordonata a unei secvente se numeste &lt;u&gt;subsecventa&lt;/u&gt;&lt;/LI&gt;&lt;LI&gt;Numarul de simboluri care formeaza o secventa s se numeste &lt;u&gt;lungimea secventei&lt;/u&gt; si se noteaza |s|&lt;/LI&gt;&lt;LI&gt;Multimea secventelor peste un alfabet &amp;#931 se noteaza &amp;#931&lt;sup&gt;*&lt;/sup&gt;&lt;/LI&gt;&lt;LI&gt;(&amp;#931&lt;sup&gt;*&lt;/sup&gt;, +) este monoid unde "+" este concatenarea si elementul neutru este secventa vida &amp;#949&lt;/LI&gt;&lt;LI&gt;O submultime a lui &amp;#931&lt;sup&gt;*&lt;/sup&gt; se numeste &lt;u&gt;limbaj&lt;/u&gt; iar elementele limbajului se numesc &lt;u&gt;cuvinte&lt;/u&gt;&lt;/LI&gt;&lt;LI&gt;Se numeste &lt;u&gt;gramatica&lt;/u&gt; G un cvadruplu (N, &amp;#931, P, s) unde&lt;UL&gt;&lt;LI&gt;N este un alfabet de simboluri neterminale&lt;/LI&gt;&lt;LI&gt;&amp;#931 este un alfabet de simboluri terminale, N si &amp;#931 sunt disjuncte&lt;/LI&gt;&lt;LI&gt;P este o multime finita de productii, P&amp;#8834 (N&amp;#8746&amp;#931)&lt;sup&gt;*&lt;/sup&gt;N(N&amp;#8746&amp;#931)&lt;sup&gt;*&lt;/sup&gt; X (N&amp;#8746&amp;#931)&lt;sup&gt;*&lt;/sup&gt;&lt;/LI&gt;&lt;LI&gt;s este simbolul initial, s&amp;#8712N&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Pe multimea (N&amp;#8746&amp;#931)&lt;sup&gt;*&lt;/sup&gt; se definesc relatiile binare&lt;UL&gt;&lt;DL&gt;&lt;LI&gt;&lt;DT&gt;derivare directa, &amp;#8658&lt;/DT&gt;&lt;DD&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;k derivare, &amp;#8658&lt;sup&gt;k&lt;/sup&gt;&lt;/DT&gt;&lt;DD&gt;a &amp;#8658&lt;sup&gt;k&lt;/sup&gt; b daca &amp;#8707 c&lt;sub&gt;1&lt;/sub&gt;, c&lt;sub&gt;2&lt;/sub&gt;, ..., c&lt;sub&gt;k-1&lt;/sub&gt; &amp;#8712 (N&amp;#8746&amp;#931)&lt;sup&gt;*&lt;/sup&gt; ai  a &amp;#8658 c&lt;sub&gt;1&lt;/sub&gt; &amp;#8658 c&lt;sub&gt;2&lt;/sub&gt; ... c&lt;sub&gt;k-1&lt;/sub&gt; &amp;#8658 b&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;+ derivare, &amp;#8658&lt;sup&gt;+&lt;/sup&gt;&lt;/DT&gt;&lt;DD&gt;a &amp;#8658&lt;sup&gt;+&lt;/sup&gt; b daca &amp;#8707k ai a &amp;#8658&lt;sup&gt;k&lt;/sup&gt; b&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;* derivare, &amp;#8658&lt;sup&gt;*&lt;/sup&gt;&lt;/DT&gt;&lt;DD&gt;a &amp;#8658&lt;sup&gt;*&lt;/sup&gt; b daca a &amp;#8658 b sau a &amp;#8658&lt;sup&gt;+&lt;/sup&gt; b&lt;/DD&gt;&lt;/LI&gt;&lt;/DL&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;u&gt;Limbajul L(G) generat de o gramatica&lt;/u&gt; G=(N, &amp;#931, P, s) este {v/ v&amp;#8712 &amp;#931&lt;sup&gt;*&lt;/sup&gt;, s &amp;#8658&lt;sup&gt;*&lt;/sup&gt; v}&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;&lt;u&gt;Clasificarea Chomsky&lt;/u&gt;&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;Gramaticile de tip 0 nu au nici o restrictie referitoare la forma productiilor&lt;/LI&gt;&lt;LI&gt;Gramaticile de tip 1, gramatici dependente de context, au productii de forma &amp;#945A&amp;#946 &amp;#8594 &amp;#945&amp;#947&amp;#946 unde &amp;#945&amp;#946&amp;#947 &amp;#8712 (N&amp;#8746&amp;#931)&lt;sup&gt;*&lt;/sup&gt; si A &amp;#8712 N iar daca productia s &amp;#8594 &amp;#949 &amp;#8712 G atunci s nu apare in mebrul drept al nici unei productii (monotone, necontractante)&lt;/LI&gt;&lt;LI&gt;Gramaticile de tip 2, gramatici independente de context, au productii de forma A &amp;#8594 &amp;#945 unde A &amp;#8712 N si &amp;#945 &amp;#8712 (N&amp;#8746&amp;#931)&lt;sup&gt;*&lt;/sup&gt;&lt;/LI&gt;&lt;LI&gt;Gramaticile de tip 3, gramatici regulare, au productii de forma A &amp;#8594 aB sau A &amp;#8594 b unde A, B &amp;#8712 N si a, b &amp;#8712 &amp;#931&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;DT&gt;Automate&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;Automate finite
&lt;UL&gt;&lt;LI&gt;&lt;DT&gt;Automat finit determinist&lt;/DT&gt;&lt;DD&gt;Un cvintuplu AFD=(Q, &amp;#931, &amp;#948, q&lt;sub&gt;0&lt;/sub&gt;, F) unde:&lt;UL&gt;&lt;LI&gt;Q este o multime finita nevida; elementele sale se numesc stari&lt;/LI&gt;&lt;LI&gt;&amp;#931 este un alfabet de intrare&lt;/LI&gt;&lt;LI&gt;&amp;#948 este functia de tranzitie, &amp;#948 : Q X &amp;#931 &amp;#8594 Q &lt;/LI&gt;&lt;LI&gt;q&lt;sub&gt;0&lt;/sub&gt; este starea initiala, q&lt;sub&gt;0&lt;/sub&gt; &amp;#8712 Q&lt;/LI&gt;&lt;LI&gt;F este multimea starilor finale, F &amp;#8838 Q&lt;/LI&gt;&lt;/UL&gt;
Daca &amp;#948 este surjectiva, AFD este total definit&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;Automat finit nedeterminist&lt;/DT&gt;&lt;DD&gt;Un cvintuplu AFN=(Q, &amp;#931, &amp;#948, q&lt;sub&gt;0&lt;/sub&gt;, F) unde:
&lt;UL&gt;&lt;LI&gt;Q este o multime finita nevida; elementele sale se numesc stari&lt;/LI&gt;&lt;LI&gt;&amp;#931 este un alfabet de intrare&lt;/LI&gt;&lt;LI&gt;&amp;#948 este functia de tranzitie, &amp;#948 : Q X &amp;#931 &amp;#8594 P(Q) &lt;/LI&gt;&lt;LI&gt;q&lt;sub&gt;0&lt;/sub&gt; este starea initiala, q&lt;sub&gt;0&lt;/sub&gt; &amp;#8712 Q&lt;/LI&gt;&lt;LI&gt;F este multimea starilor finale, F &amp;#8838 Q&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;Tranzitii&lt;/DT&gt;&lt;DD&gt;Multimea configuratiilor unui automat este Q X &amp;#931. Pe multimea configuratiilor se definesc urmatoarele relatii binare
&lt;UL&gt;&lt;LI&gt;&lt;DT&gt;tranzitia directa, &amp;#8594&lt;/DT&gt;&lt;DD&gt;(p, as) &amp;#8594 (q, v) &amp;#8660 q = &amp;#948(p,a) unde p, q &amp;#8712 Q, a &amp;#8712 &amp;#931, s &amp;#8712 &amp;#931&lt;sup&gt;*&lt;/sup&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;k tranzitia, &amp;#8594&lt;sup&gt;k&lt;/sup&gt;&lt;/DT&gt;&lt;DD&gt;(p, s&lt;sub&gt;1&lt;/sub&gt;) &amp;#8594 (q, s&lt;sub&gt;2&lt;/sub&gt;) &amp;#8660 de la configuratia (p, s&lt;sub&gt;1&lt;/sub&gt;) se ajunge la configuratia (q, s&lt;sub&gt;2&lt;/sub&gt;)  prin k tranzitii directe&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;+ tranzitia, &amp;#8594&lt;sup&gt;+&lt;/sup&gt;&lt;/DT&gt;&lt;DD&gt;(p, s&lt;sub&gt;1&lt;/sub&gt;) &amp;#8594&lt;sup&gt;+&lt;/sup&gt; (q, s&lt;sub&gt;2&lt;/sub&gt;) &amp;#8660 &amp;#8707 k &gt; 0 ai (p, s&lt;sub&gt;1&lt;/sub&gt;) &amp;#8594&lt;sup&gt;k&lt;/sup&gt; (q, s&lt;sub&gt;2&lt;/sub&gt;) &lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;* tranzitia, &amp;#8594&lt;sup&gt;*&lt;/sup&gt;&lt;/DT&gt;&lt;DD&gt;(p, s&lt;sub&gt;1&lt;/sub&gt;) &amp;#8594&lt;sup&gt;*&lt;/sup&gt; (q, s&lt;sub&gt;2&lt;/sub&gt;) &amp;#8660 p=q, s&lt;sub&gt;1&lt;/sub&gt;=s&lt;sub&gt;2&lt;/sub&gt; sau (p, s&lt;sub&gt;1&lt;/sub&gt;) &amp;#8594&lt;sup&gt;+&lt;/sup&gt; (q, s&lt;sub&gt;2&lt;/sub&gt;) &lt;/DD&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;Limbaj acceptat&lt;/DT&gt;&lt;DD&gt;Limbajul acceptat de un automat finit AF = (Q, &amp;#931, &amp;#948, q&lt;sub&gt;0&lt;/sub&gt;, F)  este L(AF) = {s / S &amp;#8712 &amp;#931, (p, s) &amp;#8594&lt;sup&gt;*&lt;/sup&gt; (q, &amp;#949), q &amp;#8712 F }&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;Automate echivalente&lt;/DT&gt;&lt;DD&gt;&lt;UL&gt;&lt;LI&gt;Doua AF sunt echivalente daca accepta acelasi limbaj&lt;/LI&gt;&lt;LI&gt;&amp;#8704 AFN, M1, &amp;#8707 AFD, M2 ai L(M1) = L(M2)&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;Automate push down&lt;/DT&gt;&lt;DD&gt;Un septuplu APD=(Q, &amp;#931, &amp;#915, &amp;#948, q&lt;sub&gt;0&lt;/sub&gt;, Z&lt;sub&gt;0&lt;/sub&gt;, F) unde:&lt;UL&gt;&lt;LI&gt;Q este o multime finita nevida; elementele sale se numesc stari&lt;/LI&gt;&lt;LI&gt;&amp;#931 este un alfabet de intrare&lt;/LI&gt;&lt;LI&gt;&amp;#915 este alfabetul memoriei stiva&lt;/LI&gt;&lt;LI&gt;&amp;#948 este functia de tranzitie, &amp;#948 : Q x ( &amp;#931 &amp;#8746 {&amp;#949} ) x &amp;#915 &amp;#8594 P(Q x &amp;#915&lt;sup&gt;*&lt;/sup&gt;)&lt;/LI&gt;&lt;LI&gt;q&lt;sub&gt;0&lt;/sub&gt; este starea initiala, q&lt;sub&gt;0&lt;/sub&gt; &amp;#8712 Q&lt;/LI&gt;&lt;LI&gt;Z&lt;sub&gt;0&lt;/sub&gt; este simbolul de start al memoriei stiva&lt;/LI&gt;&lt;LI&gt;F este multimea starilor finale, F &amp;#8838 Q&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;Masini Turing&lt;UL&gt;&lt;LI&gt;&lt;DT&gt;Masina Turing determinista&lt;/DT&gt;&lt;DD&gt;Un septuplu MTD=(Q, &amp;#931, &amp;#915, &amp;#948, q&lt;sub&gt;0&lt;/sub&gt;, B, F) unde:&lt;UL&gt;&lt;LI&gt;Q este o multime finita nevida; elementele sale se numesc stari&lt;/LI&gt;&lt;LI&gt;&amp;#931 este un alfabet de intrare, &amp;#931 &amp;#8834 &amp;#915 - {B}&lt;/LI&gt;&lt;LI&gt;&amp;#915 este alfabetul benzii&lt;/LI&gt;&lt;LI&gt;&amp;#948 este functia de tranzitie, &amp;#948 : Q x &amp;#915 &amp;#8594 Q x &amp;#915 x {miscareStanga, miscareDreapta}&lt;/LI&gt;&lt;LI&gt;q&lt;sub&gt;0&lt;/sub&gt; este starea initiala, q&lt;sub&gt;0&lt;/sub&gt; &amp;#8712 Q&lt;/LI&gt;&lt;LI&gt;B este simbolul spatiu, B &amp;#8712 &amp;#915&lt;/LI&gt;&lt;LI&gt;F este multimea starilor finale, F &amp;#8838 Q&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;Masina Turing nedeterminista&lt;/DT&gt;&lt;DD&gt;Un septuplu MTN=(Q, &amp;#931, &amp;#915, &amp;#948, q&lt;sub&gt;0&lt;/sub&gt;, B, F) unde:&lt;UL&gt;&lt;LI&gt;Q este o multime finita nevida; elementele sale se numesc stari&lt;/LI&gt;&lt;LI&gt;&amp;#931 este un alfabet de intrare, &amp;#931 &amp;#8834 &amp;#915 - {B}&lt;/LI&gt;&lt;LI&gt;&amp;#915 este alfabetul benzii&lt;/LI&gt;&lt;LI&gt;&amp;#948 este functia de tranzitie, &amp;#948 : Q x &amp;#915 &amp;#8594 P( Q x &amp;#915 x {miscareStanga, miscareDreapta} )&lt;/LI&gt;&lt;LI&gt;q&lt;sub&gt;0&lt;/sub&gt; este starea initiala, q&lt;sub&gt;0&lt;/sub&gt; &amp;#8712 Q&lt;/LI&gt;&lt;LI&gt;B este simbolul spatiu, B &amp;#8712 &amp;#915&lt;/LI&gt;&lt;LI&gt;F este multimea starilor finale, F &amp;#8838 Q&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;Masina Turing probibilista&lt;/DT&gt;&lt;DD&gt;MTP este o MTN pentru care selectia intre valorile functiei de tranzitie se face probabilistic&lt;/DD&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/DL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113215033872208967?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113215033872208967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113215033872208967&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113215033872208967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113215033872208967'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2005/11/modele-calcul-automate.html' title='Modele calcul - automate'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113206724086614744</id><published>2005-11-15T17:05:00.000+02:00</published><updated>2005-11-16T10:36:18.790+02:00</updated><title type='text'>Secvente aleatoare</title><content type='html'>&lt;DL&gt;&lt;DT&gt;Generator de bit aleator&lt;/DT&gt;&lt;DD&gt;Dispozitiv sau algoritm care produce o secventa de cifre binare care sunt independente statistic si fara nici o preferinta pentru vreuna dintre cifre&lt;/DD&gt;&lt;DT&gt;Obs&lt;/DT&gt;&lt;DD&gt;Dispozitivele folosesc ca sursa de entropie fenomenele fizice. Generarea print-un algoritm presupune exploatarea unui proces specific platformei de calcul. Este indicata utilizarea mai multor surse naturale de etropie, esantionarea acestora, concatenarea si apoi mixarea (ex: printr-o functie dispersie)&lt;br&gt;Utilizarea in scopuri criptografice a unui generator aleator implica interzicerea  accesului adversarului la generator&lt;/DD&gt;&lt;DT&gt;Teste statistice&lt;/DT&gt;&lt;DD&gt;Este imposibil sa se demonstreze matematic ca un generator este cu adevarat aleator. Se folosesc teste statistice pentru detectarea eventualelor slabiciuni dar rezultatul trebuie privit ca o dovada probabilistica ca generatorul produce secvente cu anumite proprietati&lt;UL&gt;&lt;LI&gt;&lt;DT&gt;testul de frecventa (un bit)&lt;/DT&gt;
&lt;DD&gt;se testeaza daca aparitiile cifrelor "0" si "1" sunt aproximativ egale. Variabila aleatoare X=(n&lt;sub&gt;0&lt;/sub&gt;-n&lt;sub&gt;1&lt;/sub&gt;)&lt;sup&gt;2&lt;/sup&gt;/n trebuie sa prezinte o distributie de probabilitate &amp;#967&lt;sup&gt;2&lt;/sup&gt; cu un grad de libertate daca n&gt;10 (in practica n&gt;&gt;10000)&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;testul serial (doi biti)&lt;/DT&gt;
&lt;DD&gt;se testeaza daca aparitiile secventelor "00", "01", "11" si "10" sunt aproximativ egale. Variabila aleatoare X=4/(n-1)(n&lt;sub&gt;00&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt;+n&lt;sub&gt;01&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt;+n&lt;sub&gt;11&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt;+n&lt;sub&gt;10&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt;)-2/n(n&lt;sub&gt;0&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt;+n&lt;sub&gt;1&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt;)+1 trebuie sa prezinte o distributie de probabilitate &amp;#967&lt;sup&gt;2&lt;/sup&gt; cu doua de libertate daca n&gt;21&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;testul poker (generalizare test frecventa)&lt;/DT&gt;
&lt;DD&gt;fie m&amp;#8712N&lt;sup&gt;*&lt;/sup&gt; ai [n/m] &amp;#8805 5x2&lt;sup&gt;m&lt;/sup&gt;. Se imparte secventa in k=[n/m] intervale disjuncte, de lungime m. Se noteaza n&lt;sub&gt;i&lt;/sub&gt; numarul de aparitii ale secventei a i&lt;sup&gt;a&lt;/sup&gt;, i&amp;#8712[1, 2&lt;sup&gt;m&lt;/sup&gt;]. Variabila aleatoare X=2&lt;sup&gt;m&lt;/sup&gt;/k (&amp;#8721&lt;sub&gt;i=1&lt;/sub&gt;&lt;sup&gt;2&lt;sup&gt;m&lt;/sup&gt;&lt;/sup&gt;n&lt;sub&gt;i&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt;) -k trebuie sa prezinte o distributie de probabilitate &amp;#967&lt;sup&gt;2&lt;/sup&gt; cu 2&lt;sup&gt;m&lt;/sup&gt;-1 grade de libertate&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;testul de serie&lt;/DT&gt;
&lt;DD&gt;se determina aparitiile seriilor de "0" si "1" de diverse lungimi si se compara cu, aparitiile unei secvente de lungime i pentru o secventa aleatoare de lungime n, e&lt;sub&gt;i&lt;/sub&gt;=(n-i+3)/2&lt;sup&gt;i+2&lt;/sup&gt;. Fie k cea mai mare valoare a lui i pentru care e&lt;sub&gt;i&lt;/sub&gt;&amp;#8805 5. Z&lt;sub&gt;i&lt;/sub&gt; si U&lt;sub&gt;i&lt;/sub&gt; reprezinta numerele de secvente de "0" si "1" de lungime i unde i&amp;#8712[1, k]. Variabila aleatoare X = &amp;#8721&lt;sub&gt;i=1&lt;/sub&gt;&lt;sup&gt;k&lt;/sup&gt;((Z&lt;sub&gt;i&lt;/sub&gt;-e&lt;sub&gt;i&lt;/sub&gt;)&lt;sup&gt;2&lt;/sup&gt;/e&lt;sub&gt;i&lt;/sub&gt;) + &amp;#8721&lt;sub&gt;i=1&lt;/sub&gt;&lt;sup&gt;k&lt;/sup&gt;((U&lt;sub&gt;i&lt;/sub&gt;-e&lt;sub&gt;i&lt;/sub&gt;)&lt;sup&gt;2&lt;/sup&gt;/e&lt;sub&gt;i&lt;/sub&gt;)trebuie sa prezinte o distributie de probabilitate &amp;#967&lt;sup&gt;2&lt;/sup&gt; cu 2k-2 grade de libertate&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;testul de autocorelatie&lt;/DT&gt;&lt;DD&gt;se testeaza corelatia intre secventa si versiuni alunecate ale sale. Fie d &amp;#8712[1, [n/2]]. Numarul de biti din secventa, care nu sunt egali cu biti alunecati-d este A(d) = &amp;#8721&lt;sub&gt;i=0&lt;/sub&gt;&lt;sup&gt;n-d-1&lt;/sup&gt; s&lt;sub&gt;i&lt;/sub&gt; &amp;#8853 s&lt;sub&gt;i+d&lt;/sub&gt;. Variabila aleatoare X = 2 (A(d)-(n-d)/2)/ (n-d)&lt;sup&gt;1/2&lt;/sup&gt; trebuie sa prezinte o distributie de probabilitate N(0,1) daca (n-d) &amp;#8807 10 &lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;testul Maurer (test universal)&lt;/LI&gt;&lt;/UL&gt;&lt;/DD&gt;&lt;/DL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113206724086614744?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113206724086614744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113206724086614744&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113206724086614744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113206724086614744'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2005/11/secvente-aleatoare.html' title='Secvente aleatoare'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113203873226591073</id><published>2005-11-15T09:07:00.000+02:00</published><updated>2006-01-06T11:08:02.390+02:00</updated><title type='text'>Taxonomie semnaturi digitale</title><content type='html'>&lt;UL&gt;&lt;LI&gt;Alte notatii&lt;/LI&gt;&lt;UL&gt;&lt;DL&gt;&lt;LI&gt;&lt;DT&gt;spatiul mesajelor, &lt;b&gt;P&lt;/b&gt;&lt;/DT&gt;&lt;DD&gt;multimea mesajelor&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;spatiul de semnare, &lt;b&gt;P&lt;/b&gt;&lt;sub&gt;s&lt;/sub&gt;&lt;/DT&gt;&lt;DD&gt;multimea mesajelor ce pot fi semnate&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;functie redundanta, r&lt;/DT&gt;&lt;DD&gt;o functie injectiva r:&lt;b&gt;P&lt;/b&gt;&amp;#8594&lt;b&gt;P&lt;/b&gt;&lt;sub&gt;r&lt;/sub&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;spatiul valorilor de hash, &lt;b&gt;P&lt;/b&gt;&lt;sub&gt;h&lt;/sub&gt;&lt;/DT&gt;&lt;DD&gt;codomeniul unei functii de dispersie, h:&lt;b&gt;P&lt;/b&gt;&amp;#8594&lt;b&gt;P&lt;/b&gt;&lt;sub&gt;h&lt;/sub&gt;&lt;/DD&gt;&lt;br&gt;&lt;b&gt;P&lt;/b&gt;&lt;sub&gt;h&lt;/sub&gt;&amp;#8834&lt;b&gt;P&lt;/b&gt;&lt;sub&gt;s&lt;/sub&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;multimea index de semnare, &lt;b&gt;I&lt;/b&gt;&lt;/DT&gt;&lt;DD&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;/DL&gt;&lt;/UL&gt;
&lt;LI&gt;Criterii&lt;/LI&gt;&lt;OL&gt;&lt;LI&gt;utilizarea mesajului original de catre algoritmul de verificare&lt;/LI&gt;&lt;LI&gt;numarul transformarilor&lt;/LI&gt;&lt;/OL&gt;&lt;LI&gt;Clasificare&lt;/LI&gt;&lt;OL&gt;&lt;LI&gt;criteriul 1&lt;/LI&gt;&lt;OL type=a&gt;
&lt;LI&gt;&lt;u&gt;scheme pentru semnatura digitala cu anexa&lt;/u&gt;&lt;br&gt;necesita mesajul original; fiecare entitate creeaza o cheie privata pentru semnare si o cheie publica pentru verificare&lt;br&gt;&lt;UL&gt;&lt;LI&gt;utilizatorul U selecteaza o multime {sem&lt;sub&gt;U,k&lt;/sub&gt;; k&amp;#8712&lt;b&gt;I&lt;/b&gt;} care este cheia secreta a lui U; fiecare sem&lt;sub&gt;U,k&lt;/sub&gt; este o aplicatie injectiva de la &lt;b&gt;P&lt;/b&gt;&lt;sub&gt;h&lt;/sub&gt; la &lt;b&gt;S&lt;/b&gt;&lt;/LI&gt;&lt;LI&gt;&amp;#8704 &lt;u&gt;p&lt;/u&gt;&amp;#8712&lt;b&gt;P&lt;/b&gt;&lt;sub&gt;h&lt;/sub&gt;, s&lt;sup&gt;*&lt;/sup&gt;&amp;#8712&lt;b&gt;S&lt;/b&gt;, ver&lt;sub&gt;A&lt;/sub&gt;(&lt;u&gt;p&lt;/u&gt;,s&lt;sup&gt;*&lt;/sup&gt;)=adevarat daca sem&lt;sub&gt;U,k&lt;/sub&gt;(&lt;u&gt;p&lt;/u&gt;)=s&lt;sup&gt;*&lt;/sup&gt;, altfel ver&lt;sub&gt;A&lt;/sub&gt;(&lt;u&gt;p&lt;/u&gt;,s&lt;sup&gt;*&lt;/sup&gt;)=fals; ver&lt;sub&gt;A&lt;/sub&gt; este cheia publica; transformarea se calculeaza fara a cunoaste cheia secreta&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;u&gt;scheme pentru semnatura digitala cu recuperare de mesaj&lt;/u&gt;&lt;br&gt;mesajul original este recuperat din semnatura insasi&lt;UL&gt;&lt;LI&gt;utilizatorul U selecteaza o multime {sem&lt;sub&gt;U,k&lt;/sub&gt;; k&amp;#8712&lt;b&gt;I&lt;/b&gt;} care este cheia secreta a lui U; fiecare sem&lt;sub&gt;U,k&lt;/sub&gt; este o aplicatie injectiva de la &lt;b&gt;P&lt;/b&gt;&lt;sub&gt;s&lt;/sub&gt; la &lt;b&gt;S&lt;/b&gt;&lt;/LI&gt;&lt;LI&gt;&amp;#8704k&amp;#8712&lt;b&gt;I&lt;/b&gt;, ver&lt;sub&gt;A&lt;/sub&gt; &amp;#9675 sem&lt;sub&gt;U,k&lt;/sub&gt;=1&lt;sub&gt;&lt;b&gt;P&lt;/b&gt;&lt;sub&gt;s&lt;/sub&gt;&lt;/sub&gt;, ver&lt;sub&gt;A&lt;/sub&gt; este cheia publica; transformarea se calculeaza fara a cunoaste cheia secreta&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;/OL&gt;&lt;LI&gt;criteriul 2&lt;/LI&gt;&lt;OL type=a&gt;&lt;LI&gt;&lt;u&gt;schema aleatoare pentru semnatura digitala&lt;/u&gt;&lt;br&gt;Card(&lt;b&gt;I&lt;/b&gt;)&gt;1&lt;/LI&gt;&lt;LI&gt;&lt;u&gt;schema determinista pentru semnatura digitala&lt;/u&gt;&lt;br&gt;Card(&lt;b&gt;I&lt;/b&gt;)=1&lt;/LI&gt;&lt;/OL&gt;&lt;/OL&gt;&lt;/UL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113203873226591073?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113203873226591073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113203873226591073&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113203873226591073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113203873226591073'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2005/11/taxonomie-semnaturi-digitale.html' title='Taxonomie semnaturi digitale'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113196744875179978</id><published>2005-11-14T13:21:00.000+02:00</published><updated>2005-11-14T14:19:15.376+02:00</updated><title type='text'>Semnatura digitala</title><content type='html'>&lt;DL&gt;
&lt;DT&gt;Semnatura digitala&lt;/DT&gt;
&lt;DD&gt;Este un mijloc prin care o entitate isi poate lega identitatea de o informatie. Procesul de semnare consta in transformarea unui mesaj si a unei informatii secrete intr-un marcaj care se numeste semnatura&lt;UL&gt;&lt;LI&gt;&lt;b&gt;P&lt;sub&gt;s&lt;/sub&gt;&lt;/b&gt; este multimea mesajelor care pot fi semnate&lt;/LI&gt;&lt;LI&gt;&lt;b&gt;S&lt;/b&gt; este multimea elementelor numite semnaturi&lt;/LI&gt;
&lt;LI&gt;sem&lt;sub&gt;k&lt;/sub&gt; este functia semnatura, sem&lt;sub&gt;k&lt;/sub&gt;:&lt;b&gt;P&lt;sub&gt;s&lt;/sub&gt;&lt;/b&gt;&amp;#8594&lt;b&gt;S&lt;/b&gt;&lt;/LI&gt; unde k &amp;#8712&lt;b&gt;K&lt;/b&gt;&lt;LI&gt;ver&lt;sub&gt;k&lt;/sub&gt;&lt;/LI&gt; este functia verificare, ver&lt;sub&gt;k&lt;/sub&gt;:&lt;b&gt;P&lt;sub&gt;s&lt;/sub&gt;&lt;/b&gt;x&lt;b&gt;S&lt;/b&gt;&amp;#8594{adevarat, fals}&lt;/UL&gt;&lt;/DD&gt;
&lt;DT&gt;Algoritm generare semnatura digitala&lt;/DT&gt;&lt;DD&gt;algoritm pentru producerea unei semnaturi digitale&lt;/DD&gt;&lt;DT&gt;Algoritm verificare semnatura digitala&lt;/DT&gt;
&lt;DD&gt;algoritm pentru verificarea unei semnaturi digitale&lt;/DD&gt;&lt;DT&gt;Schema pentru semnatura digitala&lt;/DT&gt;&lt;DD&gt;Consta intr-un algoritm generare semnatura digitala si intr-un algoritm verificare semnatura digitala; exista o functie bijectiva de la multimea cheilor, &lt;b&gt;K&lt;/b&gt;, la produsul &lt;b&gt;Sem&lt;/b&gt;x&lt;b&gt;Ver&lt;/b&gt; cu proprietatea &amp;#8704 p &amp;#8712 &lt;b&gt;P&lt;sub&gt;s&lt;/sub&gt;&lt;/b&gt;, &amp;#8704 s &amp;#8712 &lt;b&gt;S&lt;/b&gt;, ver&lt;sub&gt;k&lt;/sub&gt;(p,s)=adevarat &amp;#8660 s=sem&lt;sub&gt;k&lt;/sub&gt;(p)&lt;/DD&gt;&lt;DT&gt;Procedura pentru semnare digitala&lt;/DT&gt;
&lt;DD&gt;consta intr-un algoritm generare semnatura digitala si o metoda pentru transformarea datelor in mesaje ce pot fi semnate&lt;/DD&gt;&lt;DT&gt;Procedura pentru verificare semnatura digitala&lt;/DT&gt;&lt;DD&gt;consta intr-un algoritm pentru verificarea unei semnaturi digitale si o metoda pentru transformarea mesajului in date&lt;/DD&gt;&lt;/DL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113196744875179978?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113196744875179978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113196744875179978&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113196744875179978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113196744875179978'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2005/11/semnatura-digitala.html' title='Semnatura digitala'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113163677153782026</id><published>2005-11-10T17:31:00.000+02:00</published><updated>2005-11-10T18:46:28.930+02:00</updated><title type='text'>Taxonomie functii hash</title><content type='html'>&lt;br&gt;&lt;u&gt;Criterii&lt;/u&gt;
&lt;DL&gt;&lt;OL&gt;&lt;LI&gt;context fara chei&lt;/LI&gt;&lt;OL type=a&gt;
&lt;LI&gt;&lt;DT&gt;rezistenta preimagine(sens unic, neinversabila)&lt;/DT&gt;
&lt;DD&gt;&amp;#8704 y nu este fezabila computational gasirea lui x ai h(x)=y&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;rezistenta preimagine ord. 2(rezistenta slaba la coliziune)&lt;/DT&gt;
&lt;DD&gt;&amp;#8704 x nu este fezabila computational gasirea lui x' ai x&amp;#8800x' &amp;#8743 h(x)=h(x')&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;rezistenta la coliziune(rezistenta puternica la coliziune)&lt;/DT&gt;
&lt;DD&gt;nu este fezabila computational gasirea lui x si x' ai x&amp;#8800x' &amp;#8743 h(x)=h(x')&lt;/DD&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;context cu chei&lt;/LI&gt;
&lt;br&gt;Functia de hash este o familie indexata dupa cheie. Valoarea de hash se numeste valoare MAC
&lt;OL type=a&gt;
&lt;LI&gt;&lt;DT&gt;rezistenta la calcul&lt;/DT&gt;&lt;DD&gt;nu este fezabila computational gasirea lui p&lt;sub&gt;i&lt;/sub&gt; si p' ai p&lt;sub&gt;i&lt;/sub&gt;&amp;#8800p' &amp;#8743 h&lt;sub&gt;k&lt;/sub&gt;(p)=h&lt;sub&gt;k&lt;/sub&gt;(p') unde k este o cheie, avand la dispozitie mai multe perechi (p&lt;sub&gt;i&lt;/sub&gt;, h&lt;sub&gt;k&lt;/sub&gt;(p&lt;sub&gt;i&lt;/sub&gt;))&lt;/DD&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/OL&gt;&lt;/DL&gt;&lt;u&gt;Clasificare&lt;/u&gt;
&lt;DL&gt;&lt;OL&gt;&lt;LI&gt;Context fara chei
&lt;OL type=a&gt;
&lt;LI&gt;&lt;DT&gt;MDC(coduri detectoare modificare)&lt;/DT&gt;&lt;DD&gt;&lt;/DD&gt;&lt;OL&gt;
&lt;LI&gt;&lt;DT&gt;OWHF(functii hash cu sens unic, functie slaba hash cu sens unic)&lt;/DT&gt;
&lt;DD&gt;prezinta proprietatile de rezistenta preimagine si rezistenta preimagine ord.2&lt;/DD&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;CRHF(functii hash rezistente la coliziune, functie puternica hash cu sens unic)&lt;/DT&gt;&lt;DD&gt;prezinta proprietatile de rezistenta preimagine ord.2 si rezistenta la coliziune&lt;/DD&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;DT&gt;alte aplicatii&lt;/DT&gt;&lt;DD&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;
&lt;LI&gt;Context cu chei
&lt;OL type=a&gt;
&lt;LI&gt;&lt;DT&gt;MAC(coduri autentificare mesaj)&lt;/DT&gt;&lt;DD&gt;prezinta proprietatea de rezistenta la calcul&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;alte aplicatii&lt;/DT&gt;&lt;DD&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/DL&gt;
&lt;u&gt;Proprietati necesare in aplicatii specifice integritatii datelor&lt;/u&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;Aplicatia&lt;/td&gt;&lt;td&gt;rezistenta preimagine&lt;/td&gt;&lt;td&gt;rezistenta preimagine ord. 2&lt;/td&gt;&lt;td&gt;rezistenta la coliziune&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;MDC+semnatura asimetrica&lt;/td&gt;&lt;td&gt;da&lt;/td&gt;&lt;td&gt;da&lt;/td&gt;&lt;td&gt;da&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;MDC+canal autentic&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;da&lt;/td&gt;&lt;td&gt;da&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;MDC+criptare simetrica&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;fisier parole cu sens unic&lt;/td&gt;&lt;td&gt;da&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;MAC(cheia necunoscuta atacatorului)&lt;/td&gt;&lt;td&gt;da&lt;/td&gt;&lt;td&gt;da&lt;/td&gt;&lt;td&gt;da&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;MAC(cheia cunoscuta atacatorului)&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;da&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113163677153782026?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113163677153782026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113163677153782026&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113163677153782026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113163677153782026'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2005/11/taxonomie-functii-hash.html' title='Taxonomie functii hash'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113161331618983417</id><published>2005-11-10T11:01:00.000+02:00</published><updated>2005-11-16T19:06:50.340+02:00</updated><title type='text'>Functii hash</title><content type='html'>&lt;DL&gt;&lt;OL&gt;&lt;LI&gt;&lt;DT&gt;&lt;u&gt;Functie hash (functie de dispersie)&lt;/u&gt;&lt;/DT&gt;&lt;DD&gt;este o functie eficienta computational care pune in corespondenta siruri binare de lungime arbitrara cu siruri binare de lungime fixa. Sirul de lungime fixa se numeste valoare de hash&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;u&gt;Utilizarea primitivei&lt;/u&gt;&lt;br&gt;Utilizarea unei functii hash in criptografie impune restrictia: gasirea a doua siruri de intrare cu aceeasi valoare de hash (coliziune) sa nu fie o operatiune fezabila computational&lt;OL type=i&gt;&lt;LI&gt;Semnaturi digitale&lt;br&gt;Emitentul semneaza valoarea de hash a mesajului. Receptorul recalculeaza valoarea de hash a mesajului si o compara cu valoarea hash semnata.&lt;/LI&gt;&lt;LI&gt;Integritatea datelor&lt;br&gt;Se calculeaza valoarea de hash a datelor si se stocheaza. La nevoie se recalculeaza valoarea de hash si se compara cu valoarea initiala&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/DL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113161331618983417?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113161331618983417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113161331618983417&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113161331618983417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113161331618983417'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2005/11/functii-hash.html' title='Functii hash'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113161125205812071</id><published>2005-11-10T10:26:00.000+02:00</published><updated>2005-11-10T18:07:58.223+02:00</updated><title type='text'>Cifru flux</title><content type='html'>&lt;b&gt;Cifruri flux (fluide)&lt;/b&gt;&lt;DL&gt;&lt;OL&gt;&lt;LI&gt;&lt;DT&gt;&lt;u&gt;Flux de chei (cheie fluida)&lt;/u&gt;&lt;/DT&gt;
&lt;DD&gt;Fie &lt;b&gt;M&lt;/b&gt;= (&lt;b&gt;P, C,K, E,D&lt;/b&gt;) un sistem de criptare. O secventa de simboluri k&lt;sub&gt;1&lt;/sub&gt;k&lt;sub&gt;2&lt;/sub&gt;k&lt;sub&gt;3&lt;/sub&gt;&amp;#8230 &amp;#8712 &lt;b&gt;K&lt;/b&gt;&lt;sup&gt;+&lt;/sup&gt; se numeste cheie flux (cheie fluida).&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;&lt;u&gt;Cifru flux (cifru fluid)&lt;/u&gt;&lt;/DT&gt;&lt;DD&gt;Fie &lt;b&gt;A&lt;/b&gt; un alfabet cu Card(&lt;b&gt;A&lt;/b&gt;)=q si M un cifru de substitutie simpla cu lungimea blocului egala cu 1. Daca k &amp;#8712 &lt;b&gt;K&lt;/b&gt;&lt;sup&gt;+&lt;/sup&gt; este o cheie flux atunci mesajul criptat c se obtine din mesajul in clar p=p&lt;sub&gt;1&lt;/sub&gt;p&lt;sub&gt;2&lt;/sub&gt;p&lt;sub&gt;3&lt;/sub&gt;&amp;#8230 astfel  c=c&lt;sub&gt;1&lt;/sub&gt;c&lt;sub&gt;2&lt;/sub&gt;c&lt;sub&gt;3&lt;/sub&gt; &amp;#8230=e&lt;sub&gt;k&lt;sub&gt;1&lt;/sub&gt;&lt;/sub&gt;(p&lt;sub&gt;1&lt;/sub&gt;)e&lt;sub&gt;k&lt;sub&gt;2&lt;/sub&gt;&lt;/sub&gt;(p&lt;sub&gt;2&lt;/sub&gt;)e&lt;sub&gt;k&lt;sub&gt;3&lt;/sub&gt;&lt;/sub&gt;(p&lt;sub&gt;3&lt;/sub&gt;)&amp;#8230&lt;/DD&gt;&lt;OL&gt;&lt;LI&gt;&lt;DT&gt;Cifru flux sincron&lt;/DT&gt;&lt;DD&gt;Fluxul de chei este generat independent de mesajul in clar si de mesajul criptat&lt;/DD&gt;&lt;br&gt;Majoritatea cifrurilor flux existente au urmatorul tip&lt;UL type=a&gt;&lt;DT&gt;Cifru flux aditiv binar&lt;/DT&gt;
&lt;DD&gt;este un cifru flux sincron in care fluxul de chei, cifrele mesajului in clar si ale mesajululi criptat sunt cifre binare iar functia de criptare realizeaza un XOR intre cifra mesajului in clar si cifra fluxului de chei&lt;DD&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;Cifru flux asincron (autosincronizabil)&lt;/DT&gt;&lt;DD&gt;Fluxul de chei este generat ca o functie de cheie si un numar fixat de cifre ale mesajului criptat anterior&lt;/DD&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;&lt;u&gt;Entropia&lt;/u&gt;&lt;/DT&gt;&lt;DD&gt;Fie &lt;b&gt;X&lt;/b&gt; o variabila aleatoare care ia valorile x&lt;sub&gt;1&lt;/sub&gt;x&lt;sub&gt;2&lt;/sub&gt;&amp;#8230x&lt;sub&gt;n&lt;/sub&gt; cu probabilitatile P(X=x&lt;sub&gt;i&lt;/sub&gt;)=p&lt;sub&gt;i&lt;/sub&gt;&lt;br&gt;Se defineste entropia lui &lt;b&gt;X&lt;/b&gt; ca fiind &lt;b&gt;H&lt;/b&gt;(&lt;b&gt;X&lt;/b&gt;)=&amp;#8721&lt;sub&gt;i=1&lt;/sub&gt;&lt;sup&gt;n&lt;/sup&gt;p&lt;sub&gt;i&lt;/sub&gt;lg(1/p&lt;sub&gt;i&lt;/sub&gt;) unde prin conventie termenul pentru p&lt;sub&gt;i&lt;/sub&gt;=0 este 0&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;&lt;u&gt;"One time pad"&lt;/u&gt;&lt;/DT&gt;&lt;DD&gt;Shannon a demonstrat conditia necesara ca o schema de criptare simetrica sa fie sigura&lt;br&gt;H(k)&amp;#8805H(p)&lt;br&gt; adica incertitudinea cheii secrete trebuie sa fie mai mare sau egala cu incertitudinea mesajului clar&lt;br&gt;Astfel, pentru o cheie de lungime (in biti) k, conditia devine k &amp;#8805H(p)&lt;/DD&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/DL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113161125205812071?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113161125205812071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113161125205812071&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113161125205812071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113161125205812071'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2005/11/cifru-flux.html' title='Cifru flux'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113153800319130771</id><published>2005-11-09T14:05:00.000+02:00</published><updated>2005-11-10T18:13:15.506+02:00</updated><title type='text'>Taxonomie cifruri bloc</title><content type='html'>&lt;DL&gt;&lt;DT&gt;&lt;b&gt;Cifruri bloc&lt;/b&gt;&lt;/DT&gt;&lt;DD&gt;Un cifru bloc este o schema de criptare care sparge mesajul clar in subsiruri (blocuri) cu o lungime fixata peste un alfabet A si cripteaza un bloc o data.&lt;/DD&gt;&lt;OL type=1&gt;&lt;LI&gt;&lt;DT&gt;Cifruri de substitutie &lt;/DT&gt;&lt;DD&gt;Cifrurile de substitutie inlocuiesc simbolurile/bloc de simboluri cu alte simboluri/blocuri de simboluri&lt;/DD&gt;&lt;OL&gt;&lt;LI&gt;&lt;DT&gt;monoalfabetice (substitutie simpla)&lt;/DT&gt;&lt;DD&gt;Fie &lt;b&gt;A&lt;/b&gt; un alfabet cu Card(A)=q, &lt;b&gt;P&lt;/b&gt; multimea sirurilor de lungime t peste &lt;b&gt;A&lt;/b&gt; si &lt;b&gt;K&lt;/b&gt; multimea tututror permutarilor peste multimea &lt;b&gt;A&lt;/b&gt;. Se defineste e&lt;sub&gt;k&lt;/sub&gt;(p)= (e&lt;sub&gt;k&lt;/sub&gt;(p&lt;sub&gt;1&lt;/sub&gt;)e&lt;sub&gt;k&lt;/sub&gt;(p&lt;sub&gt;2&lt;/sub&gt;)&amp;#8230e&lt;sub&gt;k&lt;/sub&gt;(p&lt;sub&gt;t&lt;/sub&gt;))=(c&lt;sub&gt;1&lt;/sub&gt;c&lt;sub&gt;2&lt;/sub&gt;&amp;#8230c&lt;sub&gt;t&lt;/sub&gt;)=c
unde k &amp;#8712 &lt;b&gt;K&lt;/b&gt;, p &amp;#8712 &lt;b&gt;P&lt;/b&gt;, c &amp;#8712 &lt;b&gt;P&lt;/b&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;homofonice&lt;/DT&gt;&lt;DD&gt;&amp;#8704 a &amp;#8712 &lt;b&gt;P&lt;/b&gt; i se asociaza o multime &lt;b&gt;H&lt;/b&gt; de subsiruri din &lt;b&gt;C&lt;/b&gt; a.i. H(a) &amp;#8745 H(b) = &amp;#8709 &amp;#8660 a &amp;#8800 b&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;polialfabetice&lt;/DT&gt;&lt;DD&gt;Fie &lt;b&gt;A&lt;/b&gt; un alfabet cu Card(A)=q, &lt;b&gt;P&lt;/b&gt; multimea sirurilor de lungime t peste &lt;b&gt;A&lt;/b&gt;. &lt;OL type=a&gt;&lt;LI&gt;spatiul cheilor &lt;b&gt;K&lt;/b&gt; este format din multimile ordonate cu t elemente, elementele fiind permutarile peste &lt;b&gt;A&lt;/b&gt;&lt;/LI&gt;&lt;LI&gt;fie cheia k=(k&lt;sub&gt;1&lt;/sub&gt;, k&lt;sub&gt;2&lt;/sub&gt;, &amp;#8230, k&lt;sub&gt;t&lt;/sub&gt;). Se defineste e&lt;sub&gt;k&lt;/sub&gt;(p)= (e&lt;sub&gt;k&lt;sub&gt;1&lt;/sub&gt;&lt;/sub&gt;(p&lt;sub&gt;1&lt;/sub&gt;)e&lt;sub&gt;k&lt;sub&gt;2&lt;/sub&gt;&lt;/sub&gt;(p&lt;sub&gt;2&lt;/sub&gt;) &amp;#8230e&lt;sub&gt;k&lt;sub&gt;t&lt;/sub&gt;&lt;/sub&gt;(p&lt;sub&gt;t&lt;/sub&gt;))= (c&lt;sub&gt;1&lt;/sub&gt;c&lt;sub&gt;2&lt;/sub&gt;&amp;#8230c&lt;sub&gt;t&lt;/sub&gt;)=c unde k &amp;#8712 &lt;b&gt;K&lt;/b&gt;, p &amp;#8712 &lt;b&gt;P&lt;/b&gt;, c &amp;#8712 &lt;b&gt;P&lt;/b&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;Cifru de transpozitie&lt;/DT&gt;&lt;DD&gt;Fie &lt;b&gt;A&lt;/b&gt; un alfabet cu Card(A)=q, &lt;b&gt;P&lt;/b&gt; multimea sirurilor de lungime t peste &lt;b&gt;A&lt;/b&gt; si &lt;b&gt;K&lt;/b&gt; multimea tututror permutarilor peste multimea {1,2,&amp;#8230,t}Se defineste e&lt;sub&gt;k&lt;/sub&gt;(p)= (e&lt;sub&gt;k&lt;/sub&gt;(p&lt;sub&gt;1&lt;/sub&gt;)e&lt;sub&gt;k&lt;/sub&gt;(p&lt;sub&gt;2&lt;/sub&gt;)&amp;#8230e&lt;sub&gt;k&lt;/sub&gt;(p&lt;sub&gt;t&lt;/sub&gt;))=(c&lt;sub&gt;1&lt;/sub&gt;c&lt;sub&gt;2&lt;/sub&gt;&amp;#8230c&lt;sub&gt;t&lt;/sub&gt;)=c unde k &amp;#8712 &lt;b&gt;K&lt;/b&gt;, p &amp;#8712 &lt;b&gt;P&lt;/b&gt;, c &amp;#8712 &lt;b&gt;P&lt;/b&gt;&lt;/DD&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DT&gt;Cifru produs&lt;/DT&gt;&lt;DD&gt;Cifrurile de substitutie simpla si transpozitie nu asigura un nivel satisfacator de securitate. Combinandu-le se pot obtine cifruri puternice si in fapt sistemele de criptare practice sunt cifruri produs&lt;/DD&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/DL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113153800319130771?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113153800319130771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113153800319130771&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113153800319130771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113153800319130771'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2005/11/taxonomie-cifruri-bloc.html' title='Taxonomie cifruri bloc'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113146039513548419</id><published>2005-11-08T16:25:00.000+02:00</published><updated>2005-11-10T18:17:42.233+02:00</updated><title type='text'>Cifru</title><content type='html'>Un sistem de criptare (cifru) este o structura (&lt;b&gt;P&lt;/b&gt;, &lt;b&gt;C&lt;/b&gt;, &lt;b&gt;K&lt;/b&gt;, &lt;b&gt;E&lt;/b&gt;, &lt;b&gt;D&lt;/b&gt;), unde:&lt;UL&gt;&lt;LI&gt;&lt;b&gt;P&lt;/b&gt;= {w | w &amp;#8712 V*} este multimea &amp;#65282textelor clare&amp;#65282, scrise peste un alfabet nevid V&lt;/LI&gt;&lt;LI&gt;&lt;b&gt;C&lt;/b&gt;= {w | w &amp;#8712 W*} este multimea &amp;#65282textelor criptate&amp;#65282, scrise peste un alfabet nevid W (uzual W = V ).&lt;LI&gt;&lt;b&gt;K&lt;/b&gt; este o multime de elemente numite chei.&lt;/LI&gt;
&lt;LI&gt;Fiecare cheie K &amp;#8712 &lt;b&gt;K&lt;/b&gt; determina o metoda de criptare e&lt;sub&gt;K&lt;/sub&gt; &amp;#8712 &lt;b&gt;E&lt;/b&gt; si o metoda de decriptare d&lt;sub&gt;K&lt;/sub&gt; &amp;#8712 &lt;b&gt;D&lt;/b&gt; . e&lt;sub&gt;K&lt;/sub&gt; : &lt;b&gt;P&lt;/b&gt; &amp;#8594 &lt;b&gt;C&lt;/b&gt; si d&lt;sub&gt;K&lt;/sub&gt; : &lt;b&gt;C&lt;/b&gt; &amp;#8594 &lt;b&gt;P&lt;/b&gt; sunt functii cu proprietatea d&lt;sub&gt;K&lt;/sub&gt;(e&lt;sub&gt;K&lt;/sub&gt;(w)) = w, &amp;#8704 w &amp;#8712 &lt;b&gt;P&lt;/b&gt;.&lt;/LI&gt;&lt;/UL&gt;Functia e&lt;sub&gt;k&lt;/sub&gt; este injectiva&lt;br&gt;
Daca e&lt;sub&gt;k&lt;/sub&gt; este bijectiva, sistemul de criptare se numeste simetric.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113146039513548419?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113146039513548419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113146039513548419&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113146039513548419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113146039513548419'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2005/11/cifru.html' title='Cifru'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113136548465010313</id><published>2005-11-07T13:57:00.000+02:00</published><updated>2005-11-10T18:39:06.023+02:00</updated><title type='text'>Primitive criptografice</title><content type='html'>Primitivele criptografice constituie caramizile utilizate la constructia sistemelor destinate a indeplini obiectivele criptografiei&lt;OL type=I&gt;&lt;LI&gt;Primitive generale&lt;/LI&gt;&lt;OL&gt;&lt;LI&gt;Permutari cu sens unic&lt;/LI&gt;&lt;LI&gt;Secvente aleatoare&lt;/LI&gt;&lt;LI&gt;Functii hash de lungime variabila&lt;/LI&gt;&lt;/OL&gt;&lt;LI&gt;Primitive pentru criptografia cu chei simetrice&lt;/LI&gt;&lt;OL&gt;&lt;LI&gt;Cifruri cu chei simetrice&lt;/LI&gt;&lt;OL type=a&gt;&lt;LI&gt;Cifruri bloc&lt;/LI&gt;&lt;LI&gt;Cifruri flux&lt;/LI&gt;&lt;/OL&gt;&lt;LI&gt;Functii hash de lungime variabila&lt;/LI&gt;&lt;LI&gt;Semnaturi&lt;/LI&gt;&lt;LI&gt;Secvente pseudoalaeatoare&lt;/LI&gt;&lt;LI&gt;Primitive de identificare&lt;/LI&gt;&lt;/OL&gt;&lt;LI&gt;Primitive pentru criptografia cu chei publice&lt;/LI&gt;&lt;OL&gt;&lt;LI&gt;Cifruri cu chei publice&lt;/LI&gt;&lt;LI&gt;Semnaturi&lt;/LI&gt;&lt;LI&gt;Primitive de identificare&lt;/LI&gt;&lt;/OL&gt;&lt;/OL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113136548465010313?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113136548465010313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113136548465010313&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113136548465010313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113136548465010313'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2005/11/primitive-criptografice.html' title='Primitive criptografice'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113136341306217283</id><published>2005-11-07T13:28:00.000+02:00</published><updated>2005-11-10T18:42:47.360+02:00</updated><title type='text'>Obiectivele criptografiei</title><content type='html'>In contextul mai larg al obiectivelor securitatii informatiei, criptografia (cryptos+grafic) se ocupa de aspectele matematice ce privesc urmatoarele:&lt;DL&gt;&lt;DT&gt;Confidentialitatea (privat, secret)&lt;/DT&gt;&lt;DD&gt;informatia este disponibila numai entitatilor autorizate&lt;/DD&gt;&lt;DT&gt;Integritatea datelor (privat, secret)&lt;/DT&gt;&lt;DD&gt;permite detectarea modificarilor aduse datelor de catre o terta parte; modificarile sunt: stergere, inserare, substitutie&lt;/DD&gt;&lt;DT&gt;Autentificarea&lt;/DT&gt;&lt;DD&gt;se refera atat la identificarea partilor cat si la informatia transmisa (autentificarea entitatii si autentificarea sursei)&lt;/DD&gt;&lt;DT&gt;Non-repudierea&lt;/DT&gt;&lt;DD&gt;prevenirea negarii unei actiuni savarsite de catre o entitate&lt;/DD&gt;&lt;/DL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113136341306217283?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113136341306217283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113136341306217283&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113136341306217283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113136341306217283'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2005/11/obiectivele-criptografiei.html' title='Obiectivele criptografiei'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18669533.post-113136002335764899</id><published>2005-11-07T12:34:00.000+02:00</published><updated>2005-11-10T18:40:43.700+02:00</updated><title type='text'>Plan de lectura</title><content type='html'>&lt;b&gt;Introducere in criptografie cu exemple in extensia de criptografie Java&lt;/b&gt; &lt;ol type="1"&gt;&lt;li&gt;Sumar teoretic al criptografiei &lt;ol type="1.1"&gt;&lt;li&gt;Obiectivele criptografiei &lt;li&gt;Primitive criptografice &lt;li&gt;Criptografie cu chei secrete &lt;li&gt;Criptografie cu chei publice &lt;li&gt;Modele de securitate &lt;li&gt;Patente si standarde &lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Sumar JCE &lt;ol type="2.1"&gt;&lt;li&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/security/CryptoSpec.html"&gt;Arhitectura JCE &lt;/a&gt;&lt;li&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/security/jce/JCERefGuide.html"&gt;Prezentarea cadrului de lucru in JCE&lt;/a&gt; &lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Exemple de utilizare pentru algoritmii implementati in Java&lt;/li&gt;&lt;/ol&gt;
&lt;br&gt;&lt;b&gt;Surse&lt;/b&gt;
&lt;a href="http://www.timsoft.ro/cursuri/c11"&gt;Curs Timsoft&lt;/a&gt; &lt;a href="http://java.sun.com/security/index.jsp"&gt;Securitate si Platforma Java&lt;/a&gt; &lt;a href="http://www.cacr.math.uwaterloo.ca/hac/"&gt;Handbook Of Applied Cryptography&lt;/a&gt; &lt;a href="http://www.garykessler.net/library/crypto.html"&gt;An Overview of Cryptography &lt;/a&gt;
&lt;a href=http://www.galaxyng.com/adrian_atanasiu/cript.htm&gt;Curs criptografie de Adrian Atanasiu&lt;/a&gt;
&lt;a href=http://www.cs.ucsd.edu/users/mihir/papers/gb.html&gt;Lecture Notes on Cryptography 
Authors: S. Goldwasser and M. Bellare&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669533-113136002335764899?l=rasolsorin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rasolsorin.blogspot.com/feeds/113136002335764899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18669533&amp;postID=113136002335764899&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113136002335764899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18669533/posts/default/113136002335764899'/><link rel='alternate' type='text/html' href='http://rasolsorin.blogspot.com/2005/11/plan-de-lectura.html' title='Plan de lectura'/><author><name>Sorin Badescu</name><uri>http://www.blogger.com/profile/12567206510373221183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
