Ключ Bearer: «обещаю заплатить предъявителю»
Слово: ключ Bearer — «предъявитель» · где услышишь: у программ команды со служебными ключами, в правиле «ключ — не в чат»
«Истории слов» — рубрика буткемпа Hammerhall. Наша команда строит учебную платформу и сервисы вокруг неё, а здесь рассказывает, откуда взялись слова, на которых говорит.
Лондон, 18 июня 1697 года. Банку Англии всего три года. Люди отдают ему деньги на хранение, а взамен кассир пишет от руки бумажку — расписку.
Одна из самых ранних таких бумажек дожила до наших дней, её хранит музей банка. Почерк на ней трудный: сотрудникам музея, по их же словам, пришлось изрядно пощуриться. Они почти уверены, что адресована она господам Коулману и Хоузу (Coleman and Hawes). Банк обещает заплатить 22 фунта — предъявителю.
Господину такому-то — или предъявителю
Тогда так и писали: «господину такому-то — или предъявителю». За этими словами простая задача.
Человек отдал деньги и унёс расписку. Кому банк их вернёт? Если только тому, кто принёс, — расписку никому не передашь. А если тому, кто её предъявит, — бумажку можно отдать другому, и она сама становится почти деньгами. Закон признал это не сразу: передавать такие бумаги из рук в руки разрешили особым актом только в 1704 году.
Предъявитель по-английски — bearer, буквально «тот, кто несёт»: тот, у кого бумага в руках.
В 1855 году с банкнот убрали и имя того, кому платить. С тех пор на английских банкнотах написано: «Обещаю заплатить предъявителю по требованию» (I promise to pay the bearer on demand). Эти слова стоят на них и сегодня. Золота за банкноту, правда, уже не дадут: Банк Англии прямо пишет, что обменять её можно только на другую такую же. А обещание предъявителю осталось.
Бумага без имени#
На такой бумаге не написано, чья она. Её хозяин — тот, кто её держит. В этом и удобство, и беда: потерял банкноту — заплатят тому, кто нашёл. Спросить, чья она, банку не у кого.
Сильнее всего это видно по облигациям на предъявителя. Облигация — долговая бумага: государство или компания берёт у тебя деньги и платит за это проценты. У таких облигаций хозяин нигде не записан.
К листу прилагались отрезные купоны: отрезал, отнёс — получил проценты. Наше «стричь купоны» — как раз про отрезные талоны ценных бумаг. А если облигацию украли или она сгорела, вернуть деньги обычно не удавалось.
Бумаги без имени любили те, кому есть что прятать, поэтому от таких бумаг стали отказываться. В США новые облигации на предъявителя почти перестали выпускать в 1980-х. А в России с 1 июня 2018 года новые сберкнижки и сберегательные сертификаты выдают только именными.
Жетон предъявителя#
Теперь интернет. Задача там похожая: одна программа хочет добраться до твоих данных в другой. Например, сервис печати фотографий — до твоих снимков в облаке. Давать ему свой пароль не хочется. Нужен пропуск: пустить куда надо, и не дальше.
Такие пропуски инженеры обсуждали не один год и называли bearer token — «жетон предъявителя». У нас его зовут проще — ключ. В октябре 2012 года вышел отдельный стандарт о том, как такими жетонами пользоваться, — RFC 6750. Написали его Майкл Джонс (Michael B. Jones) и Дик Хардт (Dick Hardt) для IETF — организации, которая договаривается об общих правилах интернета.
Определение там почти как на банкноте: любой, у кого жетон на руках, может им пользоваться, и доказывать, что жетон выдали именно ему, не нужно. И тут же предупреждение: беречь от чужих глаз — и пока жетон хранится, и пока его передают.
Почему инженеры взяли именно слово «предъявитель», в стандарте не
объяснено. О деньгах там речи нет. Но кто держал в руках английскую
банкноту, узнает слово сразу. Программа с таким ключом и сегодня
добавляет к запросу строку Authorization: Bearer … — а на
месте многоточия сам ключ. Предъявителю.
Ключи у нас#
Ключ Bearer — длинная строчка из букв и цифр, и работает она как та банкнота: система не спрашивает, кто ты, а смотрит, что у тебя в руке. В выпуске 1 была кука — она у живого человека в браузере. А служебный ключ — у программы, которая работает сама.
У команды такие программы есть: сами проверяют, сами рассылают письма. Для такой программы заводят служебную запись — учётную запись, за которой нет человека. У неё свой ключ, и людям её не выдают.
Так и говорим: у программ команды — служебные ключи, у людей в браузере — куки. Одно с другим не смешивают: запрос со служебным ключом идёт от имени службы. Перепутаешь — и то, что сделал человек, запишется на программу.
Сами ключи команда не хранит — только их отпечатки. По отпечатку ключ можно узнать, но восстановить нельзя. Поэтому потерянный ключ не ищут: выпускают новый, а старый отзывают. Тут нам повезло больше, чем владельцу облигации, — нашу бумагу можно отменить.
А главное правило — из той самой банкноты. Ключ не присылают в чат и не вставляют в сообщения — даже своим, даже на минутку. Сообщение читают многие, его пересылают, с него делают снимки экрана, и живёт оно годами. Кто увидел ключ, тот может его и предъявить. Ключ в чате — банкнота, приколотая к доске объявлений.
Поэтому ключ кладут сразу туда, где он будет работать, и больше никуда. А попал в чат — считай, что потерял: выпускай новый.
Bearer — предъявитель: у ключа нет хозяина, кроме того, кто его держит.
Источники
- Bank of England Museum, «Our earliest Bank of England note», 2021 — расписка 1697 года: 22 фунта, трудный почерк, Coleman and Hawes.
- Bank of England, «The Bank of England note: a short history», 1969 — «or bearer» на первых банкнотах, акт 1704 года, 1855 год — «просто предъявителю».
- Bank of England, вопросы о банкнотах — откуда «I promise to pay the bearer» и что за банкноту дадут сегодня.
- RFC 6750, «Bearer Token Usage», 2012 — стандарт: определение жетона предъявителя и требование беречь его от чужих глаз.
- Etymonline, «bearer» — откуда слово: от bear, «нести».
- Гарант: сберкнижки и сертификаты — только именные — обзор закона, по которому с 1 июня 2018 года сберкнижки и сертификаты на предъявителя в России больше не выдают.