Ключ схема слова: Страница не найдена « фонетический разбор и цветовые схемы

Содержание

Определение, фонетический (звуко-буквенный) разбор и разбор слова по составу

На данной странице представлено лексическое значение слова «ключ», а также сделан звуко-буквенный разбор и разбор слова по составу с транскрипцией и ударениями.

Оглавление:

  1. Значение слова
  2. Звуко-буквенный разбор
  3. Разбор по составу

Значение слова

1.

КЛЮЧ1, а, м.

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

2. Приспособление для отвинчивания или завинчивания, откупоривания, приведения в действие механизма. К. для часов. Гаечный к. Телеграфный к. (для передачи по азбуке Морзе).

3. перен. То, что служит для разгадки, понимания чего-н., овладения чем-н.

К. к разгадке тайны. К. к шифру. К. местности (господствующая позиция; спец.).

4. Знак в начале нотной строки, определяющий высоту нот (спец.). Музыкальный к. Скрипичный к. Басовый к. Поэма написана в оптимистическом ключе (перен.: звучит оптимистически).

5. Верхний камень, замыкающий свод сооружения (спец.).

6. В царской России: отличительный знак камергера в виде золотого ключа, носимого на фалде мундирного фрака или на талии фрака либо мундира. Камергерский к.

Под ключ (строить, сдать здание, строение)в полной готовности. Сдать дом под ключ.

| уменьш. ключик, а, м. (к 1 и 2 знач.).

| прил. ключевой, ая, ое.

2.

КЛЮЧ2, а, м. Вытекающий из земли источник, родник. В овраге бьют ключи. Бить ключом (вытекать стремительной струёй). Жизнь бьёт ключом (перен.: кипит во 2 знач.).

| прил. ключевой, ая, ое. Ключевая вода.

Фонетический (звуко-буквенный) разбор

Клю́ч

Ключ — слово из 1 слога: Ключ. Ударение ставится однозначно на единственную гласную в слове.

Транскрипция слова: [кл’уч’]

к — [к] — согласный, глухой парный, твёрдый (парный)
л — [л’] — согласный, звонкий непарный, сонорный (всегда звонкий), мягкий (парный)
ю — [у] — гласный, ударный
ч — [ч’] — согласный, глухой непарный, мягкий (непарный, всегда произносится мягко), шипящий

В слове 4 буквы и 4 звука.

Цветовая схема: ключ


Разбор слова «ключ» по составу

ключ

Части слова «ключ»: ключ
Состав слова:
ключ — корень,
нулевое окончание,
ключ — основа слова.



Звуко-буквенный разбор слова «ключ» / Справочник :: Бингоскул

Ключ – существительное с постоянными признаками:

  • неодушевленное;
  • нарицательное;
  • муж.рода;
  • 2 склонения.

Дана форма ед.числа, Им.п.

Лексическое значение

Ключ

  1. предмет, предназначенный для открывания дверей – ключ от входной двери;
  2. водный источник, бьющий из-под земли, родник – родниковый ключ;
  3. шифр для засекреченной информации – разгадать ключ;
  4. (муз.) знак на музыкальном нотном стане – скрипичный ключ.
Деление на слоги

Ключ – 1 слог, ударный, прикрытый, закрытый.

Перенос слова

Не переносится, т.к. является односложным словом.

Транскрипция (звуковой состав) [кл`уч`]

Фонетический разбор

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

 

Звуко-буквенный разбор

Клю’ч — [кл`уч`], 1 слог

  • к — [к] – согласный, глухой, парный, твердый, парный;
  • л — [л`] – согласный, звонкий, непарный, мягкий, парный, сонорный;
  • ю — [у] – гласный, ударный;
  • ч — [ч`] – согласный, глухой, непарный, мягкий, непарный

_____________________

4 б., 4 зв.

Цветовая схема слова: 

  • Синий цвет – твердый согласный
  • Зеленый цвет – мягкий согласный
  • Красный цвет – гласный

 

Смотри также:

5. Понятие ключей. Базы данных: конспект лекций

5. Понятие ключей

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

Итак, дадим строгое определение ключа отношения.

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

t =

t(S) = {t(a) | a ? def( t) ? S} определение кортежа,

t(S) [S’ ] = {t(a) | a ? def (t) ? S’}, S’ ? S — определение унарной операции проекции;

Понятно, что проекции кортежа на подсхему соответствует подстрока строки таблицы.

Итак, что же такое ограничение уникальности ключевых атрибутов?

Объявление ключа К для схемы отношения S приводит к формулированию следующего инвариантного условия, называемого, как мы уже говорили,

ограничением уникальности и обозначаемого как:

Inv < K ? S > r(S):

Inv < K ? S > r(S) = ?t1, t2 ? r (t 1[ K] = t2 [K ] ? t 1(S) = t2(S)), K ? S;

Итак, данное ограничение уникальности Inv < K ? S > r(S) ключа К означает, что если любые два кортежа t1 и t2, принадлежащие отношению r(S), равны в проекции на ключ К

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

И второе важное требование, предъявляемое к ключу отношения, – это требование неизбыточности. Что это значит? Это требование означает, что ни для какого строгого подмножества ключа требование уникальности не предъявляется.

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

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

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

1) простой ключ – это ключ, состоящий из одного и не более атрибута.

Например, в экзаменационной ведомости по конкретному предмету простым ключом является номер зачетки, потому что по нему можно однозначно идентифицировать любого студента;

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

3) суперключ – это любое надмножество любого ключа. Следовательно, сама схема отношения заведомо является суперключом. Из этого можно сделать вывод, что любое отношение теоретически имеет, как минимум, один ключ, а может иметь их и несколько. Однако объявление суперключа вместо обычного ключа логически недопустимо, так как связано с ослаблением автоматически контролируемого ограничения уникальности. Ведь супер ключ хоть и обладает свойством уникальности, но не обладает свойством неизбыточности;

4) первичный ключ – это просто ключ, который при задании базового отношения был объявлен первым. Важно, что допустимо объявление одного и только одного первичного ключа. Кроме того, атрибуты первичного ключа ни в коем случае не могут принимать Null-значений.

При создании базового отношения в записи на псевдокоде первичный ключ обозначается primary key и в скобках указывается имя атрибута, который и является этим ключом;

5) кандидатные ключи – это все остальные ключи, объявленные после первичного ключа.

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

На псевдокоде при задании базового отношения кандидатные ключи объявляются при помощи слов candidate key и в скобках рядом, как и в случае объявления первичного ключа, указывается имя атрибута, который и является данным кандидатным ключом;

6) внешний ключ – это ключ, объявленный в базовом отношении, который при этом ссылается на первичный или кандидатный ключ того же самого или какого-то другого базового отношения.

При этом отношение, на которое ссылается внешний ключ, называется ссылочным (или родительским) отношением. А отношение, содержащее внешний ключ, называется дочерним.

В записи на псевдокоде внешний ключ обозначается как foreign key, в скобках непосредственно после этих слов указывается имя атрибута данного отношения, являющегося внешним ключом, а после этого записывается ключевое слово references («ссылается») и указать имя базового отношения и имя атрибута, на который и ссылается данный конкретный внешний ключ.

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

Сбор ключевых слов и организация ключей в MindMap

Сбор базового ядра по темам

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

Делим тему на два вида кампаний – поисковые и на РСЯ.

Рис 1. Делим ключи по темам и площадкам

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

Рис 3. А так выглядят ключи на поиск с использованием реактивного метода сбора ключей.

Как отминусовать без потерь

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

Рис 4 Что было до того, как отминусили. Видно, что очень много «левых» запросов.

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

Рис 6 Запись минус-слов на конкретные ключи через схему

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

Рис 7 Вот такая схема получается в итоге. По ней можно сориентироваться в содержании кампаний и в качестве проработки ключей

Итог

Итак, чем же MindMap может помочь при сборе ключей и контроле за кампаниями?

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

Главное, помните – хороша та схема, которую легко использовать именно Вам.

P.S.: MindMap также может помочь при проведении тестов на тексты.

Получайте бесплатные уроки и фишки по интернет-маркетингу

Оценка стойкости криптосистемы Эль-Гамаля | Статья в сборнике международной научной конференции

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

Ключевые слова: криптосистема с открытым ключом, криптосистема Эль-Гамаля, стойкость алгоритма.

 

1. ВВЕДЕНИЕ

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

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

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

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

В криптографии различают частные ключевые криптографические системы и ключевые криптографические системы с общественностью. Секретный ключ криптографии, также известный как секретный ключ или симметричный ключ шифрования, имеет давнюю историю, и основан он на использовании одного ключа для шифрования и дешифрования. Многие развитые современные частные ключевые криптографические системы основаны на Feistel шифре (например, национальный стандарт шифрования США (DES), шифр (стандарт) DES с трёхкратным шифрованием (3DES), новый национальный стандарт шифрования США (AES), международный алгоритм шифрования данных (IDEA), Blowfish, RC5, CAST и т.  д.

В 1976 г. Диффи и Хеллман опубликовали документ, описывающий новую концепцию с открытым ключом, основанную на использовании двух ключей (открытого и закрытого). С помощью новой концепции мы можем решать многие проблемы (например, ключевую проблему обмена) в  криптографии. С тех пор было изобретено много систем открытых ключей шифрования (например, RSA, ElGamal, обмена ключами Диффи-Хеллмана, эллиптических кривых и т. д.).

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

Протокол Диффи-Хеллмана отлично противостоит пассивному нападению, но в случае реализации атаки «человек в центре» он не устоит [5, 6]. Схема Эль-Гамаля была предложена Тахером Эль-Гамалем в 1984 году. Эль-Гамаль разработал один из вариантов алгоритма Диффи-Хеллмана. Он усовершенствовал систему Диффи-Хеллмана и получил два алгоритма, которые использовались для шифрования и для обеспечения аутентификации. В отличие от RSA алгоритм Эль-Гамаля не был запатентован и, поэтому, стал более дешевой альтернативой, так как не требовалась оплата взносов за лицензию. Считается, что алгоритм попадает под действие патента Диффи-Хеллмана. Алгоритм Эль-Гамаля нашел применение в нашумевшей системе Pretty good privacy (PGP), где с помощью него осуществляется управление ключами. Использовался алгоритм цифровой подписи DSA, разработанный NIST (Национальный институт стандартов и технологий) и являющийся частью стандарта DSS (Национальный стандарт ЭЦП США).

Для данной работы была выбрана криптосистема Эль-Гамаля и на её основе исследована стойкости криптосистемы Эль-Гамаля, некоторые нападения на схеме Эль-Гамаля, чтобы избежать атак.

2. КРИПТОСИСТЕМЫ ЭЛЬ-ГАМАЛЯ

Рассмотрим алгоритм Эль-Гамаля [1, 2], использующийся для передачи секретных сообщений по открытым каналам с использованием открытого ключа.

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

Числа  — публикуются как открытый ключ,  — сохраняется как секретный ключ.

Предположим, что пользователь В желает послать сообщение  пользователю А. Для того, чтобы зашифровать сообщение  выбирается случайное число , взаимно простое с числом , т. е..

Затем, В вычисляет

,

,

или

где  обозначает побитовое «исключающее ИЛИ».

Пара чисел  образует криптотекст. В посылает А пару .

Для расшифрования сообщения пользователь А вычисляет

,

или .

Поскольку

,

,

этот протокол можно использовать для передачи сообщений.

3. СТОЙКОСТЬ АЛГОРИТМА

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

Укажем некоторые определенные недостатки в схеме Эль-Гамаля:

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

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

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

 

Литература:

1.             Алферов А. П., Зубов А. Ю., Кузьмин А. С., Черемушкин А. В. Основы криптографии. 3-е изд., испр. и доп. — М.: Гелиос АРБ. 2005.

2.             Баричев Б. Б., Гончаров В. В., Серов Р. Е. Основы современной криптографии. М.: Горячая линия-Телеком, 2011.

3.             Болотов А. А., Гашков С. Б., Фролов А. Б., Часовских А. А. Алгоритмические основы эллиптической криптографии. М. Мэи. 2000.

4.             Прасолов В. В., Соловьев Ю. П. Эллиптические функции и алгебраические уравнения. М.: Факториал. 1977.

5.             Яковлев А. В., Безбогов А. А., Родин В. В., Шамкин В. Н. Криптографическая защита информации. Издательство ТГТУ. 2006.

6.             William Stallings. Cryptography and Network Security Principles and Practice. Prentice Hall. 2011.

Основные термины (генерируются автоматически): открытый ключ, DES, RSA, схема Эль-Гамаля, алгоритм Эль-Гамаля, КРИПТОСИСТЕМа ЭЛЬ-ГАМАЛЯ, секретный ключ, шифрованный текст, дискретное логарифмирование, квадратичный вычет.

Транзисторный ключ ⋆ diodov.net

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

Здесь мы научимся выполнять расчет транзисторного ключа на биполярном транзисторе (БТ). Одно из распространённых их применений – согласование микроконтроллера с относительно мощной нагрузкой: мощными светодиодами, семисегментными индикаторами, шаговыми двигателями и т.п.

Основная задача любого транзисторного ключа состоит в коммутации мощной нагрузки по команде маломощного сигнала.

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

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

Как работает транзисторный ключ

В данной статье мы рассмотрим, как работает транзисторный ключ на биполярном транзисторе. Такие полупроводниковые элементы производятся двух типов – n-p-n и p-n-p структуры, которые различаются типом применяемого полупроводника (в p-полупроводнике преобладают положительные заряды – «дырки»; в n-полупроводнике – отрицательные заряды – электроны).

Выводы БТ называются база, коллектор и эмиттер, которые имеет графическое обозначение на чертежах электрических схем, как показано на рисунке.

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

Наиболее распространенная схема БТ, работающего в ключевом режиме, приведена ниже.

Чтобы открыть транзисторный ключ нужно подвести потенциалы определенного знака к обеим pn-переходам. Переход коллектор-база должен быть смещен в обратном направлении, а переход база-эмиттер – в прямом. Для этого электроды источника питания UКЭ подсоединяют к выводам базы и коллектора через нагрузочный резистор RК. Обратите внимание, положительный потенциал UКЭ посредством RК подается на коллектор, а отрицательный потенциал – на эмиттер. Для полупроводника p-n-p структуры полярность подключения источника питания UКЭ изменяется на противоположную.

Резистор в цепи коллектора RК служит нагрузкой, которая одновременно защищает биполярный транзистор от короткого замыкания.

Команда на открытие БТ подается управляющим напряжением UБЭ, которое подается на выводы базы и эмиттера через токоограничивающий резистор RБ. Величина UБЭ должна быть не меньше 0,6 В, иначе эмиттерный переход полностью не откроется, что вызовет дополнительные потери энергии в полупроводниковом элементе.

Чтобы не спутать полярность подключения напряжения питания UКЭ и управляющего сигнала UБЭ БТ разной полупроводниковой структуры, обратите внимание на направление эмиттерной стрелки. Стрелка обращена в сторону протекания электрического тока. Ориентируясь на направление стрелки достаточно просто расположить правильным образом источники напряжения.

Входная статическая характеристика

Биполярный транзистор может работать в двух принципиально разных режимах – в режиме усилителя и в режиме ключа. Работа БТ в усилительном режиме уже подробно рассмотрена с примерами расчетов в нескольких статьях. Очень рекомендую ознакомиться с ними. Ключевой режим работы БТ рассматривается в данной статье.

Как и электрический ключ, транзисторный ключ может (и должен) находится только в одном из двух состояний – включенном (открытом) и выключенном (закрытом), что отображено на участках нагрузочной прямой, расположенной на входной статической характеристике биполярного транзистора. На участке 3-4 БТ закрыт, а на его выводах потенциалы UКЭ. Коллекторный ток IК близок к нулю. При этом ток в цепи базы IК также отсутствует, собственно по этой причине БТ и закрыт. Область на входной статической характеристике, отвечающая закрытому состоянию называется областью отсечки.

Второе состояние – БТ полностью открыт, что показано на участке 1-2. Как видно из характеристики, ток IКимеет некое значение, которое зависит от величин UКЭ и RК. В цепи база-эмиттер также протекает ток IБ, величина которого достаточна для полного открытия биполярного транзистора.

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

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

Расчет транзисторного ключа

Расчет транзисторного ключа на биполярном транзисторе выполним на примере подключения светодиода к источнику питания 9 В, то есть к кроне. В качестве управляющего сигнала подойдет обычная батарейка 1,5 В. Для примера, возьмем БТ n-p-n структуры серии 2222A. Хотя подойдет любой другой, например 2N2222, PN2222, BC547 или советский МП111Б и т.п.

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

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

Все исходные данные сведены в таблицу.

Порядок расчета

Расчет начнем с определения сопротивления резистора RК, который предназначен для ограничения величины тока IК, протекающего через светодиод VD. RК находится по закону Ома:

Величина IК равна IVD = 0,01 А. Найдем падение напряжения на резисторе:

Значение UКЭ нам известно, оно равно 9 В, ΔUVD также известно и равно 2 В. А падение напряжения на переходе коллектор-эмиттер для большинства современных маломощных БТ составляет до 0,1 В. Поэтому примем с запасом ΔUКЭ = 0,1 В. Теперь подставим все значения в выше представленную формулу:

Находим сопротивление RК:

Ближайший стандартный номинал резистора 680 Ом и 750 Ом. Выбираем резистор большего номинала RК = 750 Ом. При этом ток, протекающий через светодиод IVD в цепи коллектора, несколько снизится. Пересчитаем его величину:

Теперь осталось определить сопротивление резистора в цепи базы RБ:

Формула содержит сразу две неизвестны – ΔURб и IБ. Найдем сначала падение напряжения на резисторе ΔURб:

UБЭ нам известно – 1,5 В. А падение напряжения на переходе база-эмиттер в среднем принимают 0,6 В, отсюда:

Для определения тока базы IБ необходимо знать IК, который мы ранее пересчитали (IК = 0,0092 А), и коэффициент усиления биполярного транзистора по току, обозначаемы буквой β (бэта). Коэффициент β всегда приводится в справочниках или даташитах, но гораздо удобнее и точнее определить его с помощью мультиметра. Используемый нами 2222A имеет β = 231 единицу.

Из таблицы стандартных номиналов резисторов выбираем ближайший меньший номинал (для гарантированного открытия БТ) 22 кОм.

Для более точного выбора параметров вместо постоянных резисторов в цепи включают переменные резисторы, включенные по схеме, приведенной ниже.

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

Еще статьи по данной теме

Шифрование с открытым ключом — CoderLessons.com

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

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

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

Процесс шифрования и дешифрования изображен на следующей иллюстрации —

Наиболее важные свойства схемы шифрования с открытым ключом —

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

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

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

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

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

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

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

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

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

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

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

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

Существует три типа схем шифрования с открытым ключом. Мы обсудим их в следующих разделах —

Криптосистема RSA

Эта криптосистема является одной из исходных систем. Это остается наиболее используемой криптосистемой даже сегодня. Система была изобретена тремя учеными Роном Ривестом, Ади Шамиром и Леном Адлеманом, и, следовательно, она называется криптосистемой RSA.

Мы увидим два аспекта криптосистемы RSA: во-первых, создание пары ключей и, во-вторых, алгоритмы шифрования-дешифрования.

Генерация пары ключей RSA

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

  • Генерация модуля RSA (n)

    • Выберите два больших простых числа, p и q.

    • Рассчитайте n = p * q. Для надежного неразрушимого шифрования пусть n будет большим числом, обычно не менее 512 бит.

  • Найти производное число (е)

    • Число e должно быть больше 1 и меньше (p — 1) (q — 1).

    • Не должно быть общего множителя для e и (p — 1) (q — 1), за исключением 1. Другими словами, два числа e и (p — 1) (q — 1) взаимно просты.

  • Форма открытого ключа

    • Пара чисел (n, e) образует открытый ключ RSA и становится открытой.

    • Интересно, что хотя n является частью открытого ключа, сложность факторизации большого простого числа гарантирует, что злоумышленник не сможет найти за конечное время два простых числа (p & q), использованных для получения n. Это сила ОГА.

  • Генерация закрытого ключа

    • Закрытый ключ d рассчитывается из p, q и e. Для данных n и e существует уникальное число d.

    • Число d является обратной величиной e по модулю (p — 1) (q — 1). Это означает, что d является числом, меньшим (p — 1) (q — 1), так что при умножении на e оно равно 1 по модулю (p — 1) (q — 1).

    • Это соотношение записано математически следующим образом:

Генерация модуля RSA (n)

Выберите два больших простых числа, p и q.

Рассчитайте n = p * q. Для надежного неразрушимого шифрования пусть n будет большим числом, обычно не менее 512 бит.

Найти производное число (е)

Число e должно быть больше 1 и меньше (p — 1) (q — 1).

Не должно быть общего множителя для e и (p — 1) (q — 1), за исключением 1. Другими словами, два числа e и (p — 1) (q — 1) взаимно просты.

Форма открытого ключа

Пара чисел (n, e) образует открытый ключ RSA и становится открытой.

Интересно, что хотя n является частью открытого ключа, сложность факторизации большого простого числа гарантирует, что злоумышленник не сможет найти за конечное время два простых числа (p & q), использованных для получения n. Это сила ОГА.

Генерация закрытого ключа

Закрытый ключ d рассчитывается из p, q и e. Для данных n и e существует уникальное число d.

Число d является обратной величиной e по модулю (p — 1) (q — 1). Это означает, что d является числом, меньшим (p — 1) (q — 1), так что при умножении на e оно равно 1 по модулю (p — 1) (q — 1).

Это соотношение записано математически следующим образом:

ed = 1 mod (p − 1)(q − 1)

Расширенный Евклидов Алгоритм принимает p, q и e в качестве входных данных и дает d в качестве выходных данных.

пример

Пример генерации пары ключей RSA приведен ниже. (Для простоты понимания простые числа p & q, взятые здесь, являются небольшими значениями. На практике эти значения очень высоки).

  • Пусть два простых числа p = 7 и q = 13. Таким образом, модуль n = pq = 7 x 13 = 91.

  • Выберите e = 5, что является допустимым выбором, поскольку не существует числа с общим множителем 5 и (p — 1) (q — 1) = 6 × 12 = 72, кроме 1.

  • Пара чисел (n, e) = (91, 5) образует открытый ключ и может быть доступна любому, кому мы хотим отправлять нам зашифрованные сообщения.

  • Введите p = 7, q = 13 и e = 5 в расширенный евклидов алгоритм. Выход будет d = 29.

  • Проверьте правильность рассчитанного значения d, рассчитав:

Пусть два простых числа p = 7 и q = 13. Таким образом, модуль n = pq = 7 x 13 = 91.

Выберите e = 5, что является допустимым выбором, поскольку не существует числа с общим множителем 5 и (p — 1) (q — 1) = 6 × 12 = 72, кроме 1.

Пара чисел (n, e) = (91, 5) образует открытый ключ и может быть доступна любому, кому мы хотим отправлять нам зашифрованные сообщения.

Введите p = 7, q = 13 и e = 5 в расширенный евклидов алгоритм. Выход будет d = 29.

Проверьте правильность рассчитанного значения d, рассчитав:

de = 29 × 5 = 145 = 1 mod 72
  • Следовательно, открытый ключ (91, 5) и закрытый ключ (91, 29).

Следовательно, открытый ключ (91, 5) и закрытый ключ (91, 29).

Шифрование и дешифрование

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

Интересно, что RSA не работает напрямую со строками битов, как в случае шифрования с симметричным ключом. Он работает по номерам по модулю n. Следовательно, необходимо представлять открытый текст в виде последовательности чисел, меньшей n.

RSA шифрование

  • Предположим, отправитель хочет отправить текстовое сообщение тому, чей открытый ключ (n, e).

  • Затем отправитель представляет открытый текст в виде последовательности чисел, меньшей n.

  • Для шифрования первого открытого текста P, который является числом по модулю n. Процесс шифрования является простым математическим шагом, так как —

Предположим, отправитель хочет отправить текстовое сообщение тому, чей открытый ключ (n, e).

Затем отправитель представляет открытый текст в виде последовательности чисел, меньшей n.

Для шифрования первого открытого текста P, который является числом по модулю n. Процесс шифрования является простым математическим шагом, так как —

C = P e mod n
  • Другими словами, зашифрованный текст C равен открытому тексту P, умноженному на него e раз, а затем уменьшенному по модулю n. Это означает, что C также число меньше n.

  • Возвращаясь к нашему примеру генерации ключей с открытым текстом P = 10, мы получаем зашифрованный текст C —

Другими словами, зашифрованный текст C равен открытому тексту P, умноженному на него e раз, а затем уменьшенному по модулю n. Это означает, что C также число меньше n.

Возвращаясь к нашему примеру генерации ключей с открытым текстом P = 10, мы получаем зашифрованный текст C —

C = 10 5 mod 91

Расшифровка RSA

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

  • Получатель поднимает C до уровня своего личного ключа d. Результат по модулю n будет открытым текстом P.

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

Получатель поднимает C до уровня своего личного ключа d. Результат по модулю n будет открытым текстом P.

Plaintext = C d mod n
  • Возвращаясь снова к нашему числовому примеру, зашифрованный текст C = 82 расшифровывается до номера 10 с использованием закрытого ключа 29 —

Возвращаясь снова к нашему числовому примеру, зашифрованный текст C = 82 расшифровывается до номера 10 с использованием закрытого ключа 29 —

Plaintext = 82 29 mod 91 = 10

Анализ RSA

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

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

  • Генерация ключа . Сложность определения личного ключа из открытого ключа RSA эквивалентна факторизации модуля n. Таким образом, злоумышленник не может использовать знание открытого ключа RSA для определения закрытого ключа RSA, если он не может указать n. Это также односторонняя функция, переход от значений p & q к модулю n прост, но обратный процесс невозможен.

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

Генерация ключа . Сложность определения личного ключа из открытого ключа RSA эквивалентна факторизации модуля n. Таким образом, злоумышленник не может использовать знание открытого ключа RSA для определения закрытого ключа RSA, если он не может указать n. Это также односторонняя функция, переход от значений p & q к модулю n прост, но обратный процесс невозможен.

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

Сила шифрования RSA резко снижается против атак, если числа p и q не являются большими простыми числами и / или выбранный открытый ключ e является небольшим числом.

Эль-Гамальская криптосистема

Наряду с RSA предлагаются и другие криптосистемы с открытым ключом. Многие из них основаны на разных версиях проблемы дискретного логарифма.

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

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

Генерация пары ключей Эль-Гамаля

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

  • Выбор большого простого числа p. Обычно выбирается простое число длиной от 1024 до 2048 бит.

  • Выбор элемента генератора g.

    • Это число должно быть от 1 до p — 1, но не может быть любым числом.

    • Это генератор мультипликативной группы целых чисел по модулю p. Это означает, что для любого целого числа m, взаимно простого с p, существует такое целое число k, что g k = a mod n.

      Например, 3 является генератором группы 5 (Z 5 = {1, 2, 3, 4}).

Выбор большого простого числа p. Обычно выбирается простое число длиной от 1024 до 2048 бит.

Выбор элемента генератора g.

Это число должно быть от 1 до p — 1, но не может быть любым числом.

Это генератор мультипликативной группы целых чисел по модулю p. Это означает, что для любого целого числа m, взаимно простого с p, существует такое целое число k, что g k = a mod n.

Например, 3 является генератором группы 5 (Z 5 = {1, 2, 3, 4}).

N 3 н 3 n мод 5
1 3 3
2 9 4
3 27 2
4 81 1
  • Выбор закрытого ключа. Закрытый ключ x — это любое число больше 1 и меньше p − 1.

  • Вычислительная часть открытого ключа. Значение y вычисляется из параметров p, g и закрытого ключа x следующим образом:

Выбор закрытого ключа. Закрытый ключ x — это любое число больше 1 и меньше p − 1.

Вычислительная часть открытого ключа. Значение y вычисляется из параметров p, g и закрытого ключа x следующим образом:

y = g x mod p
  • Получение открытого ключа. Открытый ключ Эль-Гамаля состоит из трех параметров (p, g, y).

    Например, предположим, что p = 17 и g = 6 (можно подтвердить, что 6 является генератором группы Z 17 ). Закрытый ключ x может быть любым числом больше 1 и меньше 71, поэтому мы выбираем x = 5. Затем значение y вычисляется следующим образом:

Получение открытого ключа. Открытый ключ Эль-Гамаля состоит из трех параметров (p, g, y).

Например, предположим, что p = 17 и g = 6 (можно подтвердить, что 6 является генератором группы Z 17 ). Закрытый ключ x может быть любым числом больше 1 и меньше 71, поэтому мы выбираем x = 5. Затем значение y вычисляется следующим образом:

y = 6 5 mod 17 = 7
  • Таким образом, закрытый ключ равен 62, а открытый ключ — (17, 6, 7).

Таким образом, закрытый ключ равен 62, а открытый ключ — (17, 6, 7).

Шифрование и дешифрование

Генерирование пары ключей Эль-Гамаля сравнительно проще, чем эквивалентный процесс для RSA. Но шифрование и дешифрование немного сложнее, чем RSA.

Эль-Гамаль Шифрование

Предположим, отправитель желает отправить открытый текст кому-то, чей открытый ключ ElGamal (p, g, y), затем —

  • Отправитель представляет собой открытый текст в виде последовательности чисел по модулю p.

  • Для шифрования первого открытого текста P, который представлен в виде числа по модулю p. Процесс шифрования для получения зашифрованного текста C выглядит следующим образом:

    • Произвольно сгенерировать число k;
    • Вычислить два значения С1 и С2, где —

Отправитель представляет собой открытый текст в виде последовательности чисел по модулю p.

Для шифрования первого открытого текста P, который представлен в виде числа по модулю p. Процесс шифрования для получения зашифрованного текста C выглядит следующим образом:

C1 = g k mod p
C2 = (P * y k ) mod p
  • Отправьте зашифрованный текст C, состоящий из двух отдельных значений (C1, C2), отправленных вместе.

  • Ссылаясь на наш пример генерации ключей Эль-Гамаля, приведенный выше, открытый текст P = 13 шифруется следующим образом:

    • Произведите случайное число, скажем, к = 10
    • Вычислить два значения С1 и С2, где —

Отправьте зашифрованный текст C, состоящий из двух отдельных значений (C1, C2), отправленных вместе.

Ссылаясь на наш пример генерации ключей Эль-Гамаля, приведенный выше, открытый текст P = 13 шифруется следующим образом:

C1 = 6 10 mod 17
C2 = (13 * 7 10 ) mod 17 = 9

Отправьте зашифрованный текст C = (C1, C2) = (15, 9).

Эль-Гамальская расшифровка

  • Чтобы расшифровать зашифрованный текст (C1, C2) с помощью закрытого ключа x, предпринимаются следующие два шага:

    • Вычислить модульную обратную величину (C1) x по модулю p, которая равна (C1) -x , обычно называемому коэффициентом дешифрования.

    • Получите открытый текст, используя следующую формулу —

Чтобы расшифровать зашифрованный текст (C1, C2) с помощью закрытого ключа x, предпринимаются следующие два шага:

Вычислить модульную обратную величину (C1) x по модулю p, которая равна (C1) -x , обычно называемому коэффициентом дешифрования.

Получите открытый текст, используя следующую формулу —

C2 × (C1) -x  mod p = Plaintext
  • В нашем примере для расшифровки зашифрованного текста C = (C1, C2) = (15, 9) с использованием закрытого ключа x = 5 коэффициент дешифрования равен

В нашем примере для расшифровки зашифрованного текста C = (C1, C2) = (15, 9) с использованием закрытого ключа x = 5 коэффициент дешифрования равен

15 -5  mod 17 = 9

Извлечь открытый текст P = (9 × 9) мод 17 = 13.

Эль-Гамаль Анализ

В системе ElGamal каждый пользователь имеет закрытый ключ x. и имеет три компонента открытого ключа — простой модуль p, генератор g и открытый Y = g x mod p . Сила Эль-Гамаля основана на сложности проблемы дискретного логарифма.

Размер безопасного ключа обычно> 1024 бит. Сегодня используется даже ключ длиной 2048 бит. Что касается скорости обработки, Elgamal довольно медленный, он используется в основном для протоколов аутентификации ключей. Из-за более высокой эффективности обработки варианты ElGamal с эллиптической кривой становятся все более популярными.

Криптография с эллиптической кривой (ECC)

Криптография с эллиптической кривой (ECC) — это термин, используемый для описания набора криптографических инструментов и протоколов, безопасность которых основана на специальных версиях проблемы дискретного логарифма. Он не использует числа по модулю p.

ECC основан на наборах чисел, которые связаны с математическими объектами, называемыми эллиптическими кривыми. Существуют правила сложения и вычисления кратных этих чисел, так же как и для чисел по модулю p.

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

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

Более короткие ключи дают два преимущества:

  • Простота управления ключами
  • Эффективные вычисления

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

Схемы RSA и Эль-Гамаля — Сравнение

Давайте кратко сравним схемы RSA и Эль-Гамаля по различным аспектам.

SRFI 88: объекты ключевого слова

SRFI 88: объекты ключевого слова Ключевые слова объекты Марк Фили

Этот SRFI в настоящее время имеет статус final . Вот объяснение каждого статуса, который может иметь SRFI. Чтобы внести свой вклад в этот SRFI, отправьте электронное письмо по адресу [email protected] . Чтобы подписаться на список, следуйте этим инструкциям. Вы можете получить доступ к предыдущим сообщениям через архив списка рассылки.

  • Поступила: 01.04.2006
  • Проект: 2006-04-11—2006-07-10
  • Пересмотрено: 28 марта 2007 г.
  • Финал: 2007-07-03

Этот SRFI определяет ключевое слово объектов, тип данных, аналогичный Условные обозначения схемы.Объекты ключевых слов имеют тот же лексический синтаксис, что и символы, но они должны заканчиваться двоеточием. Более того, ключевые объекты самооценка. Процедуры преобразования между строками и объектами ключевых слов (строка-> ключевое слово и ключевое слово-> строка) и определен предикат типа (ключевое слово?). Ну наконец то этот SRFI определяет необходимые изменения лексического синтаксиса схемы. для размещения ключевых слов.

Мотивация к объектам ключевых слов проистекает из необходимости маркеров для определить необязательные именованные параметры, например, в SRFI 89 (опционально позиционный и именованные параметры).Здесь мы имеем в виду « параметр » в общем смысле параметра API (будь то синтаксический или процедурный API). Тем не менее мы будем использовать терминологию процедур, а именно: вызывающий и вызываемый, чтобы идентифицировать две стороны API.

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

  1. Конструкторы для документов с атрибутами, такими как HTML-код:
        (html-p align: 'center
                (html-font face: "helvetica"
                           размер: «+3»
                           "Заголовок"))
     
  2. Конструктор хеш-таблицы с множеством параметров (например, минимальный и максимальные коэффициенты нагрузки, начальный размер стола, ключ хэш-функцию и ключевую функцию проверки равенства и т. д.):
        (Размер столика: 100000
                    тест: строка =?
                    хеш: длина строки)
     
  3. Конструкторы виджетов для графических интерфейсов:
        (tcltk-рамка рельефная: 'гребень
                     ширина границы: 4
                     высота: "50 пикселей"
                     ширина: «100 пикселей»)
     
  4. Синтаксическая форма для определения новых типов записей и сгенерированные конструкторы записей:
        (точка определения типа
          идентификатор: _5c17ca1a-83e0-45eb-9c8e-74a03dfe89db
          Икс  ; x, y, z - поля, необходимые конструктору
          y
          z)
    
        (цветная точка определения типа
          наследует: точка
          идентификатор: _9d4ba977-2177-4650-8b96-2d781bfee771
          запечатанный: #t
          (изменяемый цвет: #f по умолчанию: "черный"); поле цвета является необязательным
          (уровень по умолчанию: 0, тип: int8)); поле слоя необязательно
    
        (определить p1 (цветная точка 1 2 3))
        (определить p2 (цветная точка 0 0 0 слой: 5))
     
  5. Процедуры открытия порта, которые поддерживают несколько вариантов порта:
        (открытый файл (путь к списку: "myfile"
                         направление: 'вывод
                         кодировка символов: 'UTF-8
                         eol-кодирование: 'cr-lf
                         добавить: #t))
     

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

Некоторые реализации Scheme в настоящее время содержат объекты ключевых слов, часто моделируется после объектов ключевых слов, указанных в DSSSL стандартный или Common Lisp. Вот неполный список: Bigloo, Chicken, EdScheme, Gambit, Gauche, Guile, Jade (реализация DSSSL), Kawa, MzScheme, STKlos и Sizzle.

К сожалению, некоторые из этих реализаций совместимы. Поскольку лексический синтаксис, в некоторых реализациях двоеточие должно в конце (как в DSSSL), в некоторых реализациях он должен идти в начале (как в Common Lisp), возможно, с префиксом хеша знак, а в остальных случаях либо в начале, либо в конце.Это SRFI использует синтаксис завершающего двоеточия, потому что он не конфликтует с существующий код схемы, в котором используются идентификаторы с начальным двоеточием, такие как SRFI 42 (Жадное понимание). Основная цель этого SRFI — помочь стандартизировать объекты ключевых слов в этих реализациях и в будущем реализации, которые их поддерживают.

Как и символы, ключевые слова — это объекты, полезность которых зависит от факта. что два ключевых слова идентичны (в смысле eqv? ) тогда и только тогда, когда их имена пишутся одинаково.Тем не мение, Ключевые слова и символы — это разные типы данных. Ни одно ключевое слово не идентично символу (в смысле eqv? ) или любому объекту другой тип данных.

На уровне лексического синтаксиса ключевые слова выглядят как символы, заканчивающиеся на толстая кишка. Категория лексического синтаксиса R5RS для символов: <идентификатор>. Эту категорию необходимо изменить, чтобы идентификатор не может заканчиваться двоеточием, если только это не : ( символ, состоящий только из двоеточия). Категории <токен> и <простые данные> необходимо быть расширенным, и категория <объект ключевого слова> нуждается в добавляется следующим образом:

<токен> -> <идентификатор> |  | <число>
     | <персонаж> | <строка>
     | (|) | # (| '| `|, |, @ | .  | <объект ключевого слова>

<простые данные> ->  | <число>
     | <персонаж> | <строка> | <символ> | <объект ключевого слова>

<объект ключевого слова> -> <идентификатор>:
 

Обратите внимание, что правило для должно быть действительным. даже в реализациях Scheme, которые расширили Синтаксис для поддержки цитируемых символов как указанные в исходной спецификации SRFI 75 (данные Unicode R6RS). Другими словами, в таком реализации, | foo |: и foo: являются то же ключевое слово и | foo: | — это символ, а не ключевое слово, а ||: — ключевое слово.Использование этого ключевого слова в кавычках лексический синтаксис все объекты ключевых слов, производимые строка-> ключевое слово процедура и записывается с запись процедура будет считана обратно с читает процедуру как идентичное ключевое слово (в смысле экв? ).

Ключевые слова самооценки. Синтаксис выражений должен быть расширен путем изменения категории <самооценка> включить <объект ключевого слова>:

<самооценка> ->  | <число>
     | <персонаж> | <строка> | <объект ключевого слова>
 
процедура: (ключевое слово? obj )

Возвращает #t, если obj является объектом ключевого слова, в противном случае возвращает #f.

(ключевое слово? 'foo :) ==> #t
(ключевое слово? foo :) ==> #t
(ключевое слово? 'foo) ==> #f
(ключевое слово? ':) ==> #f
(ключевое слово? || :) ==> #t (если поддерживается цитирование ключевых слов)
(ключевое слово? (car '(a: b :))) ==> #t
(ключевое слово? "bar") ==> #f
 
процедура: (ключевое слово-> строка ключевое слово )

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

(ключевое слово-> строка foo :) ==> "foo"
(ключевое слово-> строка || :) ==> "" (если поддерживается цитирование ключевых слов)
(ключевое слово-> строка
   (строка-> ключевое слово "a b c")) ==> "a b c"
 
процедура: (строка-> ключевое слово строка )

Возвращает объект ключевого слова с именем строка .

(строка-> ключевое слово "foo") ==> foo:
(строка-> ключевое слово "") ==> ||: (если поддерживается цитирование ключевых слов)
 

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

    (определить реальный символ? символ?)
    (определить реальный символ-> строковый символ-> строка)
    (определить реальную строку-> символьную строку-> символ)

    (определить ключевое-слово, похожее на ключевое слово без кавычек?
      (лямбда (ы)
        (пусть ((n (длина строки s)))
          (и (> n 1)
               (char =? (строка-ссылка s (- n 1)) # \ :)))))

    (установить! символ?
      (лямбда (объект)
        (и (реальный символ? obj)
             (не (похоже на ключевое слово без кавычек?
                   (реальный-символ-> строковый объект))))))

    (определить ключевое слово?
      (лямбда (объект)
        (и (реальный символ? obj)
             (похоже на ключевое слово без кавычек?
              (реальный-символ-> строковый объект)))))

    (установить! символ-> строка реальный-символ-> строка)

    (определить ключевое слово-> строка
      (лямбда (к)
        (пусть * ((s (реальный-символ-> строка k))
               (n (длина строки s)))
          (подстрока s 0 (- n 1))))); удалить толстую кишку

    (установить! строка-> символ
      (лямбда (ы)
        (если (выглядит как ключевое-слово без кавычек?)
            (ошибка "извините. .. символ будет выглядеть как ключевое слово! ")
            (реальная строка-> символ s))))

    (определить строку-> ключевое слово
      (лямбда (ы)
        (пусть ((s-двоеточие (добавление строки s ":")))
          (если (похожее-ключевое-слово без кавычек? s-двоеточие)
              (реальная строка-> символ s-двоеточие)
              (ошибка "извините ... ключевое слово будет выглядеть как символ!")))))
 

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

    (определите foo: 'foo :)
    (определить бар: 'бар :)
 

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

Авторское право (C) Марк Фили (2006). Все права защищены.

Разрешение предоставляется бесплатно любому лицу, получившему копия этого программного обеспечения и связанных файлов документации («Программное обеспечение»), работать с Программным обеспечением без ограничений, в том числе без ограничений права на использование, копирование, изменение, объединение, публикацию, распространение, сублицензию, и / или продавать копии Программного обеспечения, а также разрешать лицам, которым Для этого предоставляется программное обеспечение при соблюдении следующих условий:

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

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕТСЯ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ, ПРИГОДНОСТЬ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ И ЗАЩИТА ОТ ПРАВ. НИ В КОЕМ СЛУЧАЕ АВТОРЫ ИЛИ ДЕРЖАТЕЛИ АВТОРСКИХ ПРАВ НЕСУТ ОТВЕТСТВЕННОСТЬ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УБЫТКИ ИЛИ ДРУГИЕ ОТВЕТСТВЕННОСТЬ, ВОЗНИКАЮЩАЯ ЛИ В РЕЗУЛЬТАТЕ ДОГОВОРА, ИЛИ ИНОСТРАННЫМ ПРАВОМ ОТ, НЕ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМ ДЕЙСТВИЯ В ПРОГРАММНОМ ОБЕСПЕЧЕНИИ.


Редактор: Донован Колбли

Разработка схемы приоритезации ключевых слов

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

Как определить схему приоритизации ключевых слов

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

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

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

При рассмотрении ключевого слова оцените его потенциал, изучив три основные категории:

  1. Объем поиска, или количество поисков, выполненных по определенному ключевому слову за определенный период, что указывает на потенциальный объем поисковых запросов. трафик по этому ключевому слову.
  2. Конкуренция , мера сложности создания единицы трафика, исходящего из поиска, для этого конкретного ключевого слова.
  3. Релевантность аудитории , показатель качества трафика, генерируемого этим конкретным ключевым словом.

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

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

KEI = Количество ежемесячных поисков по ключевым словам / Количество страниц в результатах Google

Здесь в формуле ранжирования используются два типа факторов: Объем поиска и Конкуренция .

Логика, лежащая в основе этого проста: если ключевое слово ищут чаще (большее количество поисков в месяц), то больше шансов быть найденным и найденным через Google. С другой стороны, чем больше страниц в результатах Google, тем больше «конкуренции» за выделение веб-страницы среди них. Это перевернутое отношение можно напрямую перевести в формулу выше.

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

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

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

000

0007

0007

0007

0007


Как избавиться от догадок при выборе ключевых слов (новости Web Pro)

Выбор лучших ключевых слов: модель регрессии Пуассона (журнал интерактивной рекламы)

Факторы, которые следует учитывать при выборе ключевых слов (гелий)

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

Общедоступная проверяемая схема базы данных с эффективным поиском по ключевым словам

С развитием облачных вычислений и больших данных все больше и больше предприятий или клиентов с ограниченными ресурсами предпочитают переносить свои собственные данные в облако. Это известно как парадигма «База данных как услуга» (или аутсорсинговое хранилище) [1], [2], [19], [27], [28], [35]. Однако, поскольку облачному серверу нельзя полностью доверять, эта парадигма также создает множество проблем с безопасностью.Одна из наиболее важных проблем — как обеспечить целостность базы данных. Если облачный сервер может вмешиваться в записи данных, не будучи обнаруженным, он может вернуть недопустимые результаты для любого запроса в базе данных. В результате услуги базы данных, предоставляемые облачным сервером, бессмысленны. В случае статической базы данных тривиальным решением для обеспечения целостности базы данных является использование метода кода аутентификации сообщения (MAC). Например, клиент может сгенерировать подпись для каждой записи данных в базе данных, а затем загрузить запись данных и полученную подпись вместе.По запросу клиента облачный сервер выводит запись данных вместе с соответствующей подписью. Тем не менее, это решение не сработает, если база данных динамическая.

Benabbas et al. [5] впервые предложил примитив проверяемой базы данных с эффективным обновлением (сокращенно VDB) для решения вышеуказанной проблемы аутсорсинга базы данных. Чтобы быть конкретным, клиент с ограниченными ресурсами мог не только передать свою большую базу данных в облако, но также получить и обновить любую запись базы данных.Кроме того, любое неправильное поведение, связанное с попыткой вмешательства в записи базы данных, будет обнаружено клиентом. Первая практическая конструкция VDB была предложена на основе предположения о принадлежности к подгруппе в билинейных группах составного порядка. Однако он поддерживает только свойство частной проверяемости. То есть только клиент (то есть владелец данных) может проверить правильность доказательств с помощью своего закрытого ключа. Для обеспечения публичной проверяемости внешней базы данных Catalano et al. [11] представили элегантное решение для разработки общедоступной проверяемой схемы VDB с новым примитивом, называемым векторным обязательством.Предлагаемая схема может поддерживать общедоступную проверяемость в рамках вычислительного предположения Диффи-Хеллмана (CDH). Таким образом, любая заинтересованная третья сторона может проверить целостность базы данных. На основе двух исходных конструкций в последние годы было предложено множество схем VDB [12], [13], [14], [30], [31], [39].

Обратите внимание, что традиционные схемы VDB ориентированы только на тип баз данных NoSQL. То есть база данных состоит из пары ( i, v i ), где v i — соответствующее значение данных, проиндексированное i .На основе метода фиксации вектора клиент может запросить определенный индекс i и получить данные v i вместе с соответствующим доказательством, которое можно использовать для проверки целостности значения данных v i . Однако клиент может выполнить только базовый запрос с определенным индексом. Обратите внимание, что в реальных приложениях клиенту могут потребоваться различные типы поиска, такие как запросы диапазона, запросы с точным соответствием и наиболее распространенные запросы на основе ключевых слов (или поиск по ключевым словам).Очевидно, что запросы по индексу в схемах VDB можно рассматривать как особый вид поиска по ключевым словам, если мы рассматриваем индекс как заданное ключевое слово. Однако все существующие схемы VDB никогда не учитывали общие запросы на основе ключевых слов, например поиск всех записей данных, для которых значение равно 1000. С другой стороны, некоторые существующие схемы шифрования с возможностью поиска рассматривали случай выполнения поиска по ключевым словам на динамических баз данных. Однако ни один из них не сосредоточился на целостности и проверяемости базы данных.Недавно Zhang et al. [38] представили новую схему шифрования с возможностью поиска и проверкой через блокчейн. Мы утверждаем, что он поддерживает только проверяемость результатов поиска, но не саму базу данных. В частности, он может гарантировать только возврат всех совпадающих идентификаторов документов, но не может проверить целостность содержимого документа. Если клиент не может проверить, выполнил ли вредоносный облачный сервер поиск по ключевым словам в последней обновленной базе данных или нет, результаты поиска, предоставленные сервером, не имели смысла.Насколько нам известно, не существует конструкции VDB, которая одновременно поддерживала бы эффективный поиск по ключевым словам.

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

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

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

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

Все существующие схемы VDB построены с использованием криптографических примитивов делегирования полиномиальных функций или фиксации вектора. Benabbas et al. [5] предложили первую практическую конструкцию VDB с делегированием полиномиальных функций.Их решение могло поддерживать только частную проверку, потому что секретный ключ участвует в проверке доказательства. Каталано и Фиоре [11] представили первую публично проверяемую схему VDB, основанную на обязательстве вектора. Тем не менее, Chen et al. [12] утверждали, что предложенная схема VDB [11] не может противостоять атаке прямого автоматического обновления (FAU) злонамеренного сервера. Чтобы уменьшить накладные расходы на вычисления на стороне клиента, Chen et al. [14] представили новый примитив, названный VDB с инкрементными обновлениями (Inc-VDB), который был более эффективным в случае, когда база данных сталкивается с частыми, но небольшими модификациями.Обратите внимание, что все схемы VDB, упомянутые выше [5], [11], [12], [14], поддерживают только операцию замены данных. Miao et al. [31] в первую очередь рассматривался для разработки эффективной схемы VDB, поддерживающей все типы операций обновления. Они также представили конкретную конструкцию VDB, поддерживающую все операции обновления, с помощью нового примитива, называемого иерархическим векторным обязательством. Однако количество уровней иерархической привязки векторов в их построении линейно увеличивалось в том случае, когда некоторые записи данных постоянно вставлялись в одну и ту же позицию базы данных.После этого Miao et al. [30] представил новый примитив, называемый хеш-деревом сумм Меркеля, который затем использовался для построения эффективной схемы VDB, поддерживающей все типы операций обновления. Тем не менее, это не могло подтвердить свойство публичной проверяемости.

Понятие шифрование с возможностью поиска можно разделить на две категории. Одно называется асимметричным шифрованием с возможностью поиска (или известным как поиск по ключевым словам с шифрованием с открытым ключом), а другое — симметричным шифрованием с возможностью поиска (сокращенно SSE).Для повышения эффективности реальных приложений в этой статье мы сосредоточимся только на SSE, который впервые был представлен Сонгом и др. [32]. Однако сложность поиска в работе Сонг и др. Зависела от размера зашифрованного текста. Для решения проблемы эффективности SSE в последние годы было проведено множество исследований [9], [15], [18], [26], [29]. Куртмола и др. [15] построили инвертированный индекс для повышения эффективности поиска SSE. Первый динамический и сублинейный SSE был впервые предложен Kamara et al.[21]. Cash et al. [9] представили новую динамическую схему SSE, которая может поддерживать большую базу данных. Стефанов и др. [33] разработали первую динамическую схему SSE, удовлетворяющую требованиям прямой безопасности. Недавно были предложены некоторые динамические схемы SSE для поддержки как прямой, так и обратной безопасности [7], [22]. Однако все эти SSE-схемы были построены в рамках честной, но любопытной серверной модели. Недобросовестный сервер может возвращать неверные результаты поиска в целях экономии вычислительных ресурсов. Куросава и Отаки [24] предложили первую проверяемую схему SSE, которая может проверять правильность результатов поиска.Wang et al. [36], [37] разработали дерево фильтров Блума для решения проблемы, как проверить, когда результат поиска был пуст как в статической, так и в динамической базе данных. Azraoui et al. [3] предложили поддающуюся проверке схему SSE, которая может обеспечить конъюнктивный поиск по ключевым словам. Недавно Bost et al. [6] предложили проверяемую динамическую схему SSE, основанную на примитиве проверяемой хеш-таблицы. С другой стороны, чтобы обогатить поисковое выражение, большое количество исследовательской работы было сосредоточено на разработке схем шифрования с возможностью поиска по нескольким ключевым словам [10], [16], [17], [20], [23], [25].

Остальная часть этого документа организована следующим образом. Некоторые предварительные сведения представлены в Разделе 2. Предлагаемая схема VDB, поддерживающая поиск по ключевым словам, приведена в Разделе 3. Мы представляем анализ безопасности и эффективности нашей предлагаемой схемы VDB в Разделе 4. Экспериментальная оценка представлена ​​в Разделе 5. Наконец, мы делаем вывод. этот документ в Разделе 6.

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

Выборочное подтверждение безопасности для нашей схемы

Теорема 1. Позвольте и быть определено как в общей модели билинейной группы. Для любого злоумышленника, который делает в общей сложности не более q запросов к оракулам для вычисления групповых операций в и, билинейной карты e и взаимодействия с игрой безопасности IND-sCP-CPA, тогда преимущество противника в игре безопасности IND-sCP-CPA есть.

Доказательство. В игре безопасности IND-sCP-CPA шифрованный текст запроса имеет частичный зашифрованный текст может иметь вид k 0 e ( g , g ) αs или k 1 1 1 e ( g , g ) αs . Как и в [2], мы модифицируем зашифрованный текст в игре безопасности IND-sCP-CPA, теперь принимая зашифрованный текст запроса, который может быть e ( g , g ) αs или e ( g , g ) θ , где выбирается случайным образом, и противник должен определить, в каком случае. Очевидно, что любой противник имеет преимущество ε в игре безопасности IND-sCP-CPA может быть преобразовано в как минимум преимущество в модифицированной игре безопасности IND-sCP-CPA (можно рассмотреть две ситуации: одна, в которой противник должны различать k 0 e ( g , g ) αs и e ( g , g ) θ ; должны различать k 1 e ( g , g ) αs и e ( g , g ) θ .Очевидно, что оба они эквивалентны вышеупомянутой модифицированной игре безопасности IND-sCP-CPA).

Инициализация. Противник сначала представляет структуру доступа ( M * , ρ * ) симулятору S . Чтобы смоделировать модифицированную игру IND-sCP-CPA, а затем мы вводим некоторые математические символы в общую модель билинейной группы, и пусть ψ 0 (0) = g , ψ 1 ( 1) = e ( g , g ) (будем писать ψ 0 ( x ) = g x , ψ 1 ( y ) = e ( g , g ) y ).

Настройка . Симулятор S случайным образом выбирает и вычисляет g μ , g γ , e ( g , g ) α α . Когда злоумышленник запрашивает хэш-значение H для любого атрибута j , если он не был запрошен, симулятор S случайным образом выбирает, а затем вычисляет и записывает результаты в список хэшей. В противном случае он ищет список хешей.Для любого атрибута j L симулятор S случайным образом выбирает номер. Он устанавливает общедоступный параметр PP и главный секретный ключ MSK как:

Симулятор S отправляет злоумышленнику общедоступный параметр PP .

Фаза 1. Симулятор S отвечает на запросы секретного ключа следующим образом:

Запрос секретного ключа. When делает свой m -й запрос генерации ключа для набора атрибутов S m , с ограничением, что набор атрибутов S m не удовлетворяет структуре доступа ( M * , ρ * ).Симулятор S случайным образом выбирает, а затем вычисляет. Для любого атрибута j S m симулятор S произвольно выбирает и вычисляет. Он выводит секретный ключ:

Затем симулятор S отправляет противнику SK .

Вызов. Противник отправляет два одинаковых сообщения k 0 и k 1 в симулятор S .Сначала симулятор S выполняет алгоритм шифрования в соответствии со структурой доступа ( M * , ρ * ). Где M * — это матрица размером l × n . Это i -я строка матрицы M * . Функция ρ * , которая связывает строки матрицы M * с атрибутами. Во-вторых, симулятор S выбирает случайный вектор. Эти элементы вектора v будут использоваться для совместного использования показателя шифрования s . Где ограничено схемой LSSS. Затем симулятор S выбирает случайную величину b ∈ {0,1} и l значений случайной величины, чтобы получить шифрование как: и.

Зашифрованный текст

Наконец, симулятор S отправляет злоумышленнику зашифрованный текст CT * .

Фаза 2 .Фаза 1 повторяется.

Противник завершает работу и после множества запросов возвращает предположение b ′ из b . На этом этапе имитатор S случайным образом выбирает значение для получения смоделированного шифротекста запроса путем подстановки. После моделирования имитатор S возвращает злоумышленнику смоделированный зашифрованный текст вызова.

Далее мы анализируем симулятор S Simulation. Мы считаем, что симулятор S безупречен с ограничением «неожиданное столкновение» не происходит при запросе ψ 0 ( x ) = g x , ψ 1 ( y ) = e ( g , g ) y для групповой работы и.Таким образом, «неожиданная коллизия» возникает, когда два запроса, соответствующие двум различным рациональным функциям v и v ′, приводят к тому, что v ′ — v = 0 для некоторых переменных. (Где запрос оракула рассматривается как рациональная функция [2]). Затем мы делаем следующий анализ «неожиданного столкновения»:

До замены. Согласно лемме Шварца-Циппла [35,36] вероятность «неожиданного столкновения» имеет место и самое большее.

После замены. Мы рассматриваем, каким было бы мнение противника, если бы мы установили θ = αs . Мы покажем, что с учетом приведенных выше условий мнение противника было бы одинаково распределено. Поскольку мы находимся в общей модели группы, где представление каждого элемента группы выбирается равномерно и независимо [2], единственный способ, которым мнение противника может отличаться в случае θ = αs , — это если есть два запроса v и v ′ в — это v v ′, но v | θ = αs = v ′ | θ = αs .Мы доказываем, что этого никогда не бывает.

Чемодан. Чтобы структурировать γ αs , мы знаем, что θ существует только как e ( g , g ) θ в этой форме. Согласно моделированию, симулятор S хочет v и v ′ связан с θ , имея некоторые аддитивные члены формы γ θ . Следовательно, мы должны иметь v v ′ = γ αs γ θ для некоторой константы γ ′ ≠ 0.Затем мы искусственно добавляем к запросам злоумышленника запрос v v ′ + γ θ = γ αs . Согласно условиям, которые мы поставили, мы доказываем, что злоумышленник не может построить запрос для. В противном случае произойдет столкновение, и теорема доказана.

Чтобы лучше понять описанную выше ситуацию. Мы анализируем на основе информации, предоставленной противнику при моделировании. В таблице 2 мы перечисляем возможные запросы всех рациональных функций противником.За исключением тех, в которых каждый моном включает переменную μ , поскольку переменная μ не имеет отношения к построению члена αs . Где переменные j и j ‘представляют строку атрибута, а m указывает запросы секретного ключа, сделанные противником.

Согласно таблице 2, противник может построить многочлен αs + t m s , спарив s с α + t m . Таким образом, злоумышленник также создает термин запроса, содержащий для некоторых наборов T и константу. Но цель злоумышленника — получить полином запроса γ αs , поэтому противник должен добавить отрицательные члены, чтобы отменить условия. Чтобы построить отрицательные члены, противник сначала строит многочлен запроса от t m s путем объединения с ограничением ρ * ( i ) = j , как мы знаем, что s — это линейные комбинации λ i .Для других коллекций и констант злоумышленник также может построить полином запроса как:

Таким образом, мы проведем некоторый анализ, чтобы прийти к заключению по этому доказательству:

  1. Набор секретных долей не восстанавливает секрет s для некоторых m T . Тогда член t m s по-прежнему будет сохранен и не сможет построить γ αs .
  2. Если для всех m T набор секретных долей позволяет восстановить секрет s .Чтобы получить γ αs , противник может отменить член комбинацией терминов t m λ i , но не получить термин, исследуя В таблице 2 нет такого термина, который мог бы его отменить. Следовательно, противник не может построить γ αs .

Доказательство безопасности IND-CKA

Теорема 2. Предположим, что предположение BDH выполнено, наша схема семантически безопасна против атаки по выбранному ключевому слову в модели случайного оракула.

Доказательство. Предположим, злоумышленник — это вредоносный облачный сервер, который имеет немаловажное преимущество ε в нарушении нашей построенной схемы шифрования с возможностью поиска. Предположим, что злоумышленник делает самое большее количество запросов хэш-функции к H 2 и самое большее q T запросов с секретными дверьми (мы предполагаем, что и q T положительны). симулятор для решения задачи BDH с преимуществом, где e является базой натурального.

Инициализация. Имитатор принимает вызов BDH и выбирает две мультипликативные циклические группы и простой порядок p , генератор и билинейное отображение. Затем симулятор случайным образом выбирает, позволяет, его цель — вычислить.

Настройка. Симулятор случайным образом выбирает номер, позволяет открытому ключу и секретному ключу SK s = x s для противника. Чтобы смоделировать поисковые открытые ключи пользователя B pub и секретные ключи A priv , симулятор выбирает случайный параметр и устанавливает, поэтому A priv = μ = по номеру 1 .

Phase1 . Противник адаптивно выдает следующие запросы:

H 1 -Запрос: Злоумышленник может запросить случайный оракул H 1 в любое время. Чтобы ответить на запросы H 1 , симулятор поддерживает список кортежей ( w i , h i , e i , 04 , 03 i ) называется списком H 1 .Список изначально пуст. При запросе случайного оракула H 1 любых ключевых слов w i ∈ {0,1} * симулятор отвечает следующим образом:

  1. Если запрос w i уже появился в H 1 -списке в кортеже ( w i , h i , i , c i ), симулятор отвечает.
  2. В противном случае генерирует случайную монету c i ∈ {0,1}, так что, где q T является запросом с лазейкой.

Если c i = 0, симулятор вычисляет;

Если c i = 1, симулятор вычисляет, где значение выбирается случайным образом. Затем добавляется кортеж ( w i , h i , e i , c i ) 09 —

H list и возвращает противнику H 1 ( w i ) = h i .

H 2 -Query: может запросить случайный оракул H 2 в любое время. Чтобы ответить на запросы H 2 , симулятор поддерживает список кортежей ( t i , V i ), называемый списком H 2 . Список изначально пуст. При запросе случайного оракула H 2 любого симулятор отвечает следующим образом:

  1. Если запрос t i уже появился в H 2 -списке в кортеже ( t i , V i ), симулятор отвечает H 2 ( t i ) = V i ∈ {0,1} logp .
  2. В противном случае симулятор случайным образом выбирает значение V i ∈ {0,1} logp , и симулятор добавляет кортеж ( t i , V i ) в список H 2 и возвращает H 2 ( t i ) = V i to.

Запросы люка: При запросе лазейки любых ключевых слов w i ∈ {0,1} * , симулятор сначала выполняет запросы H 1 , чтобы получить такие, что H 1 ( w i ) = h i и ( w i , h i 04 , c i ), соответствующий кортежу в H 1 -списке. симулятор отвечает так:

  1. Если c i = 0, симулятор объявляет сбой и прекращает работу.
  2. Если c i = 1,. симулятор случайным образом выбирает значение и вычисляет

Симулятор отправляет лазейку.

Вызов: Противник представляет пару ключевых слов w 0 и w 1 , где ключевые слова w 0 и w 1 люк не был запрошен.симулятор генерирует индекс ключевых слов следующим образом:

  1. симулятор сначала выполняет H 1 запросов дважды, чтобы получить так, что H 1 ( w 0 ) = h 0 , H 1 ( w 1 ) = ч 1 . Для i = 0,1 мы устанавливаем ( w i , h i , e i , c i кортеж в списке H 1 .Если и c 0 = 0, и c 1 = 1, то объявляется сбой и прекращается.
  2. нам известно, что по крайней мере один из c 0 и c 1 равен 0. Симулятор выбирает бит b ∈ {0,1} так, что c b = 0.
  3. Симулятор отвечает на индекс ключевых слов. Затем симулятор случайным образом выбирает параметр и устанавливает с подразумеваемой настройкой (), где c неизвестно, а мы знаем, что u 3 = g c является частью BDH.
  4. симулятор случайным образом выбирает Z ∈ {0,1} logp и устанавливает.

Согласно определению, это эффективный индекс ключевого слова для ключевого слова w b при запросе.

Фаза 2 . Фаза 1 повторяется.

Выход . Злоумышленник выдает свое предположение b ′ из бита b .

Обратите внимание, что значения устанавливаются с вероятностью в настройке запросов H 1 .Поскольку запрашивает значение формы на H 2 oracle с такой же вероятностью в настройке списка H 2 , поэтому

Затем симулятор случайным образом выбирает пару ( t i , V i ) ∈ H 2 -список и выводит как свое предположение для e ( g , г ) abc . Где t 1 , t 2 и e b задаются в соответствии с параметрами фазы вызова.

Анализ вероятностей. Мы можем доказать, что можем выиграть игру с немалой вероятностью, а затем решить задачу BDH с вероятностью по крайней мере. Специфический вероятностный анализ аналогичен схеме [34].

Из-за предположения BDH, что проблема BDH сложна, поэтому вероятность. незначительно. Так что наша схема безопасна в предположении BDH.

Введение в схему и ее реализацию

Введение в схему и ее реализацию — структуры управления являются выражениями Перейти к первому, предыдущему, следующему, последнему разделу оглавления.
Управляющие структуры — это выражения

Структуры управления схемой — это выражения и возвращаемые значения. Выражение if во многом похоже на оператор if-then языка Си, но Ветвь «then» и ветвь «else» также являются выражениями, которые возвращаемые значения; выражение if возвращает значение любого из подвыражение, которое оно оценивает.

Например,

(если (

возвращает значение либо переменной a , либо переменной b , в зависимости от того, что меньше (или значение b , если они равны). Если вы знаком с тройной (1) выражения в C это похоже на (a . В схеме нет необходимости как для оператора if , так и для оператора тернарного выражения типа if, потому что , если «операторов» являются выражениями.

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

Единообразие возврата значений означает, что у нас никогда не было для явного использования оператора return, поэтому у Scheme их нет. Предположим, мы хотим написать функцию min для возврата минимум два числа. В C мы могли бы сделать это так:

интервал мин (интервал a, интервал b)
{
   если (a 

В Scheme мы можем просто сделать это:

(определите (min a b)
   (если (

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

Конечно, вы также можете написать if с одной ветвью, без предложения else.

(если (какой-то тест)
    (какое-то действие))
 

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

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

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

(начало (фу)
       (бар))
 

вызывает foo , а затем вызывает bar . С точки зрения потока управления (начало ... ) выражение скорее похоже на начало ... end блок на Паскале, или { ... } блок в C. (нам не нужен конец ключевое слово, потому что закрывающая скобка выполняет свою работу.)

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

Тела процедур работают вроде и начинаются с с. Если body содержит несколько выражений, они оцениваются по порядку, и последнее значение возвращается как значение вызова процедуры.

Вот процедура baz , которая вызывает foo , а затем вызывает bar и возвращает результат вызова на bar .

(определить (баз)
   (фу)
   (бар))
 

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

Исследование практического прокси-шифрования со схемой поиска по ключевым словам с учетом структуры облачного хранилища

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

1. Введение

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

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

Изучение систем шифрования с возможностью поиска началось с симметричного шифрования с возможностью поиска (SSE), основанного на криптографии с симметричным ключом, а также с разработки общих криптографических алгоритмов. Первая конструкция SSE была предложена Song et al. [1]. Затем новая схема, использующая схемы фильтров Блума, была предложена Гохом [2]. Чтобы обеспечить более быстрое время поиска, Куртмола и др. Объявили о схеме SSE с использованием схемы зашифрованного связного списка. [3].

Затем активно проводились исследования систем шифрования с возможностью поиска на основе открытого ключа.Первое шифрование с открытым ключом с поиском по ключевым словам (PEKS) с использованием билинейной карты было предложено Boneh et al. [4]. Схема PEKS предоставляет множество функций; например, была предложена возможность многопользовательского режима [5–11].

Однако эту схему трудно применить в облачной среде, где пользователи часто обмениваются данными. Для решения этой проблемы была разработана система прокси-повторного шифрования с поиском по ключевым словам (PRES), которая повторно шифрует зашифрованные индексы и позволяет пользователям выполнять поиск во время передачи и совместного использования безопасного хранилища данных без необходимости в процессе дешифрования [12–14].

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

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

2. Предварительные сведения

В этом разделе мы приводим необходимые предварительные сведения.

2.1. Билинейные карты

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

Определение 1. Характеристики, которые удовлетворяют допустимому билинейному отображению, следующие. (I) Билинейное: определите отображение как билинейное, если где все, и все, (ii) Невырожденное: отображение не связывает все пары в личность в. Обратите внимание, что и являются группами простого порядка, что означает, что if является генератором, является генератором. (Iii) Вычислимый: существует эффективный алгоритм для вычисления любого.Следующее определение построено на основе билинейного отображения. С помощью этой карты проблема принятия решения о D-H может быть легко решена для эллипсов, используя следующее уравнение:. Таким образом, нижеследующее является основой для решения проблем билинейной карты, которая используется в качестве инструмента шифрования многими протоколами шифрования.

Определение 2. Когда даны элементы,,,, (BDHP, билинейная задача Диффи-Хеллмана), это относится к задаче вычисления. В этом исследовании допустимая билинейная карта использовалась в качестве основы для создания секретного числа во время процесса построения ключа между разнородными устройствами.Эта проблема может быть решена, если может быть решена задача дискретной математики эллиптической кривой. Например, можно вычислить a, поэтому можно рассчитать с помощью.

2.2. Существующая схема PRES

Давайте посмотрим на [13], предложенную Ченом и Ли в 2011 году.

2.2.1. Обозначение

Обозначения, используемые в этой схеме, следующие. (I): Простое число. (Ii): Циклическая аддитивная группа порядка. (Iii): Циклическая мультипликативная группа порядка. (Iv): Генератор. (V) : Билинейная карта,.(vi): Хеш-функция,. (vii): Хеш-функция,. (viii): Хеш-функция,. (ix): Хеш-функция,.

2.2.2. Протокол

Как и в большинстве схем PRES, протокол Chen et al. Всего было 7 фаз: KGen, Enc, RKGen, REnc, TGen, Test и Dec.

KGen Phase . Объекты каждой пары открытых / закрытых ключей с использованием удаленного хранилища на этапе KGen:

Enc Phase . Пользователь передает зашифрованные данные в удаленное хранилище:

RKGen Phase .Пользователь передает ключ повторного шифрования для обмена данными с:

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

TGen Phase . Пользователь передает созданную лазейку для поиска общих данных из:

Фаза испытаний . передает результаты поиска после поиска данных с помощью лазейки, отправленной из.

Фаза спада . Пользователь проверяет содержимое, расшифровывая данные, относящиеся к результатам поиска:

2.2.3. Анализ протокола

Мы проанализируем схему PRES, предложенную Chen et al. на предмет возможных угроз безопасности.

Анализ 1: Проблема совместного использования. В фазе RKGen, создан для обмена собственными данными. Это известно как производство по аналогичной схеме. Однако значение неизвестно, даже если владельцем данных является. На этапе Enc генерирует случайное значение в соответствии с разными данными и не сохраняет его отдельно. Кроме того, прямое вычитание значения, используемого только в операции умножения, из зашифрованных данных невозможно, даже если он является владельцем данных.Другими словами, не может создать значение для повторного шифрования загруженных данных. Чтобы установить RKGen, значение должно быть открыто или должно сохранять все значения, относящиеся к каждому набору данных.

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

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

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

2.3. Требование безопасности

Для обеспечения безопасного поиска и совместного использования в среде хранения, переданной на аутсорсинг, должны быть выполнены следующие требования. (I) Конфиденциальность: данные, передаваемые между внешним сервером хранения и клиентским терминалом, должны быть идентифицированы только проверенными пользователями. (Ii) Скорость поиска : клиент, имеющий ограниченные системные ресурсы, должен иметь возможность быстро искать документы, включая файлы текстовых редакторов, хранящиеся в внешних системах хранения. В случае, когда структура индекса данных существующей схемы такая же, как на рисунке 1, и серверу необходимо получить данные из всех индексов, чтобы найти данные, содержащие ключевое слово, это очень неэффективно.Кроме того, многие ранее разработанные алгоритмы поиска неприменимы к этой структуре, поэтому сервер хранения должен выполнять последовательный поиск. В этой структуре скорость сканирования быстро снижается с увеличением количества документов. Чтобы решить эту проблему, необходимо изменить структуру индекса шифрования, как показано на Рисунке 2. Если мы примем такую ​​структуру, для поиска данных можно будет использовать ранее разработанный самый быстрый алгоритм поиска. (Iii) Эффективность трафика: объем связи между клиентом и сервером должен быть небольшим для экономии энергии и ресурсов сети.(iv) Эффективность вычислений: эффективность вычислений должна быть обеспечена для генерации индексов, выполнения поиска и безопасного обмена данными с другими пользователями. Предыдущая схема крайне неэффективна для шифрования данных переменной длины. Шифрование данных выполняется с помощью симметричного ключа в мультипликативной группе, и скрытие зашифрованного ключа с помощью операции умножения более эффективно. (V) Эффективность объема хранения: для предоставления услуг облачного хранения были разработаны различные распределенные файловые системы.Эти системы хранят индекс в памяти главного сервера для более быстрого извлечения данных. Другими словами, емкость хранения индекса имеет ограничения. В связи с этими обстоятельствами поставщик услуг использует этот метод для объединения повторяющегося ключевого слова и оптимизации индекса. Сервер не может объединять повторяющиеся ключевые слова в случае существующих схем, используя ту же структуру, что и на рисунке 1. В этой структуре емкость индекса также будет быстро увеличиваться в зависимости от количества документов. Однако, если мы примем структуру, показанную на рисунке 2, управление мощностью индекса будет более эффективным.(vi) Эффективность совместного использования между пользователями: зашифрованные данные должны извлекаться из сохраненных удаленных данных и безопасно и эффективно передаваться тем пользователям, которые используют ненадежный сервер. Поставщики облачных услуг должны сделать доступными только те данные, которыми владелец данных желает поделиться с другим пользователем. В статьях PRES чаще всего предлагается ранее использовавшееся прокси-шифрование (PRE). Эти схемы обеспечивают однократное совместное использование. Другими словами, нельзя обмениваться данными с другим пользователем по схеме, аналогичной той, которая используется для обмена данными между пользователями и.Тем не менее, он может искать и расшифровывать общие данные, а затем делиться ими, снова сохраняя их в удаленном хранилище с помощью процесса шифрования PRES. Существующий PRES не передает совместно используемые данные повторно, и для повторного обмена данными необходимы дополнительные операции дешифрования и шифрования. Следовательно, PRES необходимо рассмотреть возможность повторного совместного использования. (Vii) Предотвращение сговора: администратор удаленного хранилища рассматривается как ненадежный объект, и администратор может получить несанкционированный доступ к данным посредством сговора.Следовательно, предлагаемый в будущем PRES должен быть защищен от сговора.



3. Предлагаемая схема

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


3.1. Обозначение

(i): Конкатенация.(ii): простое число. (iii): количество данных. (iv): количество ключевого слова для данных. (v): циклическая аддитивная группа порядка. (vi): циклическая мультипликативная группа порядка. (vii): генератор of. (viii): билинейная карта,. (ix): закрытый ключ пользователя in. (x): открытый ключ пользователя in. (xi): th простые данные. (xii): th зашифрованные данные. (xiii): th ключ шифрования данных. (xiv): th ключевое слово в th данных. (xv): шифрование симметричного ключа по ключу. (xvi): дешифрование симметричного ключа по ключу. (xvii): набор ключевого слова в данных th. (xviii): Хеш-функция,. (Xix): Хеш-функция,.(xx): ключевое слово для поиска лазейки.

3.2. Определение

Подробные шаги, выполняемые предлагаемой схемой, следующие: (i) KeyGen: пользователи внешнего хранилища генерируют пары открытых ключей перед использованием службы. Сервер аутсорсинга хранилища не должен хранить закрытый ключ пользователя. В случае утечки закрытого ключа злоумышленник может создать лазейку, действуя как владелец закрытого ключа. Таким образом, мы генерируем пару ключей на основе задачи дискретного логарифмирования (DLP).(ii): владелец данных создает зашифрованный индекс, и зашифрованные данные, которые может искать только владелец, вводя свой собственный закрытый ключ, и набор ключевых слов, которые отправляются на главный сервер. ( iii): для безопасного поиска данных пользователь создает лазейку, которая не пропускает информацию, связанную с ключевым словом, поиск по которому выполняется с использованием закрытого ключа. Люк отправляется на главный сервер. Администратор аутсорсинга системы хранения не должен иметь доступа к информации через лазейку.(iv) «да» или «нет»: используя лазейку, сгенерированную личным ключом пользователя и ключевым словом поиска, сервер выполняет тест, чтобы подтвердить, содержат ли зашифрованные данные ключевые слова. Если зашифрованный текст содержит указанное ключевое слово, сервер отправляет пользователю «да» и «нет», если нет. Таким образом, сервер не может ничего узнать о ключевых словах или данных. (V): владелец данных создает ключ повторного шифрования, чтобы создать индекс данных для совместного использования, который может выполнять поиск. Ключ повторного шифрования создается с секретным ключом владельца данных и хешированным секретным ключом пользователя, который будет делиться данными.(vi): владелец данных создает параметр для создания индекса данных для совместного использования, по которому можно выполнять поиск. Этот параметр создается с использованием закрытого ключа владельца данных и открытого ключа пользователя, который будет делиться данными. Главный сервер создает новый индекс, который можно использовать для поиска через лазейку. (Vii): законный владелец зашифрованных данных использует свой закрытый ключ для расшифровки зашифрованных данных.

3.3. Сценарий хранилища

Предлагаемая схема рассматривает структуру внешнего хранилища, поэтому индекс шифрования, используемый для совместного использования и поиска, хранится на главном сервере.Мы предполагаем, что каждый пользователь получил пару ключей перед использованием услуги аутсорсинга хранилища (см. Шаг 1). Пользователь шифрует необходимые ключевые слова во время поиска данных, чтобы они могли выполнить свой собственный поиск позже и отправить его на главный сервер (см. Шаг 2). Главный сервер отправляет информацию о фрагментах пользователю для хранения данных, который затем разделяет данные на фрагменты и сохраняет их на назначенном сервере фрагментов (см. Рисунок 4).


Шаг 1 (генерация ключа (KeyGen)). Каждый пользователь услуги аутсорсинга хранения генерирует ключевую пару: выбор настройка настройка.

Шаг 2 (индексирование и шифрование данных (Enc)). Владелец данных генерирует зашифрованный индекс, который можно использовать для безопасного поиска: Алиса: выбор вывод зашифрованный индекс для главного сервера вывод зашифрованных данных для сервера фрагментов:.

3.4. Сценарий поиска

Пользователь отправляет лазейку, которая может искать данные, не открывая информацию о ключевых словах главному серверу (см. Шаг 1).Главный сервер ищет данные с ключевым словом в зашифрованном индексе, используя лазейку, а затем отправляет пользователю информацию о блоке, которая соответствует данным (см. Шаг 2). Полученные данные расшифровываются законным пользователем (см. Шаг 3). Пользователь получает данные, суммируя каждый фрагмент, полученный от сервера фрагментов, на котором хранятся данные (см. Рисунок 5).


Шаг 1 (генерация лазейки (TGen)). Пользователь, который хочет выполнить поиск в данных, создает лазейку, используя ключевые слова и свой секретный ключ: Alice Server:.

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

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

3.5. Сценарий совместного использования

Чтобы предоставить общий доступ к данным нужному пользователю и разрешить общим пользователям свободно обмениваться данными с другим пользователем, необходимо выполнить повторное шифрование, чтобы общие пользователи могли выполнять поиск только по зашифрованному индексу.Для реализации прокси-повторного шифрования и отдельной схемы шифрования с возможностью поиска для безопасного обмена данными в среде аутсорсинга хранилища требуется множество параметров, что снижает эффективность объема хранилища. Поэтому мы предлагаем алгоритм, который предоставляет обе функции одновременно. Сначала создается параметр, разрешающий совместное использование индекса с другим пользователем, который отправляется поставщику данных на аутсорсинг для хранения данных (см. Шаг 1). Затем поставщик аутсорсинга хранилища изменяет индекс владельца в соответствии с целью совместного использования данных.После этого возможен поиск общих (повторно зашифрованных) данных, как показано в шагах 2–5. Пользователь, получивший индекс совместного использования данных, всегда может найти соответствующие данные, используя ключевые слова, а затем загрузить их (см. Рисунок 6).


Шаг 1 (генерация ключа повторного шифрования (RKGen)). Если владелец данных хочет поделиться данными с другими пользователями, он или она может сгенерировать ключи для повторного шифрования. Если пользователь хочет поделиться данными с пользователем, генерирует параметр, используя секретный ключ и открытый ключ, как показано ниже: Боб → Алиса: Алиса: Алиса → Сервер:.

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

Шаг 3 (генерация лазейки (TGen)). Пользователь, который хочет выполнить поиск в данных, создает лазейку, используя ключевые слова и свой секретный ключ:

Шаг 4 (тестовый). Чтобы подтвердить, что данные содержат ключевые слова, которые ищет пользователь, сервер выполняет следующие тесты, используя лазейку Боба.Проверяет равенство. Если это правда, вывод будет «Да», но «Нет», если нет,

Шаг 5 (расшифровка (дек)). Пользователь может выполнить следующую расшифровку с помощью своего закрытого ключа:

4. Анализ

Предлагаемая схема удовлетворяет следующим требованиям. (I) Конфиденциальность: с помощью спаривания предлагаемая схема затрудняет злоумышленнику третье лицо для расшифровки содержимого сообщений, даже если они подслушивают сообщения между клиентом и сервер.(ii) Скорость поиска: возможен быстрый поиск по индексу с использованием структуры индекса, показанной на рисунке 2, и пользователь может проверить, содержит ли документ ключевые слова, выполнив вычисления единственной пары, что увеличивает скорость поиска (см. рисунок 7). ( iii) Эффективность трафика: поиск по ключевым словам и повторное шифрование требует только одного раунда обмена данными, поэтому схема увеличивает эффективность объема обмена данными. (iv) Эффективность объема хранилища: для использования новой структуры индекса предложенная схема может значительно уменьшить объем хранилища, несмотря на увеличение индексировать пространство для хранения документов по сравнению с традиционными схемами (см. рисунок 8).Поскольку предлагаемая схема может объединять одни и те же ключевые слова. (V) Эффективность вычислений: относительно простое вычисление пар подразумевает, что предложенная схема позволяет пользователям генерировать индексы и искать документы, а также выполнять повторное шифрование, что увеличивает эффективность вычислений (см. Таблицу 1). (Vi) Эффективность совместного использования пользователями: наша схема позволяет безопасно и эффективно совместно использовать зашифрованные и сохраненные данные на ненадежном удаленном внешнем сервере хранения. Кроме того, предлагаемая нами схема отличается от существующих схем, поскольку не требует предварительного указания общих субъектов и не требует дополнительных устройств для управления субъектами, получающими общие данные.Наконец, если пользователи хотят повторно поделиться данными, которыми поделился владелец, с другими пользователями, им потребуется только один расчет пар в ненадежной среде аутсорсинга хранилища. (Vii) Предотвращение сговора: в предлагаемой схеме каждый набор данных зашифрован другим случайным ключом (для симметричного шифрования). Таким образом, этап обмена может осуществляться только законным владельцем данных. Неэтичный администратор не может использовать атаку сговора, потому что ключ известен только законному владельцу данных.

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

Схема Чена Предлагаемая схема
Экспоненциальная операция Операция спаривания Операция сравнения Операция сравнения Хеш-операция Операция хеширования Операция хеширования Операция умножения Операция сравнения

Кген 1 1
RKGen 2 8 2
ReEnc 2 2 2 1 1 1 3
Тест 1 1
декабрь 1 1 1 1 1



5. Заключение

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

Конфликт интересов

Авторы заявляют об отсутствии конфликта интересов в отношении публикации данной статьи.

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

Это исследование было поддержано MKE (Министерство экономики знаний), Республика Корея, в рамках программы поддержки Центра исследований информационных технологий (ITRC) (NIPA-2013-H0301-13-1003) под надзором Национального Агентство продвижения ИТ-индустрии (NIPA). Работа поддержана Исследовательским фондом Сунчунхянского университета.

Простая схема: Глоссарий

Схема Simple: Глоссарий Схема Simple : Введение в информатику 2 / e Copyright (C) 1999 MIT

ADT: См. Абстрактный тип данных .

a-list: Синоним ассоциативного списка.

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

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

выражение фактического аргумента: Выражение, которое производит фактическое значение аргумента. В (+ 2 (* 3 5)) подвыражение (* 3 5) равно фактическое выражение аргумента, поскольку оно предоставляет аргумент для вызов + .

фактическое значение аргумента: Значение, используемое в качестве аргумента для процедура.Например, в выражении (+ 2 (* 3 5)) число 15 - фактическое значение аргумента.

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

алгоритм: Метод решения проблемы. Компьютерная программа является выражением алгоритма на определенном языке программирования; в тот же алгоритм может быть выражен на другом языке.

применить: Чтобы вызвать процедуру с аргументами. Например, «Примените процедуру + к аргументам 3 и 4 ».

аргумент: Данные, предоставленные процедуре. Например, в (квадрат 13) , 13 - аргумент квадрата .

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

атомарное выражение: Выражение, не состоящее из более мелкие части.

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

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

body: Выражение, часть определения процедуры, которая оценивается при вызове этой процедуры. Например, в

 (определить (квадрат x)
  (* х х))
 

выражение (* x x) - это тело квадрата процедура.

Логическое: Значение #t , что означает «истина», или #f , что означает «ложь».

узел ветвления: Узел дерева с дочерними элементами. напротив листового узла .

ошибка: Ошибка в программе. Это слово произошло от , а не от с Грейс Хоппер, обнаруживающей настоящее насекомое внутри неисправного компьютера; возможно, она это сделала, но эта терминология появилась раньше компьютеров на века.

call: Синоним invoke.

ячейка: Одно место в таблице .

дочерних: узлов непосредственно под этим, в дереве . (См. Также братьев и сестер и родителей. )

Состав функций: Использование значения, возвращаемого функцией как аргумент другому. В выражении (+ 2 (* 3 5)) значение возвращаемый функцией * используется в качестве аргумента для + функция.

составное выражение: Выражение, содержащее подвыражения. Напротив атомного выражения.

составная процедура: Процедура, определяемая программистом.Этот является противоположностью примитивной процедуры .

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

абстракция данных: Изобретение абстрактных типов данных.

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

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

датум: Часть информации, хранящаяся в каждом узле дерева.

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

деструктивная: Деструктивная процедура - это процедура, которая изменяет ее аргументы. Поскольку единственный тип данных в этой книге, который можно изменить, это вектор, все деструктивные процедуры вызывают vector-set! .

домен: Набор всех допустимых аргументов функции. За Например, домен функции count - это набор всех предложений и все слова.

эффект: Что-то, что делает процедура, кроме возврата ценить. Например, процедура может создать файл на диске или распечатать что-нибудь на экран, или изменить содержимое вектора.

пустое предложение: Предложение () , в котором нет слов.

пустое слово: Слово "" , в котором нет букв.

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

выражение: Представление в нотации схемы запроса к выполнить вычисление. Выражение - это либо атомное выражение , либо например 345 или x , или составное выражение , состоящее из одно или несколько подвыражений, заключенных в круглые скобки, например (+ 3 4) .

поле: Отдельный компонент записи базы данных . Для Например, «название» - это поле в нашей базе данных альбомов.

первоклассные данные: Данные со следующими четырьмя свойствами:

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

лес: Список из деревьев.

формальный параметр: В определении процедуры имя, присвоенное ссылаются на аргумент. В

 (определить (квадрат x)
  (* x x)) 
x - формальный параметр. (Обратите внимание, что это не то же самое вещь как реальный аргумент! Когда мы позже вызовем квадрат , аргумент будет числом, например 5.Параметр имя для это число, а не само число.) функция: преобразование информации, которая связывает возвращает значение с некоторым количеством значений аргумента . Может будет много разных алгоритмов , которые вычисляют одну и ту же функцию; в сама функция - это отношение между значениями аргументов и возвращаемыми ценность, независимо от того, как она может быть реализована.

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

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

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

процедура высшего порядка: Процедура, домен или диапазон которой включает другие процедуры.

index: Число, используемое для выбора одного из элементов вектора.

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

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

invoke: Чтобы попросить процедуру выполнить свою работу и придумать возвращаемое значение. Например, «Вызвать процедуру + » или «Вызвать процедура + с аргументами 3 и 4 . "

ключевое слово: Имя особой формы .

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

листовой узел: Узел дерева без дочерних узлов. напротив узла ответвления .

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

list: Агрегат данных, содержащий элементы, которые могут быть любого типа.

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

изменяемая: Структура данных изменяема, если ее содержимое может изменяться.

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

взаимная рекурсия: Структура программы, в которой одна процедура вызывает другой, а второй вызывает первый.

узел: Элемент дерева . Узел имеет базу данных и ноль или более детей.

родительский: Узел над этим в дереве . (См. Также детей и братьев и сестер. )

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

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

порт: Объект, который Scheme использует для отслеживания файла, который в настоящее время открыт для чтения или записи.

переносная: Переносимая программа - это программа, которую можно запускать более чем в одна версия Scheme или более чем на одном компьютере.

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

предикат: Процедура, которая всегда возвращает логическое значение ценить.По соглашению, предикаты схемы имеют такие имена, как " = ", что заканчиваться вопросительным знаком.

примитивная процедура: Процедура, которая уже определена, когда Схема сеанса начинается. Напротив, процедура соединения - это одна что программист определяет в схеме.

процедура: Выражение алгоритма в нотации схемы.

подсказка: Символ или символы, которые интерактивная программа печатает, чтобы сообщить пользователю, что он готов что-то напечатать.В во многих версиях Scheme подсказка состоит из символов > .

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

диапазон: Набор всех возможных значений, возвращаемых функцией. За Например, диапазон функции count - это набор неотрицательных целые числа.

цикл чтения-оценки-печати: Общая структура схемы устный переводчик.Он считывает выражения с клавиатуры, оценивает выражение, вызывая процедуры и т. Д., А печатает полученное значение. Один и тот же процесс повторяется вечно.

запись: Одна полная запись в базе данных. Например, один альбом в нашей базе альбомов. Запись содержит несколько полей.

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

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

остаточный параметр: Параметр, представляющий переменное количество аргументы. В списке формальных параметров (a b. X) , x - это остаточный параметр.

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

надежный: Работоспособен, несмотря на ошибки пользователя. Надежные программы проверьте возможные ошибки и исправьте их.

корневой узел: Узел на самой вершине дерева .

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

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

полупредикат: Процедура, которая отвечает на вопрос «да-нет» возвращает #f для "нет", но вместо #t для «да», он возвращает некоторую дополнительную информацию.Примитивный Член Процедура является хорошим примером полупредиката. («Полупредикат» - не общий термин; мы придумали его для этой книги.)

последовательность: Оценка двух или более выражений одно после другие, ради их эффектов.

последовательное программирование: Стиль программирования, в котором программы говорят: «Сначала сделайте то, потом сделайте то, а потом сделайте то другое». (Сравните с функциональным программированием . )

братьев и сестер: Два узла дерева , которые являются дочерние элементы того же узла.(См. Также детей и родителей. )

побочный эффект: См. Эффект .

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

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

состояние: Память программы о том, что произошло в прошлом.

строка: слово , разделенное двойными кавычками такие знаки, как «A Hard Day's Night» или «000123» .

структурированный список: Список с подсписками.

подвыражение: Элемент составного выражения . Для Например, выражение (+ (* 2 3) 4) имеет три части выражения: + , (* 2 3) и 4 .

подсписок: Элемент списка, который сам по себе является меньшим списком. За Например, (c d) - это подсписок списка (a b (c d) e) .

модель замещения: Как мы объяснили, как Scheme оценивает вызовы функций. Согласно модели замещения, когда соединение вызывается процедура, Scheme проходит через тело этой процедуры и заменяет каждую копию формального параметра на соответствующий фактический значение аргумента. Затем Scheme оценивает полученное выражение.

поддерево: Дерево, являющееся частью большего дерева.

символ: Слово, не являющееся числом или строкой.

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

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

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

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