Шифрование и секретность в Linux

Язык программирования Форт

Форт (FORTH) -- это мощный язык программирования, который обеспечивает высокую производительность ЭВМ. Предлагаемая книга является одновременно учебником и справочником, позволяющим овладеть языком Форт независимо от того, начинающий вы программист или опытный. Вы можете пользоваться этой книгой как учебником для классных или индивидуальных занятий, при этом не предполагается знание основ ЭВМ или программирования. Книга содержит полное описание языка, начинающееся с упрощенного изложения принципов работы компьютеров. Постепенно осуществляется переход к более сложным понятиям, не описанным в других книгах. Вы сами можете выбрать материал и скорость изучения с учетом своего уровня подготовки. В книге приводится множество примеров, показывающих стиль программирования на языке Форт, включая полный текст программы редактора, большое количество упражнений для приобретения опыта, уверенности и, что более важно, полезных технических навыков. В даны ответы к упражнениям. Излагаются обе версии языка Форт в соответствии со стандартами 1979 и 1983 гг. Кроме того, изложены вопросы, не освещаемые в стандартах, в том числе организация файлов данных, обработка алфавитно-цифровых текстов, арифметика с плавающей запятой, а также различные инструментальные программные средства, что поможет вам расширить сферу применения языка Форт для ваших нужд. Даны примеры функций усовершенствованной реализации языка MMSFORTH.

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

Операторы сравнения и ветвления
Предположим, что вам нужно проверить, не приводят ли к ошибке слова, которые вы ввели в конце какого-либо определения через двоеточие. Тогда можно сделать, чтобы эти слова игнорировались бы с помощью слова EXIT (разумеется, то же можно сделать, помещая эти слова в круглые скобки). Можно также применить QUIT, чтобы прервать исполнение программы каком-то месте и посмотреть содержимое стека или переменных.

Память Форта. Словари и контекстные словари
Память может адресоваться через обычные коды и, хотя карта памяти организована так же, как было описано, программа может работать со всей доступной памятью. Может быть, наиболее сложное использование памяти большей емкости реализовано в HS/FORTH, где применены различные сегменты для различных частей описаний слов, для различных контекстных словарей и для стеков, буферов и т.д.

Ответы к упражнениям

Шифрование и секретность в Linux

В эпоху электронных коммуникаций приходится уделять особое внимание вопросам конфиденциальности и защиты данных. Едва ли не каждый день приходится слышать о новых жертвах хакеров или пробелах в системе безопасности приложений, которым вы привыкли доверять.
В то же время шифрование обмена данными стало вполне обыденным явлением. На всех солидных коммерческих сайтах пересылка конфиденциальных данных (номера кредитной карты, домашнего адреса) защищается при помощи протокола SLL (Secure Sockets Layer).
Самый распространенный тип компьютерных преступлений вообще не связан со «взломом». Многие беспечные пользователи доверяют пересылку информации по Интернету таким протоколам, как POP и FTP. При этом пользователь может непреднамеренно передать свое имя и пароль в текстовом (не зашифрованном) виде.
Пересылка конфиденциальных данных в текстовом виде означает, что любой злоумышленник с программоп-сниффером (приложение, перехватывающее сетевой трафик между двумя сторонами) теоретически сможет получить доступ к секретной информации. Все сказанное относится и к области баз данных.
Удаленное подключение к PostgreSQL без шифрования данных открывает потенциальные возможности для злоупотреблений. Если хакер установит сниффер в вашей сети или в сети между клиентом и сервером, к которому вы подключаетесь, он сможет получить полный доступ ко всей информации, хранящейся в PostgreSQL.
Мы рассмотрим три общих способа шифрования данных между PostgreSQL и клиентом.
Встроенная поддержка SSL. Поддержка SSL в PostgreSQL активизируется при компиляции с ключом --with-ssl. Это позволяет psql (или любому клиенту, написанному с учетом возможности подключения к PostgreSQL через SSL) установить защищенное подключение к PostgreSQL.
SSH/OpenSSH. Сеанс SSH (Secure SHell) позволяет создать туннель (tunnel) к удаленному серверу — при условии, что демон SSH (например, sshd) установлен в системе и доступен для подключающегося пользователя. Для этого в системе, в которой работает PostgreSQL, создается учетная запись для каждого пользователя.
Stunnel. Приложение Stunnel создает шифрованный туннель для обмена данными между клиентом и сервером PostgreSQL. Для пользователей, не имеющих прямого доступа к удаленному серверу, Stunnel можно настроить на работу в клиентской системе.

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

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

Управление пользователями и группами
Каждому пользователю PostgreSQL назначается внутренний системный идентификатор (sysid) и пароль, хотя пароль не всегда обязателен для подключения (это зависит от файла конфигурации pg_hba.conf, о котором говорилось в главе 8). Системный идентификатор связывает объекты базы данных с владельцем (так называется пользователь, которому разрешено предоставлять и отзывать права доступа к объекту).



PL/pgSQL
Поддержка языков программирования реализуется отдельным объектом базы данных. Таким образом, прежде чем использовать язык PL/pgSQL, необходимо включить его поддержку в базу данных (по умолчанию PL/pgSQL устанавливается вместе с PostgreSQL). В этом разделе описана процедура включения PL/pgSQL в существующую базу данных

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

LXP
Атрибут start инициализирует целочисленный счетчик цикла, который увеличивается на 1 при каждой последующей итерации. Если в теге определен атрибут end, цикл прекращается после достижения числа, указанного в этом атрибуте. Если же определен атрибут endbefore, цикл прекращается на одну итерацию раньше. Таким образом, атрибуты end и endbefore в этом отношении функционально эквивалентны операторам = и таких языков программирования, как РНР и С

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

Типы расширенных кодировок
Перечислены расширенные кодировки, поддерживаемые PostgreSQL версии 7.1.x. Эти типы кодировок доступны только в том случае, если при конфигурировании PostgreSQL был задан ключ --enable_multibyte (см. главу 2). Если расширенная кодировка не нужна, укажите тип SQL_ASCII.