Skip to content

Latest commit

 

History

History
 
 

13_financial

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Домашнее задание к занятию «Финансовые системы»

В качестве результата пришлите ответы на вопросы в личном кабинете студента на сайте netology.ru.

В каждом задании сформулирован один (или несколько вопросов), и вам нужно найти ответы в соответствующем нормативно-правовом акте (далее – НПА).

Обратите внимание:

  • там, где требуется указать понятие, необходимо привести это понятие целиком
  • там, где необходимо описать иное (например, ответить на вопрос "в течение какого времени", "какая ответственность" и т.д.) достаточно ответа собственными словами (как вы поняли) и указания номера статьи и пункта.

Обратите внимание, что справочная система КонсультантПлюс в бесплатной редакции не даёт копировать текст документа.

Важно: правовые системы предлагают платную подписку на комментарии, аналитические материалы и подборки ссылок. В рамках нашего курса платная подписка не требуется. Все ДЗ рассчитаны на работу исключительно с бесплатной версией. Поэтому, пожалуйста, нигде не вводите данные своих карт и т.д.

Задача №1. ГОСТ Р 57580

Вам необходимо изучить ГОСТ Р 57580. Документ состоит из двух частей:

  1. ГОСТ Р 57580.1-2017
  2. ГОСТ Р 57580.2-2018

Ответьте на следующие вопросы:

  1. Что такое контур безопасности?
  2. Что/кто является субъектом доступа (в рамках данного стандарта)? Какие основные типы их рассматриваются?
  3. Что такое компрометация аутентификационных данных?
  4. Что такое фактор аутентификации? На какие категории подразделяются факторы?
  5. Что такое однофакторная и многофакторная аутентификация?
  6. Чем событие ЗИ отличается от инцидента ЗИ?
  7. Что такое компенсирующие меры? В каких случаях они применяются?
  8. Сколько уровней ЗИ определяет стандарт? Перечислите их.
  9. Какой из всех возможных объектов атак нарушитель выберет с наибольшей вероятностью (с точки зрения авторов стандарта)?
  10. Для оценки полноты реализации процессов системы ЗИ используют качественную модель оценивания. Приведите уровни соответствия с их описанием, указанные в данной модели?
  11. Что рекомендуется использовать в качестве основных источников источников свидетельств для оценки соответствия ЗИ?

Задача №2. Тинькофф Мобильный SDK

Банк Тинькофф предлагает Мобильный SDK для встраивания в мобильные приложения возможностей оплаты с карт.

SDK (Software Development Kit) - набор инструментов для упрощения разработки. В частности, в случае Tinkoff - это набор уже реализованных программных блоков, которые программисты могут использовать для ускорения процесса интеграции платежей в собственное мобильное приложение.

По традиции, мы на всякий случай локально сохранили копии документов для Android и iOS.

Справка

OpenSSL позволяет вычислять хэши по разным алгоритмам, например, для md5:

openssl dgst -md5 file.txt

Где file.txt - это файл, внутри которого хранятся данные, для которых нужно рассчитать хэш.

Конечно же, это не всегда удобно (плюс некоторые редакторы добавляют в файл перенос строки и увас получается неверный хеш).

Современные командные оболочки предлагают нам синтаксис, позволяющий направить на вход одному приложению (аналог ввода "руками") данные из вывода другого приложения. Это так называемый pipe (труба).

Выглядит это следующим образом:

echo -n 'Netology' | openssl dgst -md5
(stdin)= f9b9c75ad5aa4b6acd7cf3d1a282d5b1

Где команда echo выводит строку Netology, опция -n не добавляет перенос строки, а символ | "перенаправляет" этот вывод на вход команды openssl. Таким образом, нам не обязательно вводить хэш руками или сохранять в файл.

Кроме того, в рамках решения задачи вам понадобится использовать кодировку base64.

Base64 - это кодировка, используемая для кодирования данных при передаче в ситуациях, когда окружение допускает только передачу в виде символов, соответствующих ASCII.

Для этого есть соответствующие флаги в команде enc:

  • закодировать файл в base64: openssl enc -base64 -in msg.txt -out msg.base64
  • декодировать из base64: openssl enc -d -base64 -in msg.base64 -out msg.txt

Задача

Токен сообщения

В рамках документации описано формирование подписи сообщения (в терминологии документа - Token), которая позволяет верифицировать, что сообщение действительно от вас. Вам нужно найти описание этого алгоритма и подписать следующий документ:

{
  "TerminalKey": "TerminalKey",
  "Amount": "100000",
  "OrderId": "10001",
  "Description": "Подарочная карта на 1000 рублей"
}

В качестве пароля (password) используйте строку TopSecret.

Подсказка

Нехорошо смотреть подсказки 😈!

Но, если не нашли, то в Android на 36-ой странице, в iOS на 61.

Отдельно есть пошаговая инструкция.

В качестве результата пришлите Token для указанного документа.

Шифрование карточных данных

Важно: это подзадание не обязательно, его выполнение не влияет на получение зачёта.

В рамках документации описывается механизм передачи карточных данных с мобильного устройства на сервер (они не передаются в открытом виде). Вам нужно найти описание этого алгоритма и зашифровать следующие карточные данные:

  • PAN=4300000000000777
  • ExpDate=0823
  • CardHolder=COURSAR
  • CVV=999
Подсказка

Нехорошо смотреть подсказки 😈!

Но, если не нашли, то в Android на 36-ой странице, в iOS на 62-ой.

Отдельной пошаговой инструкции нет.

Мы, по традиции, предоставляем вам публичный и приватный ключи (вы сами должны разобраться, что и когда используется).

Что нужно:

  1. Зашифровать указанные данные в соответствии с алгоритмом, указанным в документации (не забудьте проверить, что они нормально расшифровываются после вашего шифрования)
  2. Прислать перечень команд, использованных вами для шифрования и расширования

P.S.: ещё раз возвращаясь к теме утечки приватных ключей: есть специальный веб-сервис GitGuardian, который как раз анализирует репозитории с кодом на наличие публикации ключей и присылает владельцам репозиториев Alert'ы:

Рекомендуем вам ознакомиться со статьёй в их блоге, которая описывает уже меры реагирования на подобные инциденты и предлагает сервис, в реальном времени анализирующий каждый "коммит" (фиксацию изменений в коде) на наличие "секретов".

Это достаточно важная тема (мы, конечно, забегаем немного вперёд - детально это будет обсуждаться в блоке по разработке), особенно если вы будете работать в компаниях, в которых разрабатывается ПО (а сейчас практически любая компания от магазина до банка занимается разработкой/доработкой ПО для себя).