Аббревиатуры в нефтегазе
- Статьи
- Что нужно знать Переводчику
- Нефтегазовые аббревиатуры. Введение в предмет
Лина Белоногова, практикующий переводчик-синхронист с 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 | Кодировка | Поддерживаемые значения: | На данный момент для файла |
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-файла предоставляется вместе с утилитой:
Примечание
Ключ шифрования следующего формата
создан.
Примечание
Создается ключ шифрования следующего формата:
.
Примечание
Этот недавно созданный файл с ключами шифрования в каталоге ключей /
совместим со структурой разделов ключей 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