Esp расшифровка: Аббревиатуры в нефтегазе

Содержание

Аббревиатуры в нефтегазе

  1. Статьи
  2. Что нужно знать Переводчику
  3. Нефтегазовые аббревиатуры. Введение в предмет

Лина Белоногова, практикующий переводчик-синхронист с 10-летним стажем (английский — русский,нефтегазовая отрасль), раскрывает полезный список нефтегазовых аббревиатур.

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

“At TBT it was discussed that BHA will be RIH with slower ROP that was indicated in the JSA”. Встречали такое количество аббревиатур в одном предложении?

Дело в том, что традиционно в «нефтегазе» многочисленные процессы, технологии и разновидности оборудования имеют сокращенные названия или обозначаются аббревиатурами.

Применение аббревиатур экономит время. Согласитесь, проще сказать «АБР» вместо «Анализ безопасности работ». Или «ЭЦН» вместо «электроцентробежный насос».

Правда, экономия эта относительная. Потому что одна и та же аббревиатура может соответствовать совершенно разным понятиям! Например, «ESP» означает «Electrical Submersible Pump (электроцентробежный насос)», а также – «Ensure Safe Production (Обеспечение безопасной добычи)». Или «ПО» — это и «Программное обеспечение» и «Подрядная организация».

Чтобы правильно понять ту или иную аббревиатуру при переводе нужно обратиться  к контексту, но это, к сожалению, не панацея. И чаще всего переводчику приходится «включать голову» и разгадывать ребусы…

 

Полезные ресурсы для перевода нефтегазовых аббревиатур

Мой совет, столкнувшись с сокращенными наименованиями, просмотрите ресурсы, где можно найти расшифровку нефтегазовых аббревиатур. Вот несколько полезных веб-сайтов:

  • • http://www.neftepedia.ru/dir/
  • • http://www.megapetroleum.ru/sokrashheniya-naimenovanij-v-neftyanoj-promyshlennosti/
  • • http://oilgasinform.ru/science/glossary/

Правда, есть одно «но». Как правило, на таких ресурсах аббревиатуры приведены без перевода. К тому же, в этих словарях очень много аббревиатур общего характера, которые на практике довольно редко встречаются при переводе документации или на совещаниях.

Так что некоторые специфические аббревиатуры вы там точно не найдете.

 

Обзор наиболее распространенных нефтегазовых аббревиатур

Чтобы помочь тем, кто специализируется на нефтегазовом переводе, я составила шпаргалку: краткий обзор наиболее распространенных нефтегазовых аббревиатур и разделила их на категории.

Небольшое уточнение. Пожалуйста, не забывайте, что наличие аббревиатуры в одном языке вовсе не означает ее наличие в другом.

Производственные объекты

Аббревиатура

Расшифровка

Перевод

УПН

Установка подготовки нефти

CPF

Central Processing Facility

ПСН

Пункт сдачи нефти

CTF

Crude Transfer Facility

УПСВ

Установка предварительного сброса воды

DHP

Dehydration plant

УКПГ

Установка комплексной подготовки газа

GPP

Gas processing/treatment plant

ГТЭС

Газотурбинная электростанция

PGP

Power Generation Plant

БКНС

Блочная кустовая насосная станция

BKNS

Water injection modular pump station

WP

Well pad

 

Кустовая площадка

MPPS

Multiphase pumping station

МФНС

Мультифазная насосная станция

 

Производственные процессы

Аббревиатура

Расшифровка

Перевод

ГИС

Геофизические исследования скважин

 

Well logging

ГРР

Геолого-разведочные работы

GE

Geology&Exploration

КРС

Капитальный ремонт скважин

CWI

Completion and well intervention

ПРС

Подземный ремонт скважин

 

Well servicing

ППД

Поддержание пластового давления

WI

Water injection

ДНГ

Добыча нефти и газа

 

Oil and gas production

SD

Shut down

 

Остановка

SU

Start up

 

Запуск

 

Названия оборудования

Аббревиатура

Расшифровка

Перевод

ЭЦН

Электроцентробежный насос

ESP

Electric submersible pump

БУ

Буровая установка

 

Drilling rig

БРЭ

Блок разделения эмульсии

ETU

Emulsion treatment unit

УДХ

Узел дозирования химреагентов

CDU

Chemical dosage unit

АГЗУ

Автоматическая групповая замерная установка

 

Wellpad metering unit

OHL

Overhead line

ЛЭП

Линия электропередач

ESD

Emergency shut down

ПАЗ

Система противоаварийной защиты

 

Технологический транспорт

Аббревиатура

Расшифровка

Перевод

ППУ

Паропередвижная установка

 

Steam truck

ЦА

Цементировочный агрегат

 

Cement truck

ATV

All terrain vehicle

 

Вездеход (ГАЗушка)

 

Документация

Аббревиатура

Расшифровка

Перевод

НД

Наряд- допуск

PtW

Permit -to-work

АБР

Анализ безопасности работ

JSA

Job safety analysis

ППР

Проект производства работ

 

Method statement

ПЛА

План ликвидации аварий

ERP

Emergency response plan

TBT

Tool-box-talk

 

Инструктаж перед началом работ

HO

Handover

 

Документ о передаче дел (от вахте к вахте или от смены к смене)

 

Конечно, это далеко не весь список нефтегазовых аббревиатур, и в одну статью все сокращения точно не уместить. Но уверена, знание этих аббревиатур значительно облегчит вашу переводческую жизнь 🙂

 

 

Лина Белоногова проработала более 7 лет в нефтегазовой отрасли. Работала с такими компаниями как: «Шелл», «Газпром», «Салым Петролеум», «Лукойл», «Роснефть», «Интегра», «Башнефть», Baker Hughes, Halliburton и др., а также выполняла переводы для Государственной Думы РФ и Европейской Комиссии. Кроме того, Лина Белоногова — основатель LinguaOil, Школы нефтегазового перевода, а также спикер и участник Translation Forum Russia.

 

Все статьи

Устройство и принцип действия системы ABS ESP

Как работает система ESP?

ESP — Система стабилизации курсовой уствойчивости автомобиля.

В каких дорожных ситуациях работает система ESP BOSCH

  

Тест драйв автомобиля с системой и без системы ESP BOSCH.

 

Каким образом происходит обработка информации ЭБУ ESP BOSCH

 

Принцип действия системы ESP BOSCH

 

ESP — «система стабилизации курсовой устойчивости автомобиля».

Данная система разработана с целью помочь водителю в сложных дорожных ситуациях, как, например, при внезапном появлении животного на дороге, уменьшить перегрузки и избежать нестабильности в управлении автомобилем. При этом ESP не помогает перехитрить законы природы, открывая, таким образом, дорогу лихачам. . Аккуратный стиль вождения и внимание к другим участникам движения по- прежнему остаются основными задачами водителя. В этой брошюре мы покажем Вам, как ESP работает вместе с уже зарекомендовавшей себя антиблокировочной системой ABS и «родственными» ей ASR, EDS, EBV и MSR и какие варианты систем устанавливаются нами на различных транспортных средствах

Взгляд в прошлое.

С развитием автомобилестроения на рынке появляются все более мощные автомобили. Вследствие чего перед конструкторами встает вопрос, как сделать эту технику управляемой для «нормального», среднестатистического водителя. Выражаясь иначе: какие системы необходимо разработать, чтобы обеспечить оптимальное торможение и избавить водителя от перегрузок? Уже в двадцатые и сороковые годы появились первые механические предшественники системы ABS, которые, вследствие своей повышенной инерционности, не смогли полностью выполнить поставленную задачу. После революции в области электротехники в 60-х годах, системы ABS стали доступнее и продолжили свое развитие уже на основе цифровой техники, так что в настоящее время не только ABS, но и такие системы, как EDS, EBV, ASR и MSR являются обычным оснащением автомобиля. Вершиной развития данных систем является ESP, где инженеры пошли еще дальше.

Что обеспечивает ESP?

Электронно-стабилизационная программа является активным средством безопасности автомобиля. В данной связи можно говорить и о системе динамики. Проще говоря, это антипробуксовочная система. Она распознает опасность пробуксовки и намеренно компенсирует разворот автомобиля.

Преимущества:

  • Это не отдельная система, она устанавливается на другие тяговые системы, таким образом, вбирая их лучшие качества.
  • С водителя снимается нагрузка.
  • Автомобиль остается под контролем.
  • Риск несчастного случая вследствие несоразмерной реакции водителя на происходящее уменьшается.

Краткость – сестра таланта

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

ABS Антиблокировочная система Препятствует блокировке колес при торможении. Несмотря на высокую эффективность торможения, автомобиль остается стабильным и управляемым.

ASR Система предотвращения буксования ведущих колес Предотвращает проскальзывание ведущих колес, например, на льду или гравии путем воздействия на тормоза или управление двигателем.

EBV Электронное перераспределение тормозной силы Предотвращает перетормаживание задних колес, прежде чем начнет функционировать ABS, или в том случае, если последняя вышла из строя.

EDS Электронная блокировка дифференциала Позволяет начать движение на разных участках дороги путем торможения проскальзывающих колес

ESP Электронно-стабилизационная программа Предотвращает возможную тряску автомобиля с помощью воздействия на тормоза и управление двигателем. Используются также следующие сокращения: ASMS – автоматическая стабилизационная система управления DSC – динамический стабилизационный контроль FDR – регулировка динамики VSA – автомобильное стабилизационное устройство VSC – стабилизационный контроль автомобиля

MSR Контроль момента буксировки Препятствует блокировке ведущих колес в случае торможения двигателем, когда внезапно отпускается педаль газа, либо происходит торможение с включенной передачей.

Физические основы.

Силы и моменты Любое тело подвергается воздействию различных сил и моментов. Если сумма действующих на тело сил и моментов равна нулю, тело находится в состоянии покоя, если она не равна нулю, тело движется в направлении силы, являющейся результатом сложения сил. Наиболее известна сила притяжения. Она действует по направлению к центру Земли. Если тело массой в один килограмм поместить на пружинные весы, чтобы измерить действующие на него силы, будет показано значение силы притяжения в 9,81 ньютона.

Прочие силы, действующие на автомобиль, это: — тяговое усилие (1), — сила торможения (2), которая действует в направлении, противоположном направлению силы тяги — боковые силы (3), которые поддерживают управляемость автомобиля, и — сила сцепления (4), которые, помимо прочего, является следствием трения и притяжения Земли.

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

Совместное действие нескольких из этих сил легко описать с помощью круга трения. Радиус окружности обуславливается силой сцепления шин с дорожным полотном. Чем меньше сцепление, тем меньше радиус (а), при хорошем сцеплении радиус больше (b). Основу круга трения составляет параллелограмм сил (боковая сила (S), сила торможения или тяговое усиление (В) и результирующая общая сила (G)). Пока общая сила остается внутри круга, автомобиль находится в состоянии стабильности (I). Как только общая сила выходит за границу круга, автомобиль теряет управляемость (II).

Обратимся к схеме взаимодействия сил:

1. Сила торможения и боковая сила рассчитаны таким образом, чтобы результирующая сила оставалась в пределах круга. Автомобиль легко управляем.

 

 

2. Увеличим силу торможения. Боковая сила уменьшается.

 

 

 

 

3. Результирующая сила равна силе торможения. Колесо блокируется. Вследствие отсутствия действия боковой силы автомобиль становится неуправляем. Аналогичная ситуация возникает в отношении тягового усилия и боковой силы. Если значение боковой силы приближается к нулю за счет максимального увеличения тягового усиления, ведущие колеса начинают пробуксовывать.


Режим регулирования

Чтобы система ESP могла влиять на критические ситуации, она должна распознавать два момента: — куда и с какой скоростью водитель направляет автомобиль? — куда автомобиль едет?

Ответ на первый вопрос система получает от сенсора угла рулевого управления (1) и датчиков числа оборотов на колесах (2).

Ответ на второй вопрос система получает от измерителя степени рыскания (3) и поперечного ускорения (4).

Если поступающая информация по двум пунктам не совпадает, система ESP распознает ситуацию как критическую и вступает в действие.

Критическая ситуация может выражаться в двух возможных манерах вождения:

1. В недостаточности внимания к управлению автомобилем. С помощью направленного действия на задний тормоз на внутренней траектории поворота и воздействия на управление двигателем и коробкой передач система ESP предотвращает вынос автомобиля за пределы поворота.

2. В излишнем внимании к управлению автомобилем. С помощью направленного действия на передний тормоз на внешней траектории поворота и воздействия на управление двигателем и коробкой передач система ESP предотвращает боковой занос автомобиля.

Регулировка динамики

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

Основной принцип знаком Вам по гусеничным машинам.

Если машина должна повернуть налево, находящаяся внутри поворота цепь тормозится, а внешней сообщается ускорение.

При возвращении на начальную траекторию бывшая «внутренняя» гусеница ускоряется, а «внешняя» тормозится.

По соответствующему принципу работает и ESP. Для начала рассмотрим пример автомобиля, не оборудованного системой ESP.

Автомобиль должен уклониться от внезапно возникшего препятствия. Водитель сначала резко поворачивает налево, а вслед за этим вновь направо. Создается вибрация, и задняя часть срывается с траектории. Разворот вокруг вертикальной оси уже не может быть предотвращен водителем.

Теперь рассмотрим пример автомобиля, оборудованного системой ESP.

Водитель пытается уклониться от препятствия. По показаниям сенсоров система ESP распознает нестабильное состояние автомобиля. Система рассчитывает необходимые меры: левое заднее колесо тормозится. Таким образом, предотвращается занос автомобиля. Боковая сила, действующая на передние колеса, сохраняется.

В то время как автомобиль совершает левый поворот, водитель поворачивает направо. ESP тормозит переднее правое колесо. Задние колеса вращаются свободно, чтобы обеспечить оптимальное воздействие боковой силы на заднюю ось.

Имевшая место смена полосы может привести к вибрации. Чтобы предотвратить занос задней части автомобиля, тормозится левое переднее колесо. В особо критических ситуациях колесо может практически блокироваться, чтобы ограничить воздействие боковой силы на переднюю ось.

После того, как автомобиль преодолел нестабильность, ESP прекращает воздействие на управление.

Система и ее компоненты Как уже было упомянуто, электронно- стабилизационная система устанавливается на распространенные и употребляемые противопробуксовочные системы. Кроме того, она существенно расширяет их действие. Система может распознавать и нейтрализовать нестабильные состояния автомобиля, как, например, пробуксовку. Чтобы обеспечить эту процедуру, необходимы некоторые дополнительные детали. Прежде чем рассмотреть строение ESP, ознакомимся с системой в целом.

Наиболее частые неисправности системы ESP

Если лампочка неисправности ABS ESP загорается и тухнет периодически, или горит постоянно, то причина в следующих элементах:

  • Неисправность датчика скорости частоты вращения колеса
  • Перетертость, разрыв электропроводки жгута датчика
  • Загрязнение или износ зубчатого венца датчика
  • Износ ступичного подшипника
  • Возможно, требуется ремонт электронного блока управления.

Расшифровка сообщений бортового компьютера

Access to the vehicleДоступ в автомобиль
Action impossible while drivingНевозможно выполнить операцию во время движения
All doorsВсе двери
Ambiance lightingПодсветка
Automatic door locking activated /deactivatedАвтоматическая блокировка дверей активирована / дезактивирована
Automatic handbrakeАвтоматический стояночный тормоз
Automatic headlamp adjustment faultyАвтоматическая настройка передних фар не исправна
Automatic headlamp lighting deactivatedАвтоматическое включение фар дезактивировано
Automatic screen wipe activated/deactivatedАвтоматический режим работы стеклоочистителя активирован/ деактивирован
BonnetКапот
BootБагажное отделение
Boot permanent lockingПостоянное закрытие двери багажного отделения
Check engine oil levelПроверьте уровень моторного масла
Closing in progressПодъем
ComfortКомфорт
Coolant circuit level too lowУровень охлаждающей жидкости слишком мал
Cruise control not possible: speed too lowИспользование круиз-контроля невозможно: скорость слишком мала
Daytime-running lampsЛампы дневного освещения (постоянно включенные лампы ближнего света)
Daytime-running lamps faultyЛампы дневного света не исправны
Depollution system faultyСистема защиты окружающей среды не исправна
Direction indicators) faultyЛампа (ы) указателей поворота не исправна (ы)
Directional headlampsРегулирующиеся фары
DoorДверь
DriverВодитель
Driving assistanceПомощь при вождении
Driving position openingОткрывание водительской двери
ESP system activated/deactivatedСистема ESP активирована/ дезактивирована
Flip actionНажатие на пульт ДУ
Foglamp bulb(s) faultyЛампа(ы) противотуманных фар не исправна (ы)
Foot must be on brakeНеобходимо нажать на педаль тормоза
Front left hand door openПередняя левая дверь открыта
Front LH tyre deflatedПередняя левая шина спущена
Front LH tyre not monitoredПередняя левая шина; нет информации
Front LH tyre puncturedПрокол передней левой шины
Front RH tyre deflatedПередняя правая шина спущена
Front RH tyre not monitoredпередняя правая шина; нет информации
Front RH tyre puncturedПрокол передней правой шины
Front right hand door openПередняя правая дверь открыта
Fuel circuit deactivatedВыключена подача топлива
Fuel tank access not properly lockedКрышка бензобака неплотно закрыта
Guide me home lampsВыключение фар с задержкой
Handbrake !Стояночный тормоз!
High positionВысокое расположение
Interior lightingВнутреннее освещение
Lamps left on !Не выключены фары!
Lane Departure Warning System activated/deactivaСистема предупреждения о непроизвольном пересечении осевой линии дорожной разметки активирована/дезактивирована
Left hand stop lamp bulb faultyЗадний левый стоп сигнал не исправен
Lighting and signallingОсвещение
Low positionНизкое расположение
Main beam bulb(s) faultyЛампа (ы) дальнего света не исправна (ы)
Max. speed :Максимальная скорость
Max. tightening of parking brakeМаксимально эффективное положение стояночного тормоза
Measure invalid|Speed>20 km/hИзмерение не возможно. Скорость более 20км/ч
Measurement in progress|Max. speed = 12 mphИзмерение в процессе (максимальная скорость=12км/ч
Measurement in progress|Max. speed = 20 km/hИзмерение в процессе (максимальная скорость-20км/ч
Mid-high positionСреднее расположение
More than one tyre not monitoredБолее чем по одной шине нет информации
More than one tyre deflatedСпуск более одной шины
No faultОшибки не обнаружены
Normal positionНормальное расположение
Opening in progressОпускание
Parking assistanceПарковочная система
Parking assistance deactivatedПомощь при парковке дезактивирована
Parking brake on/offСтояночный тормоз затянут/отпущен
Parking difficultПарковка затруднена
Parking lamps activatedГабаритные огни включены
Parking not advisedПарковка не рекомендована
Particle filter additive level too lowНизкий уровень присадки в дизтопливе
Particle filter cloggingЗасорение сажевого фильтра
Place automatic gearbox in position “P”Поместите рычаг АКПП в позицию “Р”
Presence of key in ignitionКлюч в замке зажигания
RangeАвтономия
Rear left hand door openЗадняя левая дверь открыта
Rear LH tyre deflatedЗадняя левая шина спущена
Rear LH tyre not monitoredЗадняя левая шина; нет информации
Rear LH tyre puncturedПрокол задней левой шины
Rear RH tyre deflatedЗадняя правая шина спущена
Rear RH tyre not monitoredЗадняя правая шина; нет информации
Rear RH tyre puncturedПрокол задней правой шины
Rear right hand door openЗадняя правая дверь открыта
Rear screenЗаднее стекло
Rear wipe in reverse gearВключение заднего стеклоочистителя при включении задней передачи
Request not grantedНеразрешенный запрос
Right hand reversing lamp bulb faultyСигнал заднего хода не функционирует
Right hand stoplamp bulb faultyЗадний правый стоп сигнал не исправен
Risk of particle filter cloggingРиск засорения сажевого фильтра
Screen wash fluid level too lowУровень омывающей жидкости недостаточный
Sidelamp bulb(s) faultyЛампа(ы) габаритных, огней не исправна (ы)
Space available:/Choice of side by indicatorsИзмерение доступного места для парковки: Выбор со стороны включенных указателей поворота
Sport suspension mode activated, deactivatedРежим спортивной настройки подвески активирован\дезактивирован
Tyre(s) punctured|Max. speed = 80 km/hШина проколота (максимальная скорость=80км/ч)
Vehicle lightingВнешнее освещение
Утилита для создания разделов

NVS — ESP32

Введение

Утилита nvs_flash / nvs_partition_generator / nvs_partition_gen.py создает двоичный файл на основе пар ключ-значение, представленных в файле CSV. Двоичный файл совместим с архитектурой NVS, определенной в энергонезависимом хранилище. Эта утилита идеально подходит для создания двоичного BLOB-объекта, содержащего данные, специфичные для ODM / OEM, которые могут быть прошиты извне во время производства устройства. Это позволяет производителям создавать множество экземпляров одной и той же микропрограммы приложения с настраиваемыми параметрами для каждого устройства, такими как серийный номер.

Предварительные требования

Чтобы использовать эту утилиту в режиме шифрования, установите следующие пакеты:

Все необходимые пакеты включены в requirements. txt в корне каталога esp-idf.

Формат файла CSV

Каждая строка файла .csv должна содержать 4 параметра, разделенных запятой. В таблице ниже представлено описание каждого из этих параметров.

No.

Параметр

Описание

Банкноты

1

Ключ

Ключ данных. К данным можно будет получить доступ позже из приложение, использующее этот ключ.

2

Тип

Поддерживаемые значения: файл , данные и пространство имен .

3

Кодировка

Поддерживаемые значения: u8 , i8 , u16 , i16 , u32 , i32 , u64 , i64 , строка , hex2bin , base64 и двоичный . Это определяет, как фактические значения данных кодируются в полученный двоичный файл. Разница между строкой и двоичная кодировка заключается в том, что строка данных завершается с символом NULL, тогда как двоичные данные — нет.

На данный момент для файла типа , только hex2bin , base64 , string , и двоичное кодирование поддерживается.

4

Значение

Значение данных.

Ячейки Encoding и Value для пространства имен тип поля должен быть пустым. Кодировка и значение пространства имен является фиксированным и не настраивается.Любые значения в этих ячейках игнорируются.

Примечание

Первой строкой файла CSV всегда должен быть заголовок столбца, и его нельзя настроить.

Ниже приведен пример дампа такого CSV-файла:

 ключ, тип, кодировка, значение <- заголовок столбца
namespace_name, namespace ,, <- Первая запись должна иметь тип "пространство имен"
ключ1, данные, u8,1
ключ2, файл, строка, / путь / к / файлу
 

Примечание

Убедитесь, что нет без пробелов :

Запись NVS и ассоциация пространства имен

Когда в CSV-файле встречается запись пространства имен, каждая следующая запись будет рассматриваться как часть этого пространства имен до тех пор, пока не будет найдена следующая запись пространства имен. На этом этапе все следующие записи будут рассматриваться как часть нового пространства имен.

Примечание

Первой записью в файле CSV всегда должна быть запись пространства имен .

Поддержка многостраничных BLOB-объектов

По умолчанию двоичным BLOB-объектам разрешено занимать несколько страниц, и они записываются в формате, указанном в разделе «Структура записи». Если вы собираетесь использовать старый формат, утилита предоставляет возможность отключить эту функцию.

Запуск утилиты

Использование :

 питон nvs_partition_gen.py [-h] {сгенерировать, сгенерировать-ключ, зашифровать, расшифровать} ...

Необязательные аргументы:
+ ----- + ------------ + ------------------------------ ---------------------------------------- +
| Нет | Параметр | Описание |
+ ===== + ============ + ============================== ======================================== +
| 1 | -h, --help | показать это справочное сообщение и выйти |
+ ----- + ------------ + ------------------------------ ---------------------------------------- +

Команды:
        Запустите nvs_partition_gen. py {command} -h для получения дополнительной помощи
+ ----- + -------------- + ---------------------------- ---------------------------------------- +
| Нет | Параметр | Описание |
+ ===== + ============== + ============================ ======================================== +
| 1 | генерировать | Создать раздел NVS |
+ ----- + -------------- + ---------------------------- ---------------------------------------- +
| 2 | сгенерировать ключ | Сгенерировать ключи для шифрования |
+ ----- + -------------- + ---------------------------- ---------------------------------------- +
| 3 | зашифровать | Создать зашифрованный раздел NVS |
+ ----- + -------------- + ---------------------------- ---------------------------------------- +
| 4 | расшифровать | Расшифровать зашифрованный раздел NVS |
+ ----- + -------------- + ---------------------------- ---------------------------------------- +
 

Для создания раздела NVS (по умолчанию):

Использование :

 питон nvs_partition_gen. py generate [-h] [--version {1,2}] [--outdir OUTDIR]
                                     размер ввода вывода

Позиционные аргументы:
+ -------------- + ---------------------------------- ------------------------------------ +
| Параметр | Описание |
+ ============== + ================================== ==================================== +
| ввод | Путь к файлу CSV для анализа |
+ -------------- + ---------------------------------- ------------------------------------ +
| выход | Путь к выходному двоичному файлу NVS |
+ -------------- + ---------------------------------- ------------------------------------ +
| размер | Размер раздела NVS в байтах (должен быть кратен 4096) |
+ -------------- + ---------------------------------- ------------------------------------ +


Необязательные аргументы:
+ ----------------- + ------------------------------- ------------------------------------- +
| Параметр | Описание |
+ ================= + =============================== ===================================== +
| -h, --help | показать это справочное сообщение и выйти |
+ ----------------- + ------------------------------- ------------------------------------- +
| --version {1,2} | Установить версию многостраничного большого двоичного объекта. |
| | Версия 1 - поддержка многостраничных BLOB-объектов отключена. |
| | Версия 2 - включена поддержка многостраничных BLOB-объектов. |
| | По умолчанию: Версия 2 |
| | |
+ ----------------- + ------------------------------- ------------------------------------- +
| --outdir OUTDIR | Каталог вывода для хранения созданных файлов |
| | (По умолчанию: текущий каталог) |
+ ----------------- + ------------------------------- ------------------------------------- +
 

Вы можете запустить утилиту для создания раздела NVS, используя следующую команду: Образец CSV-файла предоставляется вместе с утилитой:

 питон nvs_partition_gen.py сгенерировать sample_singlepage_blob.csv sample.bin 0x3000
 

Для создания только ключей шифрования:

Использование :

 python nvs_partition_gen.py сгенерировать ключ [-h] [--keyfile KEYFILE]
                                         [--outdir OUTDIR]

Необязательные аргументы:
+ -------------------- + ---------------------------- ------------------------------------------ +
| Параметр | Описание |
+ ==================== + ============================ ========================================== +
| -h, --help | показать это справочное сообщение и выйти |
+ -------------------- + ---------------------------- ------------------------------------------ +
| --keyfile KEYFILE | Путь к выходному файлу ключей шифрования |
+ -------------------- + ---------------------------- ------------------------------------------ +
| --outdir OUTDIR | Каталог вывода для хранения созданных файлов. |
| | (По умолчанию: текущий каталог) |
+ -------------------- + ---------------------------- ------------------------------------------ +
 

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

 python nvs_partition_gen.py сгенерировать ключ
 

Для создания зашифрованного раздела NVS:

Использование :

 питон nvs_partition_gen.py encrypt [-h] [--version {1,2}] [--keygen]
                                    [--keyfile KEYFILE] [--inputkey INPUTKEY]
                                    [--outdir OUTDIR]
                                    размер ввода вывода

Позиционные аргументы:
+ -------------- + ---------------------------------- ------------------------------------ +
| Параметр | Описание |
+ ============== + ================================== ==================================== +
| ввод | Путь к файлу CSV для анализа |
+ -------------- + ---------------------------------- ------------------------------------ +
| выход | Путь к выходному двоичному файлу NVS |
+ -------------- + ---------------------------------- ------------------------------------ +
| размер | Размер раздела NVS в байтах (должен быть кратен 4096) |
+ -------------- + ---------------------------------- ------------------------------------ +


Необязательные аргументы:
+ --------------------- + --------------------------- ----------------------------------------- +
| Параметр | Описание |
+ ===================== + =========================== ========================================= +
| -h, --help | показать это справочное сообщение и выйти |
| | |
+ --------------------- + --------------------------- ----------------------------------------- +
| --version {1,2} | Установить версию многостраничного большого двоичного объекта. |
| | Версия 1 - поддержка многостраничных BLOB-объектов отключена. |
| | Версия 2 - включена поддержка многостраничных BLOB-объектов. |
| | По умолчанию: Версия 2 |
+ --------------------- + --------------------------- ----------------------------------------- +
| --keygen | Генерирует ключ для шифрования раздела NVS |
+ --------------------- + --------------------------- ----------------------------------------- +
| --keyfile KEYFILE | Путь к выходному файлу ключей шифрования |
+ --------------------- + --------------------------- ----------------------------------------- +
| --inputkey INPUTKEY | Файл с ключом для шифрования раздела NVS |
+ --------------------- + --------------------------- ----------------------------------------- +
| --outdir OUTDIR | Каталог вывода для хранения созданных файлов |
| | (По умолчанию: текущий каталог) |
+ --------------------- + --------------------------- ----------------------------------------- +
 

Вы можете запустить утилиту для шифрования раздела NVS, используя следующую команду: Образец CSV-файла предоставляется вместе с утилитой:

Примечание

Ключ шифрования следующего формата / keys / keys- . bin создан.

Примечание

Создается ключ шифрования следующего формата: /keys/sample_keys.bin .

Примечание

Этот недавно созданный файл с ключами шифрования в каталоге ключей / совместим со структурой разделов ключей NVS. Обратитесь к разделу ключей NVS для более подробной информации.

Для расшифровки зашифрованного раздела NVS:

Использование :

 питон nvs_partition_gen.py decrypt [-h] [--outdir OUTDIR] ввод ключа вывода

Позиционные аргументы:
+ -------------- + ---------------------------------- ------------------------------------ +
| Параметр | Описание |
+ ============== + ================================== ==================================== +
| ввод | Путь к зашифрованному файлу раздела NVS для анализа |
+ -------------- + ---------------------------------- ------------------------------------ +
| ключ | Путь к файлу с ключами для расшифровки |
+ -------------- + ---------------------------------- ------------------------------------ +
| выход | Путь к выходному расшифрованному двоичному файлу |
+ -------------- + ---------------------------------- ------------------------------------ +


Необязательные аргументы:
+ --------------------- + --------------------------- ----------------------------------------- +
| Параметр | Описание |
+ ===================== + =========================== ========================================= +
| -h, --help | показать это справочное сообщение и выйти |
+ --------------------- + --------------------------- ----------------------------------------- +
| --outdir OUTDIR | Каталог вывода для хранения созданных файлов |
| | (По умолчанию: текущий каталог) |
+ --------------------- + --------------------------- ----------------------------------------- +
 

Вы можете запустить утилиту для расшифровки зашифрованного раздела NVS, используя следующую команду:

 питон nvs_partition_gen. py расшифровать sample_encr.bin sample_keys.bin sample_decr.bin
 
Вы также можете указать номер версии формата:

Поддержка многостраничных BLOB-объектов отключена (версия 1):

Вы можете запустить утилиту в этом формате, установив для параметра версии значение 1, как показано ниже. Образец CSV-файла предоставляется вместе с утилитой:

 python nvs_partition_gen.py сгенерировать sample_singlepage_blob.csv sample.bin 0x3000 --version 1
 

Поддержка многостраничных BLOB-объектов включена (версия 2):

Вы можете запустить утилиту в этом формате, установив для параметра версии значение 2, как показано ниже.Образец CSV-файла предоставляется вместе с утилитой:

 python nvs_partition_gen.py сгенерировать sample_multipage_blob.csv sample.bin 0x4000 --version 2
 

Примечание

Минимальный необходимый размер раздела NVS составляет 0x3000 байт.

Примечание

При прошивке двоичного файла на устройство убедитесь, что он соответствует sdkconfig приложения.

Практическая криптография Интернета вещей на Espressif ESP8266

Чипсет Espressif ESP8266 превращает платы для разработки «Интернета вещей» за три доллара в экономическую реальность.Согласно популярному сайту автоматической сборки прошивки nodeMCU-builds, за последние 60 дней было выпущено 13 341 кастомная сборка прошивки для этой платформы. Из них только 19% имеют поддержку SSL, а 10% включают модуль криптографии.

Мы часто критически относимся к недостаточной безопасности в секторе Интернета вещей и часто покрываем ботнеты и другие атаки, но будем ли мы поддерживать наши проекты в соответствии с теми же стандартами, которые мы требуем? Остановимся ли мы на выявлении проблемы или сможем принять участие в ее решении?

В этой статье основное внимание будет уделено применению функций шифрования AES и авторизации хэша к протоколу MQTT с использованием популярного чипа ESP8266 с прошивкой NodeMCU.Наша цель не в том, чтобы предоставить панацею для копирования / вставки, а в том, чтобы пройти процесс шаг за шагом, выявляя проблемы и решения по ходу дела. В результате получается система, которая обеспечивает сквозное шифрование и проверку подлинности, предотвращающую подслушивание и подделку достоверных данных без использования SSL.

Нам известно, что существуют также более мощные платформы, которые могут легко поддерживать SSL (например, Raspberry Pi, Orange Pi, FriendlyARM), но давайте начнем с самого дешевого оборудования, которое у большинства из нас есть, и протокола, подходящего для многих из наших проекты.AES - это то, что вы можете реализовать на AVR, если вам нужно.

Теория

MQTT - это облегченный протокол обмена сообщениями, который работает поверх TCP / IP и часто используется для проектов Интернета вещей. Клиентские устройства подписываются или публикуются на темы (например, датчики / температура / кухня), и эти сообщения ретранслируются брокером MQTT. Более подробная информация о MQTT доступна на их веб-странице или в нашей серии статей для начинающих.

Протокол MQTT не имеет каких-либо встроенных функций безопасности, кроме аутентификации по имени пользователя и паролю, поэтому обычно шифрование и аутентификация в сети с помощью SSL. Однако SSL может быть довольно требовательным для ESP8266, и когда он включен, у вас остается гораздо меньше памяти для вашего приложения. В качестве облегченной альтернативы вы можете зашифровать только отправляемые полезные данные и использовать идентификатор сеанса и хеш-функцию для аутентификации.

Простой способ сделать это - использовать Lua и модуль NodeMCU Crypto, который включает поддержку алгоритма AES в режиме CBC, а также хэш-функцию HMAC. Правильное использование шифрования AES требует трех вещей для создания зашифрованного текста: сообщения, ключа и вектора инициализации (IV).Сообщения и ключи - простые концепции, но вектор инициализации заслуживает некоторого обсуждения.

Когда вы кодируете сообщение в AES с помощью статического ключа, оно всегда будет выдавать один и тот же результат. Например, сообщение «usernamepassword», зашифрованное с помощью ключа «1234567890ABCDEF», может дать результат, подобный «E40D86C04D723AFF». Если вы снова запустите шифрование с тем же ключом и сообщением, вы получите тот же результат. Это открывает вам несколько распространенных типов атак, особенно анализ паттернов и атаки повторного воспроизведения.

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

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

Хотя это защищает от анализа паттернов, это не помогает с атаками воспроизведения. Например, повторная передача заданного набора зашифрованных данных все равно будет дублировать результат. Чтобы этого не произошло, нам нужно аутентифицировать отправителя. Мы будем использовать публичный, псевдослучайно сгенерированный идентификатор сеанса для каждого сообщения. Этот идентификатор сеанса может быть сгенерирован принимающим устройством путем публикации в теме MQTT.

Предотвращение этих типов атак важно в нескольких типичных случаях использования. Существуют печи, управляемые через Интернет, и, кроме сомнительной полезности, было бы неплохо, если бы они не использовали небезопасные команды.Во-вторых, если я регистрирую данные с сотен датчиков, я не хочу, чтобы кто-то заполнял мою базу мусором.

Практическое шифрование

Реализация вышеуказанного на NodeMCU требует некоторых усилий. Вам понадобится встроенное ПО, скомпилированное с включением «криптографического» модуля в дополнение к любым другим, необходимым для вашего приложения. Поддержка SSL не требуется.

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

m = mqtt.Client ("клиент", 120)

m: connect (& quot; myserver.com & quot ;, 1883, 0,
функция (клиент)
печать (& quot; подключено & quot;)
клиент: подписаться (& quot; mytopic / sessionID & quot ;, 0,
функция (клиент) печать («подписаться успешно») конец
)
конец,
функция (клиент, причина)
print (& quot; причина неудачи: & quot;.. причина)
конец
)

m: on ("сообщение", функция (клиент, тема, идентификатор сеанса) конец)
 

Далее, идентификатор узла - удобный способ помочь идентифицировать источники данных. Однако вы можете использовать любую строку: nodeid = node.chipid () .

Затем мы устанавливаем статический вектор инициализации и ключ. Это используется только для обфускации рандомизированного вектора инициализации, отправляемого с каждым сообщением, НЕ используется для каких-либо данных. Также выбираем отдельный ключ для данных.Эти ключи 16-битные шестнадцатеричные, просто замените их своими.

Наконец, нам понадобится кодовая фраза для хэш-функции, которую мы будем использовать позже. Строка разумной длины подойдет.

staticiv = & quot; abcdef2345678901 & quot;
ivkey = "2345678901abcdef"
datakey = "0123456789abcdef"
passphrase = & quot; mypassphrase & quot;
 

Мы также предполагаем, что у вас есть источник данных. В этом примере это будет значение, считываемое с АЦП.8 минус 1) и соедините их.

half1 = node.random (4294967295)
half2 = node.random (4294967295)
I = string.format ("% 8x", половина1)
V = строка. формат ("% 8x", половина2)
iv = I .. V
 

Теперь мы можем запустить собственное шифрование. Здесь мы шифруем текущий вектор инициализации, идентификатор узла и один фрагмент данных датчика.

encrypted_iv = crypto.encrypt («AES-CBC», ivkey, iv, staticiv)
encrypted_nodeid = крипто.encrypt ("AES-CBC", datakey, nodeid, iv)
encrypted_data = crypto.encrypt («AES-CBC», набор данных, данные, iv)
 

Теперь применим хеш-функцию для аутентификации. Сначала мы объединяем nodeid , iv , данные и идентификатор сеанса в одно сообщение, а затем вычисляем хэш HMAC SHA1, используя кодовую фразу, которую мы определили ранее. Мы конвертируем его в шестнадцатеричный, чтобы сделать его более читабельным для любой отладки.

fullmessage = nodeid.. iv .. данные .. идентификатор сеанса
hmac = crypto.toHex (crypto.hmac (& quot; sha1 & quot ;, полное сообщение, кодовая фраза))
 

Теперь, когда есть и шифрование, и проверка аутентификации, мы можем поместить всю эту информацию в некую структуру и отправить ее. Здесь мы будем использовать значения, разделенные запятыми, для удобства:

payload = table.concat ({encrypted_iv, eid, data1, hmac}, & quot;, & quot;)
m: опубликовать (& quot; yourMQTTtopic & quot ;, полезная нагрузка, 2, 1, функция (клиент) p = "Отправлено" print (p) end)
 

Когда мы запустим приведенный выше код на реальном NodeMCU, мы получим что-то вроде этого:

 1d54dd1af0f75a91a00d4dcd8f4ad28d,
d1a0b14d187c5adfc948dfd77c2b2ee5,
564633a4a053153bcbd6ed25370346d5,
c66697df7e7d467112757c841bfb6bce051d6289
 

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

nodeid = узел.чипид ()
staticiv = & quot; abcdef2345678901 & quot;
ivkey = "2345678901abcdef"
datakey = "0123456789abcdef"
passphrase = & quot; mypassphrase & quot;

data = adc.read (0)
half1 = node.random (4294967295)
half2 = node.random (4294967295)
I = string.format ("% 8x", половина1)
V = строка. формат ("% 8x", половина2)
iv = I .. V

encrypted_iv = crypto.encrypt («AES-CBC», ivkey, iv, staticiv)
encrypted_nodeid = крипто.encrypt ("AES-CBC", datakey, nodeid, iv)
encrypted_data = crypto.encrypt («AES-CBC», набор данных, данные, iv)
fullmessage = nodeid .. iv .. data .. sessionID
hmac = crypto.toHex (crypto.hmac ("sha1", полное сообщение, кодовая фраза))
payload = table.concat ({encrypted_iv, encrypted_nodeid, encrypted_data, hmac}, & quot;, & quot;)
 

Расшифровка

Теперь ваш брокер MQTT не знает и не заботится о том, что данные зашифрованы, он просто передает их.Итак, другим вашим клиентам MQTT, подписанным на эту тему, нужно будет знать, как расшифровать данные. На NodeMCU это довольно просто. Просто разделите полученные данные на строки через запятые и сделайте что-то вроде следующего. Обратите внимание, что на этом конце будет создан идентификатор сеанса, поэтому он уже известен.

staticiv = & quot; abcdef2345678901 & quot;
ivkey = "2345678901abcdef"
datakey = "0123456789abcdef"
passphrase = & quot; mypassphrase & quot;

iv = крипто. расшифровать ("AES-CBC", ivkey, encrypted_iv, staticiv)
nodeid = crypto.decrypt ("AES-CBC", datakey, encrypted_nodeid, iv)
data = crypto.decrypt ("AES-CBC", datakey, encrypted_data, iv)
fullmessage = nodeid .. iv .. data .. sessionID
hmac = crypto.toHex (crypto.hmac ("sha1", полное сообщение, кодовая фраза))
 

Затем сравните полученный и вычисленный HMAC и, независимо от результата, сделайте недействительным этот идентификатор сеанса, создав новый.

Еще раз, на Python

Для небольшого разнообразия рассмотрим, как бы мы обрабатывали дешифрование в Python, если бы у нас был клиент MQTT на той же виртуальной машине, что и брокер, который анализировал данные или сохранял их в базе данных. Предположим, вы получили данные в виде строки «полезная нагрузка» от чего-то вроде отличного клиента Paho MQTT для Python.

В этом случае перед передачей удобно закодировать зашифрованные данные в NodeMCU в шестнадцатеричном виде. Итак, в NodeMCU мы конвертируем все зашифрованные данные в шестнадцатеричный, например: encrypted_iv = crypto. toHex (crypto.encrypt («AES-CBC», ivkey, iv, staticiv))

Публикация рандомизированного идентификатора сеанса ниже не обсуждается, но это достаточно просто с помощью os.urandom () и клиента Paho MQTT. Расшифровка производится следующим образом:

из Crypto.Cipher импортировать AES
импорт binascii
из Crypto.Hash импорт SHA, HMAC

# определить все ключи
ivkey = '2345678901abcdef'
datakey = '0123456789abcdef'
staticiv = 'abcdef2345678901'
пароль = 'mypassphrase'

# Преобразуем полученную строку в список
данные = полезная нагрузка.разделить (& quot;, & quot;)

# извлечь элементы списка
encrypted_iv = binascii.unhexlify (данные [0])
encrypted_nodeid = binascii.unhexlify (данные [1])
encrypted_data = binascii.unhexlify (данные [2])
receive_hash = binascii.unhexlify (данные [3])

# расшифровываем вектор инициализации
iv_decryption_suite = AES.new (ivkey, AES.MODE_CBC, staticiv)
iv = iv_decryption_suite.decrypt (encrypted_iv)

# расшифровать данные с помощью вектора инициализации
id_decryption_suite = AES. новый (датакей, AES.MODE_CBC, iv)
nodeid = id_decryption_suite.decrypt (encrypted_nodeid)
data_decryption_suite = AES.new (код данных, AES.MODE_CBC, iv)
sensordata = data_decryption_suite.decrypt (зашифрованные_данные)

# вычислить хеш-функцию для сравнения с Received_hash
fullmessage = s.join ([nodeid, iv, sensordata, sessionID])
hmac = HMAC.new (кодовая фраза, полное сообщение, SHA)
computed_hash = hmac.hexdigest ()

# см. docs.python.org/2/library/hmac.html, чтобы узнать, как безопасно сравнивать хэши
 

Конец, начало

Теперь у нас есть система, которая отправляет зашифрованные аутентифицированные сообщения через сервер MQTT либо другому клиенту ESP8266, либо более крупной системе, на которой работает Python.У вас все еще есть важные свободные концы, которые вам нужно решить, если вы реализуете это самостоятельно. Все ключи хранятся во флеш-памяти ESP8266, поэтому вы захотите контролировать доступ к этим устройствам, чтобы предотвратить обратное проектирование. Ключи также хранятся в коде на компьютере, получающем данные, здесь работает Python. Кроме того, вы, вероятно, захотите, чтобы у каждого клиента был свой ключ и пароль. Это много секретного материала, который нужно сохранить и при необходимости обновить. Решение проблемы распределения ключей оставлено в качестве упражнения для мотивированного читателя.

И в заключение, одна из ужасных вещей в написании статьи о криптографии - это возможность того, что ошибается в Интернете . Это довольно простое применение проверенного и достоверного режима AES-CBC с HMAC, поэтому оно должно быть довольно надежным. Тем не менее, если вы обнаружите какие-либо интересные недостатки в вышеизложенном, сообщите нам об этом в комментариях.

Проблема № 1472: Сбой расшифровки ESP с клиентом Android IKEv1 при использовании SHA-256

Выпуск 1472

Сбой расшифровки ESP с клиентом Android IKEv1 при использовании SHA-256

Добавил Станислав Юрченко более 4 лет назад. Обновлено более 3 лет назад.

Категория:

совместимость

Разрешение:

Никаких изменений не требуется


Описание

Здравствуйте!
По какой-то причине, если клиент Android подключается к моему серверу vpn, в журналах я вижу следующее: charon: 05 [ESP] Ошибка расшифровки ESP: недопустимая длина
Эта ошибка возникает после того, как соединение было установлено, т.е. у клиента есть IP-адрес, но любой трафик не может достичь сети назначения.
С какой проблемой может быть связана эта ошибка?

Часть конфигурации, которую Android использует для установления соединения:

conn ikev1-fakexauth
        keyexchange = ikev1
        rightauth3 = xauth-noauth
        auto = добавить
 

История

# 2 Обновлено Тобиасом Бруннером более 4 лет назад
  • Описание обновлено (разница)
  • Категория изменена с android на совместимость
  • Статус изменен с Новый на Обратная связь

Часть конфигурации, которую Android использует для установления соединения:

conn ikev1-fakexauth
         keyexchange = ikev1
         rightauth3 = xauth-noauth
         auto = добавить
 

Попробуйте добавить esp = aes128-sha1 (или, возможно, esp = aes128gcm16 , если Android поддерживает AES-GCM). Android, по-видимому, использует неправильное усечение для HMAC-SHA-256 (96-битный вместо 128-битного), который является алгоритмом целостности по умолчанию, используемым strongSwan, поскольку предложения по умолчанию были изменены в версии 5.4.0.

# 4 Обновлено Тобиасом Бруннером более 4 лет назад
  • Тема изменена с Ошибка расшифровки ESP на Ошибка расшифровки ESP с клиентом Android IKEv1 при использовании SHA-256
.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *