Роман расшифровка имени: , , , , , , , , , , , , , , ,

Содержание

Расшифровка имени Роман по буквам имени

  1. Значение имен
  2. Популярные имена
  3. буквы имени Роман

Анализ по количеству букв в имени

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

Интерпретация значений каждой из букв имени

р

Умение проникать в суть вещей и склонность к догматизму, но отнюдь не религиозного характера. Способности к ремеслам. Терпеливы и уступчивы, но лишь до тех пор, пока это не задевает их чувства собственного достоинства.

о

Это необъятная тайна Вселенной. Буква «О» символизирует богатство внутреннего мира, в который постороннему почти невозможно проникнуть. Люди, в чьем имени есть эта буква, наделены исключительной интуицией, умением глубоко чувствовать и видеть главное за второстепенным.

м

Человеколюбие, способность мириться с чужими недостатками, любопытство по отношению ко всему новому в любом возрасте. Заботливы, но без навязчивости. Обаятельны.

а

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

н

«Адвокат дьявола». Изначально критическое отношение абсолютно ко всему. Придирчивость в выборе контактов. Неукоснительная забота о собственном здоровье, духовном и физическом. Честность, усердие в работе.

Узнать больше об имени Роман

Значение имени Роман — Тайна имени Роман на orakul.com

Роман не терпит жизненного однообразия. Он вполне может оставить институт за полгода до окончания и податься на заработки; или же пренебречь полученным дипломом, например, ради карьеры непрофессионального актера. Увлекшись чем-то, он загорается, способен увлечь и других людей. Роман влюбчив. Без особых угрызений совести он способен менять избранниц, пока не найдет ту, которая готова полностью посвятить свою жизнь ему, раствориться в нем. Впрочем, твердой гарантии, что повстречав такую женщину, Роман станет идеальным мужем, нет. Его страстность, изобретательный ум, любовь к разнообразию на первых порах могут немало осложнить семейную жизнь. С рождением детей Роман обычно остепеняется и становится прекрасным отцом. В целом же с Романом жить весело. В семье он лидер, но без лишнего диктата и упрямства, его не нужно долго уговаривать помочь по хозяйству, он не скуп.

Имя Роман произошло от латинского слова «романус» и переводится как «римский», «римлянин». В святцах можно встретить много святых с этим именем. Это можно объяснить прежде всего тем, что христианство возникло и развивалось именно в Римской империи. На Русь это имя пришло из Византии, в XII веке им часто называли русских князей. Был период; когда имя практически забылось, однако в последнее время городская интеллигенция вновь стала называть им своих детей. Человек, обладающий этим именем, и час не способен провести в одиночестве, ему необходимы люди, с которыми он мог бы плодотворно пообщаться. Эта темпераментная натура быстро загорается новой идеей.

Роман будет счастлив в браке с Агнией, Адой, Анной, Валентиной, Еленой, Клавдией, Любовью, Майей, Марией, Мартой, Софьей. Союз же с Авророй, Венерой, Диной, Евгенией, Екатериной, Лилией, Оксаной, Риммой, Тамарой удачным не назовешь.

Это имя идеально для Стрельца, Льва, Рыб. Близнецу, Деве и Водолею оно не совсем подходит.

Даты именин: 11.02, 15.05, 5.06, 6.08, 9.08, 23.08, 14.10, 18.11, 1.12, 10.12

Ребенок с именем Роман

Вернуться на главную раздела

Другие мужские имена на букву Р

Как за каменной стеной — значение имени Роман (нумерологическая расшифровка) | Тайны и Знаки в Жизни

Тяжёлый и упорный труд ожидается в жизни Романа. Сильное здоровье и любовь к работе руками — ему поспособствуют. Роман легко овладеет мастерством, если пожелает, потому что лень в учёбе и делах превыше его трудоголизма.

Добрый, чуткий, справедливый, любит давать советы, но в то же время безвольный и эгоистичный Роман — весьма стабилен в отношении укрепления и обеспечения семьи. Ему сложно одному принимать решение, тем более Роман занижает свои возможности, а низкая целеустремлённость позволяет ему часто менять свои цели, ничем не объясняя свой выбор.

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

Лёгкий на подъем, не обременен привычками — будет надёжнее, если супруга Романа будет такая же беззаботная. Иначе, его всегда будет тянуть из дома, а она останется домоседкой.

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

Профессиональный спорт, экстрим, адреналин — вполне реальное в жизни Романа. Его доброта несёт в нем способность помогать людям: спасатель, волонтёр, медик и т.д.

Уход во власть возможен, но сделает его жёстким, грубым, агрессивным, создаст проблемы и уведет от сильного качества — доброты.

Поддержать Романа в выборе цели, поверить в его сильные качества и способности — задача спутницы этого мужчины.

В вашем окружении есть Роман? Насколько описание имени сочетается с ним? Пишите в комментариях, поговорим

ВНИМАНИЕ
  • Это обобщенное описание мужчин с именем Роман, так как в сочетании с датой рождения меняются качества мужчины. Проявляются другие сильные и слабые стороны.
  • Расшифровано конкретное имя — Роман. Каждая буква имеет свое числовое значение, соответственно разные производные от имени Роман — имеют разные качества. 
Если расшифровка оказалась полезной — ставьте👍 и делитесь ею в социальных сетях.
Подписывайтесь на канал и читайте всё новые описания имён.

Значения имени Артур: характер, тайна, судьба – Миллион Подарков

Именины Артура

В христианских святцах это имя не значится.

Что означает

Артур означает «медведь», «огненное солнце».

Происхождение

Анализ тайны имени Артур имеет смысл начать с происхождения. История имени Артур имеет несколько версий возникновения.

Есть мнение, что имя Артур происходит от латинской фамилии «Artorius».

По другой версии, имя Артур происходит от валлийского слова «arth», что означает «медведь», а «art-ur» (старое написание — Arto-uiros) переводится, как «человек-медведь».

По третьей версии, имя Артур произошло от названия самой яркой звезды созвездия Волопас — Арктур.

И последняя теория о том, история имени Артур имеет древнеиранские корни и происходит от сочетания иранских слов Art (огонь) и Hur (cолнце), так называли сына бога солнца в Нардском Эпосе Артхурон (Arthuron).

Что означает имя Артур по Д. Н. Зиме

Характер предполагает наличие за ее обладателем развитой интеллектуальности.

Артура часто подозревают в неуравновешенности натуры, но это ошибочное мнение. Можно посоветовать Артуру научиться смеяться над собой.

Как правило, энергия его имени увлекает Артуру в мир иллюзий. Предпосылкой к этому послужила ассоциация с образом предводителя рыцарей Круглого стола.

Артур может найти себя в искусстве. Это может быть занятие литературой, живописью, музыкой. Ему также подходят романтические профессии, связанные со странствиями и приключениями.

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

Характеристика по Е.Грушко и Ю.Медведеву.

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

В соответствии с толкованием по Б. Хигиру.

Бытовые заботы не для него. Артур всегда перепоручит такие хлопоты кому-нибудь другому.Артур – притягательный мужчина не лишен амбиций. Ищет тихой материально обеспеченной жизни. Умеет избегать нежелательных для себя ситуаций. По психическому складу – интроверт. Увлечен своей собственной внутренней жизнью.

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

В детстве Артур часто болеет. Он подвержен частым простудам и инфекциям. Ему надо беречь свои нервы, он склонен к быстрой утомляемости. Хотя иногда симулирует, пытаясь скрыть природную лень.

В отношениях с женщинами он не напорист, а деликатен. Этим и привлекает к себе слабый пол.

Согласно описанию имени Артур по Л. Цымбаловой.

Маленький Артурчик спокоен, и не капризен. Характером и внешним обликом ближе к своей матери.

Повзрослев, Артур ни чем особенным не выделяется, но производит приятное ощущение.

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

Друзей Артур меняет часто. Близких среди них не наблюдается. Да он и не любит быть кому-то чем-то обязанным. Провалы переживает тяжело. За оказанное ему внимание бывает благодарен.

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

Производные

Варианты имениАртур: Артурка, Артя.

Уменьшительно ласкательные имени Артур: Артурчик, Артюша.

На разных языках:

  • Имя Артур на английском: Arthur
  • Имя Артур на немецком: Arthur
  • Имя Артур на нидерландском: Arthur
  • Имя Артур на французском : Arthur
  • Имя Артур на армянском: ??????
  • Имя Артур на грузинском: ??????
  • Имя Артур на баскском: Artza
  • Имя Артур на бретонском: Arzhur
  • Имя Артур на иврите: ?????
  • Имя Артур на испанском: Arturo
  • Имя Артур на итальянском: Arturo
  • Имя Артур на польском: Artur
  • Имя Артур на португальском: Artur
  • Имя Артур на шведском: Artur
  • Имя Артур на финском: Artturi
  • Имя Артур на японском: ????

Знаменитые Артур:

  • Артур — герой романа Л. Войнич «Овод».
  • Артур – король Британии, предводитель рыцарей Круглого стола, наполовину реальный, наполовину мифический персонаж.
  • Артур Шопенгауэр (1788–1860 г.) немецкий философ.
  • Артур Шницлер (1862–1931 г.) австрийский драматург.
  • Артур Фонвизин (1882—1973 г.) русский живописец.
  • Артур Стенли Эддингтон (1882–1944 г.) английский астроном.

Тайна имени от БОРИСА ХИГИРА

Борис Хигир — профессор психологий, посвятил свою жизнь изучению влияние имени на характер человека.

Астрология, хиромантия, полтергейст, НЛО… Благодаря гласности на сегодняшний день мы обнаруживаем для себя все эти «чудеса», которыми человечество занимается уже несколько тысяч лет.

Что поделаешь, иначе, как мракобесием, в нашей стране они долгое время не назывались. Разрешалось лишь зло посмеиваться над тем, что где-то на «загнивающем» Западе судьбы людей увязывают с расположением планет, а болезни берутся предсказывать по точкам на линиях ладони или радужной оболочки глаза. Такое отношение считалось здоровым мышлением человека. И можно только поражаться, что в этих условиях все равно были энтузиасты, которые составляли гороскопы, постигали тайны хирологии, набирали статистику всевозможных аномальных явлений. Ныне наблюдения этих энтузиастов, которые, безусловно, помогают человеку лучше познать самого себя и окружающий его мир, наконец-то, к нашим услугам.

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

В книге перед вами снова «чудо» — рассказы о характерах людей и частично их судьбах по их… именам. На первый взгляд, невероятная вещь! Ведь с тех пор, как имена перестали давать строго по святцам, они, казалось бы, очень случайны. В честь родственников, друзей, бабушки или дедушки. Элементарно потому, что было по душе родителям. Наконец, сочиненные: Мэлс, Марклен, Вилен, Владлен,  Идея, Октябрина… Характер же, как нас всегда убеждали, передается по наследству, а, главным образом, воспитывается —  родителями, товарищами, школой…

Зная имя, (идеально если с отчеством и временем года рождения) Борис Хигир повествует о человеке все, как будто о своем самом лучшем друге. При этом ему абсолютно не обязательно его видеть. Расспросив о своих знакомых люди уходят с  сеансов Хигира удивленными его способностями, а психологи не сумевшие объяснить его способности называли его феноменальным.

Необходимо отметить что Борис Хигир не является первым человеком описывающий характер и судьбу человека по его имени. Еще в древние времена люди догадывались что между судьбой и именем человека существовала тайная связь. Многие тогда полагали что на человека зная его имя можно навлекать зло, наводить порчу и по этой причине малышу давали два имени, при этом «основное» имя хранилось в тайне. В некоторых районах данный обычай сохранился и до наших дней. Древние были уверены, что судьба человека, города и даже государства предопределена его именем.

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

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

Многие наблюдатели отмечают, что каждому имени свойственны определенные собственные черты характера. В частности, русский ученый, философ Павел Александрович Флоренский посвятил данному вопросу большую исследовательскую работу. Впервые данная работа была опубликована в Россий в 1988 году в журнале «Социологические исследования».

Прежде в печати была опубликована статья согласно которой Чикагские врачи утверждают, что имя сильно воздействует на жизнь человека. Если имя способно вызывать насмешки, то определяет человека с детства в оборонительную позицию, он должен вести борьбу за нормальное отношение к себе и это отпечатывается на его психике, характере. Однажды родители-оригиналы, дали своим дочерям следующие имена Аппендицитом, Лорингитом и Менингитом, тем самым буквально исковеркали им жизнь. Английский терапевт  Т. Уэстон осуществил исследование, в результате которого стало известно, что люди со странными именами больше страдают разного рода психическими комплексами нежели люди с обычными именами. А те, чьи имена начинаются с букв последней 1/3 алфавита, в 4 раза больше остальных подвержены сердечно-сосудистым заболеваниям…

После того, как о способностях Б. Хигира было рассказано в газете «Советская культура» (27 января 1990 года), а сам он стал участником телевизионной передачи «До и после полуночи», стало известно, что Исландский литературовед, сопоставляет поступки героев исландских саг с их именами и делает весьма интересные выводы: определенным именам свойственны подвиги, а другим коварство, трусость и предательство.

Американские психологи отметили, что парни по имени Роки и Чак чаще других становятся боксерами и футболистами, а девушки по имени Сьюзен — самые желанные невесты для юношей этой страны…

Борис Хигир пришел к своему открытию совершенно самостоятельно, что является особенно ценным, так же необходимо отметить что он даже не предполагал что власть имени над судьбой людей давно занимает высокое внимание людей. В детстве Борис Хигир оказался в цирке. В начале ухаживал за зверями, а после работал жонглером. Наблюдательный Борис Х. заметил однажды что изменился покладистый характер тигрицы Эльзы, когда дрессировщик сменил ей кличку. Далее он стал наблюдать за характером и поведением других зверей, затем за людьми. Последующая работа массажистом в спортивной школе, где Хигир познакомился с сотнями людьми, позволила ему сравнивать характеры людей с их именами.

Ныне он отмечает: «Возьмите 300 Владимиров и вы заметите, что все они чем-то похожи. Все 200 Эдиков шутники, и любимы девушками, а все Саши в детстве переносят воспаление легких…..» Долгие годы наблюдений привели к созданию справочника имен. По его мнению, он может пригодиться родителям, которые размышляют о том какое присвоить имя новорожденному (а значит и судьбу), руководителям коллективов, желающие узнать своих подчиненных. Так же данная книга будет интересна для тех кто не верит в связь имени и судьбы, справочник имен развлечет Вас на досуге: сравните то что написано в справочнике, и с тем что Вы знаете о своих знакомых и друзьях. Возможно это Вас заставит задуматься. 

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

«Осенние» — слабые, уступчивые. «Весенние» — жизнерадостные, легкомысленные, переменчивые. Это необходимо учитывать. Тем не менее само имя как бы создает костяк человека, на который времена года лишь наносят свои корректировки. Автор также апробирует, что в корне изменить характер человека, сменив ему имя, можно только до 5 лет с рождения. Зададим, наконец, главный вопрос: так что же, выходит власть имен фатальна? «Нет», отвечает Хигир, человеку многое дано для саморазвития, борьбы со своими слабостями и пороками. Но чтобы с ними бороться, сначала их надо знать.
 
Источник «Библиотека ТашИИТ».

Бориса Хигира знаю на протяжении последних пяти лет, — говорит Президент Российской психоаналитической ассоциации, доктор медицинских наук, профессор А.И. Белкин. — При каждой встрече не перестаю удивляться его уникальным, редко встречающимся в природе способностям. Быстрота, с которой он улавливает явные и скрытые черты характера, порой граничит с парапсихологическим феноменом. Ориентируясь в основном на имя, отчество и время рождения, Хигир способен оценить не только сегодняшние особенности личности, но и прошлые переживания, оставившие в душе заметный след.

Что значат славянские имена. Как называли князей, почему имен могло быть несколько и откуда взялись прозвища

Во времена Древней Руси именам придавали особое значение. Имена, оставшиеся в летописях и берестяных грамотах, не только хранят память о былом единстве славянских народов, но и позволяют современным исследователям узнавать больше о жизни, обычаях и взглядах на мир наших предков-славян. Специально ко Дню славянской письменности и культуры доцент кафедры общего и русского языкознания Государственного института русского языка им. А.С. Пушкина Роман Тельпов открывает некоторые тайны древних славянских имен.

Как определить славянское имя?

Николай Рерих. Заморские гости (фрагмент). 1901. Государственная Третьяковская галерея, Москва

Виктор Васнецов. Прощание Олега с конем (фрагмент). Иллюстрация к балладе Александра Пушкина «Песнь о вещем Олеге». 1899. Государственный музей истории российской литературы имени В.И. Даля (Государственный литературный музей), Москва

Николай Рерих. Славяне на Днепре (фрагмент). 1905. Государственный Русский музей, Санкт-Петербург

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

Такие корни часто присутствуют в именах не только русских, но и других славянских народов. Однако самые популярные имена на разных территориях отличались. Например, русские предпочитали имена с корнем -влад-/-волод-: Владимир или Всеволод, — а сербы с корнем мил-: Милош, Милица, Милена и другие.

А вот старинные имена Олег, Игорь и Ольга, которые носили первые древнерусские князья, славянскими не являются: их происхождение — скандинавское.

Династические имена

Николай Рерих. Ярослав Мудрый (фрагмент). 1941. Государственный музей искусства народов Востока, Москва

Иван Билибин. Суд во времена Русской Правды (фрагмент). Лист №5 из серии «Картины по русской истории». 1909. Частное собрание

Виктор Васнецов. Крещение Руси (фрагмент). Подготовительная композиция росписи Владимирского собора в Киеве. 1896. Государственная Третьяковская галерея, Москва

В Древней Руси человек высокого социального статуса, как правило, становился известен под именем, которое подчеркивало его положительные качества. Поэтому мы знаем русских князей с исключительно «высокими» и благозвучными именами: Всеволод, Владимир, Ярослав, Вячеслав. Ключевым принципом выбора детского имени, в частности для потомка княжеской династии, было сохранение в нем имени важного предка: полностью, если тот был уже мертв, или частично, если был еще жив. Например, если отца звали Ярославом, то в именах большинства детей, рожденных при его жизни, присутствовал элемент -слав: Изяслав, Вячеслав, Святослав и так далее.

Часто детей называли в честь дедов и прадедов — например, одного из сыновей Ярослав Мудрый назвал Владимиром в честь своего отца. Исследователи считают, что в этой традиции сохранились отголоски древнейшей веры в переселение душ: так душа деда или прадеда переходила к потомку вместе с именем. А имена князей Древней Руси, которые чередовались в разных поколениях, служили еще и важным показателем принадлежности к высокому роду, а следовательно — закрепляли за носителями право на наследство. Позднее эту функцию стали выполнять фамилии.

Читайте также:

Имена-обереги и имена-тотемы

Михаил Врубель. К ночи (фрагмент). 1900. Государственная Третьяковская галерея, Москва

Марк Шагал. Визит к бабушке и дедушке. 1916. Частное собрание

Марк Шагал. Три свечи (фрагмент). 1940. Частное собрание

В Древней Руси детям было принято давать несколько имен — и каждое из них выполняло определенную функцию. Одни хранили важную информацию о своих носителях, другие — связывали их с предками, а третьи — даже защищали.

Такую роль часто выполняли имена, образованные от названий животных: Волк, Медведь, Лось и другие. По славянским поверьям, многие звери обладали сверхъестественными силами, которые передавались и детям, названным в честь них. Так, заяц и воробей были связаны с идеей плодородия. Медведя ассоциировали с мощью, волка — с бесстрашием, верностью, удачей в охоте. В честь хищников славяне называли детей еще и для того, чтобы защитить их от этих животных: верили, что «своего» ни волк, ни медведь не тронут.

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

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

Также для того, чтобы сделать детей непривлекательными для вредоносных духов, родители называли их в честь некоего изъяна, зачастую воображаемого: Некрас, Грязной, Упырь, Немыт, Нелюб, Бессон. Славяне верили, что злые силы подумают, что ребенок с таким именем уже испорчен, и потеряют к нему интерес. Подобные имена некоторые филологи называют профилактическими. От них позднее образовались многие распространенные русские фамилии: Некрасов, Грязнов, Бессонов и другие.

Были распространены и «противоположные» имена-обереги, например Любим и Нежата (то есть нежная). Такие имена давали детям, стремясь наделить их разными положительными качествами, принести им удачу.

Имена и прозвища

Борис Кустодиев. Голубой домик (фрагмент). 1920-е. Государственный музей-заповедник «Петергоф», Санкт-Петербург

Константин Коровин. Торговая пристань в Град-столице (фрагмент). Эскиз декорации к балету Цезаря Пуни «Конек-Горбунок». 1912. Государственная Третьяковская галерея, Москва

Марк Шагал. Винный урожай (фрагмент). 1961. Национальная галерея Канады, Оттава, Канада

Граница между именами и прозвищами у древних славян была очень расплывчатой. Прозвища обычно добавляли к именам, полученным при рождении. Они отражали особенности характера и внешнего облика носителя, придавали ему индивидуальность, отличали его от других людей. Например, прозвище Прокуда давали проказливым и шаловливым детям, Квашня — полным, Голован — детям с большой головой, Шевкун — людям с невнятной речью. Иногда прозвища указывали на род занятий носителей. Так, в древних источниках сохранились сведения о семье рыбаков, все члены которой носили «рыбьи» прозвища: Карась, Щука, Лещ.

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

Другие особенности славянских имен

Константин Коровин. Северная идиллия (фрагмент). 1886. Государственная Третьяковская галерея, Москва

Иван Билибин. Русская деревня (фрагмент). 1930. Частное собрание

Виктор Васнецов. Бой Добрыни Никитича с семиглавым Змеем Горынычем (фрагмент). 1918. Государственная Третьяковская галерея, Москва

Некоторые славянские имена отражали обстоятельства, при которых дети появлялись на свет. Например, имя Третьяк означало, что ребенок был третьим в семье. Называли младенцев и в честь погоды, которая стояла в день их рождения: Зима, Мороз, Метелица, Ярец, Вешняк.

В Древней Руси уменьшительные варианты имен использовали так же часто, как и полные. Они могли даже сочетаться с отчествами. Эту древнерусскую особенность донесли до нас имена знаменитых русских богатырей Алеши Поповича и Добрыни Никитича. Последнее образовано от древнерусского Добромир или Доброслав, в котором корень добр- указывал не на мягкий и незлобный характер, а на силу и крепость, как в выражении «добрый молодец». Многие имена дошли до нас именно в краткой форме: Ратша (Ратислав или Ратибор), Местята (Мстислав), Нежата (Негослав, Добронег, Милонег), Твердило (Твердислав), Судиша (Судислав), Путята (Путислав или Путимир).

Позднее, с принятием христианства, на Русь пришло множество новых имен греческого, римского и еврейского происхождения: Василий, Давид, Роман, Георгий и другие, которые стали постепенно вытеснять славянские имена из русского языка. В наши дни в России из числа славянских используют преимущественно княжеские имена: Владимир, Ярослав, Вячеслав. Они сохранились в языке потому, что вошли в христианский именослов с появлением славянских святых, которые носили такие имена.

Ономастика в романе Ф. М. Достоевского «Преступление и наказание» Текст научной статьи по специальности «Языкознание и литературоведение»

УДК 882

Воронежский государственный технический университет студентка 2 курса, СПО, группы С121-9 направления «Дизайн» Лендова О.В.

Россия, г. Воронеж, 89805475664 e-mail: olga. [email protected] ru

Воронежский государственный технический университет ст. преп. кафедры русского языка и межкультурной коммуникации Новикова М.В.

Россия, г. Воронеж, 89192466211 e-mail: litra. [email protected] ru

Voronezh State Technical University 2nd year student, SPO, group С121-9 Directions «Design» Lendava O. V.

Russia, Voronezh, 89805475664 e-mail: olga. [email protected] ru

Voronezh State Technical University The chair of Russian language and cross-cultural communication Senior lecturer Novikova M. V.

Russia, Voronezh, 89192466211 e-mail: litra. [email protected] ru

О.В. Лендова, М.В. Новикова

ОНОМАСТИКА В РОМАНЕ Ф.М. ДОСТОЕВСКОГО «ПРЕСТУПЛЕНИЕ И НАКАЗАНИЕ»

В статье рассматривается происхождение имен ключевых для понимания глубины романа героев. Дается подробный и структурный анализ фамилии и имени главного героя произведения — Родиона Романовича Раскольникова, а также частичный анализ имен и фамилий его «двойников» — Аркадия Ивановича Свидригайлова и Петра Петровича Лужина, отдельное место занимает трактовка имен семьи Мармеладовых. Для раскрытия смысловых коннотат имен персонажей проводились отсылки к религиозной и культурной составляющей, в том числе анализировалось происхождение имен, их перевод с других языков и т.д. Учитывались уже существующие работы по данной тематике и различные трактовки ученых (А.Л. Бем, М.С. Альтман, Г.Ф. Коган и С.В. Белов) относительно анализа имени того или иного героя произведения. Ономастика имен персонажей сопоставлялась с ролью героя в романе, его действиями, диалогами и монологами. В большинстве своем значение имени или фамилии того или иного персонажа подтверждало прописанную Ф.М. Достоевским роль героя в романе.

В ходе исследования было выявлено, что семантическое значение имен таких героев, как Родион Романович Раскольников, Семен Захарович Мармеладов, Катерина Ивановна Мармеладова, Софья Мармеладова, Аркадий Иванович Свидригайлов, Петр Петрович Лужин, не просто раскрывает осно в-ную идейную канву произведения, но и позволяет выстроить дополнительные трактовки образов героев. Подобное закодированное нанизывание дополнительных характеристик, свойственных для того или иного героя, делает роман более сложным, но вместе с тем глубоким и интересным.

Ключевые слова: символика, имена, ономастика, герой, Достоевский.

O.V. Lendova, M.V. Novikova

ONOMASTICON IN F. M. DOSTOEVSKY’S NOVEL «CRIME AND PUNISHMENT»

The article discusses the origin of names of key characters to understand the depth of the novel. Detailed

Лендова О.В., Новикова М.В., 2018

and structural analysis of surname and name of the main character of the work — Rodion Romanovich Raskolni-kov is given as well as a partial analysis of names of his «counterparts» — Arkady Ivanovich Svidrigaylov and Peter Petrovich Luzhin, a separate place is occupied by the interpretation of names of the Marmalade family. For disclosure of semantic connotates of names of characters, references to religious and cultural component, including the origin of names, their translation from other languages were carried out. The existing works on this subject and different interpretations of scientists (A.L. Bem, M.S. Altman, G.F. Kogan, S.V. Belov) concerning the analysis of name of this or that hero of the work were taken into account. Onomastics of names of characters were compared with role of the hero in the novel and his actions, dialogues and monologues. The majority of the value of name or surname of a character confirmed written by Dostoyevsky the role of the hero in the novel.

During research it was revealed that semantic value of names of such heroes as: Rodion Romanovich Raskolnikov, Semyon Zakharovich Marmeladov, Katerina Ivanovna Marmeladova, Sophia Marmeladova, Arkady Ivanovich Svidrigaylov, Pyotr Petrovich Luzhin not only opens the main ideological canvas of work but also allows to build additional interpretations of images of heroes. Similar coded stringing of additional characteristics peculiar for this or that hero makes the novel more difficult but at the same time deep and interesting.

Key words: symbolism, names, onomasticon, hero, Dostoyevsky.

К ономастике в литературном творчестве Ф.М. Достоевского обращались такие ученые, как М. С. Альтман («Достоевский по вехам имен»), С. В. Белов («Имена и фамилии у Достоевского»), Г. Ф. Коган («Загадочное» имя Свидригайлова»), С.А. Ску-ридина «Ономастика романов Достоевского «Подросток» и «Братья Карамазовы», и другие. Стоит отметить, что интерес к изучению этого аспекта в литературоведении с каждым годом вызывает все больший интерес ученых. В этой связи с этим мы решили систематизировать и дополнить уже имеющиеся знания в этом русле, сконцентрировав свое внимание на романе Ф.М. Достоевского «Преступление и наказание».

Еще А.Л. Бем указывал: «Там, где выбор имени кажется на первый взгляд совершенно случайным, при ближайшем рассмотрении проглядывает вполне сознательное отношение писателя» [4, с. 415]. Эта особенность становится характерной для романов Ф.М. Достоевского, поскольку писатель тщательно продумывает не только сюжетную канву повествования, но и семантическое значение имени каждого из созданных в своем произведении героев. Исследователь С.В. Белов в своей статье «Имена и фамилии у Достоевского» пишет: «В библиотеке Достоевского был такой календарь, в котором давался перевод на русский язык имен общепринятых святых, с раскрытием их буквального смысла [2, с. 42]. Вероятность обращения писателя к данному источнику при подборе имени для героев произведения очевидна. Ф.М. Достоевский стремился создать второй смысловой ряд, чтобы глубже прописать образы героев.

При обращении к роману «Преступление и наказание» эта писательская традиция просматривается особенно ярко. Спектр героев в романе достаточно разнообразен, мы проанализируем ключевых для понимания идеи романа персонажей. Так, имя, фамилия, и отчество главного героя романа — Родиона Романовича Раскольникова имеет несколько различных трактовок, каждая из которых дает дополнительную характеристику героя. Одно из коннотативных значений имени отсылает к православной традиции. Апостол Иродион считается покровителем этого имени. По преданию, святой ревностно проповедовал Слово Божие, обращая в христианство многих греков — язычников и иудеев, за что был избит и ранен ножом, но Господь исцелил его [9]. История жизни святого выстраивается в определенную параллель с жизнью героя романа. Родион, в отличие от апостола нанес себе духовные, а вследствие этого и физические раны самостоятельно (теория Раскольникова, физические недомогания, апатия, психозы), но их путь к исцелению одинаков. Господь спасает апостола, и Раскольников, обращаясь к вере (обращение к Евангелию на каторге) встает на путь духовного спасения.

Изучение данного имени в ономастическом ключе указывает на то, что имя Родион является русифицированным вариантом произношения древнегреческого имени Иродион, которое в переводе означает «герой», «героический». Это семантическое значение также не является случайным, поскольку в романе Раскольников при создании своей теории апеллирует к исторической персоне — Наполеону. Эта фигура в понимании персонажа считается героической.

С.В. Белов в комментарии к роману в след за именем дает следующею трактовку фамилии героя: «Раскольников «раскалывает» породившую его мать-землю…» [3, с. 43]. Действительно, убивая старуху — процентщицу, герой идет против Божьих законов. Он считает себя вершителем судеб, полагая, что великая идея требует жертв. Но Раскольников не реализует задуманное, поскольку душевный покой оставляет героя, он начинает сомневаться в правоте совершенного. Его внутренний мир раскалывается на две половины, одна из которых пытается утвердиться в мысли о том, что он «право имеющий», другая осознает, что он всего лишь «тварь дрожащая». Двойственность проявляется, с одной стороны в желании героя преодолеть свой страх перед следствием и в дальнейшем уйти от наказаия, а с другой стороны в помыслах о признании в содеянном Порфирию Петровичу.

Другую трактовку символического значения фамилии героя выдвигает М.В. Гор-баневский. Он указывает на то, что фамилия Раскольников образована от прозвища раскольник. Раскольник — это тот, кто отделился от основной части общества, у него отклоняющееся от принятых норм поведение [5]. Родион отходит не только от гражданских законов, он отстраняется от нравственных, православных основ. Решаясь убить старуху, он отходит от Бога. В этой связи можно провести параллель и с тем, что раньше раскольниками называли людей, пропагандирующих старообрядческие традиции, не готовых мириться с новыми религиозными правилами. Это явление подробно освещено в «Житии протопопа Аввакума». Но здесь важна не причина раскола церкви, а семантическое значение, поскольку раскольник — это человек, вступивший в конфликт из-за веры, а Родион это герой, который нарушая библейские постулаты, вступает в конфликт не только с государством, но с сами собой.

Не менее символичными становятся имена «двойников» Раскольникова -Петра Петровича Лужина и Аркадия Ивановича Свидригайлова.

Имя Лужина имеет древнегреческое происхождение, в переводе означает «камень», «скала» [13, с. 284]. Апеллируя к православному образу святого Петра, можно выстроить определенную антитезу. Если апостол Петр это оплот Христовой веры, он непоколебимо стоит за нее (как скала, охраняет заповеди Божьи), то Петр Лужин, напротив, тот, кто придерживается скорее идеологии Ницше о «сверхчеловеке». Он говорит: «Возлюби, прежде всех, одного себя, ибо все на свете на личном интересе основано» [8, с. 77]. В метафорическом смысле у него каменное сердце, не способное к состраданию и милосердию. Семантическое значение его фамилии дополняет уже предложенную трактовку образа героя. Предположительно фамилия берет свои корни от польского слова «luzny», что переводится как «свободный», «разрозненный». Лужин действительно свободен от нравственных составляющих, моральных ценностей, он отстранен от социума, его интересует только собственная выгода.

Одним из прототипов Лужина, по мнению Л.П. Гроссмана, является Павел Петрович Лыжин, бывший одним из кредиторов Достоевского. В черновиках «Преступления и наказания» этот персонаж дважды прямо назван Лыжиным [6, с. 37-38].

Другим двойником Раскольникова является Свидригайлов Аркадий Иванович, именно он говорит Родиону: «Мы одного поля ягоды», и Раскольников понимает это, поскольку они оба «перешли через кровь». Но, в отличие от Родиона, Свидригайлов так и не встал на путь нравственного исцеления. С.В. Белов указывает на то, что совре-

менникам Ф.М. Достоевского была знакома фамилия Свидригайлова еще до выхода в свет романа «Преступление и наказание». Об этом свидетельствует и статья Г.Ф. Коган «Загадочное» имя Свидригайлова…», где автор указывает на то, что в периодической печати 1861 года сообщалось читателям о бесчинствующем в провинции некоем Сви-ригайлове [11, с. 426]. Возможно, Ф.М. Достоевский решил воспользоваться уже известной и связанной с криминальной деятельностью фамилией. К тому же, С.В. Белов в своем комментарии к роману отмечает: «Первоначальный толчок фамилии героя романа мог дать и великий князь литовской Швитригайло (Свидригайло). Напомним, что Достоевские происходили из старинного литовского рода, представители которого с XVI века упоминаются в различных документах юго-западной Руси. Интересуясь историей своего рода, Достоевский мог обратить внимание и на этимологический состав фамилии Свидригайло: вторая часть этой фамилии — гайл — означает по-немецки (geil) -похотливый, сладострастный»[3].

Особый интерес составляет и ономастика имен семьи Мармеладовых. Сама фамилия имеет двойное значение, поскольку в своем первостепенном ключе мармелад -«конфеты или густая сладкая масса»[10, с. 343], то есть эта фамилия должна ассоциироваться с чем-то приятным, притягательным, но, вникая в историю этой семьи, читатель сталкивается с ужасными картинами бедности, болезни, алкоголизма. На первый взгляд такой контраст заставляет читателя думать, что Ф.М. Достоевский тем самым иронизирует, показывает, что за благозвучной фамилией таится трагедия семьи. Эту мысль озвучивает В. Я. Кирпотин: «Семья Мармеладовых — фокус, в котором преломлены все несчастья неправильно устроенного эксплуататорского общества, и, то, как «сладок» этот мир, рисуется уже горько-иронической фамилией, подобранной Достоевским» [10, с. 145]. Если отойти от семантического значения слова и проанализировать саму структуру, то становится понятно, что мармелад — это достаточно мягкий и быстро теряющий форму при воздействии продукт. По своей сути, такими предстают и сами Мармеладовы. Семен Захарович, из-за навалившихся забот и жизненных тягот, деформируется из приличного доброго человека в больного алкоголизмом. Екатерина Ивановна, лишившись достойной, обеспеченной жизни, превращается в больную и злую женщину. Соня, хотя и сохраняет в себе нравственное зерно, все равно вынуждена под гнетом тяжелых семейных отношений пойти на непристойную работу, тем самым подстраиваясь под суровую действительность. Получается, что приятные и хорошие по натуре люди, под воздействием суровой действительности, теряют свое лицо.

Особый интерес представляют и имена героев. Имя Семена Захаровича -главы семейства происходит от древнего иудейского имени Симеон, в переводе означающею «слушающий», «услышанный Богом». Мармеладов, несмотря на низость своего поведения, все же сохраняет в душе веру в Господа. Он тяжело страдает от осознания своего греховного поведения. В одном из разговоров герой признается, что, приходя домой в пьяном состоянии, он даже жаждет побоев от Екатерины Ивановны, расценивая это как своего рода наказание за прегрешения. Когда он безропотно терпит оскорбления от жены, то видит в этом покаяние за совершенные грехи. Хотя жизнь Мармеладова трагична, он, в отличие от Раскольникова, связан с Богом и испытывает муки совести, осознает тяжесть греха.

Имя Екатерина Ивановны тоже носит символический характер, раскрывает уже заявленные в романе биографические факты ее жизни. В переводе с греческого оно означает — «чистая», «истинная». Возможно, этот перевод отсылает к происхождению героини, подчеркивая ее принадлежность к богатой дворянской семье. Имя героини дает аллюзию к реальному историческому лицу — Екатеринае II. Автор проводит параллель между императрицей и разорившейся Мармеладовой, показывая тем самым, что, хотя

Екатерина Ивановна и оказалась в тяжелом положении, она вовсе не собирается мириться с ним, ведет себя царственно, возлагая надежды на окружающих ее людей, и ошибочно полагая, что все вокруг обязаны помогать ей. Она не проявляет милосердия ни к мужу, который спас ее от полного разорения, ни к Соне, которая пожертвовала собой, чтобы прокормить семью, беспрестанно напоминает о своем дворянском происхождении, прошлой счастливой жизни, надменно общается с хозяйкой квартиры и своими соседями, считая себя намного выше их. Л. П. Гроссман предполагает, что в произведении портрет супруги Мармеладова списан с покойной жены писателя, Марии Дмитриевны Исаевой, умершей, как и героиня романа Катерина Ивановна, от чахотки [7 , с. 149].

Что же касается дочери Мармеладова — Сони, то ее имя пришло в русский язык из Греции, вместе с принятием на Руси православия. В переводе с греческого языка София обозначает «разумность», «мудрость», «наука». Альтман отмечает, что Соне Мармела-довой были присущи основные черты всех «Софий» Достоевского: смирение, беззащитность, приниженность [1, с. 176]. В православии покровителями людей с этим именем является Софья Римская, которая умерла от скорби на могиле своих дочерей — мучениц — Веры, Надежды и Любови — на третий день после их казни за веру Христову [13, с. 621]. Это имя героиня получает не случайно, ведь основная идея, которую несет Соня на протяжении всего романа — это вера в Бога. Альтман напишет: «если Софья, вообще, означает мудрость, то у Достоевского мудрость его Софии — смиренномуд-рие»[1, с. 176]. Именно Соня просит Раскольникова покаяться в своем грехе и тем самым смирить гордыню, которая сделала Родиона нравственным калекой. Более того, духовная мудрость героини приводит ее к вере и надежде на то, что Раскольников способен встать на путь исправления, именно поэтому она слепо следует за ним на каторгу. Девушка искренне верит и в то, что Родион не жестокий убийца по своей натуре, а просто оступившийся человек. Все ее помыслы и душевные порывы пропитаны не только любовью, которая возникает к мужчине и женщине, она в принципе смотрит на весь мир через призму любви. Так, в образе Сони Мармеладовой реализуются все духовные константы, связанные со святой матерью Софией и ее детьми — Верой, Надеждой, Любовью.

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

Библиографический список

1.Альтман М. С. Достоевский по вехам имен. Саратов: Издательство Саратовского университета, 1975. 280 с.

2. Белов. С. В. Имена и фамилии у Достоевского // Телескоп. 2014. № 6. С. 42-43.

3. Белов С. В. Роман Ф.М. Достоевского «Преступление и наказание» Комментарий. Просвещение. 1984. 204 с.

4.Бем А. Л. Личные имена у Достоевского. София, 1933.

5. Горбаневский М. В. Тринадцать ступенек в доме Раскольникова (Об именах собственных в романе Ф. М. Достоевского «Преступление и наказание»). [Электронный ресурс]. Режим доступа: http://www.familii.ru/onomastika/antroponimica/1130-2006-06-26-11-31-01 (дата обращения: 24.02.2018)

6. Гроссман Л. П. Город и люди «Преступления и наказания» / Л. П. Гроссман // Достоевский Ф.М. Преступление и наказание. М.: Гослитиздат, 1935. С. 3-52.

7. Гроссман Л. Жизнь и труды Ф. М. Достоевского: биография в датах и документах. М.; Л.: Academia, 1935. 382 с.

8. Достоевский Ф.М. Преступление и наказание. Воронеж., 1970. 542 с.

9. Жизнь и труды апостолов — Святой апостол Иродион. [Электронный ресурс]. Режим доступа: https://azb yka.ru/days/sv-rodion-irodion-patrasskij (дата обращения: 24.02.2018)

10. Кирпотин В. Я. Избранные работы в трех томах. М.: Художественная литература, 1978. Т. 3. 485 с.

11. Коган Г. Ф. «Загадочное» имя Свидригайлова: («Преступление и наказание» и периодическая печать 1860-х годов) // Известия Академии наук СССР. Серия литературы и языка. М.: Наука, 1981. Т. 40. № 5. С. 426-435.

12. Ожегов С. И., Шведов Н. Ю. Толковый словарь русского языка : 80 000 слов и фразиологических выражений. М.: Азбуковник, 1999. 944 с.

13.Словарь личных имен: С указанием православных дней Ангела / Сост. Н.Н. Федоринова: 2-е изд. Воронеж: Издательство Воронежского университета, 1997, 44 с.

14. Словарь русских личных имен / Сост. А. Н. Тихонов, Л. З. Бояринова, А. Г. Рыжкова. М.,1995. С. 300

References

1. Altman S. M. Dostoevsky at the milestones names. Saratov: Publishing house of Saratov University, 1975. 280 p.

2. Belov. S. V. Ihe Names of Dostoevsky // Telescope. 2014. № 6. P. 42-43.

3. Belov S. V. F. Dostoyevsky’s novel «Crime and punishment» Comment. 1984. 204 p.

4.Bohm A. L. Personal names in Dostoevsky. Sofia, 1933.

5. Gorbanevsky M. V. Thirteen steps in the house of Raskolnikov (the proper names in the novel of F. M. Dostoevsky’s»Crime and punishment»). URL: http://www.familii.ru/onomastika/antroponimica/1130-2006-06-26-11-31-01 (date of application: 24.02.18)

6. Grossman L. P. the City and the people of «Crime and punishment» / L. P. Grossman // Dostoevsky F. M. Crime and punishment. M.: Goslitizdat, 1935. P. 3-52.

7. Grossman L. The Life and works of F. M. Dostoevsky: a biography in dates and documents. M.; Leningrad: Academia, 1935. 382 p.

8. Dostoyevsky F.M. Crime and punishment. Voronezh, 1970. 542 p.

9. The life and writings of the apostles, the Holy Apostle Herodion URL: https://azb yka.ru/days/sv-rodion-irodion-patrasskij (date of application: 24.02.18)

10. Kirpotin V. Ya. Selected works in three volumes. M.: Khudozhestvennaya Literatura, 1978. Vol. 3. 485 p.

11. Kogan G. F. «Mysterious» name of svidrigaylov: («Crime and punishment» and the periodical seal of the 1860s). Izvestiya Akademii nauk SSSR. Series of literature and language. M.: Science, 1981. T. 40. № 5. P. 426-435.

12. Ozhegov S. I., Shvedov N. Yu. Explanatory dictionary of Russian: 80 000 words and phraseological expressions. M.: Azbukovnik, 1999. 944 p.

13. Dictionary of personal names: indicating the Orthodox days of the angel / Sost. H. H. Fedorinov: 2nd ed. Voronezh: Publishing house of Voronezh University, 1997. 44 p.

14. Dictionary of Russian personal names / A. N. Tikhonov, L. Z. Boyarinova, A. G. Ryzhkov. M., 1995. P. 300

Написание секретных сообщений с использованием шифров | Scholastic

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

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

Когда ваш ребенок собирает свои инструменты и материалы, попросите его подумать о том, насколько скрытным он хочет, чтобы его сообщение было. Например, писать большим черным маркером не так скрытно, как писать невидимыми чернилами. Напишет ли он свое сообщение на обычной бумаге или на кусочках головоломки? Будет ли его сообщение помещено в обычный конверт и отправлено по почте или оно должно поместиться в крошечном секретном отделении?

Инструменты :
Что-то для записи

Материалы :
Что-то для записи

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

Шаг 1. Запишите весь алфавит в строку.

Шаг 2. Выберите число, которое будет вашей суммой «ротации». В этом примере это 7. Посчитайте столько букв в алфавите.

Шаг 3. Под первой строкой, начиная с буквы, которую вы «повернули», перепишите алфавит.Когда вы дойдете до «Z», перейдите к началу строки алфавита над этой и продолжайте вводить буквы, пока не переписываете весь алфавит.

Совет. Проведение вертикальных линий между каждой парой букв может помочь вам увидеть, какие буквы объединены в пары. Использование разных цветов для обычного и «повернутого» алфавита поможет вам запомнить, что есть что.

Шаг 4. Решите, что будет сказано в вашем сообщении, и запишите его на листе бумаги.Теперь вы готовы его закодировать! Посмотрите на первую букву своего сообщения и найдите ее в верхней строке кодовой таблицы. Затем найдите букву в строке в нижнем ряду кода и напишите ее на новом листе бумаги. В этом примере первая буква — «I», а буква под ней — «B». Продолжайте кодировать остальные буквы в сообщении.

Шаг 5. Чтобы декодировать сообщение, вы выполняете процесс в обратном порядке. Посмотрите на первую букву в закодированном сообщении. Найдите его в нижнем ряду кодовой таблицы, затем найдите букву, которой она соответствует, в верхней строке кодовой таблицы и напишите ее над закодированной буквой.Поначалу это может сбивать с толку! Чтобы быть быстрым декодером, нужна практика.

Дальше: части головоломки
Когда ваш ребенок разгадывает шифр, он решает своего рода головоломку. Почему бы не сделать шифр вашего ребенка еще более секретным, написав его на кусочках настоящей головоломки? Тот, кто его решит, должен собрать пазл, чтобы увидеть все зашифрованное сообщение, а затем заняться его решением.

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

Дальнейшее развитие: интервалы
Сделайте расшифровку шифра вашего ребенка еще более сложным, если он изменит интервал между буквами.Если человек, просматривающий его закодированное сообщение, видит одно и то же слово в нескольких местах, он может понять, что оно означает «то» или «и» или другое распространенное слово. Если написать буквы маленькими группами одинакового размера, будет невозможно определить, где начинается и заканчивается каждое слово. После расшифровки букв решатель должен преобразовать расшифрованные буквы обратно в слова, что делает его второй головоломкой, которую нужно решить.

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

Шаг 1. Рельсы разделенного ограждения представляют собой длинные части, идущие параллельно земле, а стойки проходят прямо вверх и вниз. Нарисуйте форму забора с перилами и столбами. Чтобы зашифровать свое сообщение, пишите его по одной букве за столбиками забора, продвигаясь вверх к следующему столбу, когда достигнете дна.


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


Чтобы расшифровать сообщение, попросите ребенка разделить его на столько частей (в данном примере — три), каждое зашифрованное слово через перила забора, и прочитать «столбы» забора слева направо. Не забудьте сказать человеку, декодирующему сообщение, сколько перил в «заборе», которым пользовался ваш ребенок!

Подсказка: если вы объедините методы шифра Цезаря, шифра Rail Fencer, измените пространство и по-разному используете головоломку, закодированное сообщение вашего ребенка будет намного безопаснее от посторонних глаз.И разгадывать весело!

Рукопись Войнича на протяжении десятилетий ставила в тупик криптологов

Пара канадских шифровальщиков могла расшифровать 600-летнюю книгу, которая веками сбивала с толку криптологов. Но, скорее всего, нет.

В исследовании, опубликованном в журнале Transactions of the Association of Computational Linguistics , компьютерные ученые из Университета Альберты использовали алгоритм, чтобы попытаться расшифровать части Манускрипта Войнича, средневековой книги, написанной не поддающимся расшифровке кодом с неизвестным язык.

Но другие ученые настроены скептически, и рукопись остается документом, очень окутанным тайной.

Что за рукопись Войнича?

Рукопись Войнича, вероятно, является тем, что криптологи называют шифром, или закодированным набором букв. Написанная в Центральной Европе в 15 веке, эта книга немного больше современной мягкой обложки и содержит 246 хрупких страниц в пергаменте или шкуре животных, готовых к написанию. В нем нет указателя, но, вероятно, были развороты, которые давно исчезли.В нумерации страниц есть пробелы и свидетельства того, что в какой-то момент она могла быть восстановлена, поэтому порядок страниц сегодня может отличаться от того, который был в момент публикации книги.

Элегантный, зацикленный сценарий из 25–30 символов, идущий слева направо короткими абзацами вниз по страницам, перемежающийся с подробными иллюстрациями. На изображениях показаны рисунки замков и драконов, а также схемы растений, планет, обнаженных фигур и астрономических символов, все они детализированы зелеными, коричневыми, желтыми, синими и красными чернилами.В одном особенно любопытном отрывке изображены десятки обнаженных женщин, купающихся в бассейнах связанной зеленой жидкости.

Рукопись хранится в Библиотеке редких книг и рукописей Бейнеке в Йельском университете с 1969 года. Она названа в честь Уилфрида Майкла Войнича, польского книжного торговца, купившего ее в иезуитской библиотеке в Италии в 1912 году. Он пытался заинтересовать людей. переводить, но, увы, не удалось.

Есть ли у нас какие-либо идеи, о чем может быть рукопись?

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

Исторические записи показывают, что текст попал в руки алхимиков и императоров. В конце 16 века немецкий император купил рукопись у английского астролога за 600 венецианских дукатов, решив, что это работа средневекового монаха Роджера Бэкона. Оттуда она в конечном итоге перешла к чешскому фармацевту.

Что в этом новом исследовании?

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

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

Как только ИИ обнаружил 97-процентный успех в сопоставлении анаграмм с современными словами, исследователи загрузили в него текст с первых десяти страниц рукописи Войнича.Алгоритм обнаружил, что 80 процентов закодированных слов были написаны на иврите.

Теперь якобы у исследователей появился язык. Затем им нужно было вычислить код, в котором он находится. Поэтому они передали первое предложение своему коллеге, который был носителем иврита. Когда он не смог перевести текст на понятный английский, они обратились к Google Translate, потому что других ученых не было. После того, как исследователи исправили несколько орфографических ошибок, первое предложение гласило: «Она дала рекомендации священнику, хозяину дома, мне и людям.«Это странное предложение, но в нем есть какой-то смысл.

Ученые также перевели раздел из 72 слов, известный как« травяной »раздел, и смогли расшифровать слова« фермер »,« свет »,« воздух », «и» выстрелить «своим новым кодом.

Подождите… Google Translate?

Да, Google Translate. Машинный переводчик анализирует сотни миллионов документов, которые были переведены людьми. Затем, используя статистику, инструмент выплевывает сделать перевод на основе этих документов.Хотя инструмент работает для перевода слов группами, а не для дословного перевода, он все же не так эффективен, как переводчики-люди.

А теперь вернемся к рукописи.

Какие еще проблемы с исследованием?

Для начала программа ИИ была обучена путем перевода различных современных языков на английский, в отличие от языков 15 века. Хотя рукопись Войнича могла быть написана на иврите, это был бы средневековый иврит, а не современный эквивалент, который использует Google Translate.

Хотя искусственный алгоритм сопоставил 80 процентов текста на иврите, остается еще 20 процентов, совпадающих с разными языками. Согласно исследованию, другие языки, которые могли быть использованы в рукописи, — это малайский, арабский и амхарский, которые сильно отличаются от иврита.

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

27 декабря 2013 г. — В изысканной Павлиньей комнате Смитсоновской галереи искусств Фриер недавно была выставлена ​​одна из старейших существующих Библий. Этот бесценный артефакт из личной коллекции Чарльза Фрира содержит отрывок, не встречающийся ни в одной другой библейской рукописи, в котором Иисус провозглашает конец правления сатаны на Земле.

Но в прошлом люди ошибались, и другие теории были быстро опровергнуты учеными. Даже Алан Тьюринг, известный нацистским кодексом Enigma, не смог расшифровать рукопись Войнича.

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

Какие еще теории касаются рукописи?

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

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

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

Примечание: второе издание этой книги доступно под названием «Коды взлома с Python»

В этой главе рассматриваются темы:

· Чтение и запись файлов

· Функция open ()

· Метод

файлового объекта read ()

· Метод файлового объекта close ()

· Метод файлового объекта write ()

· Операционная система os.path.exists () функция

· Строковый метод startwith ()

· Строковый метод title ()

· Модуль time и функция time.time ()

«Почему полиция безопасности хватает людей и мучить их? Чтобы получить их информацию. Если вы построите управление информацией система, которая концентрирует информацию от десятков людей, вы сделали это в десятки раз привлекательнее. Вы сосредоточили внимание репрессивного режима внимание на жесткий диск.Да и жесткие диски пыткам не сопротивлялись. Ты нужно дать жесткому диску возможность сопротивляться. Это криптография.

Патрик Болл

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

Эта программа будет шифровать и расшифровывать простые текстовые файлы.Это файлы, которые содержат только текстовые данные и обычно имеют расширение .txt. расширение файла. Файлы из текстовых редакторов, позволяющие изменять шрифт, цвет или размер текста не создают файлов с обычным текстом. Ты можешь написать ваши собственные текстовые файлы с помощью Блокнота (в Windows), TextMate или TextEdit (в OS X), или gedit (в Linux), или аналогичную программу-редактор обычного текста. Вы даже можете использовать Собственного редактора файлов IDLE и сохраните файлы с расширением .txt вместо обычный .py расширение.

Для некоторых образцов вы можете загрузить следующие текстовые файлы с сайта этой книги:

· http://invpy.com/devilsdictionary.txt

· http://invpy.com/frankenstein.txt

· http://invpy.com/siddhartha.txt

· http://invpy.com/thetimemachine.txt

Это текстовые файлы некоторых книг (которые сейчас находятся в общественное достояние, поэтому их загрузка совершенно законна.) Например, скачать классический роман Мэри Шелли «Франкенштейн» по адресу http://invpy.com/frankenstein.txt . Дважды щелкните файл, чтобы открыть его в текстовом редакторе. Есть более 78000 слова в этом текстовом файле! Чтобы ввести это в нашу программа шифрования. Но если он находится в файле, программа может прочитать файл и сделать шифрование за пару секунд.

Если вы получаете сообщение об ошибке типа «UnicodeDecodeError: Кодек ‘charmap’ не может декодировать байт 0x90 в позиции 148: символы отображаются в », то вы запускаете программу шифрования на непростой текстовый файл, также называемый «двоичным файлом».

Чтобы найти другие тексты, являющиеся общественным достоянием, для загрузки, перейдите на Сайт проекта Gutenberg: http://www.gutenberg.org/ .

Как и наша программа тестирования транспозиционного шифра, программа файла шифров транспонирования импортирует наш transpositionEncrypt.py и файлы transpositionDecrypt.py, чтобы мы могли использовать encryptMessage () и decryptMessage () функции в них. Таким образом, нам не придется повторно вводить код для этих функции в нашей новой программе.

Откройте новое окно редактора файлов, щелкнув Файл Новое окно . Введите следующий код в файл редактор, а затем сохраните его как transpositionFileCipher.py. Нажмите F5 , чтобы запустить программу. Обратите внимание, что сначала вам нужно будет загрузите frankenstein.txt и поместите этот файл в тот же каталог, что и transpositionFileCipher.py файл. Вы можете загрузить этот файл с http://invpy.com/frankenstein.txt .

Источник код для транспонированияFileCipher.py

время импорта, os, sys, transpositionEncrypt, transpositionDecrypt

def main ():

inputFilename = ‘frankenstein.txt’

outputFilename = ‘frankenstein.encrypted.txt’

myKey = 10

myMode = ‘зашифровать’

если не os.path.exists (inputFilename):

print (‘Файл% s не существует.Выход из … ‘% (inputFilename))

sys.exit ()

если os.path.exists (outputFilename):

print (‘Это перезапишет файл% s. (C) ontinue или (Q) uit?’% (outputFilename))

ответ = вход (‘>’)

если нет response.lower (). playswith (‘c’):

sys.exit ()

fileObj = открыть (inputFilename)

контент = fileObj.читать ()

fileObj.close ()

print (‘% sing …’% (myMode.title ()))

startTime = time.time ()

если myMode == ‘encrypt’:

переведено = transpositionEncrypt.encryptMessage (myKey, content)

elif myMode == ‘расшифровать’:

переведено = transpositionDecrypt.decryptMessage (myKey, content)

totalTime = round (время.time () — startTime, 2)

print (‘% sion time:% s секунд’% (myMode.title (), totalTime))

outputFileObj = open (outputFilename, ‘ш’)

outputFileObj.write (переведено)

outputFileObj.close ()

print (‘Готово% sing% s (% s символов).’% (myMode, inputFilename, len (content)))

print (‘% sed файл% s.’% (myMode.title (), outputFilename))

если __name__ == ‘__main__’:

основной ()

В справочнике тот франкенштейн.текст и файлы transpositionFileCipher.py находятся внутри, там будет новый файл с именем frankenstein.encrypted.txt который содержит содержимое frankenstein.txt в зашифрованная форма. Если вы дважды щелкните файл, чтобы открыть его, он должен выглядеть примерно так:

PtFiyedleo a arnvmt eneeGLchongnes Mmuyedlsu0 # uiSHTGA r sy, n t ys

с NuaoGeL

sc7s,

(остальные вырезано для краткости)

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

транспонированиеFileCipher.py

inputFilename = ‘frankenstein.encrypted.txt’

outputFilename = ‘frankenstein.decrypted.txt’

myKey = 10

myMode = ‘расшифровать’

На этот раз, когда вы запустите программу, новый файл появится в папка с именем frankenstein.decrypted.txt, идентичен исходному файлу frankenstein.txt.

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

Шифрование …

Время шифрования: 1,21 секунды

Выполнено шифрование frankenstein.txt (441034 символы).

Зашифрованный файл — frankenstein.encrypted.txt.

Новый frankenstein.encrypted.txt файл будет создан в том же каталоге, что и transpositionFileCipher.py. Если вы откроете этот файл с помощью редактора файлов IDLE, вы увидите зашифрованный содержание франкенштейна.ру. Теперь вы можете отправить это по электронной почте зашифрованный файл кому-нибудь для расшифровки.

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

Функция open () и файловые объекты

Первая функция open () Параметр — это строка имени открываемого файла.Если файл находится в в том же каталоге, что и программа Python, вы можете просто ввести имя, например как thetimemachine.txt. Вы всегда можете указать абсолютный путь файла, который включает каталог, в котором он находится. Например, ‘c: \\ Python32 \\ frankenstein.txt’ (в Windows) и ‘/usr/foobar/frankenstein.txt’ (в OS X и Linux) находятся абсолютные имена файлов. (Помните, что \ обратная косая черта должна быть экранирована другой перед ним обратная косая черта.)

Функция open () возвращает значение типа данных «файловый объект».Это значение имеет несколько методов для чтение, запись и закрытие файла.

Метод объекта файла read ()

Метод read () вернет строка, содержащая весь текст в файле. Например, предположим, что файл spam.txt содержит текст «Hello world!». (Вы можете создайте этот файл самостоятельно с помощью редактора файлов IDLE. Просто сохраните файл с .txt расширение.) Запустите следующее из интерактивной оболочки (это коды предполагает, что вы используете Windows и рассылаете спам.текст файл находится в каталоге c: \):

>>> fo = open (‘c: \\ spam.txt’, ‘r’)

>>> content = fo.read ()

>>> печать (содержание)

Привет, мир!

>>>

Если ваш текстовый файл состоит из нескольких строк, строка, возвращаемая read () будет иметь \ n символы новой строки в конце каждой строки. Когда вы пытаетесь напечатать строка с символами новой строки, строка будет напечатана в несколько строк:

>>> print (‘Привет \ nworld!’)

Привет

мир!

>>>

Если вы получите сообщение об ошибке «IOError: [Errno 2] Нет такого файла или каталога »затем дважды проверьте, что вы ввели имя файла (и, если это абсолютный путь, имя каталога) правильно.Также убедитесь, что файл действительно находится там, где вы думаете.

Метод файлового объекта close ()

После того, как вы прочитали содержимое файла в переменной, вы может сообщить Python, что вы закончили работу с файлом, вызвав метод close () для файлового объекта.

Python автоматически закроет все открытые файлы, когда программа завершается. Но когда вы хотите перечитать содержимое файла, вы должен закрыть объект файла, а затем вызвать open () снова работать с файлом.

Вот код в нашей программе шифрования транспонирования, читает файл, имя файла которого хранится в inputFilename переменная:

transpositionFileCipher.py

fileObj = открыть (inputFilename)

content = fileObj.read ()

fileObj.close ()

Читаем исходный файл и теперь запишем зашифрованный (или расшифрованную) форму в другой файл. Файловый объект, возвращаемый open (), имеет функцию write (), хотя вы можете использовать эту функцию, только если вы откроете файл в режиме «записи». режима «чтение».Вы делаете это, передавая строковое значение ‘w’ как второй параметр. Например:

>>> fo = open (‘имя_файла.txt’, ‘ш’)

>>>

Наряду с «читать» и «писать» есть еще «добавить» режим. «Добавление» похоже на режим «записи», за исключением любых строк, записываемых в файл. будет добавлен в конец любого содержимого, которое уже есть в файле. «Добавить» режим не будет перезаписывать файл, если он уже существует. Чтобы открыть файл в приложении mode, передайте строку ‘a’ в качестве второго аргумента функции open ().

(На случай, если вам было интересно, вы можете передать строку ‘r’ в open (), чтобы открыть файл в режиме чтения. Но поскольку второй аргумент не передается, также открывается файл в режиме чтения нет причин пропускать ‘r’.)

Метод объекта файла write ()

Вы можете записать текст в файл, вызвав метод write () файлового объекта. Файловый объект должен быть открыт в режим записи, в противном случае вы получите сообщение «io.UnsupportedOperation: не читается »сообщение об ошибке.(И если вы попытаетесь вызвать read () для файлового объекта, открытого в режиме записи, вы получит ошибку «io.UnsupportedOperation: not readable» сообщение.)

Метод write () принимает один аргумент: строка текста, которая должна быть записана в файл. Линии с 43 по 45 открыты файл в режиме записи, запишите в файл, а затем закройте объект файла.

transpositionFileCipher.py

outputFileObj = open (outputFilename, ‘ш’)

outputFileObj.написать (переведено)

outputFileObj.close ()

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

transpositionFileCipher.py

время импорта, os, sys, transpositionEncrypt, transpositionDecrypt

def main ():

inputFilename = ‘frankenstein.txt’

outputFilename = ‘Франкенштейн.encrypted.txt ‘

myKey = 10

myMode = ‘зашифровать’

Первая часть программы должна показаться вам знакомой. Строка 4 это оператор импорта для нашего transpositionEncrypt.py и программы transpositionDecrypt.py. Это также импортирует время Python, os, и системные модули.

Функция main () будет вызывается после выполнения операторов def для определения всех функций в программе. InputFilename переменная содержит строку файла для чтения и зашифрованный (или расшифрованный) текст записывается в файл с именем в outputFilename.

Шифр ​​транспонирования использует целое число для ключа, хранимого в myKey. Если «зашифровать» хранится в myMode, программа зашифрует содержимое файла inputFilename. Если дешифровать хранится в myMode, содержимое inputFilename будет расшифровано.

os.path.exists () Функция

Чтение файлов всегда безвредно, но нужно быть осторожным при записи файлов. Если мы вызовем функцию open () в режиме записи с именем, которое уже существует, этот файл сначала будет удален, чтобы освободить место для нового файла.Это означает, что мы могли случайно стереть важный файл, если мы передадим имя важного файла в open () функция. Используя функцию os.path.exists (), мы может проверить, существует ли уже файл с определенным именем.

Файл os.path.exists () имеет одностроковый параметр для имени файла и возвращает True если этот файл уже существует, и False, если его нет. Функция os.path.exists () существует внутри модуля пути, который сам существует внутри модуля os.Но если мы импортируем ОС модуль, модуль пути также будет импортирован.

Попробуйте ввести в интерактивную оболочку следующее:

>>> импорт ОС

>>> os.path.exists (‘abcdef’)

Ложь

>>> os.path.exists (‘C: \ Windows \ System32 \ calc.exe’)

Правда

>>>

(Конечно, вы получите указанные выше результаты только в том случае, если запускает Python в Windows.Файл calc.exe делает не существует в OS X или Linux.)

transpositionFileCipher.py

если не os.path.exists (inputFilename):

print (‘Файл% s не существует. Выход из …’% (inputFilename))

sys.exit ()

Мы используем os.path.exists () функция, чтобы проверить, что имя файла в inputFilename действительно существуют. В противном случае у нас не будет файла для шифрования или дешифрования.В этом случае мы отобразить сообщение для пользователя, а затем выйти из программы.

Начало с () и Endwith () Строковые методы

transpositionFileCipher.py

если os.path.exists (outputFilename):

print (‘Это перезапишет файл% s. (C) ontinue или (Q) uit?’% (outputFilename))

ответ = вход (‘>’)

если нет response.lower (). playswith (‘c’):

sys.выход ()

Если файл, в который программа будет записывать, уже существует, пользователю предлагается ввести «C», если он хочет продолжить выполнение программы, или «Q» выйти из программы.

Строка в переменной ответа будет иметь вызов lower (), а возвращаемая строка из lower () будет иметь строковый метод startwith () призвал его. Метод startwith () вернет True, если его строковый аргумент можно найти в начале строки. Попробуйте ввести в интерактивную оболочку следующее:

>>> ‘Привет’.начинается с (‘h’)

Правда

>>> «Привет, мир!». Начинается с («привет, да»)

Правда

>>> ‘hello’.startswith (‘ H ‘)

Ложь

>>> spam = ‘Альберт’

>>> spam.startswith (‘Al’)

Правда

>>>

В строке 23, если пользователь не ввел ‘c’, «продолжить», «C» или другая строка, которая начинается с C, затем sys.exit () будет вызван для завершения программы.Технически пользователю не нужно вводить «Q» — выйти; любая строка, которая не начинается с «C», вызовет sys.exit () функция, которую нужно вызвать для выхода из программы.

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

>>> «Привет, мир!». Заканчивается на («мир!»)

Правда

>>> ‘Привет, мир!’.заканчивается (‘мир’)

Ложь

>>>

Заголовок () Строка Метод

Так же, как строковые методы lower () и upper () возвращают строку в нижнем регистре. или в верхнем регистре, строковый метод title () возвращает строка в «заглавном регистре». Регистр заголовка — это когда каждое слово пишется в верхнем регистре для первый символ и строчные буквы для остальных символов. Попробуйте ввести в интерактивную оболочку:

>>> ‘Привет’.название ()

‘Привет’

>>> ‘HELLO’. Название ()

‘Привет’

>>> ‘hElLo’.title ()

‘Привет’

>>> ‘Привет, мир! КАК ВЫ? ». Title ()

‘Привет Мир! Как дела?’

>>> ‘дополнительный! дополнительный! человек кусает акулу! ‘. title ()

‘Экстра! Дополнительный! Человек кусает акулу!

>>>

transpositionFileCipher.py

fileObj = открыть (inputFilename)

контент = fileObj.читать ()

fileObj.close ()

print (‘% sing …’% (myMode.title ()))

Строки 27–29 открывают файл с именем, хранящимся в inputFilename, и считывают его содержимое в переменную содержимого. В строке 31 мы отображаем сообщение, говорящее пользователь, начавший шифрование или дешифрование. Поскольку myMode должен содержать строку «encrypt» или «decrypt», вызов строковый метод title () будет отображать либо «Шифрование …», либо «Расшифровка… ‘.

Модуль времени и функция time.time ()

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

Функция time.time () будет вернуть значение с плавающей запятой количества секунд с 1 января st , 1970. Этот момент называют эпохой Unix. Попробуйте ввести следующее в интерактивную оболочку:

>>> время импорта

>>> время.время ()

1349411356.892

>>> time.time ()

1349411359.326

>>>

Значение с плавающей запятой показывает, что time.time () функция может быть точной с точностью до миллисекунды (то есть 1/1000 секунды). Конечно, числа, которые time.time () Отображение для вас будет зависеть от момента времени, когда вы вызываете эту функцию. Может быть неясно, что 1349411356.892 — это четверг, 4 октября, -е, , 2012 около 21:30.Однако time.time () Функция полезна для сравнения количества секунд между вызовами time.time (). Мы можем использовать эту функцию, чтобы определить, как давно работает наша программа.

transpositionFileCipher.py

startTime = time.time ()

если myMode == ‘encrypt’:

переведено = transpositionEncrypt.encryptMessage (myKey, content)

elif myMode == ‘расшифровать’:

переведено = transpositionDecrypt.decryptMessage (myKey, контент)

totalTime = round (time.time () — startTime, 2)

print (‘% sion time:% s секунд’% (myMode.title (), totalTime))

Мы хотим измерить, как долго выполняется шифрование или дешифрование. процесс принимает за содержимое файла. Строки с 35 по 38 вызывают encryptMessage () или decryptMessage (). (в зависимости от того, хранится ли ‘encrypt’ или ‘decrypt’ в myMode Переменная). Однако перед этим кодом мы будем вызывать time.время() и сохраните текущее время в переменной с именем startTime.

В строке 39 после вызова функции шифрования или дешифрования вернулись, мы снова вызовем time.time () и вычтите из него startTime. Это даст нам количество секунд между двумя вызовами time.time ().

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

>>> 1349411359.326 — 1349411356,892

2.434000015258789

>>>

(разница вычисленная Python между двумя плавающими значения точек неточные из-за ошибок округления, которые вызывают очень незначительные неточности при выполнении математических расчетов с поплавками. Для наших программ это не имеет значения. Но вы можете узнать больше об ошибках округления на http://invpy.com/rounding .)

Время.time () — startTime выражение оценивается как значение, которое передается в round () функция, которая округляет до ближайших двух десятичных знаков.Это значение хранится всего времени. В строке 40 количество времени равно отображается пользователю путем вызова print ().

transpositionFileCipher.py

outputFileObj = open (outputFilename, ‘ш’)

outputFileObj.write (переведено)

outputFileObj.close ()

Зашифрованное (или расшифрованное) содержимое файла теперь хранится в переведенная переменная. Но эта строка будет забыта когда программа завершается, поэтому мы хотим записать строку в файл, чтобы сохраните его на жестком диске.Код в строках с 43 по 45 делает это, открывая новый файл (передавая ‘w’ в open () чтобы открыть файл в режиме записи), а затем вызовите write () метод файлового объекта.

transpositionFileCipher.py

print (‘Готово% sing% s (% s символов).’% (myMode, inputFilename, len (content)))

print (‘% sed файл% s.’% (myMode.title (), outputFilename))

если __name__ == ‘__main__’:

основной ()

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

Строки 53 и 54 (которые выполняются после выполнения оператора def в строке 6) вызовут функцию main (), если эта программа выполняется вместо импортируется. (Это объясняется в разделе «Специальная переменная __name__» главы 8.)

Практические упражнения

можно найти по адресу http://invpy.com/hackingpractice11A .

Поздравляем! В этой новой программе не было ничего особенного. из open () напишите (), функции read () и close (), но это позволяет нам зашифровать текстовые файлы на жестком диске размером в мегабайты или размером гигабайты.Для этого не нужно много нового кода, потому что все реализация для шифра уже написана. Мы можем расширить наши программы (например, добавление возможностей чтения и записи файлов) путем импорта их функции для использования в новых программах. Это значительно увеличивает нашу способность использовать компьютеры для шифрования информации.

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

Новый подход к реализации безопасности на уровне сообщений в веб-службах RESTful — arXiv Vanity

Гьян Пракаш Тивари Абхишек Шривастава Дисциплина компьютерных наук и инженерии
Индийский технологический институт, Индор
Индор, Индия 452020
Электронное письмо: Электронное письмо:

Аннотация

Мир быстро принимает веб-сервисы RESTful для большинства своих задач. Некогда популярные веб-службы на основе SOAP быстро теряют позиции из-за этого.Веб-сервисы RESTful — это легкие сервисы без строгих форматов сообщений. Веб-сервисы RESTful, в отличие от SOAP, способны передавать сообщения в любом формате, будь то XML, JSON или обычный текст. Однако, несмотря на эти положительные моменты, обеспечение безопасности на уровне сообщений в REST представляет собой проблему. Безопасность в веб-сервисах RESTful по-прежнему во многом зависит от безопасности транспортного уровня. В последнее время была проведена некоторая работа по обеспечению безопасности на уровне сообщений в таких средах, в которых передача метаданных безопасности на уровне сообщений выполняется с использованием новых заголовков HTTP.Однако мы считаем, что следует избегать любого метода, который ставит под угрозу универсальность протокола HTTP. Поэтому в этой статье мы предлагаем два новых способа шифрования, которые обещают обеспечить безопасность на уровне сообщений в веб-службах RESTful без необходимости использования специальных заголовков HTTP. Этот подход без проблем работает с большинством известных типов контента веб-сервисов RESTful: XML, JSON, HTML, обычным текстом и различными типами контента для печати ASCII. Кроме того, предлагаемый подход устраняет необходимость согласования контента в тех случаях, когда контент включает типы контента XML, JSON, HTML, обычный текст и ASCII для печати, а также устраняет необходимость канонизации XML или JSON.

1 Введение

Веб-сервисы — это средство доступа к сети «программным» способом. Веб-сайт и веб-сервис похожи тем, что оба отвечают на запросы клиентов в Интернете. Веб-сайты отвечают контентом, который может легко понять человек, например. HTML, CSS и Javascript, тогда как веб-службы отвечают контентом, предназначенным для потребления другими приложениями, например. XML, JSON. Ответ от веб-служб больше ориентирован на данные, тогда как ответ от веб-сайтов больше направлен на интерактивное представление данных.

Веб-службы

можно разделить на два основных типа: веб-службы на основе SOAP и веб-службы RESTful. Веб-службы на основе SOAP имеют дело с правильно структурированными сообщениями, содержащими формальные XML-форматы для запроса и ответа. С другой стороны, веб-сервисы RESTful не имеют таких формальных форматов. Это способствует гибкости и «легкости» веб-сервисов RESTful. Сообщения запроса и ответа SOAP обычно используют пакеты HTTP или SMTP в качестве контейнеров, тогда как запросы REST представляют собой простой HTTP-запрос с использованием общих HTTP-глаголов CRUD (создание, чтение, обновление и удаление) для выполнения операций с ресурсом [1].Ответ веб-службы RESTful на запрос также является ответом HTTP, содержащим XML, JSON, CSV, HTML или простой текст.

В REST любой контент или услуга в сети, для которых клиент делает запрос к серверу, называется «ресурсом». Ресурс — это контент, доступный на стороне сервера, который может быть передан или даже изменен по запросу клиента. Ресурс может быть текстовым или двоичным файлом или данными, хранящимися в базе данных. Каждый ресурс идентифицируется уникальным идентификатором, который называется унифицированным идентификатором ресурса (URI).Ресурс может быть представлен в различных форматах, таких как XML, JSON, CVS, HTML, обычный текст и другие, при этом наиболее популярными на сегодняшний день представлениями являются XML и JSON.

Веб-службы RESTful, в отличие от SOAP, не имеют формального языка описания, поэтому службы обычно публикуют свои представления ресурсов в общедоступных доменах, таких как веб-сайты. Например, Google публикует ресурсное представление своего API привода по следующему URL-адресу https://developers.google.com/drive/v3/reference/about# resource.В дополнение к этому, поставщики веб-сервисов также описывают возможности различных HTTP-команд для выполнения операций с данным ресурсом аналогичным образом.

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

Веб-сервисы и веб-сайты работают на уровне приложений. Чтобы использовать веб-сайт или веб-службу, клиенту сначала необходимо подключиться к серверу, предоставляющему услугу на транспортном уровне.Этот тип подключения называется TCP (протокол управления передачей). TCP содержит и передает внутри себя данные уровня приложения в форме HTTP или SMTP. На транспортном уровне доступно довольно много механизмов безопасности, которые достаточно надежны и обеспечивают шифрование, аутентификацию и авторизацию. Одним из таких механизмов является безопасность транспортного уровня (TLS) [2].

TLS использует два типа алгоритмов шифрования: шифрование с симметричным ключом и алгоритмы шифрования с асимметричным ключом.При шифровании с асимметричным ключом сервер поддерживает два ключа, один из которых является «открытым», а другой — «частным». Сервер делает открытый ключ доступным для всех, а закрытый ключ хранится скрытым. Сообщение, зашифрованное с помощью открытого ключа, можно расшифровать только с помощью закрытого ключа. Клиент шифрует сообщение с помощью этого открытого ключа и отправляет его на сервер. Затем сервер расшифровывает сообщение с помощью секретного закрытого ключа. При шифровании с симметричным ключом и сервер, и клиент поддерживают общий секретный ключ между собой, называемый симметричным сеансовым ключом.Симметричный сеансовый ключ используется как для шифрования, так и для дешифрования. Чтобы отправить сообщение, клиент шифрует сообщение этим ключом и, достигнув сервера, тот же ключ используется для дешифрования.

Для передачи большого количества данных алгоритмы с симметричным ключом эффективны, поскольку они относительно легкие. Для передачи меньшего количества данных более подходящими считаются алгоритмы с асимметричным ключом. Большой вопрос, связанный с шифрованием с симметричным ключом, заключается в следующем: как первоначально передать симметричный ключ от клиента на сервер по незащищенному каналу? Сервер предоставляет свой открытый ключ всем своим клиентам.Клиент, который хочет подключиться к серверу, предоставляет серверу информацию о симметричном общем ключе, зашифрованную открытым ключом сервера. Сервер видит эту информацию об общем ключе после расшифровки сообщения клиента с помощью закрытого ключа. После согласования сервером общего ключа оба начинают передавать свои данные, зашифрованные общим симметричным ключом. Это обычная последовательность, которой следует при шифровании: во-первых, шифрование с асимметричным ключом, как описано ранее, используется только для безопасного получения симметричного ключа для сеанса.После этого во всех дальнейших коммуникациях в этом сеансе между клиентом и сервером используется шифрование с симметричным ключом.

Transport Layer Security (TLS), как описано выше, обычно используется для шифрования контейнера TCP, который содержит контейнер HTTP или SMTP (данные уровня приложения) запроса и ответа веб-службы. Мы знаем, что веб-службы SOAP и RESTful содержат XML, JSON и т. Д. Внутри пакета прикладного уровня (HTTP или SMTP), который содержится в пакете транспортного уровня (TCP).TLS эффективен с веб-службами, если передача сообщений осуществляется только между двумя сторонами. Однако в сценариях, когда нескольким промежуточным узлам требуется доступ к разным частям содержимого одного и того же контейнера HTTP или SMTP, TLS становится неэффективным и возникает необходимость в механизме безопасности на уровне сообщений на уровне приложений [3]. Это типичное требование сценария композиции веб-службы, когда несколько узлов взаимодействуют друг с другом для создания более крупного составного приложения.

Для лучшего понимания сценария давайте рассмотрим простой пример из реальной жизни большой коробки, содержащей маленькую коробку, внутри которой находятся несколько теннисных мячей с некоторой соответствующей информацией, написанной на них.Каждый мяч принадлежит другому человеку. Большой прямоугольник здесь можно рассматривать как HTTP-контейнер, маленький прямоугольник представляет все сообщение XML или JSON, а шары представляют различные теги в XML или поля в JSON. Сообщение, написанное на одном шаре, должно быть таким, чтобы его не мог понять человек, которому он не принадлежит. Что делает TLS: он шифрует большой ящик (рис. 1.). Когда человек расшифровывает эту большую коробку, маленькая коробка и информация, написанная на всех шарах внутри маленькой коробки, становятся видимыми для этого человека независимо от того, принадлежит ли ему мяч или нет.С другой стороны, безопасность на уровне сообщений шифрует информацию, записанную на каждом шаре, и поэтому только лицо, которому принадлежит мяч, получает права на расшифровку сообщения. Шары здесь — это разные теги XML (или поля в JSON), которые могут быть предназначены для разных промежуточных узлов веб-службы в сценарии композиции веб-службы. Весь XML должен быть зашифрован, чтобы промежуточные узлы могли понимать и / или редактировать только те теги, которые предназначены для них. Следовательно, необходимо зашифровать сообщение, написанное на каждом теге отдельно, разными ключами (рис.2.). Шифрование различных частей документа XML или JSON с разными ключами известно как шифрование на уровне сообщения. Шифрование на уровне сообщений может обеспечить безопасность веб-служб на уровне сообщений.


Рисунок 1: Шифрование с помощью TLS
Рисунок 2: Шифрование на уровне сообщений Сервисы на основе SOAP

действительно имеют формальные механизмы безопасности на уровне сообщений, определенные W3C и OASIS [3], которые обеспечивают аутентификацию, авторизацию и шифрование. Эти службы в основном основаны на XML-подписи [4] и XML-шифровании [5].Подпись XML и шифрование XML могут работать со всем документом, его частью или даже с двоичными документами. Однако после шифрования и подписи зашифрованный документ представляется только как XML.

При шифровании

XML для шифрования документа используются существующие блочные или потоковые шифры. Некоторые из этих алгоритмов — это усовершенствованный алгоритм шифрования (AES) [6], алгоритм шифрования данных [7] и т. Д. И шифрование XML, и подпись используют разные версии стандартного алгоритма хеширования [8] для создания дайджеста сообщения.Для согласования ключей они используют согласование ключей для эллиптических кривых Диффи-Хеллмана (ECDH) [9]. Все эти алгоритмы шифрования и хеширования работают с данными на уровне байтов.

Проблема с шифрованием и подписью на уровне байтов заключается в том, что два документа XML, представляющих одни и те же данные, могут не быть идентичными побайтово, и поэтому даже небольшое косметическое различие между документами меняет все шифрование или подпись. Примером этого является: изменение положения атрибутов в теге не меняет природу XML-документа, однако полностью меняет шифрование и подпись этого документа.Обычная процедура для решения этой проблемы — канонизация XML [10]. Здесь к XML-документам необходимо применить несколько строгих правил, чтобы два XML-документа, представляющие одни и те же данные, стали идентичными до последнего байта. Эффективная реализация подписи и шифрования на основе XML требует обязательного шага канонизации XML.

Этот метод неэффективен, если две стороны в разговоре поддерживают разные технологии, например один поддерживает содержимое XML, а другой поддерживает JSON.Кроме того, канонизация XML — это обязательный шаг в обеспечении безопасности на основе XML, и это действительно громоздкий процесс. Все это делает такие методы безопасности непригодными для веб-служб RESTful. В настоящее время не существует формальной модели для обеспечения безопасности на уровне сообщений в веб-службах RESTful. В веб-службах RESTful и шифрование сообщений, и аутентичное соединение по-прежнему в значительной степени зависят от безопасности транспортного уровня (TLS).

Состав веб-службы

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

Нам нужно помнить о различных принципах REST при разработке моделей безопасности на уровне сообщений для служб RESTful. В недавней работе Gabriel Serme et. В [11] заголовки HTTP используются для передачи названий алгоритмов шифрования, ключей и других метаданных безопасности. Шифрование и подпись в этом подходе выполняются с использованием существующих алгоритмов. Мы считаем, что отправка новых заголовков в HTTP-пакете делает сам протокол HTTP не общим. Кроме того, использование существующих алгоритмов шифрования приводит к большому размеру содержимого HTTP.

В этой статье мы предлагаем новый подход к шифрованию веб-сервисов RESTful на уровне сообщений, который хорошо работает одновременно с большинством популярных типов контента (XML, JSON, HTML и обычный текст). Основная идея этого подхода — заменить печатаемые символы ASCII серией цифр во время шифрования и сделать обратное во время дешифрования. Шифрование и дешифрование с помощью этого простого подхода становятся легкими и эффективными. Это связано с тем, что зашифрованное сообщение довольно мало по размеру по сравнению с существующими алгоритмами.Фактически, в определенных ситуациях зашифрованное сообщение меньше самого сообщения. Предлагаемое преобразование символа в число также устраняет необходимость в канонизации XML, поскольку это не побайтовое шифрование.

Предлагаемый подход также устраняет необходимость согласования контента, когда клиент и сервер согласовывают тип контента (XML, JSON), который будет использоваться для связи. Это связано с тем, что ресурс преобразуется в одно и то же шифрование независимо от типа представления.Цифры, составляющие шифрование, всегда будут помещаться в тело HTTP как текстовый / простой тип содержимого. Этот подход не требует специальных заголовков HTTP для передачи метаданных безопасности и не нарушает принципы REST.

Представление ресурсов

— это все о взаимно однозначном сопоставлении имени тега XML и типа данных, поддерживаемого внутри этого тега, или типа данных, поддерживаемого значением имени JSON. Некоторые поставщики веб-сервисов представляют свои ресурсы в документации по API.В предлагаемом подходе серверу не нужно публиковать свое ресурсное представление. Это связано с тем, что все представления (XML, JSON и т. Д.) Преобразуются в одно и то же шифрование и могут быть расшифрованы в любое представление. Типы данных между тегами и именами JSON явно указываются в самом шифровании. Клиент узнает о представлении ресурса в зашифрованном виде после первого запроса ресурса.

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

Работа организована следующим образом: в разделе 2 мы обсуждаем системную архитектуру для нашего подхода. В разделе 3 мы подробно описываем предлагаемый нами подход на рабочем примере для лучшего понимания. Мы обсудим различные преимущества нашего подхода в разделе 4 и завершим статью в разделе 5.

2 Архитектура системы

В RESTful-коммуникациях и в целом XML-теги, XML-атрибуты, значения XML-атрибутов и JSON-имена меняются реже, и поэтому мы называем их неизменяемыми частями сообщений запроса и ответа. С другой стороны, значения между тегами XML или значения имен JSON меняются гораздо чаще, и мы называем их переменными частями сообщений запроса и ответа. Например:

XML 1:

 <корень attr1 = "значение1" attr2 = "значение2">
 iiti 
 2 

 

JSON 1:

 "root": {
    "-attr1": "значение1",
    "-attr2": "значение2",
    "имя": "иити",
    "значение": "2"
}
 

XML и JSON можно легко конвертировать друг в друга.XML и соответствующий ему JSON показаны выше как XML 1 и JSON 1. В XML 1 «корень», «имя», «значение», «attr1», «attr2», «значение1» и «значение2» не являются -variable parts, а «iiti» и «2» — это переменные части сообщения. В соответствующем сообщении JSON JSON 1 у нас есть аналогичные неизменяемые и переменные части.

В нашем подходе к шифрованию и неизменяемая, и переменная части сообщения представлены строкой чисел. Зашифрованное сообщение отправляется получателю инкапсулированным в HTTP-пакет в виде обычного текста.Мы знаем, что XML и JSON могут быть легко преобразованы друг в друга, и, как указывалось ранее, сила этого алгоритма заключается в том, что не имеет значения, в каком формате будет шифроваться контент — в формате JSON или XML, результатом будет одно и то же зашифрованное сообщение, которое впоследствии может быть расшифровывается в JSON и / или XML по мере необходимости. Шифрование и дешифрование могут выполняться с помощью общего симметричного ключа между сторонами. В случае композиции веб-службы, когда разные посредники имеют доступ к одному и тому же сообщению RESTful, разные части одного и того же сообщения могут быть зашифрованы с помощью разных симметричных ключей.Сначала мы обсуждаем шифрование на уровне сообщений только между двумя сторонами. Впоследствии, в Разделе 3, мы перейдем к обсуждению нескольких сторонних веб-сервисов.

На рисунке 3 показаны различные компоненты на стороне клиента и сервера, которые используются для шифрования / дешифрования. На стороне сервера есть модуль шифрования / дешифрования сообщений (Encryption-Decryption Engine), который находится между приложением-службой RESTful и службой HTTP. На стороне клиента то же самое происходит между клиентом RESTful и клиентом HTTP.На обоих концах есть «диспетчер ключей», подключенный к соответствующему HTTP-серверу и клиенту.


Рисунок 3: Взаимодействие с сервером Cliet

2.1 Ключевой менеджер

Перед началом разговора на обоих концах требуется симметричный сеансовый ключ. Диспетчер ключей на обоих концах управляет симметричным ключом. Сначала клиентский диспетчер ключей отправляет запрос ключа диспетчеру ключей сервера в виде специальной команды («Получить ключ»). Команда «Получить ключ» переходит в клиентский раздел HTTP на стороне клиента.Раздел HTTP-клиента на стороне клиента помещает команду «Получить ключ» в тело запроса HTTP POST с типом содержимого, являющимся обычным текстом, как показано на рисунке 4.


Рисунок 4: Запрос ключа от клиента

Служба HTTP на стороне сервера получает запрос и находит строку «Получить ключ» в теле запроса POST. Впоследствии диспетчер ключей сервера генерирует 10 случайных целых чисел в заданном диапазоне и создает уникальный ключ из 10 элементов. Серверный диспетчер ключей передает этот 10-элементный ключ службе HTTP на стороне сервера.Служба HTTP на стороне сервера создает ответ HTTP, помещает ключ в тело ответа с типом содержимого, являющимся обычным текстом, и отправляет ответ HTTP клиенту HTTP на стороне клиента (рис. 5). HTTP-клиент на стороне клиента считывает тело ответа и передает его клиентскому диспетчеру ключей.


Рисунок 5: Ответ сервера с ключом

Разговор между клиентом и сервером для ключа — это вопрос между двумя сторонами, поэтому обмен ключами может использовать TLS для безопасности.Обе стороны хранят общий ключ в базе данных ключей для дальнейшего использования. Количество ключей, поддерживаемых каждым членом в группе состава веб-сервисов, зависит от структуры состава веб-сервисов. В лучшем случае каждому члену группы из n поставщиков услуг может потребоваться поддерживать n секретных ключей (n-1 ключей для связи с другими n-1 членами и один ключ группы). Общий ключ сохраняется в ключевых базах данных клиента и сервера. Клиент несет ответственность за смену ключа. Чтобы изменить ключ, клиент отправляет серверу новый запрос ключа.

2.2 Ключ из 10 элементов

Этот симметричный ключ лежит в основе предлагаемого подхода и состоит из 10 элементов. Используя только этот ключ, и клиент, и сервер могут создавать различные таблицы, которые участвуют в шифровании и дешифровании на уровне сообщений. Мы видели пример ключа из 10 элементов, случайно сгенерированного сервером на рисунке 5 ([12,6,1,1,1,14,4,0,3,2]). В общем, ключ представлен как key = [rows, cols, start_with, row_rev, col_rev, symbol_type, group_size, reverse, final_sum, power].В этой статье различные элементы ключа упоминаются с использованием индексации, начиная с 0, например, ключ [0] для строк, ключ [1] для столбцов и т. Д. Теперь мы разберемся с различными элементами ключа один за другим.

2.2.1 строки (ключ [0])

Механизм шифрования-дешифрования как на стороне клиента, так и на стороне сервера поддерживает таблицу, которую мы называем временной таблицей (TT). rows at key [0] указывает количество строк в этой таблице. Количество строк в TT = key [0] + 1. key [0] варьируется от 1 до любого целого числа в зависимости от возможностей системы.

2.2.2 cols (ключ [1])

столбцов в ключе [1] указывает количество столбцов в TT. Количество столбцов в TT = key [1] + 1. Для key = [12,6,1,1,1,14,4,0,3,2] TT на стороне клиента и сервера будет иметь 13 строк и 7 столбцов (включая цветные строки и столбцы «заголовков»), как показано на рисунке 6. Цветные ячейки таблицы используются для хранения заголовков таблиц, а белые ячейки — для обычных записей. key [1] находится в диапазоне от 1 до любого целого числа в зависимости от возможностей системы.


Рисунок 6: Временная таблица (TT)
2.2.3 start_with (ключ [2])

У нас есть два типа заголовков в TT: один — это заголовок строки (rh), а другой — заголовок столбца (ch). В процессе шифрования нам нужно пронумеровать как rh, так и ch. Нумерация всегда начинается с 1. Нумерация может начинаться с правой или с правой стороны в зависимости от значения ключа [2]. Нумерация заголовка TT начинается с rh, если значение ключа [2] равно 0, и начинается с ch, если значение ключа [2] равно 1. Диапазон ключа [2] составляет {0, 1}.Если нумерация заголовка начинается с нумерации rh, то такой же счет продолжается при нумерации ch и наоборот. Например, в key = [12,6,1,1,1,14,4,0,3,2] нумерация заголовка начинается с ch. Таким образом, на рисунке 6 счетчик от 1 до 6 использовался для нумерации ch и, в продолжение этого, от 7 до 18 использовался для нумерации rh.

2.2.4 row_rev (ключ [3])

Если ключ [3] равен 0, то правая нумерация начинается с самого верхнего ряда (сверху вниз), а если ключ [3] — 1, то правая нумерация начинается с нижнего ряда (снизу вверх).Для ключа = [12,6,1,1,1,14,4,0,3,2] правая нумерация начинается снизу и продвигается вверх, как показано на рисунке 6. Диапазон ключа [3] составляет {0, 1}.

2.2.5 col_rev (ключ [4])

Если ключ [4] равен 0, то нумерация каналов начинается с самого левого столбца (слева направо), а если ключ [4] — 1, то нумерация каналов начинается с самого правого столбца (справа налево). Для key = [12,6,1,1,1,14,4,0,3,2] нумерация каналов начинается справа и продолжается влево, как показано на рисунке 6.Диапазон ключа [4]: ​​{0, 1}.

2.2.6 тип_символа (ключ [5])

Существует четыре типа символов, которые могут использоваться в этой таблице в качестве элементов в ячейках без заголовка: маленький алфавит, заглавный алфавит, цифры и специальные символы. Общее количество возможных расположений в этой таблице: 4C1 × (1!) + 4C2 × (2!) + 4C3 × (3!) + 4C4 × (4!) = 64. Для всех этих 64 расположений ключ [5] находится в диапазоне от От 0 до 63. Каждое значение определяет уникальное появление, отсутствие и порядок появления различных печатаемых символов ASCII в ячейках без заголовка TT.Для каждого значения ключа [5] ввод символов в TT начинается с верхнего левого угла ячейки без заголовка и последовательно перемещается к нижнему правому углу ячейки без заголовка. Например, 1) Если ключ значения [5] равен 0, то в TT разрешены только маленькие буквы алфавита, 2) Если это 1, то в TT разрешены только заглавные буквы алфавита. Точно так же, если ключ [5] равен 14, то порядок ввода символов в TT — это цифры, за которыми следуют заглавные буквы, за которыми следуют маленькие алфавиты. Значение 14 игнорирует специальные символы.Существуют различные другие варианты расположения символов для других значений ключа [5]. Другое значение ключа [5] могло включать специальные символы, и различные символы могли быть в другом порядке появления. На рисунке 6 показана запись TT, если key = [12,6,1,1,1,14,4,0,3,2]. ключ [5] и соответствующее расположение символов являются лишь предположениями авторов. Во время реализации они могут быть разными, но общая возможная комбинация всегда фиксирована.

2.2.7 group_size (ключ [6])

Создаются различные группы последовательных элементов в ТТ.Каждая группа имеет размер, обозначенный клавишей [6]. Последняя группа TT может иметь меньше элементов, чем key [6]. Для ключа = [12,6,1,1,1,14,4,0,3,2], поскольку ключ [6] равен 4, TT имеет различные группы по 4 элемента в каждой. На рисунке 6 мы представляем различные группы как подчеркнутые и неподчеркнутые элементы. Элементы 0,1,2,3 находятся в одной группе, а элементы 4,5,6,7 — в другой группе, аналогично элементы 8, 9, A, B находятся в той же группе, а C, D, E, F. находятся в другой группе и т. д. ключ [6] находится в диапазоне от 1 до (ключ [0] -1) × (ключ [1] -1).

2.2.8 реверс (клавиша [7])

Если ключ [7] равен 1, то элементы во всех группах будут в групповом обратном порядке по отношению к их начальным позициям в группе. Если это значение равно 0, то такой обратной операции не происходит. Для key = [12,6,1,1,1,14,4,0,3,2] TT показан на рисунке 6. Для key = [12,6,1,1,1,14,4 , 1,3,2] группы меняются местами, и соответствующий TT показан на рисунке 7.


Рисунок 7: Временная таблица (TT)
2.2.9 final_sum (ключ [8])
Ключ

[8] будет объяснен позже.

2.2.10 питание (клавиша [9])

В процессе шифрования на уровне сообщения нам нужно вычислить уникальное целое число, соответствующее каждому символу, присутствующему в TT. Это целое число может быть вычислено как (rh) ключ [9] + (ch) ключ [9]. Например, для следующего ключа = [12,6,1,1,1,14,4,1,3,2] целое значение G равно (15) 2+ (5) 2 = 250, аналогично целому числу значение 9 равно (17) 2+ (2) 2 = 293 и так далее. Возможно, что два разных символа могут оказаться в одном и том же целом числе, такая ситуация называется столкновением целых чисел.Если возникает целочисленное столкновение, мы продолжаем увеличивать целочисленное значение последующих символов в TT, пока оно не получит уникальное значение. Включение ch и rh с помощью клавиши [9] имеет два преимущества. 1). Это делает само шифрование более случайным и 2). Вероятность целочисленного столкновения становится очень меньше. Диапазон ключа [9] от 1 до любого целого числа зависит от возможностей поставщика услуг и потребителя.

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

2.3 Механизмы шифрования и дешифрования

Клиентский запрос PUT или POST, который может быть в формате XML, JSON или в виде обычного текста, сначала отправляется механизму шифрования-дешифрования. В механизме шифрования-дешифрования на стороне клиента сообщение запроса преобразуется в строку чисел. После этого клиент HTTP / S инкапсулирует эту строку чисел в пакет запроса HTTP / S (PUT или POST) и отправляет его на сервер.На стороне сервера сервер HTTP / S считывает строку чисел и отправляет ее механизму шифрования-дешифрования на стороне сервера. Механизм шифрования-дешифрования на этом конце расшифровывает строку чисел в соответствующую форму XML и / или JSON и, наконец, доставляет ее в веб-службу. Тот же процесс повторяется с ответом сервера клиенту. Используемые здесь механизмы шифрования и дешифрования включают следующие подкомпоненты:

2.3.1 Временная таблица (TT)

Временные таблицы (TT) подробно обсуждались в предыдущих подразделах.Мы предполагаем, что содержимое этой таблицы содержит только печатаемые символы ASCII. Каждый элемент в таблице, содержащий печатаемые символы ASCII, однозначно определяется соответствующей парой rh и ch. Структура таблицы и положение различных символов в ячейках устанавливаются сторонами в разговоре с использованием симметричного ключа, как обсуждалось ранее. TT удаляется после создания таблицы символов.

2.3.2 Таблица символов (ST)

Состоит из таблицы с двумя столбцами без заголовка строки или столбца.Таблица сопоставляет каждый печатаемый символ ASCII с уникальным целым числом, полученным из TT с использованием симметричного ключа. Таблица в основном используется для специального шифрования и дешифрования печатаемого содержимого RESTful в формате ASCII, называемого шифрованием на основе таблицы символов (STBE) и дешифрованием на основе таблицы символов (STBD). Создание ST, его цель и различные этапы STBE и STBD описаны в следующем разделе.

2.3.3 Таблица тегов (TAT)

Этот компонент включает таблицу с двумя столбцами без заголовка строки или столбца.Таблица сопоставляет неизменяемые части сообщения RESTful (XML, JSON или HTML) с уникальным целым числом. Таблица используется для другого шифрования и дешифрования печатаемого содержимого RESTful в формате ASCII, называемого шифрованием на основе таблиц тегов (TATBE) и дешифрованием на основе таблиц тегов (TATBD). Создание TAT, его цель и различные этапы TATBE и TATBD описаны в следующем разделе.

3 Подход

Перед дальнейшим обсуждением мы предполагаем, что ключ из 10 элементов (key = [12,6,1,1,1,14,4,1,3,2]) уже был обменен между двумя сторонами и TT был создан в оба конца.В следующих подразделах обсуждается оставшаяся процедура шифрования на основе 10-элементного ключа и TT, созданного на основе этого ключа (рис. 7). Мы будем использовать рабочий пример для лучшего понимания подхода. Рисунок 8 суммирует наш подход. Рисунок описывает как шифрование, так и дешифрование.


Рисунок 8: Блок-схема нашего подхода

Наша цель — предоставить шифр подстановки, который преобразует простой текст в серию чисел. Такой шифр замены устраняет необходимость канонизации XML.Как показано на рисунке 8, после создания TT ​​создается таблица символов (ST), как показано на рисунке 9. Обращайтесь к различным переменным и неизменяемым частям как зашифрованных, так и простых сообщений как слова. Таблица символов отображает каждый символ в ячейке без заголовка TT в уникальное целое число. Мы используем эту таблицу для замены каждому символу в документах XML или JSON соответствует соответствующее уникальное целое число. Например, слово «иити» преобразуется в «122122104122». Это называется шифрованием на основе ST i.e STBE. Расшифровка «122122104122» обратно в «iiti» называется расшифровкой на основе ST (STBD). Процесс создания ST, STBE и STBD обсуждается в следующих подразделах. Поскольку ST может быть создан на основе 10-элементного ключа, обе стороны могут начать шифрование и дешифрование с помощью ST, не зная структуры сообщения. Использование STBE приводит к получению зашифрованного сообщения большого размера, потому что каждый символ в переменной или неизменяемой части преобразуется в уникальное целое число. Вот почему мы ввели концепцию таблицы тегов (TAT).TAT отображает все переменные части сообщения в уникальное целое число (рис. 10). Использование шифрования на основе таблицы тегов (TATBE) приводит к тому, что размер зашифрованного сообщения меньше, чем размер STBE. Например, тег «root» может быть преобразован в «04» с помощью TATBE вместо «0117126126104» с помощью STBE. Расшифровка «04» обратно в «корень» называется расшифровкой на основе таблицы тегов (TATBD). Процесс создания TAT, TATBE и TATBD обсуждается в следующих подразделах. Идея состоит в том, чтобы использовать STBE и STBD для переменных частей и для тех неизменяемых частей сообщения, чьи записи TAT все еще не существуют ни на одной из сторон.Когда STBE и STBD используются для неизменяемых частей, для их последующего использования необходимо создать запись в таблице тегов (TAT). Используйте TATBE для тех переменных частей, записи которых присутствуют в TAT с обеих сторон.

3.1 Создание таблицы символов

Таблица символов (ST) создается клиентом и сервером на основе временной таблицы (TT) следующим образом: ch и rh всех символов, не являющихся заголовками, внутри TT идентифицируются, и для каждого не используется соответствующий уникальный номер. -заголовок там же рассчитывается.Порядок создания ЗБ показан ниже:

  1. Для каждой непустой и непустой ячеек в TT печатаемый символ извлекается, и его соответствующее уникальное целочисленное значение вычисляется как значение = (rh) ключ [9] + (ch) ключ [9].
    Например, TT на рис. 7, символ «j» имеет rh = 11 и ch = 2. Расчетное значение = (11) 2+ (2) 2. Таким образом, значение, соответствующее «j» в TT, равно 125.

  2. Число цифр в значении делается таким же, как значение ключа [8].При этом мы сначала вычисляем diff = key [8] — (количество цифр в значении), а затем переходим к шагу 3.
    Например, если ключ = [12,6,1,1,1,14,4,1,3,2] (ключ [8] равен 3), то diff = 3-3 = 0.

  3. Мы вычисляем окончательное значение, которое должно быть вставлено в ST, соответствующее данному символу не заголовка TT. Мы делаем это как final_value = value × 10diff.
    Например, final_value для j составляет 125 × 100 = 125.

  4. Последней записью, вставляемой в ST, является пара (символ, конечное_значение).Final_value — это первичный ключ ST. Если запись в ST существует с тем же final_value, переходите к шагу 5, иначе переходите к шагу 6.
    Например, (‘j’, 125) будет вставлен в ST. Перед вставкой этой записи мы сначала проверяем, существует ли запись в ST с тем же final_value (125). На данный момент мы предполагаем, что такой записи не существует, и поэтому переходим к шагу 6. ​​Если («j», 125) уже находится в ST и («o», 125) нужно вставить, мы переходим к шагу 5.

  5. Когда запись с таким же final_value уже существует в ST, final_value записи увеличивается на 1 и проверяется на уникальность.Это продолжается до тех пор, пока не будет найдено уникальное final_value. Затем выполняется шаг 6. Обратите внимание, что даже если мы рассматриваем final_value как первичный ключ, более одной записи символа невозможно, потому что каждый символ уникален в TT.
    Например, перед вставкой записи для символа ‘o’ мы увеличиваем ее final_value до 126. Если запись с final_value 126 также существует, то мы делаем ее (‘o’, 127), в противном случае мы записываем (‘o’, 126 ) и переходите к шагу 6. ​​

  6. Вставить запись (символ, final_value) в ST.

Подмножество ST показано на рисунке 9.


Рисунок 9: Подмножество ST

3.2 Шифрование на основе таблицы символов (STBE) и создание TAT на стороне сервера

К настоящему времени и клиент, и сервер должны иметь одну и ту же временную таблицу (TT) и таблицу символов (ST). Теперь клиент отправляет свой первый запрос на сервер. Запрошенный ресурс будет состоять из нескольких переменных и неизменяемых частей (XML или JSON). Непеременная часть может иметь любое имя, а переменная часть может иметь любой тип данных.До этого момента клиент знает только URI ресурса и ничего не знает о его представлении. Если клиент делает HTTP-запрос, который не требует тела HTTP (например, GET), то сервер отвечает после шифрования ответного сообщения с использованием ST в качестве STBE. Клиент декодирует это, используя расшифровку на основе таблицы символов (STBD). Расшифрованное сообщение преобразуется в XML или JSON. В расшифрованном документе имя неизменяемых частей и тип данных переменных частей будут понятны клиенту.Мы рассмотрим STBD в следующем подразделе.

Если для запроса клиента требуется тело HTTP (например, PUT, POST) и клиент не имеет никакого представления о представлении ресурса в теле запроса (т.е. что отправлять в теле запроса), то клиент отправит пустой запрос POST. на URI. В таком случае сервер отправляет зашифрованное представление ресурса с помощью STBE. STBE используется сервером, когда клиенту неизвестны неизменяемые части сообщения.Как только клиент узнает о неизменяемых частях, сервер прекращает шифрование сообщения с помощью STBE и начинает шифрование с помощью шифрования на основе таблицы тегов (TATBE). Мы рассмотрим TATBD в следующем подразделе.

В случае, если сервер вводит новую неизменяемую часть между разговорами, новая неизменяемая часть шифруется с использованием STBE, а шифрование остальных неизменяемых частей выполняется с помощью TATBE. Переменные части сообщения всегда шифруются с помощью STBE.Клиенту никогда не нужно шифровать неизменяемые части тела запроса с помощью STBE. Это связано с тем, что клиент никогда не может ввести в запрос новую неизменяемую часть. Однако клиенту необходимо расшифровать неизменяемые части ответа, отправленного сервером, который зашифрован с помощью STBE. Процесс шифрования XML1 с помощью STBE и создания таблицы тегов (TAT) для каждой неизменяемой части сообщения происходит одновременно на стороне сервера, как показано на шагах ниже.

Предположим, что зашифрованное сообщение сохраняется в строковой переменной STEnc. Начальное значение STEnc равно нулю. У нас есть еще две переменные noOfNonVars и noOfDigitsForNonVars, обе изначально равны 0. Переменная и неизменяемая части XML берутся в том же порядке, что и в документе. Мы вместе называем эти части (переменные и неизменяемые части XML) словом. Например, в XML1 порядок появления слов следующий: «root», «attr1», «value1», «attr2», «value2», «name», «iiti», «/ name», «value», « 2 »,« / значение »и« / корень ».

В случае создания веб-сервиса разные теги могут принадлежать разным поставщикам услуг. Поэтому разные теги шифруются с использованием разных ключей. Получатель должен быть уведомлен о номерах тегов, которые были зашифрованы его ключом. Поэтому в начале STEnc добавляются номера тегов, разделенные запятыми, за которыми следует пробел. Для номера тега, присутствующего в начале STEnc, клиент имеет доступ ко всем дочерним элементам данного тега.
Например, (1,) в начале STEnc говорит, что получатель имеет доступ к тегу «root» и его дочерним элементам в XML1 (т.е.е весь документ). Если (2,) присутствует в начале STEnc, это означает, что получатель имеет доступ к тегу «name» и его дочерним элементам в XML1. Наличие (2,3,) в начале STEnc говорит о том, что получатель имеет доступ к тегам «имя» и «значение» и их дочерним элементам в XML1. Обычно общие теги, такие как «root», шифруются с использованием согласованного группового ключа между участниками.

Если слово (1,) добавляется в STEnc, то STEnc, который изначально был нулевым, становится:
STEnc = «1,».

  1. Повторите шаги с 2 по 7 для каждого слова в XML.

  2. Если слово является тегом, то оно преобразуется в строку чисел, перед которой стоит 0, с использованием ссылки ST для каждого символа слова. Затем эта строка чисел объединяется в одну строку STEnc, за которой следует пробел, и выполняется шаг 7.
    Например, первое слово XML1 — это тег «корень». Он состоит из четырех символов «r», «o», «o» и «t». Записи ST, соответствующие этим символам, — «117», «126», «126» и «104» соответственно.Эти числа объединяются как «0117126126104». Следовательно, зашифрованная форма корня тега на STBE — «0117126126104». Объедините зашифрованную форму слова в STEnc с последующим пробелом. Если STEnc изначально был «1», а затем он обновляется как:
    STEnc = «1, 0117126126104».

  3. Если слово является именем атрибута, оно преобразуется в строку чисел, перед которой стоит 00, с использованием ссылки ST для каждого символа слова. Эта строка чисел затем объединяется в STEnc, за которым следует пробел, и выполняется шаг 7.
    Например, второе слово XML1 «attr1» — это имя атрибута. Он состоит из пяти символов «a», «t», «t», «r» и «1». Записи таблицы символов ST, соответствующие этим символам, — это «153», «104», «104», «117» и «340» соответственно. Эти числа объединены как «00153104104117340». Таким образом, зашифрованная форма имени атрибута attr1 на STBE имеет вид «00153104104117340». Объедините зашифрованную форму слова в STEnc с последующим пробелом. Если STEnc изначально был «1, 0117126126104», он обновляется как:
    STEnc = «1, 0117126126104 00153104104117340».

  4. Если слово является значением атрибута, оно преобразуется в строку чисел, перед которой стоит 000, с использованием ссылки ST для каждого символа слова. Эта строка чисел затем объединяется в STEnc, за которым следует пробел, и выполняется шаг 7.
    Например, третье слово XML1 «значение1» является значением атрибута. Он состоит из шести символов «v», «a», «l», «u», «e» и «1». Записи ST, соответствующие этим символам, — это «850», «153», «137», «820», «146» и «340» соответственно.Эти числа объединяются как
    «000850153137820146340». Следовательно, зашифрованная форма значения атрибута value1 на STBE становится «000850153137820146340». Как и раньше, он объединяется с STEnc, за которым следует пробел. Если STEnc изначально был «1, 0117126126104 00153104104117340», он обновляется как:
    STEnc = «1, 0117126126104 00153104104117340 000850153137820146340».

  5. 0 используется для обозначения закрывающего тега. Когда встречается закрывающий тег, 0 соединяется со строкой STEnc, за которой следует пробел.

  6. Если слово является переменной частью XML, оно преобразуется в строку чисел с использованием ссылки ST для каждого символа слова. Эта строка чисел затем объединяется в STEnc, за которым следует пробел.
    Например, седьмое слово XML1 «iiti» является переменной частью XML. Он состоит из четырех символов «i», «i», «t» и «i». Записи ST, соответствующие этим символам, — «122», «122», «104» и «122» соответственно. Эти числа объединены как «122122104122».Эта строка чисел затем объединяется в STEnc, за которым следует пробел. После завершения шифрования всего XML 1 зашифрованное сообщение STEnc выглядит так:
    STEnc = «1, 0117126126104 00153104104117340 000850153137820146340 00153104104117349 000850153137820146349 0116153109146 122122104122 1 0 0850153137820146 349 2 0».
    Поскольку ключ [8] определяет размер зашифрованного сообщения на основе таблицы символов, диапазон ключа [8] составляет от 1 до целого числа в зависимости от задержки в сети между поставщиком услуг и клиентом.

  7. Этот шаг является шагом создания ТАТ. Этот шаг выполняется только для неизменяемых частей XML. Числа, соответствующие каждому символу в неизменяемых словах, складываются и сохраняются в переменной sum. Количество цифр в целых числах, представляющих неизменяемые части XML (скажем, noOfDigitsForNonVars), должно быть минимальным и таким, чтобы он мог вместить в него все неизменяемые части. Это может быть принято сервером и клиентом отдельно и автоматически на основе количества неизменяемых частей, используемых в настоящее время для связи (скажем, noOfNonVars).Далее производятся следующие расчеты:

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

    2. noOfDigitsForNonVars = ⌈log10 (noOfNonVars + 1) ⌉

      Здесь мы добавляем 1, потому что noOfNonVars, кратное 10, дает неверное представление о noOfDigitsForNonVars, если noOfDigitsForNonVars = ⌈log10 (noOfNonVars) ⌉. Это связано с тем, что мы используем ноль для обозначения типа слова, поэтому мы не должны включать ноль в неизменяемую часть отображения чисел.Если noOfNonVars равно 10, тогда ⌈log10 (noOfNonVars) ⌉ дает 1. Это означает, что в таком случае нам необходимо обязательно использовать все цифры от 0 до 9 для отображения различных неизменяемых частей в TAT. Добавление 1 в формулу выше снимает это ограничение.

    3. diff = noOfDigitsForNonVars- (количество цифр в сумме)

    4. Наконец, запись (слово, сумма) сохраняется в TAT. Однако, если соответствующая сумма уже присутствует в TAT, повторите: sum = (sum + 1)% 10noOfDigitForNonVars, пока sum не получит уникальное значение, отличное от 0.

    Например, тег «корень» состоит из четырех символов «r», «o», «o», «t». Записи ST, соответствующие этим символам, — «117», «126», «126» и «104» соответственно. Для слова «корень» выполняются следующие шаги:

    1. сумма = 117 + 126 + 126 + 104 = 473.

    2. noOfNonVars = количество новых неизменяемых частей, представленных в текущем сообщении (7) + количество записей, уже присутствующих в TAT (0) = 7.

    3. noOfDigitsForNonVars = ⌈log10 (7 + 1) ⌉ = 1.

    4. Запись (корень, 4) сохраняется в TAT, потому что в TAT нет другой суммы со значением 4. Если в TAT действительно присутствует другая запись с суммой = 4, то запись, соответствующая «корню», хранится в ТАТ был бы («корень», 5). Таблица тегов (TAT) создается одновременно с STBE, как показано на рисунке 10. TAT хранит согласованные целые числа, соответствующие каждой неизменяемой части XML.


    Рисунок 10: Таблица тегов (TAT)

    Есть положение, что в будущем в диалог будут включены новые неизменяемые части, и поэтому noOfDigitsForNonVars может увеличиваться.Следовательно, Таблицу тегов (TAT) также необходимо будет обновить в будущем для включения новых неизменяемых частей. Как правило, для связи RESTful не требуется более 100 различных неизменяемых частей (хотя одни и те же неизменяемые части могут повторяться в сообщении более 100 раз). Следовательно, noOfDigitsForNonVars редко бывает больше двух.

    Предположим, что три новых тега вводятся позже в «XML 1» как t1, t2 и t3, тогда необходимо выполнить следующие вычисления:

    1. Тег «t1» состоит из двух символов «t» и «1» с отображением ST «104» и «340» соответственно.
      сумма = 104 + 340 = 444.

    2. noOfNonVars = количество новых неизменяемых частей, представленных в текущем сообщении (3) + количество записей, уже присутствующих в TAT (7) = 10.

    3. noOfDigitsForNonVars = ⌈log10 (10 + 1) ⌉ = 2.

    Недавно обновленная таблица тегов (TAT) показана на рис. 11.


    Рисунок 11: Обновленная таблица тегов
  8. Сервер отправляет STEnc клиенту в теле ответа HTTP в виде простого текста.

3.3 Расшифровка на основе таблицы символов (STBD) и создание TAT на стороне клиента

До получения ответа на свой первый запрос у клиента нет таблицы тегов (TAT). Клиент получает STEnc в виде простого текста как часть ответа. Клиент расшифровывает STEnc и одновременно создает TAT. Каждая разделенная пробелом подстрока чисел в STEnc называется словом. «(1,)», «0117126126104», «00153104104117340» и т. Д. — это различные слова в STEnc.Также есть несколько глобальных переменных. Глобальные переменные noOfNonVars и noOfDigitsForNonVars изначально равны 0, а глобальная переменная closed изначально равна 1. Определена глобальная строка STDec, которая изначально имеет значение NULL, и определен глобальный стек s, который изначально пуст. Далее выполняются следующие шаги:

  1. Первое слово передает номер тега, который был зашифрован с помощью ключа получателя. В нашем примере первое слово — (1,), что означает, что все шифрование (STEnc) было выполнено с использованием ключа клиента.Таким образом, клиент может расшифровать все шифрование.

  2. Шаги с 3 по 15 повторяются в STEnc, начиная со второго слова.

  3. Если слово начинается с 0, это означает тег. Предыдущий 0 удаляется из слова.
    Например, чтобы расшифровать слово 0117126126104, предыдущий 0 сначала удаляется, и слово становится 117126126104.

  4. Если слово начинается с 00, оно подразумевает имя атрибута. Предыдущие 00 удаляются из слова.
    Например, для расшифровки слова 00153104104117340 предыдущее 00 сначала удаляется, и слово становится 153104104117340.

  5. Если слово начинается с 000, это значение атрибута. Предыдущие 000 удаляются из слова.
    Например, чтобы расшифровать слово 000850153137820146340, предыдущее 000 удаляется, и слово становится 850153137820146340.

  6. Если слово не начинается с 0, это переменная часть сообщения.
    Например, слову 122122104122 не предшествует 0 и, следовательно, это переменная часть сообщения.

  7. Оставшееся слово разбивается на подстроки по ключевым [8] символам каждая.
    Например, оставшееся слово 117126126104 нарезается на подстроки по три символа каждая, потому что ключ [8] в этом случае равен 3. После нарезки клиент получает следующие четыре подстроки: «117», «126», «126» и «104».

  8. Затем подстроки преобразуются в целые числа.

  9. Если слово не является переменным, то все его целые числа складываются, а результат сохраняется в переменной с именем sum.
    Для слова 117126126104 сумма = 117 + 126 + 126 + 104 = 473.

  10. Если слово неизменяемое, то производятся следующие вычисления:

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

    2. noOfDigitsForNonVars = ⌈log10 (noOfNonVars + 1) ⌉

    3. diff = noOfDigitsForNonVars- (количество цифр в сумме)

    Например, для слова 117126126104 в STEnc выполняются следующие вычисления:

    1. noOfNonVars = количество новых неизменяемых частей, представленных в текущем сообщении (7) + количество записей, уже присутствующих в TAT (0) = 7.

    2. noOfDigitsForNonVars = ⌈log10 (7 + 1) ⌉ = 1.

    noOfDigitsForNonVars вычисляется для каждого слова и обновляется при увеличении количества неизменяемых слов. Как правило, для связи RESTful не требуется более 100 различных неизменяемых частей (хотя одни и те же неизменяемые части могут повторяться в сообщении более 100 раз). Поэтому редко, когда noOfDigitsForNonVars может быть больше двух. Этот тип примеров также обсуждался в последнем подразделе.

  11. Соответствующий символ для каждого числа, найденного после разделения слова, идентифицируется в ST.
    Например, в слове 117126126104 «117» относится к «r», «126» относится к «o», а «104» относится к «t».

  12. Эти символы объединяются в том же порядке, в котором соответствующие целые числа появляются в зашифрованном слове. Объединенная строка сохраняется в переменной var.
    Например, в зашифрованном слове 117126126104 символы «r», «o», «o» и «t» объединены, чтобы сделать его «корнем». var = «корень»

  13. Если var — неизменяемая часть, выполняется следующее:

    1. Запись (переменная, сумма) хранится в ТАТ.Однако, если соответствующая сумма уже присутствует в TAT, повторите: sum = (sum + 1)% 10noOfDigitForNonVars, пока сумма не получит уникальное значение, отличное от 0.
      Например, запись (корень, 4) хранится в TAT, потому что в TAT нет другой суммы со значением 4. Если запись присутствовала в TAT с суммой = 4, то запись, соответствующая «корню», будет храниться в TAT будет («корень», 5). Таблица тегов (TAT) создается одновременно с STBD, который совпадает с сервером, как показано на рисунке 10.

    2. Если переменная var является тегом, а переменная closed = 0, тогда STDec = STDec +> + <+ var. Если closed = 1, то STDec = STDec + <+ var. var помещается в стек s. Переменная closed обновляется до closed = 0.
      Для var = «root» STDec = «

    3. Если переменная является именем атрибута, тогда
      STDec = STDec + [пробел] + var + «=» + «‘ ».
      После создания var = «attr1», STDec = «

    4. Если переменная является значением атрибута, тогда STDec = STDec + var + ”’ ”.
      После создания var = «value1», STDec = «

  14. Если var — переменная часть, выполняются следующие шаги:

    1. Если закрытая переменная = 0, то STDec = STDec +> + var. Если closed = 1, то STDec = STDec + var. Переменная closed обновляется до closed = 1.

    2. В зависимости от типа данных расшифрованной переменной части, клиент принимает решение о типе данных, содержащихся в его теге контейнера.Например, переменная часть «iiti» указывает, что тег контейнера содержит строковый тип данных.

  15. Если слово состоит из одного символа 0, в стеке s выполняется операция «pop» для поиска самого внутреннего открытого тега. Если closed = 0, то STDec = STDec +> + . Если closed = 1, то STDec = STDec + . Обновление закрыто = 1.

После обработки всех слов STEnc клиент получает STDec как:
STDec = «<корневой атрибут1 =« значение1 »
attr2 = ‘значение2’> iiti 2
».
Созданный TAT такой же, как и на сервере, и показан на рисунке 10.

3.4 Шифрование на основе таблиц тегов (TATBE)

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

TATBE очень похож на STBE с той лишь разницей, что таблица символов (ST) используется для посимвольного шифрования сообщения, а здесь мы используем таблицу тегов (TAT) для сопоставления неизменяемых частей с уникальные числа.

Предположим, что зашифрованное сообщение сохраняется в глобальной переменной строкового типа TATEnc.Начальное значение TATEnc равно нулю. Непеременные и переменные части XML рассматриваются в том же порядке, в котором они появляются в XML. Непеременная и переменная части XML вместе составляют слово. Например, в XML1 порядок появления слов следующий: «», «attr1», «value1», «attr2», «value2», «», «iiti», «. »,« »,« 2 »,« »и« ».

Как и в STBE, в начале TATEnc добавляется список номеров тегов, разделенных запятыми, за которым следует пробел.Этот список номеров тегов указывает получателю, какой тег и его дочерние элементы были зашифрованы с использованием ключа клиента.
Например, число (1,) в начале TATEnc означает, что получатель имеет доступ к тегу «root» и его дочерним элементам в XML1 (то есть ко всему документу). Число (2,) в начале TATEnc означает, что получатель имеет доступ к тегу «name» и его дочерним элементам в XML1. Наличие (2,3,) в начале TATEnc указывает, что получатель имеет доступ к тегам «имя» и «значение» и их дочерним элементам в XML1.Здесь мы предполагаем, что весь XML был зашифрован с использованием ключа клиента. TATEnc обновляется до: TATEnc = TATEnc + «1,». Шаги, включенные в TATBE, заключаются в следующем.

  1. Шаги 2–7 повторяются для каждого слова в XML.

  2. Если слово является тегом, выполняется поиск этого слова в ТАТ. Если слово найдено в TAT, выбирается соответствующее ему целое число. Выбранное целое число преобразуется в строку и к ней добавляется 0. Мы сохраняем эту строку чисел в переменной var.Следующее обновление TATEnc: TATEnc = TATEnc + [пробел] + var. Если тег недоступен в TAT, переходите к шагу 6.
    Например, первое слово XML1 — это тег «корень». Этот тег находится в ТАТ. Соответствующее целое число тега 4 извлекается из TAT. Это целое число преобразуется в строку и добавляется к 0. var = 04. TATEnc обновляется до: TATEnc = TATEnc + [пробел] + «04».

  3. Если слово является именем атрибута, поиск этого слова выполняется в ТАТ. Если слово найдено в TAT, выбирается соответствующее ему целое число.Выбранное целое число преобразуется в строку и к ней добавляется 00. Эта числовая строка сохраняется в переменной var. Затем TATEnc обновляется как: TATEnc = TATEnc + [пробел] + var. Если имя атрибута недоступно в TAT, перейдите к шагу 6.
    Например, второе слово XML1 — это имя атрибута «attr1». Это имя атрибута доступно в TAT. Соответствующее целое число имени атрибута, 8, извлекается из TAT. Это целое число преобразуется в строку и добавляется 00.var = 008. TATEnc обновляется до: TATEnc = TATEnc + [пробел] + «008».

  4. Если слово является значением атрибута, ТАТ ищет это слово. Если слово найдено в TAT, выбирается соответствующее ему целое число. Выбранное целое число преобразуется в строку и к ней добавляется 000. Эта строка чисел называется var. Затем TATEnc обновляется как: TATEnc = TATEnc + [пробел] + var. Если имя атрибута недоступно в TAT, перейдите к шагу 6.
    Например, второе слово XML1 — это значение атрибута «значение1».Это имя атрибута доступно в TAT. Соответствующее целое число имени атрибута, 2, выбирается из TAT. Это целое число преобразуется в строку и добавляется к 000. var = 0002. TATEnc обновляется до: TATEnc = TATEnc + [пробел] + «0002».

  5. 0 используется для представления закрывающего тега. Когда появляется закрывающий тег, 0 присоединяется к строке TATEnc, разделенной пробелом.

  6. Если слово составляет неизменяемую часть XML, которой нет в TAT, слово преобразуется в строку чисел с помощью STBE.TATEnc обновляется как TATEnc = TATEnc + [пробел] + результат STBE для слова.

  7. STBE исследуется для данного переменного слова, и TATEnc обновляется как: TATEnc = TATEnc + [пробел] + результат STBE для слова.

По завершении шифрования XML 1 зашифрованное сообщение TATEnc выглядит как TATEnc = «1, 04 008 0002 009 0003 05 122122104122 0 06 349 0 0».

Пока запись для слова присутствует в TAT, сервер не использует STBE для шифрования слова.Однако, если новая неизменяемая часть вводится в XML, как показано в XML 2, вновь введенная неизменяемая часть должна быть зашифрована с использованием STBE, а остальные неизменяемые части будут зашифрованы с использованием TATBE. Для XML, представленного в XML 2, окончательное зашифрованное сообщение выглядит следующим образом: TATEnc = «1, 04 008 0002009 0003 05 122122104122 0 06 349 0 0116850 153340 0 0».

XML 2:

 <корень attr1 = "значение1" attr2 = "значение2">
 iiti 
 2 
 a1 

 

3.5 Расшифровка на основе таблицы тегов (TATBD)

TATBD означает расшифровку на основе TAT, которая существует как на стороне клиента, так и на стороне сервера. Клиент получает TATEnc в виде простого текста в ответе, тогда как сервер получает его в теле запроса. Получатель расшифровывает TATEnc. Каждая разделенная пробелами подстрока чисел в TATEnc называется словом. (1,), 04, 008 и т. Д. — это разные слова в TATEnc. Мы определяем глобальную переменную с именем closed, которая изначально равна 1, глобально определенную строку TATDec, которая изначально имеет значение NULL, и глобальный стек s, который изначально пуст.

  1. Первое слово указывает номера тегов, которые были зашифрованы с помощью ключа получателя. В нашем текущем примере первое слово — (1,). Это указывает на то, что все шифрование (TATEnc) было выполнено с использованием ключа клиента, и, следовательно, клиент может расшифровать весь XML.

  2. Шаги с 3 по 12 повторяются для второго слова далее в TATEnc.

  3. Если слово начинается с 0, это означает, что это тег.Предыдущий 0 удаляется из слова и преобразуется в целое число.
    Например, чтобы расшифровать слово 04, предыдущий 0 сначала удаляется, и он становится 4. Затем то же самое преобразуется в целое число.

  4. Если слово начинается с 00, это означает, что это имя-атрибута. Предыдущий 00 удаляется из слова, и то же самое преобразуется в целое число.
    Например, чтобы расшифровать слово 008, предыдущее 00 сначала удаляется, и оно становится 8. Затем то же самое преобразуется в целое число.

  5. Если слово начинается с 000, это означает, что это значение атрибута. Предыдущее 000 удаляется из слова, и то же самое преобразуется в целое число.
    Например, чтобы расшифровать слово 0002, предыдущее 000 удаляется, и оно становится 2. То же самое преобразуется в целое число.

  6. Если перед словом нет 0, это означает, что это переменная часть сообщения. Переменная часть сообщения расшифровывается с помощью STBD.

  7. Сначала ищутся неизменяемые слова в TAT. Если слово не найдено в TAT, то оно расшифровывается с помощью STBD. Если, однако, слово найдено в TAT, то соответствующее имя выбирается и сохраняется в переменной var.

  8. Если слово является тегом и closed = 0, то TATDec = TATDec +> + <+ var. Если closed = 1, то TATDec = TATDec + <+ var. var помещается в стек s и закрывается обновляется: closed = 0.
    Для var = «root», TATDec = «

  9. Если слово является именем атрибута, тогда
    TATDec = TATDec + [пробел] + var + «=» + «‘ ».
    После создания var = «attr1» TATDec = «

  10. Если слово является значением атрибута, то TATDec = TATDec + var + «’ ».
    После создания var = «значение1» TATDec = «

  11. Если слово является переменной частью XML и closed = 0, то TATDec = TATDec +> + var.Если closed = 1, то TATDec = TATDec + var. Переменная closed обновляется до closed = 1.

  12. Если в качестве слова обнаружен единственный символ 0, то в стеке s выполняется операция pop для поиска самого внутреннего открытого тега. Если closed = 0, то TATDec = TATDec +> + . Если closed = 1, то TATDec = TATDec + . закрыто обновлено: закрыто = 1.

После работы со всеми словами TATEnc клиент получает TATDec как « attr2 = «значение2»> iiti 2
».

3.6 Коммуникация в веб-сервисе Сценарий композиции

В сценарии компоновки веб-службы есть несколько поставщиков услуг, которые работают с одним и тем же сообщением, но должны иметь доступ только к некоторым частям сообщения. Чтобы реализовать это, предлагаемый подход шифрует разные части сообщения разными ключами. Давайте рассмотрим сценарий, в котором есть один главный сервер (поставщик услуг) S и два других поставщика услуг SP1 и SP2. Обычно они согласовывают ключ под названием group_key.

Клиент C отправляет запрос на главный сервер S. S должен ответить на запрос с помощью XML 2. При составлении ответа S требует услуг SP1 и SP2. SP1 требуется для обновления значения между тегами , а SP2 требуется для обновления значений между тегами и . SP1 и SP2 не должны иметь доступа к другим тегам, которые им не принадлежат, или обновлять их. В этой ситуации используются три симметричных ключа. Первый — это ключ между S и SP1 (скажем, K1), второй — это ключ между S и SP2 (скажем, K2), а третий — согласованный групповой ключ между всеми S, SP1 и SP2 (скажем, K3) .Общие теги XML будут зашифрованы с помощью group_key K3. Теги, которые должны обновляться только S и SP1, должны быть зашифрованы с использованием K1, а теги, которые должны обновляться только S и SP2, должны быть зашифрованы с использованием K2.

Первое слово зашифрованного сообщения сообщает SP1 и SP2 об одном или нескольких номерах тегов, разделенных запятой, которые они должны обрабатывать. Если секретный ключ SP1-S равен [12, 6, 1, 1, 1, 14, 4, 1, 3, 2], секретный ключ SP2-S равен [6, 12, 1, 0, 1, 14, 3, 1, 3, 2], а group_key — [7, 10, 0, 0, 1, 14, 3, 0, 3, 2].Предполагается, что SP1 обрабатывает второй тег, то есть имя и его дочерний элемент. Предполагается, что SP2 обрабатывает третий и четвертый теги, то есть value, nv и их дочерние элементы. Сообщение на основе TAT от S к SP1: «2, 01 009 0002003 0004 05 122122104122 0 07 313 0 08 356290 0 0». Сообщение на основе ST от S к SP1: «2, 0232325325180 00137180180232257 000136137126157314257 00137180180232226 000136137126157314226 0116153109146 122122104122 0 02

265326320 3162 0

9». Сообщение на основе TAT от S к SP2: «3,4, 01 009 0002 003 0004 05 122122104122 0 07 313 0 08 356290 0 0».Сообщение на основе ST от S к SP2: «3,4, 0232325325180 00137180180232257 000136137126157314257 00137180180232226.
000136137126157314226 0116153109146 122122104122 0 02

265326320 313 0 0410291 356265 0 0 ”.

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

3.7 Аутентификация сообщений в составе веб-сервисов

Аутентификация сообщения — обязательный шаг в любом разговоре, где есть возможность обновлений другими посредниками, потому что зашифрованное сообщение также может быть изменено.Для аутентификации сообщений мы используем существующие алгоритмы, такие как MD5, SHA1 и т. Д. Чтобы проиллюстрировать это, мы знаем из предыдущего примера, что тег, принадлежащий S и SP1, — это . Поскольку и S, и SP1 хотят подтверждения, что тег , который является вторым тегом, не изменяется посредником. Следовательно, для достижения аутентификации сообщения после шифрования тега отправитель (S) добавляет префикс K1 к зашифрованному тегу и создает его хэш (скажем, MD5). Общий хеш прикрепляется в конце соответствующего тега.

Последовательность шагов, выполняемых отправителем (S) и получателем (SP1):

  1. Отправитель шифрует сообщение, используя TATBE, как указано выше.

  2. Основанное на TAT шифрование тега — «05 122122104122 0». Отправитель добавляет к нему закрытый ключ K1 как
    «[12,6,1,1,1,14,4,1,3,2] 05 122122104122 0».

  3. Отправитель вычисляет MD5 «[12,6,1,1,1,14,4,1,3,2] 05 122122104122 0» как «adc1aeffe1fe867740f976fd55c0c481» (скажем, D1).

  4. Основанное на TAT шифрование тега : «01 009 0002 003 0004 05 122122104122 0 07 313 0 08 356290 0 0». Отправитель добавляет к нему групповой ключ K3 как «[7,10,0,0,1,14,3,0,3,2] 01 009 0002 003 0004 05 122122104122 0 07 313 0 08 356290 0 0». .

  5. Отправитель (S) вычисляет MD5 для «[7,10,0,0,1,14,3,0,3,2] 01 009 0002 003 0004 05 122122104122 0 07 313 0 08 356290 0 0» как
    «72afa9838090da9c5d82d2060c42f48c» (скажем, D2).

  6. Перед отправкой ответа отправитель добавляет эти дайджесты сразу после закрытия соответствующего тега, для которого были рассчитаны дайджесты. D1 добавляется после закрытия второго тега, а D2 добавляется после закрытия тега «».

  7. Отправитель отправляет сообщение: «2, 01 009 0002 003 0004 05 122122104122 0 D1 07 313 0 08 356290 0 0 D2». Нет необходимости аутентифицировать третий и четвертый теги, потому что они не принадлежат SP1.

  8. Первое слово «(2,)» сообщает получателю, что он должен работать со вторым тегом. Всем известно, что первый тег «» зашифрован с помощью группового ключа, так как этот тег содержит все остальные теги.

  9. Переменная часть в конце тега, содержащая буквенные символы, является дайджестом сообщения соответствующего тега. Например, D1 присутствует сразу после закрытия второго тега, поэтому получатель считает его дайджестом второго тега и его дочерних элементов.Точно так же D2 — это дайджест первого тега («») и его дочерних элементов. Хотя весь тег «» и его дочерние элементы не зашифрованы с использованием ключа клиента, общий дайджест D2 создается путем добавления K3.

  10. Получатель извлекает второе слово зашифрованного сообщения и D1 и далее вычисляет его дайджест так же, как отправитель на шаге 3, используя K1. Если дайджест, рассчитанный получателем, совпадает с D1, то сообщение является подлинным.Если они не совпадают, сообщение будет отклонено.

  11. Получатель вычисляет дайджест всего сообщения, которое отправитель сделал на шаге 5, используя K3. Если дайджест, рассчитанный Получателем, совпадает с D2, то сообщение является подлинным. Если они не совпадают, сообщение будет отклонено.

Аналогичный процесс выполняется для аутентификации шифрования на основе таблицы символов. В случае связи между S и SP2 отправитель будет использовать K2 вместо K1.Сообщение от S к SP2: «2, 01 009 0002003 0004 05 122122104122 0 07 313 0 5f4ffdd89acc919420ac885e6017bcfc 08 356290 0 44e9e15af5f4289bab86c90e0d9398d1 0 72afc9842d828090dac.

3.8 Работа с данными JSON

JSON имеет структуру, отличную от XML, но оба взаимозаменяемы. Мы можем легко преобразовать XML 1 в JSON 1, как показано.

Мы рассматриваем имена JSON, значения имени JSON, начинающиеся с символа «-», как неизменяемые слова, а имена JSON в двойных кавычках — как переменные слова.Массив в JSON считается повторением тега, а значения между ними являются последовательными элементами массива. Закрытие фигурной скобки означает конец самого внутреннего открытого тега.

Поскольку XML и JSON эквивалентны, их шифрование в виде строки чисел также должно быть одинаковым.

Колонка 1 Колонка 2 Колонка 3 Колонка 4 Колонка 5 Колонка 6 Колонка 7 Колонка 8 Столбец 9 Колонка 10
12 12 161 6 101 318 473 441 565 376
18 45 637 24 404 1209 1665 1625 2185 1480
22 89 1235 48 808 2397 3245 3213 4345 2938
18 45 627 24 627 1432 1965 1921 2845 2140
8 27694 341167 27644 64961 433776 615258 578380 637558 360770
1 1 39 1 1 41 64 40 59 9
3 3 12 1 12 26 89 57 57 51
1 1 7 1 17 25 32 40 59 57
Столбец1 представляет количество уникальных {неизменяемых} частей документа.
Столбец 2 представляет количество {неизменяемых} частей, используемых в документе.
Столбец 3 представляет количество символов в {неизменяемых} частях.
Столбец 4 представляет количество {переменных} частей.
Столбец 5 представляет количество символов в частях {переменная}.
Столбец 6 представляет общее количество символов в XML (включая символы новой строки и несколько пробелов).
Столбец 7 представляет количество символов в шифровании AES (Rijndael 256).
Столбец 8 представляет количество символов в шифровании 3DES.
Столбец 9 представляет количество символов в шифровании STBE.
Столбец 10 представляет количество символов в шифровании TATBE.
Таблица 1: Сравнение размеров различных методов шифрования в различных XML

4 Преимущество предлагаемого подхода

Здесь мы представляем отличительную особенность предлагаемой техники, подчеркивая ее силу по сравнению с существующими методами.

4.1 Устранена необходимость в канонизации XML

Как упоминалось ранее, канонизация преобразует логически эквивалентные XML-документы в документы с идентичной физической структурой. Канонизация XML требуется, если мы зашифровываем XML или часть XML побайтно. Формальные методы безопасности, предоставляемые w3c и OASIS для веб-сервисов на основе SOAP [3], нуждаются в канонизации XML. Но поскольку наш метод шифрования представляет собой замену на основе текста (символ на число), нам не нужна канонизация XML.

4.2 Устранена необходимость согласования содержания

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

4.3 Нет необходимости отправлять лишние заголовки HTTP

Мы не отправляем никаких дополнительных заголовков HTTP, как в случае с Serme, G. et. al [11]. В нашем случае соглашение о ключе между поставщиком услуг и его клиентом в очень небольшой степени приводит к компрометации безгражданства веб-служб RESTful.

4.4 Представление ресурса в зашифрованном виде

В составе динамических веб-сервисов, где поставщик услуг может входить в группу или выходить из нее случайным образом, сам ресурс становится конфиденциальным документом. Включение представления ресурса в общественное достояние не подходит для такого сценария. Как уже обсуждалось в нашем подходе, клиент запрашивает ресурс, представление которого ему неизвестно, с помощью метода GET, и зашифрованный ресурс передается с использованием шифрования на основе таблицы символов (STBE).Если клиент использует пустой запрос POST или PUT, сервер явно отправляет зашифрованное представление ресурса клиенту с помощью STBE.

4.5 Подходит для составления веб-сервисов RESTful

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

4.6 Размер зашифрованного сообщения

Размер сообщения HTTP должен быть как можно меньше при обмене данными RESTful. Зашифрованное сообщение, созданное с использованием этого подхода, намного меньше по размеру, чем у других существующих алгоритмов. Кроме того, если количество неизменяемых символов больше, чем количество переменных символов, размер зашифрованного сообщения даже меньше, чем размер самого фактического сообщения. Однако, если количество переменных символов преобладает над количеством неизменяемых (что бывает относительно редко) символов, размер зашифрованного сообщения с использованием нашего подхода может иногда становиться больше, чем у существующих подходов.В этом случае размер зашифрованного сообщения во многом зависит от ключа [8]. Таблица 1 описывает сравнение размеров зашифрованных сообщений с использованием различных алгоритмов шифрования для различных типов данных XML. Здесь мы выполняем шифрование всего XML, а не определенной части XML. Ключ, используемый для STBE и TATBE, — [12,6,1,1,1,14,4,1,3,2]. Здесь мы включаем различные символы, такие как <,>, /, ‘‘, = и т. Д., Используемые для неизменяемых частей, в счет количества символов, используемых в неизменяемых частях.

4.7 Трудно атаковать

Это особенно верно в том случае, если поставщик услуг в группе является злоумышленником. Фактически, это делает этот подход особенно полезным. Следующие моменты делают это шифрование трудным для взлома:

  1. Ключ из 10 элементов генерируется случайным образом и отправляется другой стороне с использованием TLS. Поэтому другие поставщики услуг не могут обнюхать ключ.

  2. Атака грубой силой невозможна. Это потому, что сначала очень сложно перебрать все возможные значения для всех десяти элементов, а затем создать различные таблицы для всех возможностей, а затем расшифровать часть XML, которая не принадлежит злоумышленнику, всеми возможными способами. ключи.Даже если злоумышленник справится с вышеуказанным, он не будет уверен, какой из них является правильным.

  3. Аутентификация сообщений предотвращает изменение злоумышленником неавторизованной части XML посредством проверки и пробного использования.

  4. Известная атака с использованием открытого текста [12] является наиболее опасной для этого подхода. Эта атака возможна, если у злоумышленника есть допустимая пара простой текст / зашифрованный текст. Используя это, злоумышленник может попытаться угадать дальнейшее зашифрованное сообщение или даже ключ.Если каким-то образом злоумышленник сможет сопоставить различные символы и число или имя тега и номер, тогда все шифрование будет скомпрометировано. Вопрос здесь в том, как злоумышленник получит действительную пару шифрованный текст / простой текст в сценарии композиции веб-службы.

  5. Выбранная атака с открытым текстом [13] — это атака, которая предполагает, что злоумышленник может получить зашифрованный текст для любого случайного открытого текста и может попытаться угадать дальнейший диалог или сам ключ.В случае создания веб-службы злоумышленник является поставщиком услуг и будет иметь другой общий ключ, поэтому он не может получить зашифрованное сообщение с другим ключом.

  6. Различные аспекты безопасности веб-служб RESTful описаны в OWASP [14]. Здесь мы имеем дело только с безопасностью на уровне сообщений. В нашем подходе проверка входных данных XML и JSON и целостность сообщения обеспечивается посредством аутентификации сообщения документа XML или JSON.

5 Заключение

В этой статье мы предложили новый подход к безопасности на уровне сообщений в веб-сервисах RESTful.Этот подход представляет собой разновидность шифра подстановки, который заменяет разные символы уникальным целым числом. Различные имена тегов, аргументы и значения аргументов также были заменены соответствующими уникальными целыми числами. Замена символа на число устраняет необходимость канонизации XML. Этот подход устраняет необходимость согласования содержимого для одного и того же ресурса между поставщиками услуг и клиентами, а также уменьшает размер всего зашифрованного сообщения. Мы применили этот подход к нескольким данным XML и JSON и обнаружили, что в большинстве случаев наш подход приводит к меньшему размеру зашифрованных сообщений, чем существующие подходы.Мы также продемонстрировали эффективность предложенного сообщения в сценариях компоновки веб-сервисов за счет шифрования разных тегов с разными ключами, а также поддержали аутентификацию сообщения. Обсуждаемые алгоритмы реализованы на JAVA.

Благодарность

Авторы хотели бы поблагодарить «Департамент электроники и информационных технологий (DeitY) правительства Индии» за финансирование этого проекта.

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

  • 1.

    Abugharsa AB, Basari AS, Almangush H (2012) Новое шифрование изображений с использованием метода интеграции вращения блоков на основе магического куба и алгоритма AES. Int J Comput Sci Issue 9 (4): 41–47 arXiv: 1209.4777

    Google ученый

  • 2.

    Альтаф М., Ахмад А., Хан Ф.А., Уддин З., Ян X (2018) Эффективное в вычислительном отношении выборочное шифрование видео с помощью блочного шифра на основе хаоса. Multimed Tools Appl 77: 27981–27995. https: // doi.org / 10.1007 / s11042-018-6022-5

    Артикул Google ученый

  • 3.

    Аттея AM и Мадиан А.Х. (2014) Гибридный алгоритм шифрования Chaos-AES и его реализация на основе FPGA. Новый Circ Syst IEEE 217–220. https://doi.org/10.1109/NEWCAS.2014.6934022

  • 4.

    Бейкер Д.К., Фрайбергер К.Т., Понсе Б.А. (2015) Появление дополненной реальности в ортопедической хирургии и образовании. Orthopaed J Harvard Med School 8-16.

  • 5.

    Баракат М.Л., Мансингка А.С., Радван А.Г., Салама К.Н. (2013) Обобщенный аппаратный метод постобработки для генераторов псевдослучайных чисел на основе Хаоса. Электронный телекоммуникационный институт 35 (3): 448–458. https://doi.org/10.4218/etrij.13.0112.0677

    Артикул Google ученый

  • 6.

    Берри Р., Берри К., Кумар А. (2016) Обзор сетевой безопасности и криптографии. Int J Innov Res Technol 3 (7): 44–53

    Google ученый

  • 7.

    Bonaci T, Yan J, Herron J, Kohno T, Chizeck HJ (2015) Экспериментальный анализ атак типа «отказ в обслуживании» на дистанционно управляемые роботизированные системы. Cyber-Phys Syst, 11-20. ISBN: 978-1-4503-3455-6. https://doi.org/10.1145/2735960.2735980

  • 8.

    avuşolu Ü, Kaçar S, Zengin A, Pehlivan I (2018) Новый гибридный алгоритм шифрования, основанный на хаосе и алгоритме S-AES. Нелинейный Дин 92. https://doi.org/10.1007/s11071-018-4159-4

    Артикул Google ученый

  • 9.

    Чувакин А., Петерсон Г. (2010) Как правильно вести журнал приложений. Secur Priv IEEE 8: 82–85. https://doi.org/10.1109/MSP.2010.127

    Артикул Google ученый

  • 10.

    Guo Q, Strauss K, Ceze L, & Malvar H (2016) Хранение изображений высокой плотности с использованием приблизительных ячеек памяти. Языки программы поддержки Int Conf Architect Oper Syst (ASPLOS). https://doi.org/10.1145/2980024.2872413

    Артикул Google ученый

  • 11.

    Hayajneh T, Mohd BJ, Itradat A, Quttoum AN (2013) Оценка производительности и информационной безопасности с брандмауэрами. Int J Secur Appl 7 (6): 355–372. https://doi.org/10.14257/ijsia.2013.7.6.36

    Артикул Google ученый

  • 12.

    Hayajneh T, Ullah S, Mohd BJ, Balagani KS (2017) Улучшенная система безопасности WLAN с FPGA. IEEE Syst J 11 (4): 2536–2545. https://doi.org/10.1109/JSYST.2015.2424702

    Артикул Google ученый

  • 13.

    He D, Chen J, Zhang R (2012) Более безопасная схема аутентификации для информационных систем телемедицины. J Med Syst 36 (3): 1989–2012. https://doi.org/10.1007/s10916-011-9658-5

    Артикул Google ученый

  • 14.

    Hussain M, Du Q, Sun L, Ren P (2016) Повышение безопасности для передачи видео через шум. Multimed Tools Appl 75 (9): 5345–5357. https://doi.org/10.1007/s11042-015-2936-3

    Артикул Google ученый

  • 15.

    Jevdjic D, Strauss K, Ceze L, Malvar HS (2017) Приблизительное хранение сжатых и зашифрованных видео. ACM SIGARCH Comput Architect News 45 (1): 361–373. https://doi.org/10.1145/3093337.3037718

    Артикул Google ученый

  • 16.

    Хан С., Эбрахим М., Чонг К.В. (2013) Secure Force: криптографический алгоритм низкой сложности для беспроводной сенсорной сети (WSN). Control Syst Comput Eng (ICCSCE) 5062. https://doi.org/10.1109/ICCSCE.2013.6720027

  • 17.

    Киа М.Л., Аль-Бакри С.Х., Зайдан А.А., Зайдан Б.Б., Хуссейн М. (2014) Проектирование и разработка инфраструктуры видеоконференцсвязи для приложений телемедицины в реальном времени с использованием защищенной архитектуры групповой связи. J Med Syst 38 (133): 133–144. https://doi.org/10.1007/s10916-014-0133-y

    Артикул Google ученый

  • 18.

    Кокарев Л., Лиан С. (2011) Криптография на основе хаоса. Springer Berlin Heidelberg, Берлин.https://doi.org/10.1109/7384.963463

    Google ученый

  • 19.

    Li CT, Hwang MS (2010) Эффективная биометрическая схема аутентификации удаленного пользователя с использованием смарт-карт. J Netw Comput Appl 33: 1–5. https://doi.org/10.1016/j.jnca.2009.08.001

    Артикул Google ученый

  • 20.

    Лю К., Цю Дж. (2015) Исследование безопасной беспроводной передачи данных в приложениях Интернета вещей.Int J Comput Sci Netw Secur (IJCSNS) 15 (2): 18–23 http://paper.ijcsns.org/07_book/201502/20150204.pdf

    Google ученый

  • 21.

    Пратт Дж. (2012, 24 сентября). Медицинский центр Маршалла внедряет новые технологии. Получено от Mountain Democrat, https://www.mtdemocrat.com/special-sections/medical-guide-2012/marshall-medical-center-brings-in-new-technology/

  • 22.

    Roy S, Rutherford M, Crawshaw CH (2016) На пути к разработке и внедрению безопасной системы аутентификации с одноразовым паролем (OTP).Inst Electric Electron Eng 1–2. https://doi.org/10.1109/PCCC.2016.7820604

  • 23.

    Roychoudhuri L, Al-Shaer ES (2005) Прогнозирование потери пакетов в реальном времени на основе изменения сквозной задержки. IEEE Trans Netw Serv Manag 2 (1): 29–38. https://doi.org/10.1109/TNSM.2005.4798299

    Артикул Google ученый

  • 24.

    Salim E, Harba I (2017) Безопасное шифрование данных с помощью комбинации AES, RSA и HMAC. Eng Technol Appl Sci Res 7 (4): 1781–1785

    Google ученый

  • 25.

    Салим Э., Херба I ​​(2017) Безопасное шифрование данных с помощью комбинации технологий AES, RSA и HMAC. Technol Appl Sci Res 7: 1781–1785

    Google ученый

  • 26.

    Шеннон, К. (1949). Коммуникационная теория секретных систем. Белл Syst Tech J. https://doi.org/10.1002/j.1538-7305.1949.tb00928.x

    MathSciNet Статья Google ученый

  • 27.

    Шенай М.Б., Диллаву М., Шум К., Росс Д., Таббс Р.С., Ши А., Гатри Б.Л. (2011) Виртуальное интерактивное присутствие и дополненная реальность (VIPAR) для удаленной хирургической помощи.Cong Neurol Surg 68 (201): 200–207. https://doi.org/10.1227/NEU.0b013e3182077efd

    Артикул Google ученый

  • 28.

    Tiwari M, Panda SS, Biswas G (2016) Улучшенный протокол безопасного удаленного входа в систему с трехфакторной аутентификацией. Inst Electric Electron Eng 372-378. https://doi.org/10.1109/RAIT.2016.7507932

  • 29.

    Tozal ME, Wang Y, Al-Shaer E, Sarac K, Thuraisingham B, Chu B-T (2011) Адаптивное кодирование информации для безопасной и надежной беспроводной связи в телехирургии.Mob Netw Appl 18 (5): 697–711. https://doi.org/10.1007/s11036-011-0333-3

    Артикул Google ученый

  • 30.

    Wickramage C, Sahama T, Fidge C (2016) Анатомия файлов журналов: последствия для мер информационной подотчетности. Служба приложений сети электронного здравоохранения (Healthcom), 1-6. https://doi.org/10.1109/HealthCom.2016.7749426

  • 31.

    Zhang X, Chen W (2008) Новый хаотический алгоритм шифрования изображений. Процесс изображения языка аудио Int Conf 4 (3): 889–892.https://doi.org/10.1109/ICALIP.2008.45

    Артикул Google ученый

  • Алгоритм книжного шифрования | Dr Dobb’s

    Если вы не профессиональный криптоаналитик, написание криптографического кода означает вмешательство в «возможности», которые вы не можете полностью понять, и, казалось бы, незначительные промахи могут быть фатальными. Например, во время Второй мировой войны польские и британские математики взломали немецкий код Enigma только потому, что один и тот же ключ сообщения был зашифрован дважды в начале каждого сообщения.Немцы сделали это, чтобы избежать ошибок, вызванных радиопомехами, но в то же время разрушили их тщательно спланированную криптосистему. И сколько в коде промахов, которые умножают большие числа, ищут 1000-значные простые числа и шифруют фиксированный заголовок вашего документа?

    Алгоритм книжного шифра защищает от ошибок такого рода, потому что он достаточно прост, чтобы вы могли закодировать его в нескольких строках C, которые полностью понятны, но при этом чрезвычайно безопасны.Так называемые шифры Биля (unmuseum.org/beal.htm), указывающие на кладбище где-то в графстве Бедфорд, были закодированы в 1885 году, но до сих пор не расшифрованы. Этот секрет (или, возможно, мистификация) занимал умы некоторых из лучших криптоаналитиков. Точно так же, когда Саймон Сингх дал 10 задач в приложении к The Code Book , проблема № 5 (Книжный шифр) была самой сложной для победителей приза в размере 10 000 фунтов стерлингов (www.simonsingh.com/Cipher_ Challenge.html). . Тем не менее, книжный шифр, вероятно, никогда не использовался в коммерческом программном обеспечении.

    Алгоритмы книжных шифров

    По сути, алгоритм книжного шифра использует буквы последующих слов в некотором тексте или книге в качестве ключа для кодирования сообщения. На рис. 1 представлена ​​простейшая форма, обычно называемая «шифром с работающим ключом». В этом случае текст (обычно из книги) используется для предоставления очень длинного ключевого потока. Используемая книга оговаривается заранее, а используемый отрывок выбирается случайным образом для каждого сообщения и тайно указывается где-то в предыдущем сообщении. В этом примере мы согласились использовать J.К. Роулинг Гарри Поттер и Орден Феникса и начать на странице 335, строка 28, с предложения: «Гермиона закусила губу и не ответила». Мы пишем этот текст под открытым текстом и используем его как бегущую клавишу. Конкретное сообщение для отправки — «DRDOBBS». Мы выполняем XOR для соответствующих символов сообщения и рабочего ключа, чтобы получить зашифрованный текст 12 23 22 2 11 13 29.

    Обычный текст D R D O B B S
    Открытый текст (шестнадцатеричный) 44 52 44 4F 42 42 53
    Ходовой ключ H E R M I O N
    Шпонка ходовая (шестигранная) 48 45 52 4D 49 4F 4E
    Шифрованный текст (шестнадцатеричный) 0C 17 16 02 0B 0D 1D
    Шифрованный текст 12 23 22 2 11 13 29
     

    Рисунок 1: Запуск шифра ключа.

    Шифр ​​с работающим ключом намного лучше, чем знаменитый шифр Виженера, потому что мы не повторяем ключ — мы надеемся, что книга достаточно длинна, чтобы закодировать все, что мы говорим. Однако безопасность по-прежнему оставляет желать лучшего, поскольку энтропия на символ как открытого текста, так и рабочего ключа мала, а операцию комбинирования относительно легко инвертировать. Угадывая вероятные открытые тексты по зашифрованному тексту, злоумышленники в конечном итоге распознают книгу и взламывают код.

    Лучше заменить слова в открытом тексте на расположение слов из книги.Например, чтобы закодировать слово «компьютер», вы ищите первое появление слова «компьютер» в ранее выбранной книге и вводите его позицию в качестве зашифрованного текста. Второе появление слова «компьютер» заменяется позицией второго появления этого слова в книге и так далее. Настоящая проблема с этим подходом — найти слово: если вы согласитесь использовать David Copperfield в качестве кодовой книги, а затем попытаетесь зашифровать статью о хэш-функциях, вы вряд ли найдете все необходимые слова.

    Альтернативный подход, позволяющий обойти эту проблему, заключается в замене отдельных букв, а не слов, и в этом случае Книжный шифр является правильным шифром. Рисунок 2 иллюстрирует эту концепцию. Мы кодируем сообщение «DRDOBBS», используя тот же отрывок из Гарри Поттер и Орден Феникса . Чтобы закодировать букву «D», мы ищем первое слово в отрывке, начинающееся с «D» (это 6-е слово, «сделал»). Затем мы ищем первое слово, начинающееся с «R» (11-е слово, «звонил»), затем следующее слово, начинающееся с «D» (16-е слово, «вниз») и так далее.Окончательный зашифрованный текст: 6, 11, 16, 17, 2, 10, 15.

    [Щелкните изображение, чтобы просмотреть в полном размере]

    Рисунок 2: Кодирование сообщения «DRDOBBS» с использованием книжного шифра.

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

    доказуемая безопасность — доказуемо ли защищен книжный шифр?

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

    В качестве игрушечного примера предположим, что злоумышленник уже вывел (например, из известного открытого текста), что индексы от 123: 7: 41 до 123: 7: 46 составляют E-N-C-R-Y-P. Тогда нетрудно догадаться, что индекс 123: 7: 47, вероятно, обозначает T.

    .

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

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

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

    .

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

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