По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Kubernetes - это система с открытым исходным кодом, созданная для оркестровки, масштабирования и развертывания контейнерных приложений. Если вы хоть раз работали с Kubernetes, то знаете, насколько он полезен для управления контейнерами. Вы также знаете, что контейнеры не всегда работают должным образом. Если появляется сообщение об ошибке, вам нужен быстрый и простой способ решить проблему. Из этого туториала Вы узнаете, как перезапустить поды в Kubernetes. Под (Pod) – наименьшая запускаемая единица в ноде. Это группа контейнеров, которые должны работать вместе. Перезапуск подов Kubernetes Допустим, один из подов в вашем контейнере сообщает об ошибке. В зависимости от политики перезапуска Kubernetes может попытаться автоматически перезапустить под, чтобы он снова заработал. Однако это не всегда решает проблему. Если Kubernetes не может решить проблему самостоятельно, и вы не можете найти источник ошибки, перезапуск пода вручную - это самый быстрый способ вернуть приложение в рабочее состояние. Быстрое решение - вручную перезапустить затронутые поды. Это может сэкономить ваше время, особенно если ваше приложение работает и вы не хотите выключать службу. Вот три простых способа сделать это. Метод 1: Rolling Restart Начиная с обновления 1.15, Kubernetes позволяет выполнять непрерывный перезапуск развертывания. В качестве нового дополнения к Kubernetes это самый быстрый метод перезапуска. kubectl rollout restart deployment [deployment_name] Вышеупомянутая команда выполняет пошаговое завершение работы и перезапускает каждый контейнер в вашем развертывании. Ваше приложение по-прежнему будет доступно, поскольку большинство контейнеров все еще будут работать. Метод 2: Использование переменных среды Другой способ - установить или изменить переменную среды, чтобы поды перезагружались и синхронизировались с внесенными вами изменениями. Например, вы можете изменить дату развертывания контейнера: kubectl set env deployment [deployment_name] DEPLOY_DATE="$(date)" В приведенном выше примере набор команд env настраивает изменение переменных среды, развертывание [deployment_name] выбирает ваше развертывание, а DEPLOY_DATE="$(date) изменяет дату развертывания. Метод 3. Масштабирование количества реплик Наконец, вы можете использовать команду масштабирования, чтобы изменить количество реплик неисправного пода. Установка этого количества на ноль по существу отключает под: kubectl scale deployment [deployment_name] --replicas=0 Чтобы перезапустить под, используйте ту же команду, чтобы установить количество реплик на любое значение больше нуля: kubectl scale deployment [deployment_name] --replicas=1 Когда вы устанавливаете количество реплик равным нулю, Kubernetes уничтожает реплики, которые ему больше не нужны. Как только вы установите число больше нуля, Kubernetes создаст новые реплики. Новые реплики будут иметь другие имена, чем старые. Вы можете использовать команду kubectl get pods, чтобы проверить статус модулей и увидеть новые имена. Итог Kubernetes - чрезвычайно полезная система, но, как и любая другая система, она не безошибочна. Когда все же возникают проблемы, вы можете использовать три перечисленных выше метода, чтобы быстро и безопасно заставить ваше приложение работать, не закрывая службу для ваших клиентов.
img
Какое будущее ждет нас в контакт центрах с точки зрения кастомер сервис (клиентского сервиса)? Как компании создают новые пространства для коммуникации со своими потребителями? Будем говорить про чат боты - будущее клиентского сервиса. На цифрах, кейсах, исследованиях, в том числе социальных, постараюсь рассказать о том, почему в контакт центрах будущего, живых операторов будет меньше, а VoIP (классические телефоны) и CTI (интеграция компьютерных приложений и телефонии) отойдет на второй план. Посмотреть доклад Чат - боты это определенно хайповая история, несмотря на то, что сам хайп сейчас немного поугас. Компании абсолютно разного уровня внедряют чат - ботов: от больших банков, где чат бот органично вписывается в ИТ экосистему и помогает сократить косты на операторов и снизить их загрузку на рутинные операции до маленьких компаний, e-commerce или туристических фирм, где смысл чат - бота скорее сводится к тому, чтобы показать уровень технологичности на ряду с более "аналоговыми" конкурентами. Посмотрим на крупных игроков IT рынка, которые уже бороздят просторы ML/AI в поиске способа доставить счастье своим пользователям, среди них как Zero UI решения, которые вовсе не имеют привычного интерфейса, так и уже вполне рабочие чат боты: Алиса - умный помощник от Яндекс. Это мозги, которые живут почти во многих приложениях Яндекса и в хардварных устройствах. Кстати, по данным Яндекса, в приложении поиска доля голосовых запросов на октябрь 2018 года была 20%. Помимо пользовательских сценариев, Алиса сможет решать конкретные бизнес задачи по клиентскому обслуживанию клиентов вашего контакт центра, как автоматизированном режиме, так и в режиме диалога с оператором. Это реализуется с помощью платформы Яндекс.Диалоги - легкий способ связать жителя экосистемы Яндекса с вашим бизнесом, так сказать, не отходя от кассы. Кстати, количество активных пользователей алисы в месяц (MAU) 35 млн. - подумайте, сколько из них ваших потенциальных или текущих клиентов. Про Amazon и их разработки. Вы наверное слышали про виртуальный ассистент Alexa. Внутри алексы используются алгоритмы Amazon Lex А так как Amazon научился монетизировать свои технологии как никто другой, то они продают Amazon Lex в видео фреймворка (интерфейса) для создания приложений - как голосовых так и текстовых, в которых используются алгоритмы понимания естественных языков (NLU), и распознавания речи ASR. О первых я расскажу подробнее в конце статьи. Фреймворк, как заявляют ребята с Амазона, в контексте контакт центров классно подходит для рутинных операций - смена пароля, баланс, встреча с представителем компании и некоторые другие. Бот помощник Олег от банка Тинькоф. Бот помогает управлять кредиткой или дебетовой картой или заказать финансовые документы, снижая нагрузку на живых операторов и помогает закрыть пользовательские сценарии, купить билеты в кино и забронировать столик в ресторане. Тут можно отметить 2 самых очевидных пункта, которые дает бот: Ретеншн (вовлеченность) пользователей. Экосистема с элементами фана повышает вовлеченность к бренду и втягивает пользователей в экосистему. Билеты в кино, скидки, столики, переводы, а еще и голосом с ботом, который может ответить что то смешное или даже грубое, что насмешит друзей и спровоцирует цепочку рассылки диалога друзьям. Из этого вытекает следующий пункт: Виральность - распространяемость контента. На старте бот Тинькоф отвечал пользователям весьма неоднозначно. Например, на старте, попросив "сотку" у банка вы рисковали получить неплохую ответочку: Этот ответ массово распространился по социальным сетям. Это и есть та самая виральность. Вообще много мнений и обсуждений, касаемо чат ботов: начиная от того, что рынок еще не готов и сама технология бесполезна, заканчивая тем, что люди не любят общаться с чат ботами. Если два первых барьера мы с вами обсудили, то про второй я хочу поговорить немного подробнее. Блок про поколение Z - почему он в соц. сетях и не любит голос Впервые в истории, в 2011 в UK заметили, что объем телефонных звонков упал на 10%. При более детальном анализе было обнаружено, что максимально влияющая на падение показателя когорта пользователей - это люди 16 - 24 лет, которые предпочитают текстовую коммуникацию. К обеспокоенности провайдеров, масла в огонь подлил государственный медиарегулятор Ofcom (управление по коммуникациям), отчитавшись - 96% британцев в возрасте 16 - 24 используют текстовые сообщения каждый день. Итак, кто эта группа - 16 -24? Условно говоря, это люди рожденные после 1995 по 2012 года, и поздние Z - рожденные после 2000. Частично, тенденции к цифровизации и ухода в онлайн начали проявляться и у Миллениалов или, как принято их называть Поколение Y. Это люди рожденные с 1981 и до 1996 года. Несколько факторов, которые характеризуют поколение Z: Поколение Z очень целеустремленны. как пишут в исследованиях, это, "most success oriented". Взросление в процессе рецессии, войны, террористических атак, трудные времена на территории РФ. Зачастую, им приходилось наблюдать за борьбой родителей в трудные времена. Масла в огонь подливали миллениалы, полностью зацикленные на карьере. Настроение на успех на выходе дает следующий пункт, пусть и сомнительный - многозадачность. Многозадачность. Поколение Z чувствует себя спокойнее, выполняя несколько задач одновременно. Запостить фотографию в инстаграм, написать друзьям, почитать новости на медузе, сделать фильтра в снэпчате, погонять слова в скаенге. Мы не говорим об эффективности подобных активностей (которая по моему мнению, околонулевая), мы говорим про сам посыл. Тут и возникает важный нюанс - в контексте решения многозадачности, Z, решая свои вопросы с компанией, у которой они берут услугу, предпочтут отправить сообщение в бот в телеграмме или в приложении и ждать ответа, чем висеть на телефоне, холде, ждать ответа оператора и просто говорить голосом. Но это не главная причина. Важнейшей является то, что поколение Z нативно вросло в digital. Нативно в digital. Z находятся в цифровом пространстве полностью. Мессаджинг (текстинг), мемы, фотографии, лайки, обсуждения, снэпчаты - среда, в которой они существуют. И в ней, телефонному звонку, да и голосовой коммуникации в целом остается все меньше и меньше места. Соответственно, Z ожидают, что диджитал будет окружать их везде - решить проблемы с банком, заказать услугу, купить товар или еду, путешествия и прочее. Не давая им возможности обратиться в диджитал, мы рискуем потерять эту аудиторию. Существует множество других характеристик, которые прямо или косвенно влияют на стремление Z к цифре: Конфиденциальность - Z очень ценят свою конфиденциальность. Представьте Z, который едет в полном автобусе, звонит в контакт центр, где его просят назвать кодовое слово? Кажется, он будет слегка сконфужен Z легко принимают новое Вот такие они, эти ребята в гучи, суприм и кроссовках на высокой платформе. Давайте закрепим и посмотрим, что об этом думают большие компании. Пруфы того, что это важно В феврале 2018 года в Токио консалтинговая компания Гартнер отчиталась - к 2020 году 25% всех клиентских итераций будут происходить через VCA (virtual customer assistant), если переводить дословно - виртуальных клиентских помощников, или чат ботов, в контексте моего доклада и контакт - центра. Джин Альварез, вице - президент в Гартнер отчитался, что более чем половина крупного энтерпрайза уже начали инвестировать и исследовать виртуальных помощников, в разрезе решения стандартных вопросов с последующей эскалацией сложных на агента. Вот цитата Джина (Gene Alvarez): "As more customers engage on digital channels, VCAs are being implemented for handling customer requests on websites, mobile apps, consumer messaging apps and social networks" Перевод: С погружением клиентов в цифровые каналы коммуникации, все больше VCA (виртуальные клиентские помощники) внедряются для обработки клиентских запросов на сайтах, мобильных приложениях, мессенджерах и соц. сетях" Это важно, так как мы обсудили ранее, для подрастающего платежеспособного поколения Z - цифровые каналы это нативные вещи. Помимо прочего, важная цифра: организации, использующие VCA, в среднем, смогли сократить количество звонков, операторских чатов и писем на 70% и срезали косты на телефонию в среднем на 33%. В отчете так же было отмечено увеличение общего уровня удовлетворенности клиентов. Я не стану добавлять это в статью, так как Гартнер поленился рассказать, какие метрики для этого они посчитали и как измерили. Дальше. Ребята из Juniper Research еще в 2017 году говорили, что чат - боты - гейм чейнджер для банков и здравоохранения. Джунипер прогнозирует, что количество клиентских взаимодействий с чат-ботами в здравоохранении увеличится с 12% до 75% к 2022 году, а в банковском секторе достигнет 90% к этому времени. Автор исследования Лоурен Фои (Lauren Foye) объясняет: "We believe that healthcare and banking providers using bots can expect average time savings of just over 4 minutes per enquiry, equating to average cost savings in the range of $0.50-$0.70 per interaction. As Artificial Intelligence advances, reducing reliance on human representatives undoubtedly spells job losses." Перевод: Мы считаем, что банки и компании в области здравоохранения, используя чат- боты могут сэкономить более 4 минут на один клиентский запрос. Это примерно 50 - 70 центов за одну итерацию. 4 минуты на обращении что примерно ровняется $0.5 - $0.7. Лоурен пугает нас тем, что развитие AI (искусственного интеллекта) так или иначе приведет к потере работы многими людьми. Спасибо Лоурен, тебя это тоже коснется. Кстати, про искусственный интеллект. А точнее про одно из его направлений NLP (Natural Language Processing), или говоря по русски, обработку естественного языка. Про natural language processing (NLP). Обработка естественного языка Кратко пробежимся по технологии, которая драйвит эту отрасль. NLP - обработка естественного языка. Это направление породила одна проблема: компьютеры прекрасно справляются со структурированными данными, таблицами, приведенными к единообразию датасетами, но мы с вами общаемся не методами структурами, а словами. Тут и появилась идея научить машины понимать живой человеческий язык. В рамках решения этой задачи, как и в любой другой задаче машинного обучения, принято разбивать задачу на последовательность подзадач. Это называется пайплайн, он же конвейер процессов, которые необходимо выполнить. Давайте попробуем кратко разобраться на примере текста, взятого из википедии про Лондон: London is the capital and most populous city of England and the United Kingdom. Standing on the River Thames in the south east of the island of Great Britain, London has been a major settlement for two millennia. It was founded by the Romans, who named it Londinium. Тут есть несколько сегментов полезной информации про Лондон, где он находится и кем основан. 1. Дробим на предложения Первый этап пайплайна - дробим текст на предложения. Самое простое - по знакам препинания. Но современные алгоритмы используют более хитрые способы. Вот что у нас получилось: London is the capital and most populous city of England and the United Kingdom. Standing on the River Thames in the south east of the island of Great Britain, London has been a major settlement for two millennia. It was founded by the Romans, who named it Londinium. Три отдельных смысловых блока. Отлично. 2. Токенизация Оно же выделение слов. Так как мы уже разбили текст на предложения, берем первое и дробим - алгоритм прост - разбиение по пробелам или знакам препинания "London", "is", "the", "capital", "and", "most", "populous", "city", "of", "England", "and", "the", "United", "Kingdom", "." 3. Части речи Теперь смотрим на каждое слово отдельно и понимаем, что это - существительное, глагол, прилагательное или еще что то. Готовые фреймоврки обучены на на миллионах слов и учитывают слова стоящие рядом, для повышения точности определения. Получаем: London - имя собственное is - глагол the - артикль capital - существительное and - союз most - наречие populous - прилагательное 4. Лемматизация Лемматизация (англ. lemmatization) - приведение словоформы к ее первоначальной словарной форме (лемме). По факту, это отсечение окончаний и использование основой формы. Например, в русском языке словарной формой считается: существительные - именительный падеж, единственное число (руками - рука) глаголы - инфинитивная форма (искали - искать) прилагательные - единственное число, именительный падеж, мужской род (телекоммуникационными - телекоммуникационный) В NLP лемматизация обычно выполняется простым поиском форм в таблице. Вот что мы получаем: London - имя собственное (уже начальная форма) is - глагол (превращается в be) the - артикль (уже начальная форма) capital - существительное (уже начальная форма) and - союз (уже начальная форма) most - наречие (уже начальная форма) populous - прилагательное (уже начальная форма) 5. Стоп слова В нашем примере мы рассматриваем англоязычный фрагмент текста. Поэтому, из него нужно убрать слова, которые создают избыточный шум - артикли, например "and", "the", "a". Обычно, это делается по готовым таблицам. Снова смотрим на наше предложение: London - имя собственное (уже начальная форма) is - глагол (превращается в be) the - артикль (уже начальная форма) capital - существительное (уже начальная форма) and - союз (уже начальная форма) most - наречие (уже начальная форма) populous - прилагательное (уже начальная форма) 6. Парсинг зависимостей Следующим шагом нам важно понять взаимосвязь слов в предложении. Нужно понять, кто является родителем для каждого из токенов (слов) и установить тип взаимосвязи: субъект предложения, свойство, логическая связь, определение и так далее. В результате мы получаем уже почти готовое дерево связей. Логическим продолжением этого шага является группировка токенов по признакам взаимосвязи. Было: London - имя собственное (уже начальная форма) is - глагол (превращается в be) the - артикль (уже начальная форма) capital - существительное (уже начальная форма) and - союз (уже начальная форма) most - наречие (уже начальная форма) populous - прилагательное (уже начальная форма) Стало: London is the capital and most populous city 7. Распознавание именованных сущностей (Named Entity Recognition, NER) Двигаясь по пайплайну мы подходим к самому интересному, на мой взгляд, шагу - распознавание смысла слов. Вы уже заметили, что в нашем предложении встречаются географические сущности, такие как "London", "England" и "United Kingdom". На этом этапе пайплайна мы пониманием что это географический объект и определяем это, наполняя наш текст смыслом. NER алгоритмы хорошо работают с такими объектами как: имена людей; названия компаний; географические обозначения (и физические, и политические); продукты; даты и время; денежные суммы; события. Тут важно отметить, что хорошая NER система это не только словари. Они так же просматривают контекст предложения и окружение каждого конкретного токена. Адекватный NER должен уметь отличить американскую актрису Дакоту Фаннинг от штата Дакота на севере США 8. Разрешение кореференции Если быть кратким, то это решение вопроса с местоимениями, которые во всем тексте означают тот или иной объект. Вернемся к нашему изначальному тексту, который мы разбивали на предложения London is the capital and most populous city of England and the United Kingdom. Standing on the River Thames in the south east of the island of Great Britain, London has been a major settlement for two millennia. It was founded by the Romans, who named it Londinium. Обратите внимание на "It was founded by the Romans, who named it Londinium." Это было основано римлянами. Это? Что это? Вот и задача для для алгоритмов связать, что Это в данном контексте - это = Лондон. 9. Итог. Полный пайплайн NLP Итак, подытожим. Чтобы получать смыслы из речи человека текст проходит мощную обработку в конвейере NLP. Помимо прочего, NLP можно юзать и в голосовых технологиях, преобразуя речь в текст в рамках ASR механизмов и снова пропуская через пайплайн NLP. Суммарно, чтобы читать между строк и получать смысла информация перемалывается через эти 9 шагов (где то их может быть меньше, а где то в другом порядке, например): Дробим на предложения Токенизация Части речи Лемматизация Стоп слова Парсинг зависимостей Группировка токенов (существительных) Распознавание именованных сущностей (Named Entity Recognition, NER) Разрешение кореференции Кто делает? Продуктов много. Есть как тривиальные инструменты создания блок - схем (статичных алгоритмов обработки запросов), так и интерфейсы с продвинутым NLP, о котором мы поговорили ранее, есть энтерпрайзные решения, есть и решения для SMB. Не делая рекламы, поговорим про бесплатные решения. Rasa.com RASA.com Ребята дают бесплатный фреймворк для быстрого старта. Есть энтерпрайз коммерческие тарифы, которые дадут SLA и не комьюнити бэйзд гарантии. У ребят 0.5 млн загрузок по миру, 3.5 активных участников комьюнити. Схематично парни из раса.ком обозначили принципы работы их чат бота как на картинке: Можно попробовать абсолютно бесплатно, дав плечо фреймворку в свои данные. Итоги С развитием машинного обучения цифровое будущее становится все ближе и ближе. На руку прогрессу и развитию роботизации в клиентском сервисе играют поколенческие факторы, общие характеристики нового поколения, тренды и даже политическая обстановка. Будьте первыми, будьте актуальными, будьте технологичными и свежими.
img
Когда вы входите на финансовый или медицинский веб-сайт и входите в систему, вы должны ожидать, что полученная вами информация не будет перехвачена и прочитана кем-либо на пути между вашим компьютером и сервером. Менее очевидная, но не менее важная проблема заключается в том, что информация, которую вы отправляете на сайт, не должна быть открыта для изменения во время ее передачи по сети. Но как это можно обеспечить? Это две области, для решения которых можно использовать транспортную безопасность. В этой серии статей будет рассмотрено пространство проблем транспортной безопасности, а затем будет проведено исследование нескольких видов решений, включая шифрование. Наконец, в этой серии статей мы рассмотрим спецификацию безопасности транспортного уровня (TLS) в качестве примера шифрования транспортного уровня. Проблемное пространство Безопасность обычно решает одну из четырех проблем: подтверждение того, что данные не были изменены при передаче, предотвращение доступа к информации никому, кроме предполагаемого получателя, защита конфиденциальности людей, использующих сеть, и подтверждение того, что информация была доставлена. Вторая и третья проблемы, предотвращение несанкционированного доступа к данным при их передаче по сети и защита конфиденциальности пользователей, являются связанными проблемами, но будут рассматриваться отдельно в следующих разделах. Последняя отмеченная проблема, проблема доказательства обхода (которая аналогична проблеме доказательства работы, которая встречается в других контекстах информационных технологий), здесь не рассматривается, поскольку это область активных исследований с небольшим количеством развернутых систем. Проверка данных Если вы войдете на сайт своего банка и переведете 100 рублей с одного счета на другой, вы, скорее всего, будете расстроены, если на самом деле сумма перевода составит 1000 рублей или если номера счетов будут изменены, так что 100 рублей окажутся на чьем-то другом счете. Существует ряд других ситуаций, когда необходимо убедиться, что передаваемые данные совпадают с полученными, например: Если вы покупаете пару синих туфель, вы не хотите, чтобы вместо них доставили комплект красных. Если ваш врач дает вам рецепт на лекарство от изжоги (вероятно, вызванной стрессом от работы сетевым инженером), вы не хотите, чтобы вам доставляли лекарство от артрита (вероятно, из-за того, что вы печатаете так много документов и книг). Существует множество ситуаций, когда полученные данные должны совпадать с переданными, а отправитель и/или получатель должны быть поддающимися проверке. Защита данных от проверки Примеры защиты данных, приведенные выше, позволяют сделать еще один шаг вперед: вы не хотите, чтобы кто-то видел номер вашего счета, рецепт или другую информацию, когда она передается по сети. Номера счетов, пароли и любая личная информация (PII) очень важны, поскольку эти виды информации могут быть использованы для взлома счетов с целью кражи денег или даже для кражи конфиденциальной информации. Как можно защитить такую информацию? Основным средством защиты, используемым для предотвращения неавторизованных пользователей (или злоумышленников), является шифрование. Защита конфиденциальности пользователей Конфиденциальность - это не просто приятно особенность глобального интернета, это требование пользователей доверять системе. Это верно и для локальных сетей, если пользователи считают, что за ними каким-то образом шпионят, они вряд ли будут использовать сеть. Скорее всего, они будут использовать sneakernet, распечатывая информацию и перенося ее вручную, а не передавая по сети. Хотя многие люди считают, что конфиденциальность не является обоснованной проблемой, в этой области существует много обоснованных проблем. Например, в области управления информацией часто говорят: "Знание - сила". Информация о компьютере или сети дает вам определенную власть над компьютером, сетью или системой. Например, предположим, что банк настраивает автоматическое резервное копирование для определенной таблицы базы данных; когда остатки на счете, хранящемся в таблице, изменяются на определенную величину, резервное копирование запускается автоматически. Это может показаться вполне разумным вариантом резервного копирования, но оно требует исчерпания некоторого объема данных. Примечание: исчерпание данных - это информация о физических движениях людей или информация, которая может быть использована для вывода о том, что делают эти люди или эта информация. Например, если вы каждое утро едете на работу одним и тем же маршрутом, кто-то может сделать вывод, что после того, как вы проделали какую-то небольшую часть поездки в сочетании со временем суток, вы собираетесь работать. Такие же типы данных существуют и в сетевом мире; если каждый раз, в определенное время суток, через сеть передается определенный фрагмент данных определенного размера, и он случайно совпадает с определенным событием, таким как перевод денег между двумя счетами, то, когда появляются эти конкретные данные, передача должна иметь место. Просмотр, история электронной почты и другие действия в интернете-все это приводит к исчерпанию данных, которые иногда могут быть использованы для вывода содержимого потока данных, даже если поток зашифрован. Уязвимость здесь заключается в следующем: если злоумышленник создает резервную копию вместе с изменением значения учетной записи, этот человек будет точно знать, какова модель активности учетной записи. Достаточное количество таких подсказок можно превратить в целый набор планов атаки. То же самое верно и в отношении людей; знание о людях может дать вам некоторую способность влиять на людей в определенных направлениях. Хотя влияние на людей не так велико, как влияние на машины, передача власти одному человеку над другим всегда несет в себе моральные последствия, с которыми нужно обращаться осторожно. Область решений Хотя каждое решение проблем безопасности и конфиденциальности, описанных в предыдущих разделах, обычно включает в себя сложные математические вычисления, в этом разделе будут (попытаемся) описать решения без математических расчетов. Шифрование Шифрование берет блок информации (открытый текст) и кодирует его, используя некоторую форму математической операции, чтобы скрыть текст, в результате чего получается зашифрованный текст. Чтобы восстановить исходный простой текст, математические операции должны быть отменены. Хотя шифрование часто рассматривается как математическая конструкция, иногда проще начать думать о нем как о шифре подстановки с таблицей подстановок, которая меняется в зависимости от используемого ключа. Рисунок 1 иллюстрирует это. Кстати, про типы шифрования в России и за рубежом можно почитать тут. На рисунке 1 показан четырехбитовый блок информации - тривиальный пример, но все же полезный для демонстрации. Процесс шифрования концептуально представляет собой серию прямых замен: Рис. 1 Блок шифрования как таблица подстановки Если 0001 находится в исходном блоке данных (открытый текст) и используется ключ 1, то 1010 подставляется в фактический передаваемый поток (зашифрованный текст). Если 0010 обнаружен в открытом тексте и используется ключ 1, то 0100 подставляется в передаваемые данные. Если 0001 найден в открытом тексте и используется ключ 2, то в передаваемые данные подставляется 0000. Если 0110 находится в открытом тексте и используется ключ 2, то в передаваемые данные подставляется 1001. Процесс замены одного блока бит на другой называется преобразованием. Эти преобразования должны быть симметричными: они должны не только позволять шифрование открытого текста в зашифрованный текст, но они также должны позволять восстанавливать открытый текст (незашифрованный) из зашифрованного текста. В таблице подстановок этот процесс включает поиск ключа на стороне зашифрованного текста таблицы и замену эквивалента открытого текста. Размер таблицы подстановки определяется размером блока или количеством битов, кодируемых за один раз. Если, например, используется 128-битный блок, в поисковой таблице должно быть 2128 записей - действительно, очень большое количество. Этот вид пространства все еще можно быстро найти с помощью эффективного алгоритма, поэтому блок должен иметь некоторые другие особенности, кроме просто большого размера. Во-первых, шифротекстовая сторона блока подстановки должна быть как можно более случайной. Чтобы преобразование было идеальным, любой шаблон, найденный в открытом тексте, не должен быть доступен для анализа в результирующем зашифрованном тексте. Выход зашифрованного текста должен выглядеть как можно ближе к случайному набору чисел, независимо от того, какой вход. Во-вторых, блок подстановки должен быть настолько большим, насколько это практически возможно. Чем более случайным и большим является блок подстановки, тем труднее вернуться от открытого и зашифрованного текста к обнаружению используемого шаблона подстановки. Чтобы выполнить brute-force атаку против подстановки с использованием 128-битного размера блока, злоумышленник должен соотнести как можно больше из 2128 записей в блоке открытого текста с 2128 записями в блоке подстановки зашифрованного текста-если информация использует только небольшой (или разреженный) набор возможных записей из исходного 128-битного пространства, практически нет способа сделать корреляцию достаточно быстрой, чтобы сделать такую атаку практичной, учитывая, что шифрующий отправитель достаточно часто меняет свой ключ. Примечание. Когда дело доходит до размера блока, существует закон убывающей доходности; в какой-то момент увеличение размера блока не увеличивает эффективность шифра при сокрытии информации. Плотность лучше всего объяснить на примере. Предположим, что вы используете шифр прямой подстановки в английском языке, где каждая буква заменяется буквой, смещенной на четыре шага в алфавите. В этом виде (тривиального) шифра: Каждая буква А будет заменена буквой Е. Каждая буква B будет заменена буквой F. Каждая буква С будет заменена буквой G. и т.д. Теперь попробуйте зашифровать два разных предложения с помощью этого преобразования: THE SKY IS BLUE == XLI WOC MW FPYI THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG == XLI UYMGO FVSAR JSB NYQTIH SZIV XLI PEDC HSK Для злоумышленника, пытающегося выяснить, как версия предложения с зашифрованным текстом соотносится с версией открытого текста, первое предложение представляет 9 совпадающих пар букв из пространства, содержащего 26 возможных букв. Есть хороший шанс, что вы сможете угадать правильное преобразование - переместитесь на четыре шага вправо - из этого небольшого образца, но возможно, что здесь задействован какой-то "трюк", из-за которого будущие сообщения, зашифрованные с помощью этого преобразования, не будут расшифрованы правильно. Однако второе предложение - это хорошо известный пример предложения, содержащего все возможные буквы английского алфавита. Преобразование может быть проверено на соответствие каждому возможному значению во всем диапазоне ввода и вывода, что делает обнаружение преобразования тривиальным. В этом примере первое предложение будет менее плотным, чем второе. В реальных криптографических системах общая идея состояла бы в том, чтобы использовать всего несколько тысяч возможных символов из 2128 или 2512 возможных символов, что создает гораздо менее плотный набор информации для работы. В какой-то момент плотность становится достаточно низкой, преобразование - достаточно сложным, а зашифрованный текст - достаточно случайным, так что не существует практического способа вычислить взаимосвязь между входом (открытым текстом) и выходом (зашифрованный текст). В реальной жизни блоки замены не вычисляются заранее таким образом. Скорее, для вычисления значения замены в реальном времени используется криптографическая функция. Эти криптографические функции принимают входной размер блока, открытый текст, выполняют преобразование и выводят правильный зашифрованный текст. Ключ - это второй вход, который изменяет выходные данные преобразования, поэтому каждый ключ приводит к тому, что преобразование производит разные выходные данные. Если размер ключа равен 128 битам, а размер блока равен 256 битам, существует 2128 × 2256 возможных выходных комбинаций из преобразования. Рисунок 2 иллюстрирует это. На рисунке 2 каждая таблица подстановки представляет собой размер блока. Если размер блока составляет 256 бит, то в каждой таблице имеется 2256 возможных замен. Каждый ключ создает новую таблицу, поэтому, если ключ составляет 128 бит, то существует 2128 возможных таблиц. Есть два основных способа атаковать такую систему шифрования. Первый способ атаковать этот тип системы шифрования-попытаться сопоставить каждое возможное входное значение с каждым возможным выходным значением, раскрывая всю таблицу подстановок. Если входные данные представляют только небольшой набор возможных входных данных (таблица используется редко или, точнее, представляет собой разреженный массив), эта задача практически невыполнима. Если пользователь меняет свой ключ, а следовательно, и конкретную таблицу среди возможного набора таблиц, достаточно часто, нет никакого способа выполнить это сопоставление быстрее, чем изменяется ключ. Примечание. Даже в больших блоках, объединенных с преобразованиями, все еще есть потенциальные слабые места, позволяющие получить почти случайный результат-другими словами, даже если преобразование близко к идеалу. Если вы соберете 23 человека в одной комнате, есть большая вероятность, что у двух из них будет один и тот же день рождения-но это кажется иррациональным, потому что есть 365 потенциальных дней (не считая високосные года), в которые человек может родиться. Причина несоответствия между тем, что должно произойти, и тем, что происходит, заключается в следующем: в реальном мире дни рождения людей группируются по очень небольшому числу дней в течение года. Таким образом, входные данные представляют собой очень плотное "пятно" в умеренно большом наборе возможных значений. Когда это происходит, разреженность данных может работать против системы шифрования. Если небольшой набор данных повторяется в большом наборе на регулярной основе, злоумышленник может сосредоточиться только на наиболее часто используемых заменах и потенциально обнаружить содержимое сообщения, достаточное для восстановления большей части смысла. Второй способ атаковать систему шифрования такого типа - атаковать само преобразование - криптографическую функцию. Помните, что эти большие таблицы подстановки часто невозможно сгенерировать, сохранить и транспортировать, поэтому используется некоторая форма криптографической функции, чтобы принимать блок открытого текста в качестве входных данных и генерировать блок зашифрованного текста в качестве выходных данных. Если бы вы могли обнаружить эту функцию преобразования, то вы могли бы вычислить вывод таким же образом, как передатчик и приемник, и расшифровать открытый текст в реальном времени. В реальном мире эта проблема усложняется из-за: Принцип Керкхоффа, согласно которому само преобразование не должно быть секретом. Скорее, только ключ, используемый для выбора таблицы из возможных, должен храниться в секрете. По крайней мере, некоторый открытый и зашифрованный текст иногда может быть восстановлен из текущей зашифрованной передачи данных по различным причинам-возможно, ошибка, или, возможно, смысл шифрования заключается в проверке текста, а не в том, чтобы не дать тексту быть прочитанным. Учитывая эти ограничения, следует учитывать несколько ключевых моментов: Сложность вычисления ключа из открытого текста, зашифрованного текста и криптографической функции (преобразования) должна быть очень высокой. Случайность вывода криптографической функции должна быть очень высокой, чтобы снизить вероятность успешных brute-force атак - просто перебора всех возможных ключей в пространстве. Ключевое пространство должно быть большим, опять же, чтобы предотвратить успешные brute-force атаки. Качество криптографической функции определяется способностью функции выдавать максимально близкий к случайному результату практически любой вход таким образом, чтобы злоумышленник не мог обнаружить, какой ключ используется, даже если у них есть как открытый текст, так и зашифрованный текст. Таким образом, криптографические функции обычно используют ту или иную форму одной из самых сложных для вычисления задач. В частности, часто используется вычисление множителей очень больших простых чисел. Что произойдет, если вы используете 128-битный блок и у вас есть 56 бит данных для транспортировки? В этой ситуации наиболее естественным образом было бы дополнить открытый текст некоторым числом: скорее всего, всеми нулями или единицами. Качество вывода в некоторой степени зависит от разреженности ввода, чем меньше диапазон чисел используется как вход, тем более предсказуемым будет выход криптографической функции. В этом случае важно использовать заполнение, максимально приближенное к случайному. Существует целая область изучения того, как дополнять блоки открытого текста, чтобы "помочь" криптографической функции создавать зашифрованный текст, максимально приближенный к случайному. Несколько раундов шифрования Одну и ту же информацию можно обрабатывать с помощью криптографической функции несколько раз. Например, если у вас есть 128-битный блок и 128-битный ключ, вы можете: Возьмите открытый текст и с помощью ключа вычислите зашифрованный текст. Назовите это ct1. Возьмите ct1 и с помощью ключа вычислите шифротекст второго раунда; назовите это ct2. Возьмите ct2 и, используя ключ, вычислите шифротекст третьего раунда; назовите это ct3. Фактический передаваемый шифротекст будет последним ct3. К чему приводит этот процесс? Помните, что качество процесса шифрования связано со случайностью выхода по отношению к входу. Каждый раунд во многих ситуациях лишь немного увеличивает случайность. В этом процессе есть точка уменьшения отдачи; обычно после третьего раунда данные не становятся "более случайными", и, следовательно, больше раундов, по сути, просто тратят вычислительную мощность и время для очень небольшого выигрыша. Криптография с открытым и закрытым ключом Существует класс криптографических функций, которые могут преобразовывать открытый текст в зашифрованный текст и обратно, используя два разных ключа. Эта возможность полезна, когда вы хотите иметь возможность зашифровать блок данных одним ключом и позволить кому-то другому расшифровать данные, используя другой ключ. Ключ, который вы держите в секрете, называется закрытым ключом, а ключ, который вы передаете другим или публикуете, называется открытым ключом. Например, чтобы доказать, что вы являетесь фактическим отправителем конкретного файла, вы можете зашифровать файл своим закрытым ключом. Теперь любой человек с вашим открытым ключом может расшифровать файл, который мог быть отправлен только вами. Обычно вы не шифруете весь блок данных своим закрытым ключом (на самом деле большинство систем, использующих пары ключей, спроектированы так, что вы не можете этого сделать). Скорее, с помощью вашего закрытого ключа создается подпись, которая может быть проверена с помощью вашего открытого ключа. Чтобы убедиться, что только человек, которому вы отправляете данные, может что-то прочитать, вы можете зашифровать некоторые данные своим открытым ключом, опубликовать их, и только человек с правильным закрытым ключом может их расшифровать. Такие системы называют криптографией с открытым ключом (иногда названия, которые выбирают инженеры, возможно, слишком очевидны), или асимметричной криптографией. В криптографии с открытым ключом открытый ключ часто "выпускается на волю"; это то, что может найти любой, у кого есть доступ к ключевому серверу или другому источнику. Альтернативой криптографии с открытым ключом является криптография с симметричным ключом. В криптографии с симметричным ключом отправитель и получатель используют один ключ, который используется как для шифрования, так и для расшифровки данных (общий секрет). Учитывая, что общие секреты (очевидно) сложно создавать и использовать, почему вообще используется криптография с симметричным ключом? При выборе между симметричной криптографией и криптографией с открытым / закрытым ключом необходимо учитывать два основных компромисса: Сложность обработки: системы криптографии с открытым ключом обычно требуют гораздо большей вычислительной мощности для шифрования и расшифровки передаваемых данных. Системы с симметричными ключами, как правило, намного проще разрабатывать и развертывать, не требуя больших вычислительных мощностей и времени. Из-за этого криптография с открытым ключом часто используется для шифрования очень небольших объемов данных, таких как закрытый ключ. Безопасность: криптография с открытым ключом обычно требует отчасти уникального набора механизмов математического преобразования. Системы с симметричным ключом, как правило, имеют более широкий диапазон доступных преобразований, которые также являются более сложными и, следовательно, более безопасными (они обеспечивают большую случайность на выходе и, следовательно, их труднее взломать). С учетом этих компромиссов и реальных требований есть место для обоих типов систем.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59