15 10-22 altoros-fact_sheet_st_v4

55
Altoros Expertise: Шифрование: шаблоны выбора или как защитить конфиденциальные данные http ://belarusjug.org/ @ javaBY Шалев Евгений для Belarus Java User Group

Upload: olga-lavrentieva

Post on 22-Jan-2018

3.404 views

Category:

Software


0 download

TRANSCRIPT

Page 1: 15 10-22 altoros-fact_sheet_st_v4

Altoros Expertise:Шифрование:

шаблоны выбораили как защитить конфиденциальные данные

http://belarusjug.org/

@javaBY

Шалев Евгений

для Belarus Java User Group

Page 2: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Немного терминов

2@javaBY@javaBY

Page 3: 15 10-22 altoros-fact_sheet_st_v4

@altoros

И ещё чуть-чуть терминов

3@javaBY@javaBY

Теоретическая (абсолютная) криптостойкость:невозможность дешифрования (ну совсем никак)

Практическая (достаточная) криптостойкость:невозможность дешифрования (с текущим

развитием техники и технологий)

Page 4: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Немного цифр

4@javaBY@javaBY

64 бита: 18446744073709551616 возможных

ключей

128 бит:

34028236692093846346337460743176821145

6 возможных ключей

256 бит:

11579208923731619542357098500868790785

32699846656405640394575840079131296399

36 возможных ключей

Page 5: 15 10-22 altoros-fact_sheet_st_v4

@altoros

И ещё немного цифр

5@javaBY@javaBY

Процессор Intel Xeon E5-2697 v3

Количество ядер: 14

Тактовая частота: 2.6 ГГц

Максимальная Turbo-частота: 3.6 ГГц

Операций в секунду: 14 x 3.6 x 109 = 2 36

Сколько времени понадобится для перебора (брутфорс) 56 битного ключа с

помощью процессора Intel Xeon?

2 56 / 2 36 = 2 20 (секунд) = 12 (суток)

Сколько времени понадобится для перебора (брутфорс) 128 битного ключа с

помощью процессора Intel Xeon?

2 128-36 = 2 92 (секунд) = 1,57 x 1020 (лет) = 156 911 810 693 510 314 460 (лет)

Page 6: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Постановка задачи

7@javaBY@javaBY

Зашифровать документ, сохранить на диск и расшифровать его, используя

секретный ключ.

Page 7: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

8@javaBY@javaBY

Зашифровать документ, сохранить на диск и расшифровать его, используя

секретный ключ.

Решение 1. Разработка нового алгоритма

1) выполним смещение символа (байта, бита и т.д.) вправо, влево на N позиций,

2) используем таблицу перестановок,

3) запишем всё в матрицу горизонтальными строками, а прочитаем вертикальными,

4) возьмём новый текст в качестве ключа и сложим посимвольно 2 текста.

Page 8: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

9@javaBY@javaBY

Решение 1. Достоинства

Безопасность за счёт неизвестности.

Page 9: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

10@javaBY@javaBY

Решение 1. Возможные недостатки

Алгоритм может оказаться неуникальным (и уже давно изученным),

шифртекст проходит неуспешно статистические тесты,

не защищён от полного перебора,

существуют слабые ключи,

неисследованный линейный, дифференциальный и другие виды криптоанализа,

неисследованный лавинный критерий,

и т.д.

Page 10: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

11@javaBY@javaBY

Решение 1. Возможные недостатки

Если внимательнее присмотреться к

1) выполним смещение символа (байта, бита и т.д.) вправо, влево на N позиций,

2) используем таблицу перестановок,

3) запишем всё в матрицу горизонтальными строками, а прочитаем

вертикальными,

4) возьмём новый текст в качестве ключа и сложим посимвольно 2 текста.

Page 11: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

12@javaBY@javaBY

Решение 1. Возможные недостатки

Если внимательнее присмотреться к

1) выполним смещение символа (байта, бита и т.д.) вправо, влево на N позиций,

2) используем таблицу перестановок,

3) запишем всё в матрицу горизонтальными строками, а прочитаем вертикальными,

4) возьмём новый текст в качестве ключа и сложим посимвольно 2 текста.

то можно заметить

1) шифр Цезаря,

2) шифр с использованием полибианского квадрата,

3) шифр перестановок с шифрующими таблицами.

Page 12: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

13@javaBY@javaBY

Решение 1. Возможные недостатки

1) шифр Цезаря (VENI VIDI VICI -> YHQL YLGL YLFL),

2) шифр с использованием полибианского квадрата,

3) шифр перестановок с шифрующими таблицами.

Page 13: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

14@javaBY@javaBY

Решение 1. И снова немного цифр

Вероятность появления некоторых букв в русскоязычном тексте:

о — 9.2%

а — 8.7%

е — 8.1%

и — 7.5%

н — 6.4%

т — 6.3%

р — 5.5%

Page 14: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

15@javaBY@javaBY

Решение 1. Можно ли применять рассмотренные алгоритмы на практике?

Page 15: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

16@javaBY@javaBY

Решение 1. Можно ли применять рассмотренные алгоритмы на практике?

1) Мощность вычислительных ресурсов злоумышленника

не позволяет дешифровать шифртекст за адекватное

время,

Page 16: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

17@javaBY@javaBY

Решение 1. Можно ли применять рассмотренные алгоритмы на практике?

1) Мощность вычислительных ресурсов злоумышленника

не позволяет дешифровать шифртекст за адекватное

время,

2) низкий уровень граммотности злоумышленника,

3) сщствт йзквй брьр.

Page 17: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

18@javaBY@javaBY

Решение 1.

А вот посимвольное сложение 2 текстов может оказаться

самым надёжным вариантом (самым-самым).

Page 18: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

19@javaBY@javaBY

Решение 1.

А вот посимвольное сложение 2 текстов может оказаться

самым надёжным вариантом (самым-самым).

Требования к ключу:

1) случайное равномерное распределение,

2) совпадает по размеру с заданным текстом (или больше),

3) применяется только 1 раз.

Page 19: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

20@javaBY@javaBY

Решение 1.

А вот посимвольное сложение 2 текстов может оказаться

самым надёжным вариантом (самым-самым).

Требования к ключу:

1) случайное равномерное распределение,

2) совпадает по размеру с заданным текстом (или больше),

3) применяется только 1 раз.

Был придуман в 1917 году Г. Вернамом и называется шифр

Вернама!

Является единственным алгоритмом симметричного

шифрования, для которого доказана абсолютная

криптографическая стойкость.

Page 20: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

21@javaBY@javaBY

Решение 2. Структурируем знания

Page 21: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

22@javaBY@javaBY

Решение 2. Структурируем знания

Симметричные алгоритмы шифрования (один ключ для

зашифрования и расшифрования)

- блочные,

- поточные,

асимметричные алгоритмы шифрования (один ключ используется

для зашифрования, второй - для расшифрования).

Page 22: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

23@javaBY@javaBY

Решение 2. Структурируем знания

Петля Фейстеля

Page 23: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

24@javaBY@javaBY

Решение 2. Структурируем знания

Примеры алгоритмов:

DES (2DES, 3DES),

Blowfish,

IDEA,

Lucifer,

ГОСТ 28147-89,

RC5,

RC6,

MARS,

Twofish,

CAST-128/256,

и много-много других.

Page 24: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

25@javaBY@javaBY

Решение 2. Структурируем знания

AES - Advanced Encryption Standard

Page 25: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

26@javaBY@javaBY

Решение 2. Структурируем знания

AES - Advanced Encryption Standard

1. Алгоритм шифрования!

2. Ещё так назывался конкурс по выбору надёжного алгоритма

шифрования, который станет стандартом симметричного

блочного шифрования. Конкурс был организован научно-

исследовательским институтом NIST. В Европе аналогичный

конкурс назывался NESSIE.

Page 26: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

27@javaBY@javaBY

Решение 2. Структурируем знания. Конкурс AES

Требования к конкурсантам:

● размер блока шифруемых данных: 128 бит,

● поддерживаемые размеры ключа: 128, 192, 256 бит,

● стойкость против современных криптографических атак,

● простая, обоснованная структура алгоритма,

● отсутствие слабых и эквивалентных ключей,

● скорость шифрования на аппаратных платформах должна быть

высокой (8-64 битные),

● поддержка распараллеливания операций в многопроцессорных

системах и аппаратных реализациях,

● минимальные требования к оперативной и энергонезависимой

памяти.

Page 27: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

28@javaBY@javaBY

Решение 2. Структурируем знания. Конкурс AES

На конкурс было представлено 15 алгоритмов.

Финалисты конкурса:

- Rijndael (AES),

- MARS,

- Twofish,

- Serpent,

- RC6.

Page 28: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

29@javaBY@javaBY

Решение 2. Зашифрование с использованием Java

Page 29: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

30@javaBY@javaBY

Решение 2. AES: режимы работы - ЕСВ

Page 30: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

31@javaBY@javaBY

Решение 2. AES: режимы работы - СВС

Page 31: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 1. Пути решения

32@javaBY@javaBY

Решение 2. AES: режимы работы. Выбор

Что нужно знать при выборе режима работы?

1. Возможно ли появление ошибки в шифртексте.

2. Какие данные шифруем.

3. Нужно ли распараллеливать процесс зашифрования\расшифрования.

4. Нужно ли добавлять шифртекст динамически.

5. Будет ли применим алгоритм к тексту с произвольным доступом.

и т.д.

Page 32: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 2. Постановка задачи

33@javaBY@javaBY

Реализовать в разрабатываемой системе хранение

идентификационных данных (например, паролей).

Page 33: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 2. Пути решения

34@javaBY@javaBY

Вариант 1: Сохраняем логин и пароль в открытом виде (а

ещё и высылаем на почту, SMS, и в разведку:))

Вариант 2: Шифруем всё с помощью ключа, который также

сохраняется в БД.

Вариант 3: Хешируем пароль и сохраняем в БД.

Вариант 4: Хешируем пароль с солью и сохраняем в БД.

Page 34: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 2. Пути решения

35@javaBY@javaBY

Что же такое хеширование?

Page 35: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 2. Пути решения

36@javaBY@javaBY

Что же такое хеширование?

Page 36: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 2. Пути решения

37@javaBY@javaBY

Почему 3й вариант не так хорош?

Page 37: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 2. Пути решения

38@javaBY@javaBY

Почему 3й вариант не так хорош?

Вариант 3: Хешируем пароль и

сохраняем в БД.

http://cmd5.ru/

http://www.hashkiller.co.uk/

http://www.md5crack.com/

https://crackstation.net/

Page 38: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 2. Пути решения

39@javaBY@javaBY

Что такое соль и как она связана с хешем?

Соль - случайно сгенерированная последовательность.

Внедряется в хешируемую последовательность на любом

этапе получения хеша.

Сохраняется в БД.

Page 39: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 3. Постановка задачи

40@javaBY@javaBY

Передать зашифрованное сообщение между 2

пользователями, сохранив конфиденциальные данные в

секрете

Page 40: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 3. Пути решения

41@javaBY@javaBY

Решение 1. Алгоритм Диффи-Хеллмана.

Алиса Боб

A, g, p

А = g a mod p ----->

B

<----- B = g b mod p

K = B a mod p = g ab mod p K = A b mod p = g ab

mod p

Page 41: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 3. Пути решения

42@javaBY@javaBY

Решение 1. Алгоритм Диффи-Хеллмана. Пример

Алиса Боб

2, 3, 7

А = 3 2 mod 7 = 2 ----->

5

<----- 5 = 3 5 mod 7 = 5

K = 5 2 mod 7 = 3 2*5 mod 7 = 4 K = 2 5 mod 7 = 3 2*5 mod 7 = 4

Page 42: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 3. Пути решения

43@javaBY@javaBY

Решение 2. Асимметричный алгоритм шифрования.

Взять открытый ключ (e, n)

Взять открытый текст m

Зашифровать сообщение с использованием открытого ключа: c = E(m) =

me mod n

Принять зашифрованное сообщение c,

Взять свой закрытый ключ (d, n)

Применить закрытый ключ для расшифрования сообщения:

m = D(c) = c d mod n

Page 43: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 3. Пути решения

44@javaBY@javaBY

Примеры алгоритмов асимметричного шифрования.

RSA

DSA

Elgamal

ECDSA

Page 44: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 3. Пути решения

45@javaBY@javaBY

И снова немного цифр

минимально допустимая длина ключа - 1024 бита,

рекомендуемая длина ключа - 2048 бит.

Почему?

Потому что вычисление ключей асимметричного шифрования строится на основе простых

чисел.

Page 45: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 3. Пути решения

46@javaBY@javaBY

javax.crypto.IllegalBlockSizeException: Data must not be longer than 117

bytes

Page 46: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 3. Пути решения

47@javaBY@javaBY

Тогда логично использовать симметричное шифрование

для шифрования текстов, а асимметричное - для

шифрования передаваемых ключей?

Page 47: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 3. Пути решения

48@javaBY@javaBY

Так и работают протоколы защищённого обмена данными:

TLS, SSH.

В спецификации указано много алгоритмов.

1. Алгоритмы асимметричного шифрования.

2. Алгоритмы симметричного шифрования.

3. Алгоритмы хеширования.

Page 48: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 4. Постановка задачи

49@javaBY@javaBY

Ну и напоследок :) Новая задача! Есть шифртекст, который

возможно расшифровать с помощью любых 2 участников

из пяти.

Page 49: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 4. Пути решения

50@javaBY@javaBY

Схемы разделения секрета!

Например, Схема Шамира.

y = 5x2 + 23x -9

Page 50: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Задача 4. Пути решения

51@javaBY@javaBY

Достоинства схем разделения секрета:

1. абсолютная криптостойкость,

2. масштабируемость,

3. гибкость и др.

Недостатки схем разделения секрета:

1. увеличение объёма данных, кратное количеству

участников,

2. не так много готовых библиотек,

3. необходима чёткая политика безопасности для

участников,

4. нет способа проверить корректность своего ключа и др.

Page 51: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Ну и напоследок

52@javaBY@javaBY

На собственном горбу и на чужом

я вынянчил понятие простое:

бессмысленно идти на танк с ножом,

но если очень хочется, то стоит.

И. М. Губерман

Page 52: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Если всё-таки необходимо создавать новый алгоритм

шифрования, то необходимо

53@javaBY@javaBY

- ещё раз поискать разрабатываемый алгоритм - может он

давно существует,

- выполнить линейный, диффиренциальный, лавинный

анализ алгоритма, найти уязвимые места,

- выполнить анализ расширения ключа,

- выполнить анализ шифртекстов с помощью

статистических тестов,

- выполнить анализ шифртекстов с использованием слабых

ключей,

- выполнить анализ шифрования на различных аппаратных

платформах,

...

Page 53: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Итоги

54@javaBY@javaBY

Page 54: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Стеганография

55@javaBY@javaBY

Page 55: 15 10-22 altoros-fact_sheet_st_v4

@altoros

Финал

56@javaBY@javaBY

Спасибо!