Исходный код: "речь" или "устройство"?
Архив
автор : Максим Отставнов 18.05.1999
Никогда еще наша способность укрыть свои дела от любопытных глаз не находилась в столь плачевном состоянии. Доступность и использование надежного шифрования предоставляет возможность вернуть некоторую долю приватности, которую мы потеряли.
Никогда еще наша способность укрыть свои дела от любопытных глаз не находилась в столь плачевном состоянии. Доступность и использование надежного шифрования предоставляет возможность вернуть некоторую долю приватности, которую мы потеряли. Попытки правительства контролировать шифрование могут затрагивать не только права криптографов, предоставленные им Первой поправкой, и пытаться загнать их науку в границы, но и конституционное право каждого из нас, как потенциального пользователя шифрования.
Бетти Флетчер, окружной судья
6 мая 1999 года. Апелляционный суд Девятого судебного округа США вынес решение по делу 97-16686 с очень длинным названием: "Бернстайн против Министерства юстиции, Министерства торговли, Министерства обороны, Министерства иностранных дел, Министерства обороны, Агентства по контролю над вооружениями и разоружению, Национального агентства безопасности, Министерства энергетики и Центрального разведывательного управления".
Девятый, крупнейший, судебный округ США включает штаты Айдахо, Аляска, Аризона, Вашингтон, Калифорния, Монтана, Невада, Орегон, а также острова Гуам, Гавайские и Северо-Марианские.
Государственные защитники-апеллянты пытались оспорить решение, вынесенное окружным судьей Мэрилин Пэтел в 1996 году.
Вот суть дела. Дэниэл Берстайн (Daniel Bernstein) - профессор кафедры математики и информатики университета Иллинойса в Чикаго. Три года назад он, готовя докторскую диссертацию, разработал программу шифрования Shuffle, основанную на односторонней хэш-функции. Бернстайн отправил в госдепартамент запрос касательно публикации исходного текста и, получив ответ о том, что, в соответствии с ITAR (правилами контроля за международным перемещением вооружений), экспорт такой публикации требует лицензии, обратился в суд с иском о признании существующего регулирования недопустимо ограничивающим свободу слова и, соответственно, неконституционным.
Суд признал неконституционными ограничения, накладываемые правительством на экспорт исходных кодов криптографического программного обеспечения, и отменил их. По запросу Министерства юстиции судья Пэтел отложила вступление решения в силу до рассмотрения дела в Апелляционном суде.
Апелляционный суд в составе окружных судей Майрона Брайта (Myron H. Bright), Бетти Флетчер (Betty B. Fletcher) и Томаса Нельсона (Thomas G. Nelson) большинством при одном особом мнении (Брайт) и одном несогласии (Нельсон) отклонил апелляцию, заключив, что:
"Поскольку режим предварительного лицензирования, оспоренный Бернстайном, относится непосредственно к свободе научной речи, передает неограниченные полномочия в принятии решения государственным служащим и не содержит адекватных процедурных ограничений, мы поддерживаем решение о том, что этот режим представляет собой недопустимое предварительное ограничение свободы речи. Мы отклоняем предложение [апеллянтов] о редактировании регулирующих документов с тем, чтобы снять несоответствия Конституции. Таким образом, мы подтверждаем отмену регулирования, содержащуюся в решении окружного суда".
Если проигравшие дело ведомства захотят продолжить литигацию, у них остается в запасе три сценария: добиваться повторных слушаний в Апелляционном суде в полном составе (en banc), апеллировать в Верховный суд США или же попытаться, отредактировав текст соответствующих актов, ограничить область их действия.
А на сегодняшний момент экспорт криптографических программ в форме исходного текста из США становится вроде бы свободным. Однако в случае пересмотра решения Апелляционного суда в Верховном суде экспортеры (которые могут быть всего лишь лицами или организациями, предоставляющими доступ из-за границы к содержимому своих сайтов) окажутся в очень уязвимом положении.
Министерство юстиции в выпущенном 7 мая весьма агрессивном пресс-релизе сообщило, что "изучает" решение суда и что наиболее вероятным следующим шагом будут требования повторного слушания. С точки зрения министерства, спорное регулирование "остается в полной силе" по крайней мере до того, как суд направит соответствующее предписание (что произойдет не ранее чем через 45 дней).
Тем не менее, ряд организаций и лиц реально начали открытую публикацию кодов (см. раздел "США" на
http://jya.com/crypto-free.htm).
Джон Гилмор (John Gilmor), поддерживающий Бернстайна со стороны EPIC, в распространенном 7 мая письме призывает криптографов и активистов к осторожности:
"Мнения юристов, с которыми я консультировался, разделяются... Некоторые говорят, что прецедент установлен и можно на него опираться. <...> Моя точка зрения заключается в том, что каждый должен проконсультироваться с юристом на предмет возможных рисков, а затем самостоятельно принять решение о том, принимать ли этот риск на себя. В жизни все сопряжено с некоторым риском, и каждый из нас должен решать, что именно в жизни стоит того, чтобы рисковать самой жизнью, деньгами, честью. Принимайте решение самостоятельно".
В любом случае, решение Апелляционного суда, даже подтвержденное, пока не означает автоматически свободы экспорта исполняемого кода. Таким образом, помимо существенного облегчения жизни мирового криптографического сообщества, косвенным эффектом решения может стать определенное преимущество, которое получат разработчики и компании, публикующие исходные коды своего софта.
"Исходный код" решения апелляционного суда см. на сервере Девятого округа
www.ce9.uscourts.gov. Исходный код самой программы Shuffle доступен на сайте
www.shmoo.com/~pablos/Cracking_DES.
Помимо контекста - истоков и последствий решений, в данном деле интересна и внутренняя линия: как собственно разворачивалась аргументация.
Бернстайн (и поддерживающие его эксперты-юристы из EPIC и других организаций) аргументировал свое право на открытую публикацию исходного кода тем, что исходный текст является средством коммуникации между программистами (в данном случае - криптографами). Апеллянты утверждали, что исходный текст есть "устройство", предназначенное для управления компьютером.
Здравый смысл подсказывает, что исходный код обладает обоими качествами, но суду-то необходимо определить, которое из них перевешивает! Ниже представлены три фрагмента решения, в которых выражены различные точки зрения. Разумеется, текст содержит не только правовое исследование вопроса, но и некоторые политические импликации (см. эпиграф). Как либерал, я аплодирую судье Флетчер, но, в то же время, понимаю, что процесс эмансипации крипто еще далеко не завершен и каждое политическое действие (и даже выражение) неизбежно влечет за собой противодействие.
Замечания к переводу Первая поправка - Первая поправка (The First Amendment) к Конституции США, провозглашающая свободу слова. Ряд правовых доктрин, принятых американскими судами, разграничивает "выражение" (expression), "способ выражения" (mode of expression) и "речь" (speech), с одной стороны, и "действия" или "поведение" (conduct) - с другой, выводя последние за пределы сферы защиты Первой поправки.
[Mode of] expression переводилось как "[способ] выражения", но соответствующее прилагательное - expressive - как "экспрессивный".
Доктрина предварительного ограничения (prior restraint doctrine) - доктрина, согласно которой предварительно накладываемые ограничения на свободу слова (свободу выражения), в том числе цензура и принуждение к самоцензуре, являются неконституционными.
| Из решения апелляционного суда Бетти Флетчер, окружной судья
Мы начнем с выяснения вопроса о том, что такое исходный код. "Исходным кодом", по крайней мере, как его сегодня понимают компьютерные программисты, называется текст программы, написанный на языке программирования "высокого уровня", таком, как Pascal или C. Отличительной чертой исходного кода является то, что он предназначен для чтения и понимания людьми и что он может быть использован для выражения некоторой идеи или метода. Компьютер, фактически, не может использовать напрямую исходный код, пока тот не переведен ("скомпилирован") на "низкоуровневый" или "машинный" язык и не превращен в "объектный код". То, что исходный код предназначен для чтения и понимания людей, не означает, однако, того, что его может понимать непрофессионал. Поскольку исходному коду уготована судьба быть перемолотым автоматическим, безжалостным и понимающим все буквально переводчиком, компилятором, программист должен строго следовать правилам грамматики, синтаксиса, формата и пунктуации. Соответственно, свободно понимать исходный код могут только те, кто знает программирование. (Примечание. Следует, однако, подчеркнуть, что исходный код представляет собой просто текст, хотя и текст, который следует строгим требованиям к формату и пунктуации. Например, ниже приведен отрывок из исходного кода [программы] Shuffle Бернстайна:
for (; ;) (uch = gtchr(); if (!(n & 31)) (for (i = 0; i64; i++) l [ ctr[i] ] = k[i] + h[n - 64 + i] Hash512 (wm, wl, level, 8);) В форме исходного кода Shuffle достаточно компактна; исходный код Shuffle умещается менее чем на четырех печатных страницах. Конец примечания.) Для нас также важно понять, как исходный код используется в области криптографии. Бернстайн представил ряд свидетельств криптографов и компьютерных программистов, поясняющих, что криптографические идеи и алгоритмы удобно выражать посредством кода. (Примечание. Способность исходного кода передавать алгоритмическую информацию продемонстрирована в торжественном заявлении профессора MIT Харольда Эбелсона (Harold Abelson): - Квадратный корень числа X - это число Y, такое, что Y, умноженное на Y, равно X. Это - [пример] декларативного знания. Оно сообщает нам нечто о квадратных корнях. Но оно ничего не сообщает о том, как найти квадратный корень. По контрасту, рассмотрим следующий древний алгоритм, приписываемый Хирону Александрийскому, для аппроксимации квадратных корней: Для аппроксимации квадратного корня положительного целого числа X:возьмите число наугад,улучшите догадку, приравняв ее к среднему догадки и разности X и догадки,повторяйте улучшение, пока не достигните приемлемой точности. Метод Хирона ничего не сообщает о том, что такое квадратные корни, однако он сообщает, как аппроксимировать их. Это - пример императивного "how-to" знания. Информатика занята формализацией императивного знания - разработкой формальной нотации и способов размышлять и рассуждать о методах. Вот как формализуется метод Хирона в нотации компьютерного языка LISP:
(define (sqrtx) (define (good-enough? guess) ((abs (- (square guess) x)) tolerance)) (define (improve guess) (average guess (/ x guess))) (define (try guess) (if (good-enough? guess) guess (try (improve guess)))) (try 1)) Конец примечания.) То, что это так, не кажется, по размышлении, странным. Как уже замечено, основная задача криптографов - разработка надежных методов шифрования. Описание таких систем на повседневном английском или с использованием общематематической терминологии может быть полезно, но вся соль - по крайней мере, для криптографов - часто в подробностях. Используя исходный код, криптограф может выразить алгоритмические идеи с точностью и методической строгостью, с трудом достижимыми другими методами. Исходный код также обладает тем преимуществом, что способствует экспертной оценке (peer review), поскольку, скомпилировав исходный код, [другой] криптограф может получить действующую модель, к которой приложимы строгие тесты на надежность. Потребность в точном формулировании гипотез и формализованных эмпирических тестах, разумеется, специфична не только для криптографической науки; однако похоже, что в этой области предпочтительным средством ее удовлетворения является исходный код. Следовательно, криптографы используют исходный код для выражения своих научных идей практически так же, как математики используют уравнения или экономисты - графики. Разумеется, и математические уравнения, и графики используются и в других областях для различных целей, не все из которых являются экспрессивными. Но математики и экономисты выбрали эти способы выражения для того, чтобы способствовать точному и строгому выражению сложных научных идей. Подобным образом неопровергнутое свидетельство говорит о том, что криптографы используют исходный код таким же образом. В свете этих соображений мы заключаем, что шифровальное программное обеспечение в форме исходного кода, используемое в сфере криптографии, должно рассматриваться как экспрессивное в смысле Первой поправки и, следовательно, подлежащее защите доктрины предварительного ограничения. Если бы правительство потребовало от математиков получать лицензию на то, чтобы публиковать материал, содержащий математические уравнения, такой режим, без сомнения, требовал бы анализа на предмет предварительных ограничений [свободы слова]. Более того, доступность других средств выражения не умаляет цензорской силы такого ограничения: то, что Адам Смит (Adam Smith) написал "Богатство народов" не прибегая к уравнениям и графикам, совершенно не оправдывало бы правительственной предварительной цензуры экономической литературы, содержащей эти экспрессивные средства. Правительство, фактически, не оспаривает серьезно того, что исходный код используется криптографами в экспрессивных целях. Правительство настаивает, скорее, на том, что исходный код отличается от других форм выражения (таких, как чертежи, рецепты, учебные руководства), поскольку он может использоваться непосредственно для управления компьютером без передачи информации пользователю. С точки зрения правительства, указание на это уникальное функциональное качество исходного кода, а не на содержание идей, которые могут им выражаться, позволяет экспертным ограничениям обходить требования Первой поправки. Такая аргументация ошибочна, по крайней мере, по двум причинам. Во-первых, не очевидно, что точка зрения правительства отражает правильное понимание [сущности] исходного кода. Как отмечено ранее, отличительной особенностью исходного кода является то, что он предназначен для чтения и понимания людей, и что он не может быть использован для непосредственного управления компьютером. Хотя исходный код, будучи подготовлен надлежащим образом, может быть легко скомпилирован пользователем в объектный код, игнорирование различия между исходным и объектным кодом затемняет тот факт, что исходный код не предназначен исключительно для компьютера, но написан на языке, разработанном также и для анализа и понимания людьми. Во-вторых, - и это более важно - аргументация правительства, если выделить ее сущность, предполагает, что даже одна капля "прямой фукциональности" перевешивает любую конституционную защиту, которую имел бы [определенный способ] выражения в противном случае. Такого не бывает. Такое различение, на котором настаивает правительство, имело бы слишком широкую область действия в нашу эпоху стремительно развивающихся возможностей компьютеров. То, что компьютеры скоро будут способны реагировать непосредственно на устные команды, например, не наделяет правительство неограниченной властью налагать предварительные ограничения на [устную] речь в попытке контролировать ее "функциональные" аспекты. Первая поправка касается [свободы] выражения, и мы отвергаем представление о том, что примесь функциональности с необходимостью выводит [свободу способа] выражения из-под конституционной защиты. | |
| Особое мнение (частичное дополнение) Майрон Брайт, окружной судья
Я присоединяюсь к мнению судьи Флетчер. Я поступаю так потому, что в речевом аспекте шифровальный исходный код представляет собой коммуникацию между компьютерными программистами. Я, однако, признаю значимость точки зрения судьи Нельсона в том, что шифровальный исходный код обладает также функциональными возможностями управления компьютерами и в этом отношении не требует защиты со стороны Первой поправки. Важность этого случая предполагает, что его, возможно, следует представить для рассмотрения в Верховный суд Соединенных Штатов. | |
| Из особого мнения (несогласия) Томас Нельсон, окружной судья
Бернстайн был не вправе напрямую обвинять EAR в том, что регулирование противоречит Первой поправке, а Окружной суд ошибочно вынес постановление об отмене [оспоренных пунктов регулирования] на основе его заявления. Таким образом, я почтительно не соглашаюсь [с большинством]. Главной ошибкой, которую допустило большинство0 и которую допустил Окружной суд, является неспособность признать, что основной функцией шифровального исходного кода является его использование в качестве метода управления компьютером. Как определено EAR, шифровальный исходный код - это "точный набор инструкций, который, будучи скомпилирован, позволяет выполнить на компьютере шифровальную функцию". Разработчики программного обеспечения обычно не создают программное обеспечение в объектном коде - последовательности двоичных цифр (единиц и нулей), которые сообщают компьютеру, что делать, - поскольку это было бы чрезвычайно сложно, громоздко и требовало бы массы времени. Вместо этого разработчики программного обеспечения используют языки компьютерного программирования, такие как C или Basic, для создания исходного кода, как способ стенографии (shorhand method), для того чтобы сообщить компьютеру, как выполнять необходимые действия. В этом отношении строки исходного кода являются строительными блоками или механизмами, используемыми для создания шифровальной машины. <...> Этот функциональный аспект шифровального исходного кода не представляет собой [способа] выражения; это всего лишь средство, используемое для построения шифровальной машины. Этим не утверждается, что тот же самый исходный код не используется в некоторых случаях экспрессивно. Ученым, таким как Бернстайн, нужно обмениваться идеями относительно компьютерного шифрования и обсуждать их. Как отмечено большинством, Бернстайну необходимо использовать свой исходный код текстуально для того, чтобы обсуждать или преподавать криптологию. В таких обстоятельствах исходный код служит для выражения научных методов или идей Бернстайна. <...> Хотя категоризовать шифровальный исходный код в терминах Первой поправки концептуально трудно, я все же прихожу к неизбежному заключению, что шифровальный исходный код больше похож на действие (conduct, поведение), чем на выражение. Шифровальный исходный код является строительным инструментом. Ученые и компьютерные программисты могут передавать исходный код друг другу, чтобы открыть шифровальную машину, которую они построили. Но окончательным назначением шифровального кода является, как и предполагает его название, выполнение функции шифрования сообщений. Таким образом, хотя шифровальный исходный код и может при случае быть использован в экспрессивных целях, в сущности (inherently) он является функциональным устройством. <...> В подавляющем большинстве случаев шифровальный исходный код экспортируется для передачи функциональности, а не для передачи идей (to transfer functions, not to communicate ideas). <...> Я бы, таким образом, отменил решение Окружного суда и оставил решение вопроса о претензиях Берстайна на усмотрение EAR. Соответственно, я почтительно не соглашаюсь. | |