Шифрование и дайджесты сообщений. Генерация ключей средствами Java. Основные криптографические механизмы

Страницы работы

Содержание работы


Южный федеральный университет

Факультет математики, механики и компьютерных наук


1      Шифрование и дайджесты сообщений

1      Шифрование и дайджесты сообщений

Криптография для «чайников»


Генерация ключей средствами Java

Симметричное шифрование (AES)

Шифрование с открытым ключом (RSA)

Создание дайджестов (хешей) сообщений


1      Шифрование и дайджесты сообщений

Криптография для «чайников»


Генерация ключей средствами Java

Симметричное шифрование (AES)

Шифрование с открытым ключом (RSA)

Создание дайджестов (хешей) сообщений

Основные криптографические механизмы

Шифрование

Цифровые подписи

Открытый текст (plaintext)


Алгоритмы шифрования (encryption) и дешифрования (decryption)

Зашифрованный текст (ciphertext)

Секретность благодаря неизвестности



 KE = KD — секретный ключ (private key)


KE = KD — секретный ключ (private key)


Наличие секретного ключа у всех взаимодействующих сторон

8/27

KE = KD — секретный ключ (private key)

Наличие секретного ключа у всех взаимодействующих сторон


Проблема распространения ключа

8/27

KE = KD — секретный ключ (private key)

Наличие секретного ключа у всех взаимодействующих сторон

Проблема распространения ключа


DES, Data Encryption Standard (Алгоритм Люцифера — Horst Feistel, 1977), 3DES

8/27

KE = KD — секретный ключ (private key)

Наличие секретного ключа у всех взаимодействующих сторон

Проблема распространения ключа


DES, Data Encryption Standard (Алгоритм Люцифера — Horst

Feistel, 1977), 3DES

AES, Advanced Encryption Standard (Rijndael — Joan Daemen, Vincent Rijmen, 1998)

8/27



KE — открытый ключ (public key)

KD — секретный ключ (private key) KE — открытый ключ (public key)


KD — секретный ключ (private key)

Открытый ключ распространяется свободно (сертификаты), секретный — держится в тайне

KE — открытый ключ (public key)

KD — секретный ключ (private key)


Открытый ключ распространяется свободно (сертификаты), секретный — держится в тайне

Сложность определения закрытого ключа по открытому

KE — открытый ключ (public key)

KD — секретный ключ (private key)


Открытый ключ распространяется свободно (сертификаты), секретный — держится в тайне

Сложность определения закрытого ключа по открытому

RSA (Rivest, Shamir, Adleman, 1977)



10/27

Проверка подписи: вычисление хеш-значения H и его сравнение с

D(S,KD) = D(E(H,KE),KD) = H

1      Шифрование и дайджесты сообщений

Криптография для «чайников»


Генерация ключей средствами Java

Симметричное шифрование (AES)

Шифрование с открытым ключом (RSA)



Создание дайджестов (хешей) сообщений java.util.Random java.security.SecureRandom java.security.Key javax.crypto.SecretKey javax.crypto.KeyGenerator

KeyGenerator            keygen =

KeyGenerator . getInstance ("AES" ) ; keygen . i n i t (new SecureRandom ( ) ) ; SecretKey key = keygen . generateKey ( ) ; KeyPairGenerator             pairgen


= KeyPairGenerator . getInstance ("RSA" ) ; pairgen . i n i t i a l i z e (RSA_KEYSIZE, new SecureRandom ( ) ) ;

KeyPair                 kp = pairgen . generateKeyPair ( ) ;

Key             publicKey = kp . getPublic ( ) ;

Key              privateKey = kp . getPrivate ( ) ;

ObjectOutputStream       out = new ObjectOutputStream ( new FileOutputStream ( ke yF il e ) ) ;


out . writeObject ( key ) ; out . cl ose ( ) ;

ObjectInputStream          in = new ObjectInputStream ( new FileInputStream ( ke yF i le ) ) ; Key          key = (Key)          in . readObject ( ) ; in . close ( ) ;

Похожие материалы

Информация о работе