Южный федеральный университет
Факультет математики, механики и компьютерных наук
1 Шифрование и дайджесты сообщений
Криптография для «чайников»
Симметричное шифрование (AES)
Шифрование с открытым ключом (RSA)
Создание дайджестов (хешей) сообщений
1 Шифрование и дайджесты сообщений
Криптография для «чайников»
Симметричное шифрование (AES)
Шифрование с открытым ключом (RSA)
Создание дайджестов (хешей) сообщений
Шифрование
Цифровые подписи
Открытый текст (plaintext)
Зашифрованный текст (ciphertext)
Секретность благодаря неизвестности
KE = KD — секретный ключ (private key)
8/27
KE = KD — секретный ключ (private key)
Наличие секретного ключа у всех взаимодействующих сторон
8/27
KE = KD — секретный ключ (private key)
Наличие секретного ключа у всех взаимодействующих сторон
Проблема распространения ключа
8/27
KE = KD — секретный ключ (private key)
Наличие секретного ключа у всех взаимодействующих сторон
Проблема распространения ключа
Feistel, 1977), 3DES
AES, Advanced Encryption Standard (Rijndael — Joan Daemen, Vincent Rijmen, 1998)
8/27
KD — секретный ключ (private key) KE — открытый ключ (public key)
Открытый ключ распространяется свободно (сертификаты), секретный — держится в тайне
KE — открытый ключ (public key)
KD — секретный ключ (private key)
Сложность определения закрытого ключа по открытому
KE — открытый ключ (public key)
KD — секретный ключ (private key)
Сложность определения закрытого ключа по открытому
RSA (Rivest, Shamir, Adleman, 1977)
Проверка подписи: вычисление хеш-значения H и его сравнение с
D(S,KD) = D(E(H,KE),KD) = H
1 Шифрование и дайджесты сообщений
Криптография для «чайников»
Симметричное шифрование (AES)
Шифрование с открытым ключом (RSA)
KeyGenerator keygen =
KeyGenerator . getInstance ("AES" ) ; keygen . i n i t (new SecureRandom ( ) ) ; SecretKey key = keygen . generateKey ( ) ; KeyPairGenerator pairgen
KeyPair kp = pairgen . generateKeyPair ( ) ;
Key publicKey = kp . getPublic ( ) ;
Key privateKey = kp . getPrivate ( ) ;
ObjectOutputStream out = new ObjectOutputStream ( new FileOutputStream ( ke yF il e ) ) ;
ObjectInputStream in = new ObjectInputStream ( new FileInputStream ( ke yF i le ) ) ; Key key = (Key) in . readObject ( ) ; in . close ( ) ;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.