Засновок
Таємницю треба тримати, і таємниця має бути іншою біля кожної брами. Ці дві вимоги ворогують між собою. Утримувати в думці сотню окремих таємниць — понад силу жерцеві; вписати ж їх до сховку — означає зібрати сотню проломів в один. Звичайна відповідь доби — зашифрований скарб: єдиний майстер-ключ, що відмикає збережений реєстр усіх інших таємниць, — але скарб є річчю, що існує, а річ, що існує, можна скопіювати, втратити, синхронізувати між шасі, які жрець не владний, і вимагати під примусом.
Культ тримає іншу дисципліну. Знання — божественне, але найглибше знання є невимовленим — тримається в думці, ніколи не вписується до жодного реєстру, що його могла б дістати інша рука. Обряд, названий тут, береже лише одну таємницю. Кожна інша таємниця не зберігається, а виводиться: кується на вимогу з утримуваного майстер-ключа й імені нагоди, читається на мить, коли вона потрібна, і потім зникає. Ніщо не записується. Немає скарбу, який можна проламати.
Цей запис є прийнятим, а не розширеним. Конструкція, яку він приймає, є справжньою та стандартизованою: система одноразових паролів S/KEY з RFC 2289, з її ітерованим гешем і словником коротких слів. Те, що до неї застосовано, — це доктрина запечатаного, невимовленого знання — прочитання, що обертає протокол входу на обряд таємниці.
П’ять властивостей запечатаного слова
Таємниця, гідна обряду, мусить задовольняти п’ять умов. Похідне слово задовольняє їх.
I. Виведене, ніколи не збережене
Слово не існує, доки його не запитано, і припиняється, щойно запитання звершено. Воно обчислюється проведенням майстер-ключа крізь односторонній геш знову й знову — за замовчуванням сто разів — так, що вихід прив’язаний до входу функцією, яку жодна рука не оберне назад. Навіть на власному шасі жерця слово ніколи не вписується на диск; воно тримається лише в живій пам’яті робітні, на подих між його куванням і вжитком. Немає файлу, який можна захопити, бо таємниця ніколи не була файлом.
II. Один майстер-ключ, багато печаток
Ім’я нагоди є зерном. github, bank, archive — кожне ім’я, складене разом з єдиним утримуваним майстер-ключем, дає цілковито інше слово. Тисячі брам обслуговуються єдиною таємницею в думці, і таємниці тих брам не поділяють жодної субстанції, яку пролом однієї міг би видати іншій. Немає чого синхронізувати між шасі й немає чому витекти, бо єдине, що несеться від брами до брами, — це майстер-ключ, а майстер-ключ не несеться зовсім — його пам’ятають.
III. Пам’ятне
Таємниця, яку жрець не може вимовити вголос, — це таємниця, яку він не може звірити, понести чи довірити. Обряд згортає свої шістдесят чотири біти виходу не в шістнадцятковий запис і не в щільну абетку base 64, а у шість коротких слів, узятих із незмінного словника на дві тисячі сорок вісім — мови S/KEY. Кування ross beau week held yoga anti можна вимовити, скопіювати й навіть переписати рукою там, де стіна шістнадцяткового запису не далася б. Це пам’ятна мова в строгому сенсі: словник, обраний так, щоб вихід машини чисто пройшов крізь вуста й вухо оператора.
IV. Детерміноване й переносне
Той самий майстер-ключ і те саме ім’я дають те саме слово завжди, на будь-якому шасі, без мережі й без попереднього стану. Обряд є чистою функцією, а не пошуком; він нічого не просить у сервера й нічого не тримає на диску. Його можна звершити на металі через командний рядок або в браузері через скомпільований модуль, і обидва промовляють те саме слово, бо обидва запускають ту саму конструкцію. Обряд мандрує вільно; таємниця не мандрує зовсім.
V. Безпечне перед спостережними очима
Оскільки майстер-ключ ніколи не показується й ніколи не передається, обряд можна звершити на шасі, якому жрець не довіряє. Те, що видно на поверхні, — лише похідне слово для однієї брами; односторонній геш забороняє провести те слово назад до майстер-ключа, а слово для однієї брами нічого не каже про слово для наступної. Дисципліна, для служіння якій було збудовано канонічну систему S/KEY, — автентифікація через канал, що його вважають спостереженим, — зберігається цілком.
Конструкція
Механізм вірний стандартові й простий для викладу. Ім’я нагоди приєднується до утримуваного майстер-ключа, і приєднане значення проводиться крізь геш SHA-1 seq + 1 разів, де seq — лічильник послідовності, що за замовчуванням дорівнює дев’яноста дев’яти, — сто раундів гешування у звичайному випадку. Отриманий дайджест згортається до шістдесяти чотирьох бітів, і ці біти кодуються, по одинадцять за раз, у шість індексів на словнику з двох тисяч сорока восьми слів RFC 2289. Виходом є шість слів.
Ті самі шістдесят чотири біти можуть бути відображені в інших регістрах, коли брама їх вимагає: у camelCase без пробілів, з’єднані дефісами, шістнадцятково, у base 64 чи десятково; з необов’язковим незмінним префіксом спереду або обтятими до потрібної довжини. Словесна форма є замовчуванням і доктриною; інші — поступки брамам, що її відкидають.
Одна точність належить стандартові. Канонічна система S/KEY використовує свій ітерований геш, щоб збудувати ланцюг паролів входу, кожен — прообраз попереднього, спожитий по одному на автентифікацію. Обряд, названий тут, приймає той самий ітерований геш і те саме словесне кодування, але згинає їх до іншого служіння: виводник для кожної нагоди, ключований іменем брами, що дає одне стале слово на нагоду, а не низхідний ланцюг одноразових входів. Конструкція належить S/KEY; застосування належить обрядові. Не стверджується, що це сам протокол входу.
Кування
Обряд має теперішнє втілення, выковане жерцем і назване hel — його родовід — давніший LesS/KEY, від якого походить конструкція. Ім’я взяте від хранительки норвезького підземного світу, вартової того, що переходить між станами: гідна заступниця для таємниці, яку ніколи не зберігають, лише проводять крізь робітню на мить її вжитку.
Осердя выковане на Rust і поділене без розбіжності між двома лицями: командним рядком на металі й модулем, скомпільованим до WebAssembly для браузера, так, що слово, промовлене на шасі, і слово, промовлене в браузері, є доказово тим самим словом. Робітня не зберігає жодної таємниці. Те, що вона тримає — у місцевому сховищі браузера чи в простому файлі-каталозі на металі, — є лише реєстром імен і правил породження: які брами існують, яким режимом і послідовністю кожна виводиться. Майстер-ключ не входить до того реєстру, як і жодне похідне слово. Після завантаження модуля ніщо не надсилається крізь порожнечу; обряд звершується цілком на власному шасі оператора.
> enc github
ross beau week held yoga anti
Одне втілення обряду стоїть на kaizenkodo.no/hel, де його можна звершити в будь-якому браузері, офлайн, без облікового запису й без передачі.
Доктринальне становище
Кування подане під Святістю Винаходу, що допускає винахідницький твір як священний, а не підозрілий, за чотирьох умов. Обряд звірено проти кожної.
- Джерельне. Родовід заявлений і нерозірваний: система одноразових паролів S/KEY з RFC 2289, її ітерований геш і її стандартний шестислівний словник. Конструкція не винайдена, а прийнята з канону галузі.
- Запечатане. Конструкція закріплена випробуванням: еталонні вектори стандарту — відомий майстер-ключ та ім’я, що дають відомі слова, — вв’язані у власну діагностику кування, так, що будь-яке відхилення від канонічного виходу виловлюється, перш ніж його буде освячено.
- Помічене. Цей запис поданий у
content/adoptus/, ніколи в канон. Це власне прочитання жерця й власне кування жерця, назване як таке. - Обмежене. Стандарт є межею. Обряд не винаходить ані нового гешу, ані нового словника; він знову застосовує наявну конструкцію до служіння виведення. Власна сила майстер-ключа лишається межею цілого — жодне виведення не може бути сильнішим за таємницю, з якої воно починається.
Що відтак прийнято
- Там, де таємницю треба тримати й вона мусить різнитися біля кожної брами, похідне слово — выковане з одного майстер-ключа й імені брами, ніде не збережене — є канонічною формою, на перевагу збереженому скарбу.
- Шестислівний вихід трактується як приклад пам’ятної мови: шістдесят чотири біти машини, відображені в мову, якою оператор справді може говорити, у дусі Lingua-Technis.
- Звершення обряду на будь-якому шасі, офлайн і без облікового запису, трактується як застосування дисципліни ключів — таємницю прикликають у мить сідання до праці й відпускають, коли праця звершена.
Що не стверджується
Обряд не заступає спільне сховище там, де таємницю треба поділити — передати між операторами, відновити другою стороною чи перевести опікуном, іншим за тримача; річ, виведена з одного розуму, не може бути видана тим розумом без видання власного майстер-ключа розуму. Не стверджується й, що це сам протокол входу S/KEY; він позичає конструкцію, а не служіння. І він не дарує сили, яку майстер-ключ затаює: слабкий майстер-ключ дає слабкі слова біля кожної брами, бо виведення може лише понести вперед ту таємність, яку йому дано.
Перехресні посилання
- The Sanctity of Invention — invention as worship, not heresy · доктрина, під якою подане кування
- WAFER — the Priest's Forging of FORTH · інше кування жерця, подане за тими ж чотирма умовами
- FORTH — the Divine Language of the Machine · прийняте-прочитання справжнього софту, форму якого наслідує цей запис
- Cant of the Keys — sitting at the keyboard · брамний обряд прикликання таємниці до праці
- Computational Liturgy — daily code · щоденна дисципліна, у межах якої звершується обряд
- Machine Spirit · двигун, перед яким приноситься слово
- Lingua-Technis · пам’ятна мова, яку являють шість слів
- The Quest for Knowledge · винахід як винахідницьке лице Пошуку
- The Sixteen Universal Laws