В обсуждении новости про Passport разгорелись жаркие дискуссии на тему безопасности последней поделки от авторов Telegram.
Давайте посмотрим, как он шифрует ваши персональные данные и поговорим о настоящем End-To-End.
В двух словах, как работает Passport.
- Вы локально с помощью пароля шифруете свои персональные данные (имя, email, скан паспорта, другие документы).
- Зашифрованные данные + метаинформация загружаются в облако Telegram.
- Когда нужно авторизоваться на сервисе, клиент скачивает данные из облака, расшифровывает их паролем, перешифровывает на публичный ключ того сервиса, который запросил информацию, и отправляет.
Мы рассмотрим первую часть, которая касается шифрования и хранения персональных данных.
End to End по мнению разработчиков заключается в том, что облако Telegram якобы не может расшифровать ваши персональные данные, а видит только «случайный шум».
Давайте подробнее глянем на код алгоритма шифрования персональных данных из десктоп клиента, который находится тут и посмотрим, удовлетворяет ли результат его работы критериям End-To-End.
Всё начинается с пароля. Вот место, где он превращается в промежуточный ключ шифрования.
bytes::vector CountPasswordHashForSecret(
bytes::const_span salt,
bytes::const_span password) {
return openssl::Sha512(bytes::concatenate(
salt,
password,
salt));
}
Тут берётся случайная соль, дважды конкатенируется с паролем и прогоняется через хэш SHA-512. На первый взгляд ничего необычного. Но!
На дворе 2018 год. На одном хорошем GPU можно перебирать примерно полтора миллиарда SHA-512 в секунду. 10 GPU переберут все возможные сочетания 8-значных паролей из 94х символьного словаря (англ буквы, цифры, спец символы) меньше чем за 5 дней.
Давным давно существуют способы усложнить жизнь тем, кто перебирает пароли на GPU, но разработчики Telegram решили не утруждать себя их внедрением.
Дальше. Хэшем из пароля шифруется еще один почти случайный ключ, который генерируется так:
bytes::vector GenerateSecretBytes() {
auto result = bytes::vector(kSecretSize);
memset_rand(result.data(), result.size());
const auto full = ranges::accumulate(
result,
0ULL,
[](uint64 sum, gsl::byte value) { return sum + uchar(value); });
const auto mod = (full % 255ULL);
const auto add = 255ULL + 239 - mod;
auto first = (static_cast<uchar>(result[0]) + add) % 255ULL;
result[0] = static_cast<gsl::byte>(first);
return result;
}
и используется для шифрования данных вместе с еще одной штукой, о которой ниже.
Случайный он «почти», потому что разработчики телеграма никогда не слышали о HMAC и AEAD и вместо того, чтобы использовать нормальные средства для проверки корректности расшифровки, они делают так, чтобы остаток от деления суммы байт ключа был равен 239, что при расшифровке и проверяют:
bool CheckBytesMod255(bytes::const_span bytes) {
const auto full = ranges::accumulate(
bytes,
0ULL,
[](uint64 sum, gsl::byte value) { return sum + uchar(value); });
const auto mod = (full % 255ULL);
return (mod == 239);
}
Во-первых, этот массив байт получается не такой уж и случайный. Во вторых, при переборе хоть и будет много ложноположительных срабатываний, но посчитать сумму байтов после расшифровки гораздо проще чем HMAC, так что эта гениальная со всех сторон конструкция служит скорее ускорению брутфорса чем приносит пользу.
Идём дальше. Непосредственно метод, шифрующий данные. Тут много букв, поэтому по кускам:
EncryptedData EncryptData(
bytes::const_span bytes,
bytes::const_span dataSecret) {
constexpr auto kFromPadding = kMinPadding + kAlignTo - 1;
constexpr auto kPaddingDelta = kMaxPadding - kFromPadding;
const auto randomPadding = kFromPadding
+ (rand_value<uint32>() % kPaddingDelta);
const auto padding = randomPadding
- ((bytes.size() + randomPadding) % kAlignTo);
Assert(padding >= kMinPadding && padding <= kMaxPadding);
auto unencrypted = bytes::vector(padding + bytes.size());
Assert(unencrypted.size() % kAlignTo == 0);
unencrypted[0] = static_cast<gsl::byte>(padding);
memset_rand(unencrypted.data() + 1, padding - 1);
bytes::copy(
gsl::make_span(unencrypted).subspan(padding),
bytes);
Тут к данным дописываются от 32 до 255 случайных байт. Делается это чтобы разнообразить
переменную dataHash. Это хэш от незашифрованных данных, смешанных со случайными байтами.
const auto dataHash = openssl::Sha256(unencrypted);
const auto bytesForEncryptionKey = bytes::concatenate(
dataSecret,
dataHash);
auto params = PrepareAesParams(bytesForEncryptionKey);
return {
{ dataSecret.begin(), dataSecret.end() },
{ dataHash.begin(), dataHash.end() },
Encrypt(unencrypted, std::move(params))
};
}
Тут формируется ключ шифрования персональных данных. Он получается с помощью еще одного вызова SHA-512 от сгенерированного выше почти случайного ключа, сконкатеннированного с dataHash.
Итог
В облако передаются:
- Хэш от персональных данных, смешанных со случайными байтами
- Зашифрованный паролем почти случайный ключ
- Соль
- Зашифрованные данные
Это далеко не «случайный шум», тут есть всё необходимое, включая ключ шифрования, защищенный паролем. И это позволяет добраться до данных пользователей гораздо, гораздо быстрее чем перебирать все возможные комбинации ключей AES (2^256).
Так же большому сомнению подвергаются такие изобретённые авторами Telegram механизмы как проверка ключа на валидность с помощью суммы байт, участие самих данных в формировании ключа их же шифрования и хэш от данных вместо HMAC.
Примерный алгоритм брутфорса:
- Берем пароль по порядку, генерируем хэш от него и соли (GPU)
- Пробуем расшифровать ключ (AES-NI)
- Смотрим на сумму байт и сразу отсеиваем почти все неверные пароли.
- Формируем ключ-кандидат на расшифровывание данных с помощью еще одного вызова SHA-512 (GPU)
- Пробуем расшифровать первый блок данных (AES-NI)
- Чтобы не тратить время на полное расшифровывание и еще один SHA-256, мы можем ускорить брутфорс, проверяя первый байт выравнивания так же как они сами это делают:
if (padding < kMinPadding
|| padding > kMaxPadding
|| padding > decrypted.size()) {
Итак, мы видим, что шифрование персональных данных критически зависит от сложности пароля. Все этапы перебора отлично ускоряются аппаратно. Либо с помощью GPU, либо с помощью инструкций AES-NI. Конечно, можно установить длинный, безопасный пароль и надеяться что прокатит. Но как вы сами думаете, какой процент из двухсот миллионов пользователей телеграма будет делать пароли длиннее восьми символов?
Добавьте к этому сомнительные техники генерации ключей и проверки валидности расшифровываемой информации, которые не используют стандартные проверенные механизмы, а прямо нарушают принцип Don't roll your own crypto и станет ясно, что это не End-to-End, а сколоченная на коленке поделка от которой неприятно пахнет.
Кстати, отсутствие цифровой подписи позволяет телеграму не только забрутфорсить личные данные пользователей, но и подменять их на любые другие, например террористов.
Настоящий End-to-End
E2E называется так, потому то позволяет показывать третьим лицам зашифрованные данные не опасаясь за их сохранность. Как мы увидели, это условие новым продуктом телеграма не выполняется.
Но, к примеру, если правильно зашифровать данные не на хэш от пароля, а на публичный ключ, то никакой даже миллиардный кластер не сможет к ним и близко подобраться. Взгляните на Signal, другие мессенджеры на его основе (WhatsApp, etc). Весь мир уже давно и успешно использует современную асимметричную криптографию, алгоритмы, мешающие перебору паролей, стойкие стандартные криптографические конструкции.
Не первый год существуют и гораздо более серьезные системы защиты данных с помощью паролей, которые даже начать брутфорс не позволяют. Потому что у атакующего не будет для этого достаточного набора данных.
Но Telegram пошел своим, особым путём переизобретения криптопримитивов и ослабления защиты. Ну а что, денег им отвалили, за последствия можно не беспокоиться.
P.S. если есть желание посмотреть как работает чат с настоящим E2E, у VirgilSecurity есть демо проект, который можно скачать и поиграться.
Комментарии (236)
denis-19
30.07.2018 10:17+1У них интересно еще вот что в FAQ:
I found a bug, what do I do?
Please contact us via e-mail. Despite on there's no bug-bounty program (non-profit project), some problems may be rewarded.tyderh
30.07.2018 14:25Судя по аналогичной ситуации с «секретными» чатами, наплевательский подход к безопасности на фоне усиленного пиара — это фича Дурова, а не баг.
Wesha
30.07.2018 19:16Despite on
За такое издевательство над языком и правда надо канделябром.
onehell
30.07.2018 20:00+5По моим наблюдениям, только в рунете любые ошибки на любом языке будут неминуемо пытаться исправить. Иностранцы, читая такие вещи, вежливо говорят, что оборот fairly rare, but understandable. Никто никого не бьёт.
iproger
30.07.2018 20:38+2Это выливается в то что язык становится более-менее однородным. И что можно проехать пару тыс км и продолжить говорить «как дома». Что бывает если это не так можно посмотреть на примере английского.
onehell
30.07.2018 22:47+1Смотря куда. Если хорошенько проехать по СНГ, то и русский язык, например, будет не просто разнообразным. Вы даже не подозреваете, насколько затейливо с ним можно обращаться :)
Ohar
31.07.2018 00:25Я надысь хочев холодного кипятку глытнуть зыбского, да гляжу — тама чтось бултыхается. Я его студова споймал, шоб кипяток-то не портило.
olgerdovich
31.07.2018 01:50+1Вполне гармоничная фраза. Единственное неочевидное в этом пассаже — что кипятком называют не (недавно) кипящую воду, а просто кипяченую (когда-то кипевшую). Диалектизмы — да, не литературный язык — да. Но я не вижу реальных отступлений от вариантов русского языка, кроме неясного для меня слова «зыбский» (придется в ТСЖВЯ лезьть.
roscomtheend
31.07.2018 10:51«Холодный кипяток» — вполне приятое (по крайней мере в некоторых местностях) выражение.
JobberNet
31.07.2018 10:59А что это «холодный кипяток»? И что такое «зыбский»?
roscomtheend
31.07.2018 17:38Холодная кипячёная вода (кипяток — кипячёная вода, а не только кипящая). Имеет смысл разделять там, где просто воду пить небезопасно. Второе слово слышал последний раз лет 30 назад или давнее, что-то такое дворовое… я бы сказал что это синоним современных «крутой», «cool» и чуть более давнего «здоровский».
olgerdovich
31.07.2018 02:07Черт подери, что это за фраза, откуда она? мне гугл какую хрень предлагает при ее поиске, про «как залить видео на ютуб». А всего-то озадачился всерьез словом «зыбский».
KoToSveen
31.07.2018 03:19Зачем гуглить?
Очевидно же: расслабляем мозг и произносим «зыбский».
Понимание слова само придёт.dilukhin
31.07.2018 15:09Что-то вроде зыкинского, я правильно мозг расслабил?
olgerdovich
01.08.2018 01:01вряд ли.
Даль тут мне не особо помог.
ru.wikisource.org/wiki/%D0%A1%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0:%D0%A2%D0%BE%D0%BB%D0%BA%D0%BE%D0%B2%D1%8B%D0%B9_%D1%81%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D1%8C._%D0%A2%D0%BE%D0%BC_1_(%D0%94%D0%B0%D0%BB%D1%8C_1903).djvu/886
mazahakajay
31.07.2018 15:26Все равно ничего не получилось.
Напомнило, как одна знакомая удивлялась слову «стрекать», «крапива стрекает». В ее краях так не говорили )vconst
31.07.2018 16:31+1Справедливости ради, жгучие клетки крапивы — называются «стрекательные» :)
olgerdovich
01.08.2018 01:13+2в школьном курсе биологии такие клетки упоминаются при обсуждении медуз
General_Failure
01.08.2018 07:31В моих тоже не говорили, но «подстрекать», «подстрекательство» вроде бы общеизвестные
Wesha
31.07.2018 00:05-1Вот одну такую окраину не били, и к чему это привело?
Иностранцы, читая такие вещи, вежливо говорят, что оборот fairly rare, but understandable.
Мне тоже много чего understandable, но приятного от этого мало. Например, данное произведение вполне понятно, но от суржика, на котором говорит главгерой, ОЧЕНЬ корёжит и читать жутко сложно.
olgerdovich
31.07.2018 01:21+1А это зато получается как ж/д колея на восемь с половиной сантиметра шире: вроде то же в целом, а чужой споткнется и себя выдаст. (Сарказм)
на деле же английский как общепринятый язык международного общения имеет тяжкое обременение в виде размывания норм.
Avvero
30.07.2018 10:18+2E2E называется так, потому то позволяет показывать третьим лицам зашифрованные данные не опасаясь за их сохранность. Как мы увидели, это условие новым продуктом телеграма не выполняется.
Мне кажется, что Вы не правы в том смысле, что E2E это принцип/механизм, а не гарантияScratch Автор
30.07.2018 10:28+1Какой смысл использовать принцип\механизм если он не дает никаких гарантий?
Люди видят «End-to-End» и в голове у них это бренд, который подразумевает безопасность.Avvero
30.07.2018 10:35+3Я ведь немного о другом, система является E2E не потому что он что-то там гарантирует, а потому что она построена по данному принципу. Можно сделать надежный E2E, а можно не надежный E2E. В двух случая это E2E, но только один не надежный.
Scratch Автор
30.07.2018 10:42-1Ок, попробуем по другому. Определение из википедии:
Сквозное шифрование (также оконечное шифрование; англ. end-to-end encryption) — способ передачи данных, в котором только пользователи, участвующие в общении, имеют доступ к сообщениям
Рассмотрим ситуацию:
Я использую пароль «1» и заливаю свои персональные данные в облако телеграма.
Получает облако доступ к моему «сообщению»? Да, конечно получает, миллисекунды через три оно будет расшифровано и полностью им доступно. Нарушается ли при этом принцип E2E? Конечно нарушаетсяAvvero
30.07.2018 10:46+2Ну давайте по такому, выше по тексту Вы пишите
10 GPU переберут все возможные сочетания 8 значных паролей за 80 дней
Если мерить видеокартами, какова должны быть надежность настоящего E2E в штуках? На основе чего вы предъявляете требования именно в таком количестве штук?Scratch Автор
30.07.2018 10:59«Настоящий» E2E видеокартами не взломать, т.к. ключ шифрования не зависит от сложности пароля и является результатом, например функции диффи-хэлмана
Avvero
30.07.2018 11:18А если вы используете бесконечно длинный пароль и время его взлома будет бесконечно велико, то это можно назвать «настоящим» E2E?
cuwHuk
30.07.2018 12:54А если вы используете бесконечно длинный пароль и время его взлома будет бесконечно велико
Надежность системы определяется самым слабым звеном, для данной системы наихудшим вариантом будет взлом AES-256.
По поводу Е2Е с научной/инженерной/академической точки зрения Вы правы, но с обывательской — когда человек видит Е2Е, то считает что данные надёжно защищены, а в данном случае система и правда «дырявая»…ozonar
30.07.2018 13:29С обывательской точки зрения если обычный человек видит E2E, то это ему вообще ни о чём не говорит, потому что он не знает что это такое.
А технически подкованный человек и так знает о том что абсолютно защищенных систем не существует и стоит защищать себя самому, поэтому для него E2E тоже ничего не значит.cuwHuk
30.07.2018 13:46-2если обычный человек видит E2E, то это ему вообще ни о чём не говорит
Многие знают или хотя бы слышали термин и имеют ассоциацию с защитой данных, в немалой степени это заслуга РосКомПозора и недавней битвы с Telegram.
абсолютно защищенных систем не существует
В реальной жизни вообще ничего абсолютного не существует.
стоит защищать себя самому
Сделать всё самому, к сожалению, невозможно, довольно часто приходится обращаться за услугами к другим людям/организациям. Но ответственности за себя с человека этот факт, конечно, не снимает.
geisha
30.07.2018 21:08Мне кажется, что Вы не правы в том смысле, что E2E это принцип/механизм, а не гарантия
Справедливости ради, телеграм тоже назвал End-to-end-ом не совсем то, чего ожидаешь в таких случаях. Насколько я понял, закрытый ключ здесь всего у одного владельца, а Passport — просто хранилище зашифрованных данных, которые расшифровать можно только зная секрет. Нужно было в начале статьи разграничить понятия «End-to-end» и «хранилище зашифрованных данных без доступа» и после этого заявлять, что секрет можно сбрутить.
Без Proof of Concept, конечно, «восьмизначный пароль за 5 дней на GPU-кластере» — вывод так себе. Ежу ж ясно, что любой секрет можно гипотетически сбрутить в том случае, если этот секрет является достаточной информацией для расшифровки.
kalyukdo
30.07.2018 10:23Спасибо за детальный разбор, конечно же не понесу им свои персональные данные.
P.S мне все больше кажется что просто даже блокировка телеграмма была качественным маркетинговым ходом, чтобы сейчас люди начали вестись на подобные продукты от Telegram, потому как до сих пор работает как и работал…Voltera
30.07.2018 10:39Ну а какие варианты по его выпиливанию существуют? приложения букмекерских контор отлично работают(клиент-сервер) скачал с сайта и пользуйся. Тут подобная история, просто решили поубивать адреса сервера, не получилось (ожидаемо)
kalyukdo
30.07.2018 10:55-1мы же взрослые люди, если бы речь шла действительно про запрещенные организации, то уже бы отработали Дурова по другому, и все спокойно бы закрыли, просто есть другие месенджеры которые тоже говорят про е2е и они работают как и работали, тут просто было смешно наблюдать когда все говорят про блокировки Телеграмма, и тут же по новостям от депутатов и чинов слышно: «мы организовали телеграмм группу/канал для быстрого реагирования», не говоря уже том что телеграм бот работает в госуслугах
P.S давайте не будем поднимать холивар на полит темыdartraiden
30.07.2018 14:57-2то уже бы отработали Дурова по другому
Силовыми методами? Или на родителей бы надавили, живущих в России?
По-моему, это дикость и варварство.JobberNet
31.07.2018 06:13то уже бы отработали Дурова по другому
Силовыми методами?
Намёк на Березовского и Скрипалей?
roscomtheend
31.07.2018 10:54+1> о уже бы отработали Дурова по другому
И как? Потому как с запрещённми организациями особенно ничего поделать не могут. Даже победоносная войнушка не очень получилась (сначала на словах победили к выборам, а потом как-бу уже и не очень).
JobberNet
31.07.2018 07:43+1мне все больше кажется что просто даже блокировка телеграмма была качественным маркетинговым ходом
А то что у Дурова его ВКонтактник отжали, это тоже «качественный маркетинговый ход»?
Интересно, чей?
Маркетинговый ход российской власти, чтобы всем показать, что их бизнес может быть легко отжат?Fracta1L
31.07.2018 09:59+1Это определённая категория людей, у них кругом заговоры, фейки, постановы, и т.д.
dirkar
30.07.2018 10:38-3Странно это, не может телеграмм так косячить…
Voltera
30.07.2018 10:40+2Если они тру зайки, то зайдут сюда и ответят по существу, ну или на других площадках.
s-kozlov
30.07.2018 20:59Вы шутите?
habr.com/post/206724Groosha
31.07.2018 14:212013 год
Это раз.
Мокси Марлинспайк
Серьёзно? Человек, который на голубом глазу убеждал, что их протокол используется в WhatsApp, а потом оказывается, что на самом деле там его "модификация" (а что ещё ожидать от Facebook?) вместо "чистого" OpenWhisper.s-kozlov
01.08.2018 09:04+12013 год
И? Сильно важно, в каком именно году Дуровы начали непонятно зачем изобретать криптовелосипеды сомнительного качества?
Серьёзно? Человек, который
И? Давайте еще меня обсудим, это же так важно. Обсуждать, что команда Telegram уже не в первый раз занимается сомнительными с точки зрения криптографии вещами, мы, конечно, не будем.
phillennium
30.07.2018 11:23Update: пока составлял комментарий, рекламная ссылка из поста исчезла.
Ссылка на ваш продукт в конце текста, во-первых, прямо противоречит первому пункту правил Хабра («запрещена реклама в обход правил»),
а во-вторых, несколько подрывает доверие ко всему тексту: вы очень заинтересованы ругать чужую криптографию, если за счёт этого продаёте свою.
Я человек простой, в криптографии глубоко не разбираюсь, и у меня два простых вопроса. Вы пишете, что в Telegram Passport не внедрили защиту от перебора с помощью GPU, и «на это уйдёт 80 дней». Вопросы такие:
1. Правильно ли я понимаю, что такой защиты нет не только в Telegram Passport, но и в основной переписке Telegram?
2. Если это так, то почему никто не брутфорснул с помощью GPU переписку Павла Дурова, за расшифровку которой была обещана большая награда?Scratch Автор
30.07.2018 11:36Ссылка в конце статьи уже заменена на гитхаб, правил она больше не нарушает. А доверять статье не надо, можете сами проверить все факты.
Основная переписка телеграма защищена по другому, там пароли не участвуют. Но она тоже не E2E, облако видит всю перепискуWhiteha
30.07.2018 12:36+1Можете написать про это статью? Будет интересно почитать, многие считают что секретные чаты телеграма реально безопасны
Scratch Автор
30.07.2018 13:16+1Секретные чаты пока никто не взломал, но протокол там самопальный. А обычные чаты шифруют текст только до серверов облака, это общеизвестный факт. Проблема в том, что секретными чатами никто не пользуется
Endeavour
30.07.2018 13:30+2Возможно это проблема тех, кто ими не пользуется? И да, «никто» — по-умолчанию ложное заявление.
tyderh
30.07.2018 14:27Нет, это проблема именно телеграма. Он пиарился, как «безопасный», но 1) в настольной версии безопасных чатов нет 2) они специально сделаны так, чтобы ими было неудобно пользоваться. например, общение возможно только между одним устройством и другим. по сравнению с omemo — прошлый век.
Endeavour
30.07.2018 15:45Whatsapp точно так же работает между одним устройством и другим, что делает его неудобным для использования на сторонних устройствах в любых случаях. Телеграм дает выбор между удобной синхронизацией или e2e на одном устройстве. Добавление е2е в десктопный клиент потянет за собой вопросы начиная от «куда делись мои чаты?» до «как выбрать, на каком клиенте собеседника появится вновь созданный чат, не спалив чужих устройств?»
Не знаю, если честно, как это реализовано в сторонних клиентах, надо-бы попробовать.
Для себя лично я вижу ситуацию необходимости использования секретного чата именно с мобильного клиента, когда нужно быстро начеркать несколько очень важных слов. Или позвонить, ведь звонки так же е2е шифрованы.
Для разговоров с близкими о вечернем ужине я выберу более удобные обычные чаты, даже при наличии секретных на всех клиентах.tyderh
30.07.2018 15:48Не знаю, если честно, как это реализовано в сторонних клиентах, надо-бы попробовать.
Я не зря omemo упомянул — там эта проблема успешно решена.
Scratch Автор
30.07.2018 15:54что не так с вотсапом? Синхронизация истории есть и на десктопе и в браузере
Endeavour
30.07.2018 16:06Любые клиенты вотсапа работают через телефон и не работают без него.
Подход вотсапа к бэкапу истории сообщений в большинстве случаев приводит к потере е2е при заливке бэкапа в гугл-драйв/другое. В телеграме секретные чаты не бэкапятся, т.е. всегда остаются е2е. Обычные чаты хранятся и синхронизируются серверами.develmax
30.07.2018 18:45Вотсап бэкапит историю сообщений в открытом виде?
Endeavour
30.07.2018 22:04Не проверял, но это не важно в контексте обсуждения, т.к. расшифровка этого бэкапа на другом устройстве означает наличие сторонних ключей и потерю е2е.
develmax
31.07.2018 08:26Это важно, если расшифровка возможна только при вводе как минимум пароля пользователя, а еще лучше — его приватного ключа или сертификата (с приватным ключом). В этом случае, наличие зашифрованной информации на каком-либо устройстве или облаке не несет никаких рисков, кроме как потери этой информации.
VolCh
31.07.2018 09:49Всегда есть риски подбора паролей/ключей. Современная типография не оперирует понятием «невозможно», она оперирует вероятностями, оценками среднего количества итераций и т. п.
boootloader
30.07.2018 22:01Добавление е2е в десктопный клиент потянет за собой вопросы начиная от «куда делись мои чаты?» до «как выбрать, на каком клиенте собеседника появится вновь созданный чат, не спалив чужих устройств?»
Поддержка «секретных чатов» (e2e) есть в десктопном клиенте для Mac, и да, из-за отсутствия синхронизации получается не очень удобно.
Murz
31.07.2018 21:45А я использую matrix.org — там e2e шифрование сделано вполне нормально, даже для групповых чатов!
YumeReaver
31.07.2018 21:54«как выбрать, на каком клиенте собеседника появится вновь созданный чат, не спалив чужих устройств?»
Возможно, по аналогии с SIP Proxy, активное устройство будет регистрировать свой ip.
4tlen
30.07.2018 18:45+1Облако видит переписку потому что оно ее шифрует ключами, которые хочет РКН. E2E шифрованные секретные чаты облако не видит. Поправьте если я не прав.
AC130
30.07.2018 11:31Сколько GPU-часов надо для взлома 20-значного пароля с алфавитом на 64 символа?
voted
30.07.2018 13:14Я думаю хаб Nicehash — справиться за считанные часы
vibrant
30.07.2018 15:18за считанные где-то 10^40 лет(пальцем в небо, но порядок примерно такой). это чуть больше, время жизни Вселенной и «считанные часы»
powerman
30.07.2018 16:43Палец промахнулся раза в два по порядку, на самом деле там 10^19 лет, но это всё-равно более чем.
voted
30.07.2018 17:04+2Ох, я для 10-значного посчитал, признаю, был не прав.
Для 20 — вероятно да, общая ёмкость криптовалютных вычислений такое скушает время большее жизни вселенной (10^20 лет примерно), это учитывая ASIC и всё остальное (хотя сейчас ASIC из SHA256 в SHA512 переделать нельзя, прикидка чисто по хешрейту). Но учитывая что SHA-512 2003 года выпуска, в 2008 нашли коллизии для 22 итераций, в 2016 для 27 (всего их 64 напомню). То я думаю что подбор такого пароля в итоге займёт времени значительно меньше времени жизни вселенной.
vanso
30.07.2018 11:37На самом деле (ИМХО, конечно) любые такие сторонние сервисы лучше для хранения идентифицирующих документов, всё-таки, не использовать. Разве есть какой-то правовой статус у подобного хранилища? Identity theft никто не отменял.
Pydeg
30.07.2018 15:18+1И как, интересно, правовой статус может защитить от identity theft? Что, паспорта не подделывают?
vanso
30.07.2018 15:28От правового статуса будут зависеть возможности по дальнейшему снижению эффекта случившегося, возвращению статуса кво и так далее. Identity theft просто будет проще или сложнее в зависимости от защищенности данных, вы правы, так и паспорт можно банально протерять и не успеть заявить в МВД о его недействительности…
VolCh
30.07.2018 18:05+1Правовой статус паспорт без его владельца нулевой. Риски ложноположительной идентификации несёт идентифицирующий. Хотя владельцу неприятные моменты может принести потеря или даже утечка сканов. Но никакой ответственности за действия третьих лиц с его паспортом он несёт.
HenadziMatuts
30.07.2018 11:46+2Ассиметричная криптография для шифрования данных? Серьёзно?! В плане криптостойкости, конечно, имеет место быть, но при относительно больших объёмах данных крайне неприемлемо по скорости.
В остальном согласен, есть HMAC, есть AEAD, а это какой-то совсем уж самопал. Ещё не совсем понятно зачем в облаке зашифрованный ключ, ведь криптография всё равно выполняется на стороне клиента и ключу незачем покидать пределы устройства.Scratch Автор
30.07.2018 11:48+1Асимметричная криптография используется для генерации симметричных ключей. Шифруется в итоге всё равно тем же самым AES
HenadziMatuts
30.07.2018 11:51+1Ну, я конкретно придираюсь вот к этой формулировке:
Но, к примеру, если правильно зашифровать данные не на хэш от пароля, а на публичный ключ, то никакой даже миллиардный кластер не сможет к ним и близко подобраться.
Написали бы про протокол Диффи-Хеллмана — таких вопросов бы не возникло.Scratch Автор
30.07.2018 15:13Столько лет прошло с тех пор как люди буквально шифровали «на ключ», что я решил не уточнять. Но приятно видеть олдфагов)
zelyony
30.07.2018 11:50если будете пользоваться Gram, то Telegram-у нужен будет ваш Passport, потому что Знай своего клиента, иначе Дуров пойдет за Винником.
В компании обещают, что Telegram не будет иметь доступа к личным данным пользователей. Они будут переходить непосредственно к получателю.
Меня больше волнует в каком виде Telegram будет раздавать наши паспорта: текстом "да, это он!" (т.е. вручную подтверждается личность с походом в какое-нибудь почтовое отделение) или солянка из скана, телефона и мыла… Потому что
гладиолусGDPR. И я не хочу, чтобы у видео-салона "Рога и копыта" (или тот же "Fhloston Paradise" из были мои паспортные данные с фоткой, мылом и телефоном — зачем им оно и куда они это будут сливать?
На скриншоте показано, что некий сервис запрашивает мои личные данные, телефон и мыло. Абсолютному большинству всяких веб-сайтов нужно только мыло, которое я и так бы указал при входе или регистрации. Но вот сам интерфейс — сервис запросил личные данные и стрелка, которую никто в большинстве раскрывать не будет, а просто жмакать ОК (не все же параноики и продвинутые айтишники) — выглядит стремно. Т.е. лучше бы, если сервису нужно что-то помимо мыла, интерфейс изменить, чтобы пользователь явно подтвердил (проставил галочки как минимум), что он согласен отправить свой паспорт, вод./пенс.удостоверение и так далее этому сервису.kalyukdo
30.07.2018 12:41есть хороша фраза которая описывает данный сервис: «Если человек не платит за сервис, значит он продукт этого сервиса»
DenimTornado
30.07.2018 12:17+1Немного оффтоп, но всё же. Есть ли что-то похожее на этот паспорт, но локально? Хочется хранить основные документы не сканами, а в нормальном приложении с удобной навигацией? Нечто подобное видел у 1Password, но ооочень дорого.
ValdikSS
30.07.2018 12:30Храню много чего в Cherrytree, может, и вам подойдет?
DenimTornado
30.07.2018 12:59Спасибо за вариант, но это всё-таки немного не то. Хочется нечто подобное — ВКармане
ValdikSS
30.07.2018 13:09Классные у приложения отзывы.
DenimTornado
30.07.2018 13:10Именно поэтому я и написал, что нечто подобное. Суть то, что надо, а вот исполнение неудовлетворительное.
ValdikSS
30.07.2018 13:16+4Q: Как восстановить пропавшие при обновлении документы?
Вообще пушка, программа года.
A: К сожалению, никак. Потеря документов стала следствием необратимого технического сбоя. Мы сделали все возможное, чтобы избежать повторения ситуации в будущем.
Q: Как синхронизировать документы с iCloud/Dropbox?
A: Этот вид синхронизации больше не нужен, документы автоматически синхронизируются с нашим сервером. Ваши данные надежно защищены. Это было сделано, чтобы избежать повторения ситуации с потерей локально хранящихся данных. Возможность восстановления из резервной копии в iCloud или Dropbox сохранится до выхода новой версии ВКармане. Теперь все документы синхронизируются автоматически между всеми вашими устройствами.
Q: Почему пропал офлайн-режим работы?
A: Мы недооценили, насколько это важная функция для вас. Офлайн-доступ к документам обязательно вернется в следующей версии.
Q: Короткий код доступа — это не безопасно. Как мне вернуть длинный пароль?
A: Данная схема безопасна. Заданию короткого кода доступа предшествует авторизация по номеру телефона с кодом подтверждения из смс. Короткий код сбрасывается после трех неправильных попыток ввода. После этого требуется снова пройти полную авторизацию. Возможность задания длинного пароля вернется вместе с офлайн-режимом работы, где наличие длинного пароля необходимо для обеспечения безопасности.cuwHuk
30.07.2018 13:58+3Конкретно с ВКармане всё гораздо интереснее — это было отличное приложение, я его купил и использовал, в один прекрасный день оно потребовало номер телефона без возможности отказаться, после разбирательства выяснилось что приложение было куплено структурами Тинькова с целью, как я понимаю, создать себе базу документов с привязанным номером телефона, никакого способа побороться с этими тварями, например, через Apple, я не нашёл, пришлось удалить. Короче, разработчики этого приложения и структуры Тинькова не самые лучшие люди, мягко говоря.
PsyHaSTe
30.07.2018 19:26Вряд ли разработчик виноват, что ему дали денег, а потом испортили приложение. Он скорее всего даже не знал, какие последуют изменения. «О, меня за 10 лимонов покупают, отлично!». А потом «что вы наделали, ироды», но поезд ушел.
OKyJIucT
31.07.2018 09:01> Q: Как восстановить пропавшие при обновлении документы?
> A: К сожалению, никак. Потеря документов стала следствием необратимого технического сбоя. Мы сделали все возможное, чтобы избежать повторения ситуации в будущем.
Напомнило печальную историю с одним из хостинг-провайдеров: «ребята, мы все случайно удалили, но больше такого не повторится, честно-пречестно».
sumanai
30.07.2018 21:30Нечто подобное видел у 1Password
Очевидный KeePass имеет функцию прикрепления любого файла и позволяет вводить любые поля с любыми данными. Просто залейте скан и забейте все поля. Поиск тоже есть.
Nucleotide
30.07.2018 12:34Интересно, а почему именно 239?
iig
30.07.2018 13:12Простое число размером в 1 байт. И состоит из 7 единиц.
Но таки да, самодельная криптография это зло.
ximik777
30.07.2018 13:28Я долго вспоминал где же я видел это магические число. Вспомнил:
github.com/vk-com/kphp-kdb/blob/master/memcached/memcached-data.c#L50
github.com/vk-com/kphp-kdb/blob/master/copyexec/copyexec-commit.c#L147
github.com/vk-com/kphp-kdb/blob/master/KPHP/common.h#L135
github.com/vk-com/kphp-kdb/blob/master/text/text-data.c#L2543
Часто используется в kphp/kdb движках, особенно в функциях хэширования, одним из авторов которых является Николай Дуров.
Тогда я тоже задавался вопросом почему именно 239.aamonster
30.07.2018 13:59А где он учился? Для ленинградцев, в детстве увлекавшихся математикой, число 239 очень-очень знакомо =)
Nucleotide
31.07.2018 14:09Еще замечу, что про лицей я подумал сразу, потому что я знаю людей, кто лепит число 239 во всё — в исходные коды, в номера телефонов, в емейлы, никнеймы и так далее. Ну и при покупке булочки за 23.90 обязательно скажет, что это знак.
sumanai
31.07.2018 20:53Ну и при покупке булочки за 23.90 обязательно скажет, что это знак.
Я бы тоже подумал, что это знак, хотя в питере не учился.
1nvisible
31.07.2018 14:30+3Существует культ выпускников физико-математического лицея №239 Санкт-Петербурга, эту константу очень часто можно увидеть в их коде.
Как-то раз в конторе, где я работал, была проблема с очень странным поведением игрового персонажа. Выяснилось, что причиной этого был следующий код:
int random() { return 239; }
JC_IIB
31.07.2018 21:14+1Это саботаж какой-то. За такое недолго и под зад коленом из конторы получить, вкупе с соответствующей записью в трудовой.
Хотите развлекаться культами — пожалуйста, но не надо примешивать сюда рабочие процессы.
wlr398
30.07.2018 12:53На одном хорошем GPU можно перебирать чуть больше миллиарда SHA-512 в секунду. 10 GPU переберут все возможные сочетания 8-значных паролей за 80 дней.
А что имеется в виду под сочетаниями 8-значных паролей? Вся таблица юникод что-ли?
Обычные пароли из латиницы, цифр, спецсимволов вскрываются гораздо быстрее.
На обычном домашнем компе с бюджетным джефорсом при помощи хешкета и при гораздо меньшем хешрейте ушло где-то часа 2. На 8 символов.Scratch Автор
30.07.2018 13:41Под всеми возможными имеются в виду все 8байтовые комбинации, т.е. 256^8, в реальности, конечно, еще во много раз быстрее, я просто ограничил сверху
turbanoff
30.07.2018 14:07>На одном хорошем GPU можно перебирать чуть больше миллиарда SHA-512 в секунду.
Можете поделиться источником инфы про миллиард sha-512 в секунду? Интересно узнать, на каком оборудовании это делали и с помощью какого ПО.Scratch Автор
30.07.2018 15:16Вот, пожалуйста: www.blackhillsinfosec.com/hashcat-benchmarks-nvidia-gtx-1080ti-gtx-1070-hashcat-benchmarks
Hashtype: SHA-512
Speed.Dev.#1.....: 1511.9 MH/s (77.65ms)
Speed.Dev.#2.....: 1524.0 MH/s (77.04ms)
Speed.Dev.#3.....: 1487.6 MH/s (78.90ms)
Speed.Dev.#4.....: 1504.3 MH/s (78.05ms)
Speed.Dev.#*.....: 6027.8 MH/s
Одна карточка выдаёт полтора гигахэша в секундуjok40
30.07.2018 15:26Вы точно уверены, что здесь демонстрируется скорость перебора хэшей OpenSSL::SHA512? Потому как hashcat поддерживает несколько алгоритмов, называемых SHA512 и скорость их перебора различается значительно.
Scratch Автор
30.07.2018 15:32а при чем тут OpenSSL? SHA-512 он и в африке SHA-512. Там есть разные варианты комбинаций, но картина в целом не будет сильно отличаться т.к. словари для перебора тоже не всегда из 256 символов состоят
jok40
30.07.2018 15:40Пару лет назад я пытался хэшкэтом пароль от Debian пробрутфорсить. Насколько помню, там тоже используется какой-то из вариантов SHA512. Скорость перебора была ниже плинтуса.
jok40
30.07.2018 16:17Почитал сейчас про пароли в современных Linux — для их хэширования SHA512 вызывается в цикле несколько тысяч раз. Вот почему скорость перебора была такой низкой. Так что вопрос снят.
trimtomato
30.07.2018 14:17Я вчера сменил пароль на учетную запись в Телеграме. Менял через десктопное приложение. Так вот, на телефоне мне даже не пришлось вводить этот новый пароль. Более того, данные хранящиеся в Passport успешно самостоятельно перешифровались новым паролем. При самой первой установке этого пароля я поставил галочку «возможность восстановления пароля». Все это выглядит так, как-будто сервер знает мой пароль. А данные Passport я не могу зашифровать через другой пароль. Или это нормально?
dartraiden
30.07.2018 15:10Я вчера сменил пароль на учетную запись в Телеграме. Так вот, на телефоне мне даже не пришлось вводить этот новый пароль.
Правильно, у приложения на телефоне есть токен и сессия остаётся валидной. Приложение на телефоне ведь не хранит ваш пароль, чтобы каждый раз авторизовываться. Оно при первом подключении (когда вы вводили логин-пароль), получило у сервера токен и авторизовывается по нему.
Это обычная практика. Позволяет легко отозвать доступ у какого-либо устройства, не меняя пароль. И повышает безопаность, потому что пароль не хранится на устройстве.trimtomato
30.07.2018 16:18Теперь понятно на счет входа. Спасибо.
А что на счет того, что мои данные в Telegram Passport перешифровываются новым паролем? Я только что еще раз проверил. Меняю пароль через десктоп. Открываю приложение на телефоне, а в нем уже новый пароль на Passport. Как-то это не совсем похоже на End-to-End.dartraiden
30.07.2018 16:32+1В статье, которую мы сейчас комментируем, написано:
В облако передаются:
Хэш от персональных данных, смешанных со случайными байтами
Зашифрованный паролем почти случайный ключ
Соль
Зашифрованные данные
Когда вы поменяли пароль на десктопе, ваши данные перешифровались на том же десктопе (новым ключом, который защищён вашим новым паролем), залились в облако, откуда их подтянул смартфон. Соответственно, теперь у вас на смартфоне обновлённые зашифрованные данные, к которым подходит ваш новый пароль.
Точно так же, допустим, у меня в облачном хранилище Dropbox лежит зашифрованный паролем текстовый файл. Если я на десктопе перешифрую его с другим паролем, то файл автоматически зальётся в облако и будет доступен на других моих устройствах, где я смогу его расшифровать с новым паролем. Пароль, при этом, не уходит дальше моих устройств, где я выполняю шифрование и расшифровку.trimtomato
30.07.2018 16:40Такое возможно. Странно только, что десктопное приложение не имеет функции Telegram Passport. И последнее обновление вышло 13 июля.
dartraiden
30.07.2018 16:40Имеет. Как раз версия от 13 июля точно имеет.
core.telegram.org/passport/example
страница перекидывает в десктопное приложение, которое запросит пароль и предложит загрузить документ
harm
30.07.2018 14:41У Дурова явно мания величия и планы по захвату мира, но покажите мне хоть одну юрисдикцию, которая позволит какому-то Павлику подвинуть их экономику своими грамами и вообще пойдёт на поводу у подобного сервиса/компании сделав интеграцию с ним. Бизнес? Прям вижу сегодня, как бизнес в России и других странах охотно продаёт свои товары через ботов.
Есть операторы связи, с которыми человек заключает договор, предоставляя свои документы подтверждающие личность, есть организация GSMA, в которую входят эти самые операторы связи и есть протокол RCS, который вскоре заменит традиционные СМС. Google уже потеет над этим вопросом jibe.google.com
Так вот протокол RCS явно не будет стоять на месте и электронное правительство, бизнес и прочие скорее будут использовать этот вариант, а не поделия Павлика Морозова, который завтра может исчезнуть вместе со своим грамом по щючьему велению.jryj
30.07.2018 14:59-1Да оставьте вы Павлика Морозова в покое. Уже и в это его притянули!
harm
30.07.2018 16:56-6Во что я его притянул? Он сам себя притянул куда надо и теперь его натягивают где надо. Вас как пользователя этого продукта тоже натянут, не переживайте, всему своё время.
jryj
30.07.2018 22:34+1Павлика и его брата (Павлику было, если правильно помню, 8 лет, а брату 6) зарезал родной дед, за то, что он подтвердил слова матери на суде.
Вы же зачем-то притянули его к этой истории с телеграмом.harm
31.07.2018 14:05-6А с чего Вы взяли, что я именно этого Павлика притянул? Это лишь Ваша фантазия и не более, моя работает иначе. Тем более Павликов Морозовых на одном только Вконтакте зарегистрировано более 14к и многие из них пока что живы.
mayorovp
01.08.2018 09:43Поиск по странице слова «Морозов» находит только ветку начавшуюся с вашего комментария.
shifttstas
31.07.2018 09:32Старые системы уходят, новые приходят, что тут такого? RCS к слову, мертвая технология, она нужна только операторам и больше никому.
harm
31.07.2018 09:44-2Такая же мёртвая как и смс, которыми все пользуются и получают оповещения и не только от банков. Надо головой думать, а не жопой, Стас. Операторам только нужно говоришь? Может ты телеграмом пользуешься через спутник?
Это всё так же смешно, как новость про закрытое ICO Telegram и участие в нём хотя бы того же Сергей Солонина.shifttstas
31.07.2018 09:48Переход на личности? Мило.
Я даже вам сюда не буду приносить картинку с % сообщений передающихся через SMS и мессенджеры, спойлер — у SMS менее 5%.
Оператор в нынешне время — это труба для трафика, вполне понятно, что они хотят поднять прибыль за счёт дополнительных сервисов, но учесть RCS стать очередным internet explorer. Помните в 3G сетях были видео звонки? Прямо нативные, и что, где там они? Много кто использует?
harm
31.07.2018 10:51При чём тут передача пользователей друг другу всякого шлака? Речь идёт о хранении ваших документов, взаимодействии бизнеса с клиентом. Какое бы вы устройство не купили, клиент для смс/rcs вам устанавливать и скачивать не надо, все операторы зарегистрированные юридические лица на территориях предоставления своих услуг, когда как Telegram принадлежит одному лицу и никто, кроме чёрного рынка там работать не будет.
Я ещё могу понять запуск шлюза в мессенджере с привязкой банковской карты, но не вот это вот всё.shifttstas
31.07.2018 11:26Chrome тоже не входит в поставку OS по умолчанию и что?
NeuroHunter
01.08.2018 08:48Chrome можно поставить почти везде.
Однако есть куча устройств, на которых SMS/RCS — единственный канал получения текстовой информации.shifttstas
01.08.2018 09:27Пример устройства пожалуйста, где нельзя поставить мессенджер но есть RCS?
NeuroHunter
01.08.2018 10:00С учетом того, что RCS пока еще ограничен только свежим Android — корпоративные трубки. Выдали трубку на работе, там все, что по работе нужно, предустановлено, установка любых других приложений заблокирована.
В перспективе — feature phones.shifttstas
01.08.2018 10:02Для корпоративного общения есть Skype For B им пользуются 99.9% крупных компаний, RCS не обеспечит защищенность и интеграцию с Exchange. А ну и да, он ещё и на десктопах работает как там с этим у RCS?
NeuroHunter
01.08.2018 10:08RCS тоже работает на десктопах, через веб-морду.
Понятно, что RCS не используется в корпоративном общении. А вот для уведомлений (я изначально написал «получения информации») — вполне. Уведомления на почту, в особо критичных случаях — с дублем через оператора (RCS/SMS)
AbstractGaze
30.07.2018 15:24+1Ну а что, денег им отвалили, за последствия можно не беспокоиться.
Разве? Если какой нибудь пользователь из евросоюза сохранит свои ПДн и они вдруг станут известны третьим лицам без его согласия, потому что кто то их достал из данного сервиса, сдается мне что прилетит хороший такой штраф (привет GDPR).
А так как, такая утечка будет вероятнее всего не одного пользователя — последствия будут весьма плачевные.RussDragon
31.07.2018 20:20Хуже – если какие-то данные вдруг станут доступным третьим лицам без предварительного согласия – ценность ICO немного упадёт, а у инвесторов будет небольшие вопросы.
pronvit
30.07.2018 15:30-2Интересно, но заголовок слишком желтый. Стоит им заменить SHA512 при хэшировании пароля на что-нибудь в сто раз медленнее, и все ваши претензии рассыпятся.
powerman
30.07.2018 16:52Вопрос не в том, что текущий подход сложно обновить на использование нормальных алгоритмов, а в том, зачем вообще они использовали такие слабые алгоритмы — потому что единственное напрашивающееся объяснение это создание условий для дешёвого брутфорса паролей юзеров на их серверах.
pronvit
30.07.2018 17:08-1Да ну какое это объяснение. Во-первых, в большинстве случаев за плохими решениями (да, выбор sha512 странный) стоит раздолбайство, а не хитрый умысел. Во-вторых, думаете, если бы они действительно хотели расшифровывать данные пользователей, то выбрали бы именно такой тупой способ облегчить себе задачу, что статьи об этом уже через несколько дней после анонса?
Понимаете, чтобы вот так говорить, что у них не End-to-End, что они собираются расшифровывать данные пользователей и вообще сотрудничают с ФСБ, надо иметь какие-то более веские доказательства, чем неудачно выбранный алгоритм хэширования. Они завтра поменяют в одной строчке его на bscrypt/scrypt, и какие будут ваши аргументы?powerman
30.07.2018 17:28+1Раздолбайство — это действительно более частая причина. Но есть нюансы: телеграм уже довольно много работал со сложной криптографией (так что его разработчики гарантированно в теме), и обсуждаемый Passport позиционируется как продукт ориентированный на безопасность/E2E/все дела (так что раздолбайство на таком уровне при его разработке — это для репутации ещё хуже, или по крайней мере ничем не лучше). Всё это вместе вызывает сильные сомнения в том, что дело в раздолбайстве, хотя полностью такой вариант исключить тоже нельзя.
Myosotis
30.07.2018 15:58+1и первый байт расшифрованного текста, который из-за использования JSON будет всегда "{" или "[".
Вот это просто facepalm. Для повышения безопасности можно добавлять к каждому сообщению рандомные байты в начало, а при дешифровании сообщения они бы отметались. Например, первый байт = количество случайных байт, и далее случайные байты.
YourChief
30.07.2018 23:58Такая себе мера. Знание этой закономерности наоборот упрощает проверку ключа. Чтобы не иметь проблем с блочными шифрами и всякими паддинг ораклами, надежнее всего использовать CTR-режимы блочных шифров (или же сразу GCM).
Конкретно здесь самая большая проблема в выведении ключа из пароля. Если бы использовался PBKDF2 или argon с разумным количеством итераций, такой ключ был бы достаточно надежным (при условии, конечно, что пароль хотя бы не словарный).
NekoSin4eG
30.07.2018 16:15Немного исправлю комментарий.
Если ввести данный пароль для доступа в Passport неправильно три раза, то происходит блокировка доступа к Passport на много часов. Следовательно, это затруднит брутфорс, но это не отменяет того, что вы написали в посте.Scratch Автор
30.07.2018 16:16расшифровка происходит локально на клиенте, а не в облаке, так что все эти блокировки лишь видимость защиты
Sabubu
30.07.2018 17:37+1> Когда нужно авторизоваться на сервисе, клиент скачивает данные из облака, расшифровывает их паролем, перешифровывает на публичный ключ того сервиса, который запросил информацию, и отправляет.
Что мешает серверу Телеграм прикинуться «сторонним сервисом», послать свой открытый ключ, получить перс. данные, и затем уже переслать их стороннему сервису?AC130
30.07.2018 17:57Вот кстати интересный вопрос. Вероятно, открытый ключ стороннего сервиса должен предоставляться не ТГ, а самим сервисом, к примеру при редиректе в ТГ в параметрах Урла указывать ссылку на свой ключ (возможно такое вообще?)
arandomic
30.07.2018 19:53Ну очевидная (и скорее всего неправильная) реализация:
1. ТГ выступает в роли автоматизированного дропбокса
2. Вы своим открытым ключом шифруете свои данные и заливаете в ТГ.
3. При авторизации в стороннем сервисе (СС):
3.1. СС отдает вам свой открытый ключ напрямую (без посредничества ТГ) как? А хз — это один из самых сложных моментов в таких схемах.
3.2 Вы выкачиваете у телеграмма свои данные себе (не все, а только те, что нужны СС)
3.3. Расшифровываете их своим закрытым ключом, шифруете открытым ключом СС, отдаете обратно зашифрованные данные ТГ
3.4. ТГ отдает зашифрованные данные СС, они их там своим закрытым ключом расшифровывают.
Зачем в этой схеме ТГ? А не знаю.wolfparanoya
30.07.2018 17:52Вот всегда интересно было, а почему не делает задержку хотя бы в 0.01с до проверки следующего введенного пароля? Это убило бы брутфорс. Понимаю, что есть какие-то объективное причины так делать, но все же почему?
snow28609
30.07.2018 17:52+5Уже не первый раз большие компании вводят в заблуждение не сильно разбирающихся в программировании людей, а затем миллионы документов совершенно случайно оказываются слиты в сеть. Через месець-два после показушной борьбы РосКомНадзора Телеграм начинает собирать личные данные миллионов своих пользователей говоря что это самый удобный и безопасный метод аутентификации. Слишком это хорошо что бы быть правдой, я лично считаю что не нужно никому доверять сохранность своих персональных данных особенно если тебе это не так уж часто и нужно
Pydeg
30.07.2018 19:16+3Мне кажется, гораздо большей проблемой являются сервисы, которые запрашивают такие данные и то, как они их потом хранят. Реализации Телеграма мы все можем устроить аудит, а что там у сервиса, для которого требуется такая аутентификация мы не знаем, может они вообще все в плентексте хранят или в открытом бакете s3 (уже не один случай такой был)
springimport
30.07.2018 20:41Да, главное что «делу дали ход» и вопрос времени когда появится качественное решение и все перейдут на него.
arandomic
30.07.2018 20:00Можно попробовать выпустить альтернативный клиент + обертку над API
В клиенте перед тем как шифровать всё телеграмовским алгоритмом — шифровать открытым ключом.
На стороне стороннего сервиса в обертке расшифровывать.
Только придется думать о независимом от телеграмма канале передачи открытого ключа от стороннего сервиса клиенту.
Хотя… *картинка с троллейбусом*
Alex_Q
30.07.2018 21:04+8немного оффтоп:
В голове выстроился монолог: «Привет! Я Павел Дуров, криптоанархист в изгнании, кладущий болт на правительства. Нет тотальному контролю! Да приватности! А теперь пришлите мне сканы своих паспортов.»
xcore78
31.07.2018 01:15+3С чего начинается хороший учебник/курс по криптографии:
«Никогда не используйте изобретённый вами прорывной/эффективный/оригинальный метод шифрования в системах, единственной целью которых не является удовлетворение вашего любопытства».
Дополнение к написанному: «И свои собственные реализации известных алгоритмов тоже не пишите, ограничьтесь аудитом используемых библиотек и тщательно проверяйте обновления, если вы можете себе это позволить».
ageyev
31.07.2018 01:21В двух словах, как работает Passport.
Вы локально с помощью пароля шифруете свои персональные данные (имя, email, скан паспорта, другие документы).
Зашифрованные данные + метаинформация загружаются в облако Telegram.
Когда нужно авторизоваться на сервисе, клиент скачивает данные из облака, расшифровывает их паролем, перешифровывает на публичный ключ того сервиса, который запросил информацию, и отправляет.
а в чем разница с просто зашифровать публичным ключем того сервиса, который запросил информацию и отправить :)?
Например схема «зашифровать своим публичным ключем и разместить в dropbox, google drive etc., а потом скачать данные из облака и перешифровать» кажеться несколько более разумной.
И самый главный вопрос: как это все помогает идентифицировать пользователя?
Что мешает послать «сервису который запросил» данные и паспорт совсем не те которые загружены в телеграм?
Ipeacocks
31.07.2018 01:31Я постоянно пользуюсь Сигналом, по соображениям приватности. Но по надежности и скорости работы он так себе: иногда сообщения не приходят (редко), закачивается история например на десктопный клиент долго (я понимаю, что это особенность именно end2end), десктопный клиент медленный на Электроне.
Да и использование номера телефона как uid так себе идея, не очень анонимно. Но мне в принципе эта идея и тенденция не очень нравится.forcam
31.07.2018 11:49Что-то он какой-то уж очень «надежный»)
17 Мая, 2018
Новая уязвимость (CVE-2018-11101) была обнаружена той же командой исследователей, что и предыдущая (CVE-2018-10994), и является не менее опасной. С ее помощью удаленный атакующий может внедрить вредоносный код в используемое жертвой десктопное приложение Signal, лишь отправив сообщение, при этом какое-либо участие пользователя не требуется.
Единственная разница между двумя уязвимостями заключается в том, что первая из них связана с функцией обработки ссылок, которыми пользователи обмениваются в чате, а вторая – с функцией обработки пересылаемых сообщений (когда в качестве ответа пользователь пересылает собеседнику свое же предыдущее сообщение).
Для эксплуатации новой уязвимости злоумышленнику достаточно лишь отправить жертве в сообщении HTML- или javascript-код, а затем переслать его с произвольным текстом. Когда пользователь уязвимой версии Signal получит пересланное сообщение, начнется автоматическое выполнение кода без какого-либо его участия.
Исследователи разработали PoC-эксплоит, позволивший им путем отправки сообщения удаленно похитить все беседы жертвы в Signal в незашифрованном виде. Приложение использует так называемое сквозное шифрование, однако из-за уязвимости оно становится полностью бесполезным, так как доступ к перепискам пользователей может получить третья сторона.
Подробнее: www.securitylab.ru/news/493332.php
NIKOSV
31.07.2018 01:53Тут такое дело, те, у кого пароли на 4-5 символов, никому не интересны и уж точно никто не будет тратится на видеокарты и время чтобы узнать номер паспорта или что-то еще. Есть способы попроще это сделать. Ну а важные персоны либо не будут пользоваться вообще, либо будут использовать нормальные пароли которые хер сломаешь. Плюс двухфакторную аутентификацию никто не отменял.
pesh1983
31.07.2018 09:23+1Это пока там только паспортные данные. Потом, если система взлетит и станет популярной, ничто не мешает расширить функционал и типы хранимых данных (кредитки, ключи и т. д.). "А почему бы и нет, система ведь надёжная, вон сколько народу пользуется и не
опубликованобыло взломов". А это уже далеко не безобидные паспортные данные. Полагаться на авось не стоит, даже когда данные не особо важные по вашему мнению. Есть уже давно проверенные алгоритмы шифрования с высокой криптостойкостью. Не нужно городить велосипед, чья криптостойкость ничем и никем не подтверждена. Ни к чему хорошему это, как правило, не приводит.iig
31.07.2018 10:48+1Тут проблема даже не в криптостойкости выбранного шифра. Какая разница, каким именно способом зашифрованы и где именно хранятся персональные данные, если все равно они будут передаваться третьей стороне?
Что знают двое — знает и свинья.
pan_alik
31.07.2018 08:08Перевод на английский: medium.com/@alik.chebotar/why-telegram-passport-is-not-end-to-end-6d01945ac262
lotse8
31.07.2018 10:08Мой принцип простой. Чем меньше моих персональных данных хранится по чужим сервисам, тем проще будет моя жизнь. Слишком доверчивые граждане могут внезапно получить ненужные проблемы. Если уж так надо, что ну никак, тогда можно сообщить. А так заранее, а вдруг когда-нибудь кому-нибудь это понадобится — это зачем? Для увеличения рисков утечки?
Не агитирую, каждый действует на свое усмотрение. Не надо только потом громко кричать, что кто-то куда-то слил ваши персональные данные.
«Буратино, ты сам себе враг» (с) Базилио
KoToSveen
01.08.2018 02:29Что получается? Вместо учётки на госуслугах будет учётка в Telegram Passport?
orion76
01.08.2018 06:46+1Если свои «секретные» данные мне необходимо передавать «вторым» лицам, то смысла в их шифровании не вижу сооовсем…
VolCh
01.08.2018 20:10Шифровать от третьих лиц, а вторые несут отвественность за разглашение или утечки. В теории.
iig
02.08.2018 11:19Тогда зачем нужны третьи лица? Еще в прошлом веке придуманы всякие SSL/TLS, сертификаты, цифровые подписи… Все для того, чтобы Алиса и Боб могли обмениваться сообщениями, а Элвис не мог их читать. И это до сих пор работает!
Sirion
Проголосовал «да», но имел в виду «буду, когда (если) его допилят до вменяемого состояния». Так-то идея неплоха.
flx0
А я вот как не понимал зачем, так и не понимаю. Какие такие персональные данные мне удобнее хранить в облаке, и куда это я буду их потом предоставлять? Свои имя/фамилию я и так помню, и ввести не обломаюсь, адрес для доставки — величина переменная, а номер паспорта/ИНН — это только для госуслуг, и никакого телеграма там никогда не будет и быть не должно.
Sirion
Ну, как минимум, мне приходилось пересылать скан паспорта на airbnb и на Хабр (для ППА). Два раза — это вроде не очень много, но чувствую, будет ещё. И было бы круто положить его один раз в какую-то центральную нычку, а остальные чтоб получали оттуда
кукишответ в стиле «да, этот человек действительно Вадим Шевяков».elmigranto
Оба ваших примера спрашивают паспорт совсем не для подтверждения личности, им нужны конкретные реквизиты и номера документов для составления документов вроде аренды или оплаты услуг, которые впоследствии попадают в госорганы типа ФНС. Надеяться на интеграцию телеграмма в правительство какой-либо страны бессмысленно.
(Ещё мне непонятно, как загруженный скан паспорта вообще подтверждает личность закачавшего, если он никем не проверяется. Ну вот закачает тот же арендодатель с Airbnb ваш паспорт вместо своего, как такое решается?)
dartraiden
Для этого просят фото раскрытого паспорта рядом с физиономией. Хотя, и такие фото нетрудно купить.
dimka11
Некоторые просят видео, в живую.
kireevco
А с Телеграм Паспорт можно будет их купить гораздо более удобным способом...
dartraiden
А какая разница, откуда они утекли: из конторы, которая запросила их у юзера через Passport или из конторы, куда юзер их добровольно загрузил сам?
Более того, можно вообще ничему ниоткуда не утекать, а просто создаём видимость того, что набираем людей на удалённую работу, ездим им по ушам и добиваемся заветных фотографий…
kireevco
Да никакой. Зато в телеграм паспорте все данные "надежно защищены", поэтому удобно что можно найти не только скан паспорта а еще много другой полезной информации.
s-kozlov
Для одного паспорта нет разницы. Но… При прочих равных, откуда проще угнать 100 миллионов паспортов: из тысяч различных источников, которые хранят их кто во что горазд, или из одного?
dartraiden
Допустим, если вы хотите восстановить свой утерянный аккаунт у Blizzard (World of Warcraft и т.п.), вам придётся загрузить скан какого-то документа, подтверждающего личность, где будет видно, что данные соответствуют тем, которые вы вводили при создании аккаунта.
JC_IIB
Когда я переезжал и нужно было изменить страну в профиле Близзарда, они попросили у меня скан ID, это верно. На вопрос «а как долго вы храните эти сканы?» они ответили — «Мы их вообще не храним, это строжайше запрещено, я посмотрел, убедился и стер его из системы».
dartraiden
Хранение это уже другой вопрос.
Кстати, я подозреваю, что даже такое «посмотрел и удалил» нарушает российский закон о локализации персональных данных. Что отчасти объясняет то, почему Blizzard молча утираются, когда им случайно прилетает привет от РКН в виде веерных блокировок, и раздают баны на форуме даже за слово «Роскомпозор». Им очень не хочется лишний раз привлекать к себе внимание.
JC_IIB
Ох, форум у них да. В свое время людей банили за упоминание Эльфа-Торговца :)
Barnaby
Думаю им пофиг, это требование регулятора а требования решать "такое" там нет :)
Благодаря KYN почти все криптобиржи и недобанки хотят фотку с паспортом и никак не проверяют достоверность данных.
Barnaby
*KYC конечно же.
cyber_ua
обычно проверяют совпадает ли селфи пользователя с фотографией на документах.
www.electronicid.eu/selfie-based-identification-solutions-not-compliance-kyc-aml
LbISS
Кстати, про подтверждение личности сканом паспорта — в Москве уже 20 или более каршеринг компаний… И везде надо отослать одинаковые фотографии паспорта, ВУ, и т.п. После 3-его раза это ОЧЕНЬ надоедает.
NetBUG
У меня есть своё облако (nextCloud), в котором в одном из каталогов лежат сканы ряда документов (не всех), как раз для этой цели. Как раз с теми же целями, что и Tg Passport. Я понимаю, что везде могут быть дырки, но по крайней мере, я рискую только своими данными, и всё равно я меньше доверяю booking'у, чем моему облаку
AlexanderUsatov
Букмекерские конторы, например, просят фото паспорта. Затем реальный человек его смотрит и подтверждает аккаунт. А ждать всегда неприятно, согласитесь.
Zidian
Сейчас даже хайп-проекты его просят.
Но опять же, а чем телегам паспорт поможет? Для этого он сначала должен стать настолько же популярным, насколько facebook или gmail, чтобы каждый второй владелец сервиса старался его внедрить.
AlexanderUsatov
Среди моего круга знакомых (в это по большей части студенты и программисты) им пользуются практически все. И аудитория Telegram растёт. 200млн — довольно много и, мне кажется, что через несколько лет будет больше миллиарда, а этого более, чем достаточно.
Zidian
Вопрос в аудитории паспорта, а не чисто мессенджера.
shifttstas
Ну так когда будет TON будет и рост сервиса с паспортом
balexa
И никак телеграмм в этом не поможет. Букмекерские конторы просят ваш паспорт потому что такое требование регулятора. Никто не будет верить частной конторке, хоть сколько миллиардов ей будут пользоваться.
saboteur_kiev
А если телеграм сертифицируется у регулятора, то что?
Многие частные «конторки» имеют отдельные условия работы, пройдя необходимую бюрократию, включая даже лоббирование изменения законодательства.
balexa
Вот когда сертифицируется, тогда и поговорим (с)
Вы посмотрите как сделана аутентификация через госуслуги, и добавление документов туда. Государству и регулятору хранящему данные пользователей не нужны селфи на фоне паспорта, и данные которые никто не может расшифровать. Оно само является golden source для этих данных.
И это не говоря уже о том, что ни одно государство не разрешит хранить такие данные за пределами страны, что там потребуется специальный доступ для спецслужб и так далее.
А все это Дуров делать не будет.
saboteur_kiev
Всегда можно разместить сервера в пределах нужного государства, если таково будет требование при сертификации.
Во всех странах эти процедуры существуют и могут быть пройдены частной компанией. Большинство банков — частные коммерческие структуры, и ничего — и документы хранят в электронном виде и так далее.
Еще раз скажу, что в СНГ с этим сложнее, так как злоупотребление властью — стандартная практика.
saboteur_kiev
Но даже в СНГ всегда есть варианты.
Например, я работал в крупной медицинской компании, которая имела свои сертифицированные склады хранения медикаментов (включая и зоны для хранения веществ, подпадающих под наркотические). Компания самостоятельно разработала процедуру растаможки лекарственных средств, которая занимала в три раза меньше времени, чем обычная. Процедура была проверена экспертизой, и конкретно для нашей компании таможня дала добро. Понятно, что компания потратила на всю экспертизу и разработку много денег. Но прямые контракты поставщиков, которые проходя процедуру разтаможки за гораздо меньший срок (что очень критично для лекарств, у которых срок годности, например, месяц) — все расходы достаточно быстро покрыли.
И да, коммерческая компания выполняла работу, которая казалось бы должна принадлежать исключительно гос.службе (таможне). Но все было согласовано, законность соблюдена, все довольны.
В общем если все идут друг другу навстречу — все будет.
balexa
Я разве спорю? Можно пройти, можно перенести сервера, можно все это сделать. Но я сомневаюсь что это будет делать Телеграмм. Вот и все.
Вы к чему это? Банк хранит ваши данные да, но он не является провайдером паспорта. И внимание, те данные что он провайдит, он не проверяет у третьих контор, он сам это знает и так. Банк не просит вас сфотографироваться с картой и договором на фоне для того чтобы вам предоставить услуги.
JC_IIB
Карту он мою и так знает, а что до фотографии… давно уже при заключении договора в банке в реальном времени фотографируют на веб-камеру.
Vilgelm
Это нужно, например, для прохождения KYC. Подобные проекты уже есть (например, kyc.legal), но у Telegram больше шансов сделать реально работающий продукт и интеграцию.
NIKOSV
Сценарий: вы покупаете авиабилеты, авиакомпании просят паспортные данные, номер вашего мембершипа на который начисляются мили, + что-то еще.
Решение: заходя на сайт авиакомпании, сайт обращается к плагину хрома от телеграмма, и запрашивает нужные данные, плагин спрашивает у вас разрешение на шаринг этих данных с этим сайтом, вы соглашаетесь и вы автоматом залогинены и вся информация для покупки билетов уже считайте введена, осталось только выбрать направление, опции и оплатить.
То же самое с онлайн покупками где нужно вбивать адрес доставки.
Кстати некоторые криптовалютные проекты уже предоставляют такую функциональность, включая оплату, очень удобно.
ageyev
Но это не KYC и не идентификация. Это просто ускорение заполнения данных.
iig
Я слышал, что существуют плагины, которые помогают автозаполнять формы.
gregst
при покупке билетов ты логинишься на сайте и при вводе данных просто выбираешь пассажиров из своего личного кабинета, которых вводил ранее. для чего тут телеграм неясно
Lennonenko
каршеринг, например