czwartek, września 04, 2008

Podstawy podpisu 1
Na podstawie (http://www.javaworld.com/javaworld/jw-12-1998/jw-12-howto.html?page=4)
  1. Key - klucz - informacja służąca do szyfrowania i deszyfrowania danych. Mamy dwa typy kryptografii: 
    1. bazująca na kluczu niejawnych (secret) zwana symetryczną - stosuje jeden typ klucza zarówno do szyfrowania jak i odszyfrowania. Klucz jest wspólny dla odbiorcy i wysyłającego.
    2. bazująca na kluczach publicznych zwana asymetryczną - ma dwa klucze (jeden klucz służy do szyfrowania, drugi do odszyfrowania:
      1. publiczny - (public key)stosowany do potwierdzenia autentyczności (informacja zaszyfrowana kluczem prywatnym danej osoby może być odszyfrowana TYLKO JEJ kluczem publicznym i żadnym innym)
      2. prywatny - (private key) powinnien być znany tylko właścicielowy
  2. Message digest - skrót wiadomości (obrazowo cyfrowy odcisk - digital footprint) - krótki ciąg informacji unikalny dla niej.
  3. Digital signature - podpis cyfrowy. Wyliczony na podstawie Message digest i private key ciąg informacji (zazwyczaj ciąg ten jest znacznie krótszy od orginalnej wiadomości, możnaby podpisać cyfrowo całą wiadomość orginalną ale wymagałoby to znacznej mocy obliczeniowej i czasu). Stanowi potwierdzenie, że dana wiadomość została podpisana przez osobę posiadającą w/w klucz prywatny.
  4. Z uwagi na istniejące i historycznie zaszłe ograniczenia na publikację algorytmów kryptograficznych, twórcy architektury do obsługi w javie kryptografii (JCA - Java Cryptography Architecture) zdecydowali się na zbudowanie jej na koncepcji dostawców usług (providers). JCA jest dostarczana z domyślnymi dostawcami, inne firmy mogą podpiąć własnych dostawców usług kryptograficznych. Dostawca jest pośrednikiem między istniejącą implementacją np. algorytmu MessageDigest a aplikacją.
  5. Kod wygląda mniej więcej tak:
  6.    // The getInstance() method is a static method of the    //  Signature class.  It returns an instance of the    //  installed class that implements the SHA/DSA    //  digital signature algorithm.    Signature signature = Signature.getInstance("SHA/DSA");


Brak komentarzy: