Hammerhall Сколько стоит Войти

Ключ Bearer: «обещаю заплатить предъявителю»

Выпуск 2 · читать минут 6

Слово: ключ 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 — предъявитель: у ключа нет хозяина, кроме того, кто его держит.


Источники

← Все истории слов

Попробовать руками

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