telegram-crawler/data/web/tsf.telegram.org/manuals/e2ee-simple.html
2022-05-13 12:05:36 +02:00

287 lines
26 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Telegram Support Force</title>
<meta property="og:title" content="End-to-End Encryption FAQ">
<meta property="og:description" content="While checking the results of a recent quiz on how End-to-End Encryption (E2EE) works on Telegram, I noticed that not everyone…">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/img/favicon-16x16.png">
<link rel="alternate icon" href="/img/favicon.ico" type="image/x-icon" />
<script>document.cookie="stel_dt="+encodeURIComponent((new Date).getTimezoneOffset())+";path=/;max-age=31536000;samesite=None;secure"</script>
<link href="https://fonts.googleapis.com/css?family=Roboto:400,500,700" rel="stylesheet" type="text/css">
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/bootstrap-extra.css?2" rel="stylesheet">
<link href="/css/telegram.css?230" rel="stylesheet">
<link href="/css/tsf.css?7" rel="stylesheet">
<link href="/css/jquery-ui.min.css?1" rel="stylesheet">
<link href="/css/health.css?136" rel="stylesheet">
<link href="/css/tchart.min.css?10" rel="stylesheet">
<link href="/css/billboard.css?17" rel="stylesheet">
</head>
<body class="emoji_image no-transition">
<div id="aj_progress" class="progress-bar"></div>
<div id="aj_content"><div class="tr-container">
<header>
<div class="container">
<div class="header-wrap">
<div id="header-panel" class="header-panel">
<div class="header-auth">
<div class="header-auth-item"><a class="header-search-btn"></a></div><div class="header-auth-item"><a class="header-auth-link login-link" href="/auth">Login</a></div>
</div>
<div class="header-breadcrumb header-breadcrumb-simple">
<ol id="breadcrumb" class="header-nav breadcrumb"><li><a href="/">Telegram Support Force</a></li></ol>
</div>
</div>
</div>
</div>
</header>
<main class="container">
<nav class="tr-menu">
<div class="tr-menu-section">
<div class="tr-menu-header">
<div class="tr-menu-header-label">Resources</div>
</div>
<ul class="tr-menu-items"><li>
<a class="tr-menu-item" href="/">
<span class="nav-label">Introduction</span>
</a>
</li><li class="active">
<a class="tr-menu-item" href="/manuals">
<span class="nav-label">Manuals</span>
</a>
</li></ul>
</div>
</nav>
<section class="content clearfix">
<section class="tr-content"><div id="dev_page_content_wrap" class=" ">
<div class="dev_page_bread_crumbs"></div>
<h1 id="dev_page_title">End-to-End Encryption FAQ</h1>
<div id="dev_page_content"><!-- scroll_nav -->
<p>While checking the results of a recent quiz on how End-to-End Encryption (E2EE) works on Telegram, I noticed that not everyone in the <a href="/">TSF</a> understands this. This document offers some templates along with the basic ideas behind our design decisions.</p>
<h3><a class="anchor-link" href="#1-why-are-secret-chats-only-available-on-their-devices-of-origin"><i class="anchor-icon"></i></a><a class="anchor" name="1-why-are-secret-chats-only-available-on-their-devices-of-origin"></a>1. Why are Secret Chats only available on their devices of origin?</h3>
<p>The question goes pretty deep, so its best not confuse the user with too many details right away. Lets send this first and then explain if any extra questions arise:</p>
<blockquote>
<p><em>While your Cloud Chats can be accessed from any of your devices anytime, Secret Chats are not part of the Telegram Cloud and are device-specific by design. This way you can always be sure that they are safe for as long as your phone is safe in your pocket. Secret Chats also use end-to-end encryption, so they cant be synced in the same simple and convenient way as Cloud Chats. We may add support for multi-device Secret Chats in the future.</em></p>
<p><em>Meanwhile, if you want your conversations to be synced across many devices, consider using Cloud Chats. Please note that they are encrypted as well and are further protected by Telegram&#39;s distributed infrastructure. Let me know if you want to learn more about security on Telegram.</em></p>
</blockquote>
<p><strong>See also:</strong> <a href="#the-learn-more-template">The Learn more template »</a></p>
<p><strong>Note:</strong> Same as with any templates, please be very careful when sending this one. Take care to adapt the text in such a way that it fits the users questions and situation perfectly. This is especially important when dealing with security-related questions. If youre not sure youre qualified to continue the conversation, dont hesitate to ask in your local group. There&#39;s always help!</p>
<p>Now let&#39;s look at the question in a little more detail:</p>
<h4><a class="anchor-link" href="#multi-device-end-to-end-encrypted-chats-are-a-mess"><i class="anchor-icon"></i></a><a class="anchor" name="multi-device-end-to-end-encrypted-chats-are-a-mess"></a>Multi-device End-to-end encrypted chats are a mess</h4>
<p>The concept of End-to-End Encryption has no limits for the number of communicating devices. However, if you want to access your end-to-end encrypted chats from multiple devices, youre facing many technical difficulties, especially when it comes to connecting new devices, loading chat history and restoring backups.</p>
<p>Most of our competitors (notably, Whatsapp and iMessage) solve these problems in ways that make their end-to-end encryption useless (this is a big topic, so requires a <a href="/manuals/e2ee">separate manual</a>). To solve them in a secure way, youd have to sacrifice usability and some of the features youre used to the result would never be as fluent and simple as what we offer in Cloud Chats.</p>
<h4><a class="anchor-link" href="#one-device-secret-chats-are-a-feature"><i class="anchor-icon"></i></a><a class="anchor" name="one-device-secret-chats-are-a-feature"></a>One-device Secret Chats are a feature</h4>
<p>Secret Chats are not just about End-to-End Encryption, otherwise wed have simply called them end-to-end encrypted chats&#39;. Secret Chats are a <em>bundle</em> of tools for private single-device communication. They are self-sanitizing thanks to self-destruct timers, and you cant forward messages from them. That secret chats are only available on their devices of origin is also a <strong>feature</strong>.</p>
<p>We like to keep our Secret Chats where we can see them. With single-device chats you can be 100% sure that nobody can access your chats without accessing your (or your chat partners) phone first. Politicians and businesspeople around the world appreciate this and have been among Telegrams early adopters in most countries. The impact for regular users is even higher since they are more likely to leave their work or home computers unlocked and unattended.</p>
<p>Most of us have one main device and can manage to keep an eye on it at all times. As a mass user, you probably dont want these constraints to apply to all of your data, and this is where Cloud Chats come to the rescue.</p>
<p>Naturally, it would have been possible to have three types of chats: Cloud Chats, Single-Device Secret Chats, and Multi-Device Secret Chats a stripped-down and somewhat lamer version of cloud chats. But such levels of complexity are unacceptable for a mass market app, so we had to choose. We chose to have fully functional multi-device cloud chats and single-device secret chats with their own suite of functions like self-destruct timers, protection from forwarding, etc.</p>
<h4><a class="anchor-link" href="#what-makes-cloud-chats-cool"><i class="anchor-icon"></i></a><a class="anchor" name="what-makes-cloud-chats-cool"></a>What makes Cloud Chats cool?</h4>
<p>Cloud chats don&#39;t use E2EE, but we went out of the way to make them as secure as possible while retaining the flexibility that made them famous.</p>
<p>These are the most important features of Telegrams cloud chats for our users:<br>1. You can log in on any device and see all your chats, immediately.<br>2. You can start typing on one device, then continue on another even if you just logged in there for the first time.<br>3. If you lose your device, you can immediately get all your cloud chats and contacts back.<br>4. If you need to find a message, you can use instant search to find it, regardless of when and which of your devices you were using when you sent or received it.</p>
<h4><a class="anchor-link" href="#are-cloud-chats-secure"><i class="anchor-icon"></i></a><a class="anchor" name="are-cloud-chats-secure"></a>Are Cloud Chats secure?</h4>
<p>Since without E2EE Cloud Chat data is theoretically accessible, we use a unique distributed infrastructure to protect it. Cloud Chat data is stored in multiple data centers around the globe that are controlled by different legal entities spread across different jurisdictions. The relevant decryption keys are split into parts and are never kept in the same place as the data they protect. As a result, local intruders or engineers can&#39;t access this data, and several court orders from different jurisdictions are required to force us to give up any of it.</p>
<p>Thanks to this structure, we can ensure that no single government or block of like-minded countries can intrude on people&#39;s privacy and freedom of expression. Telegram can be forced to give up data only if an issue is grave and universal enough to pass the scrutiny of several different legal systems around the world.</p>
<p>As a result, we have disclosed 0 bytes of user data to third parties, including governments, to this day.</p>
<h4><a class="anchor-link" href="#to-sum-up-single-device-secret-chats"><i class="anchor-icon"></i></a><a class="anchor" name="to-sum-up-single-device-secret-chats"></a>To sum up: Single-device Secret Chats</h4>
<ul>
<li>Secret Chats are only available on their devices of origin. This is a feature.</li>
<li>Eliminates risk for private conversation if another device is lost, stolen or simply left unattended.</li>
<li>Multi-device Secret Chats would never be as fluent and easy to use as Cloud Chats: no history sync on new devices, no automatic backups, no server search, no cloud drafts.</li>
<li>Other messengers claim they have both E2EE and these features, but in fact they invalidate their E2EE (e.g., iMessage supports multiple devices, but thanks to the way they do it their e2e claims are also invalidated. WhatsApp pushes third-party unencrypted backups to their users, these backups nullify their e2e claims. More on this in a more detailed manual coming soon.)</li>
<li>Cloud chats are stored heavily encrypted and are protected by Telegrams unique distributed infrastructure.</li>
<li>We may introduce multi-device Secret Chats in the future, even though this requires a lot of work and careful planning.</li>
</ul>
<h3><a class="anchor-link" href="#2-why-are-there-no-secret-chats-on-desktop-apps"><i class="anchor-icon"></i></a><a class="anchor" name="2-why-are-there-no-secret-chats-on-desktop-apps"></a>2. Why are there no Secret Chats on desktop apps?</h3>
<p>The answers to this question are closely connected to the fact that we decided to restrict Secret Chats to their devices of origin (<a href="/manuals/e2ee-simple#one-device-secret-chats-are-a-feature">see above</a>). You could use this template for starters:</p>
<blockquote>
<p><em>Secret chats require permanent storage on the device, something that Telegram Desktop and Telegram Web dont support at the moment. We may add this in the future. Currently, both the desktop and the web app load messages from the Cloud on startup and discard them when you quit. Since secret chats are not part of the cloud, this would kill all your secret chats each time you shut down your computer.</em></p>
<p><em>Secret chats are also device-specific and disappear if you log out — considering this, it is handier to keep them on the one device that you always carry with you. In case you are concerned about the security of your chats on desktop, please note that they are encrypted as well and are further protected by Telegram&#39;s distributed infrastructure. Let me know if you want to learn more about security on Telegram.</em></p>
</blockquote>
<p><strong>See also:</strong> <a href="#the-learn-more-template">The Learn more template »</a></p>
<p><strong>Note:</strong> Same as with any templates, please be very careful when sending this one. Take care to adapt the text in such a way that it fits the users questions and situation perfectly. This is especially important when dealing with security-related questions. If youre not sure youre qualified to continue the conversation, dont hesitate to ask in your local group. There&#39;s always help!</p>
<p>Now let&#39;s look at the question in a little more detail:</p>
<h4><a class="anchor-link" href="#desktops-are-less-personal"><i class="anchor-icon"></i></a><a class="anchor" name="desktops-are-less-personal"></a>Desktops are less personal</h4>
<p>We log in from many places on web and desktop. Many of our desktops are monitored by network administrators at work, or accessed by family members at home. We often leave our desktops and even laptops unattended. It&#39;s much easier to keep an eye on your phone.</p>
<h4><a class="anchor-link" href="#open-systems-vs-sandboxed-systems"><i class="anchor-icon"></i></a><a class="anchor" name="open-systems-vs-sandboxed-systems"></a>Open systems vs. Sandboxed systems</h4>
<p>Desktop systems and browsers are much more open environments, as opposed to sandboxed environments like mobile OSs. To have Secret Chats, you need your app to store data on the device, and implementing this is slightly more complicated in open systems. The Web and Desktop apps currently get all data from the cloud on startup and discard it when you quit or log out. This would mean losing all your secret chats each time you shut down your computer.</p>
<p>But the real challenges for desktop chats arise because Telegrams Secret Chats are meant to be single-device chats (<a href="/manuals/e2ee-simple#one-device-secret-chats-are-a-feature">see above</a>):</p>
<h4><a class="anchor-link" href="#a-chaos-of-chats-with-the-same-person"><i class="anchor-icon"></i></a><a class="anchor" name="a-chaos-of-chats-with-the-same-person"></a>A chaos of chats with the same person</h4>
<p>If each chat only <a href="/manuals/e2ee-simple#one-device-secret-chats-are-a-feature">connects two devices</a>, users get many different chats with the same person. Imagine two people that have a laptop, a desktop at work and a mobile device each. Thats <strong>9</strong> secret chats in total, and most of them are useless at any given moment.</p>
<p>“Is she still at work?” “Should I message him at the home PC?” Most of us will have multiple desktops (work, home, laptop), most of us will have only one main phone. It is most likely that you can get the person by messaging their <strong>mobile phone</strong>.</p>
<h4><a class="anchor-link" href="#search-related-troubles"><i class="anchor-icon"></i></a><a class="anchor" name="search-related-troubles"></a>Search-related troubles</h4>
<p>Theres an added twist when it comes to finding a certain message. Since no server-side search for messages is possible in the E2EE paradigm, the user would have to remember on their own where to look for a particular message (was it in this chat on this device, or in that chat on that device?). Telegram wouldnt be able to help in any way.</p>
<p>Remember those <strong>9</strong> secret chats with the average person? Each would have an independent chat history, and no server-side search could tell you which one has <strong>that</strong> important message.</p>
<h4><a class="anchor-link" href="#temporary-sessions"><i class="anchor-icon"></i></a><a class="anchor" name="temporary-sessions"></a>Temporary sessions</h4>
<p>And if that wasnt enough, desktop sessions tend to be a lot more transient. One of the important features of secret chats is that they are destroyed on your device when you log out. Most desktop users log out rather frequently. Telegram Web users do this even more often.</p>
<p>Each time a user logs out, this creates an unusable discarded chat on their partners device. Having them on Desktop and Web would mean a lot more such unusable chats cluttering our chat lists.</p>
<h4><a class="anchor-link" href="#what-about-secret-chats-in-the-mac-os-native-app"><i class="anchor-icon"></i></a><a class="anchor" name="what-about-secret-chats-in-the-mac-os-native-app"></a>What about Secret Chats in the Mac OS native app?</h4>
<p>The Mac OS native app, like many others, began as a third-party unofficial app. We always keep an eye out for what third-party developers are doing in our ecosystem. Sometimes features they implement become very popular and make their way to our official apps. This was not the case for Secret Chats in the Mac OS app, which enjoyed a statistically marginal existence. After the app became part of Telegram&#39;s official lineup, we did not cut this functionality in order to see if official status would change anything.</p>
<p>Several years later, statistics confirm our guesses about the viability of Secret Chats on desktops: same as before, only 2% of the Mac OS app users use them in that app. At the same time, all users of the Mac OS app actively use Secret Chats on their mobile devices just like other Telegram users.</p>
<h4><a class="anchor-link" href="#to-sum-up-no-desktop-secret-chats"><i class="anchor-icon"></i></a><a class="anchor" name="to-sum-up-no-desktop-secret-chats"></a>To sum up: No desktop Secret Chats</h4>
<ul>
<li>Desktops are a much less personal environment, frequently monitored at work and left unattended at home. Its easier to keep an eye on mobile devices.</li>
<li>Implementing secure storage is more complicated in open desktop systems as opposed to sandboxed mobile environments. Secret Chats require storage to work.</li>
<li>Secret Chats are single-device, so adding more potential sources would result in many Secret Chats with the same person. A mess in UI and no idea which chat to send your message to. Youre more likely to reach a person on the mobile phone.</li>
<li>To find a message, youd have to search across multiple Secret Chats with the same person on many devices. The server wouldnt be able to tell you where to look.</li>
<li>Logging out kills Secret Chats, temporary sessions create garbage chats on the partner&#39;s device.</li>
<li>We may introduce Secret Chats to our desktop and web apps in the future, even though this requires a lot of work and careful planning.</li>
</ul>
<p><strong>Note:</strong> These arguments and templates are meant for the majority of Telegram users that use a mobile phone as their primary device. If a user tells us that they use their desktop as a primary device, these templates won&#39;t work as well. Such users require a different, bespoke approach.</p>
<h3><a class="anchor-link" href="#the-learn-more-template"><i class="anchor-icon"></i></a><a class="anchor" name="the-learn-more-template"></a>The Learn more template</h3>
<p>Both templates in this manual have the line <em>Let me know if you want to learn more about security on Telegram.</em> Here&#39;s a general template you could give to a user who wants to learn more after getting one of them:</p>
<blockquote>
<p><em>All Telegram data is encrypted and cannot be deciphered by your ISP, network administrator, or random hackers. Cloud chats are stored encrypted in the Telegram Cloud, and the keys needed to decipher this data are kept in other data centers spread across different jurisdictions. This way, local intruders or engineers can&#39;t access this data, and several court orders from different jurisdictions are required to force us to give up anything. More on this in the FAQ: https://telegram.org/faq#q-do-you-process-data-requests</em></p>
<p><em>Secret chats are meant for people who want even more than that. They use end-to-end encryption, so there is no way to decipher your data without accessing your device. It means you dont even need to trust Telegram when you use Secret Chats — their secrecy is guaranteed client-side and anyone can check the source code of Telegram clients.</em></p>
<p><em>If you are concerned about security in general, there are other important precautions you could take. Consider protecting your account by enabling 2-Step Verification and setting up a strong passcode to lock your app, then it wont be possible to access your chats by stealing your device or even by intercepting your SMS code. You will find both options in Settings under Privacy and Security, ask me if youd like more details.</em></p>
</blockquote>
<p><strong>Note:</strong> Same as with any templates, please be very careful when sending this one. Take care to adapt the text in such a way that it fits the users questions and situation perfectly. This is especially important when dealing with security-related questions. If youre not sure youre qualified to continue the conversation, dont hesitate to ask in your local group. There&#39;s always help!</p>
<h3><a class="anchor-link" href="#further-reading"><i class="anchor-icon"></i></a><a class="anchor" name="further-reading"></a>Further reading</h3>
<p>This text and templates should be enough for conversations with ordinary Telegram users. If you would like to go deeper down the rabbit hole, you can study this <a href="/manuals/e2ee">in-depth manual on End-to-End Encryption</a>. If you have any questions about that one, contact Markus without hesitation. Its very important that we understand everything.</p>
</div>
</div></section>
</section>
</main>
</div><div class="popup-container login-popup-container hide" id="login-popup-container">
<div class="popup">
<div class="popup-body">
<section>
<h2>Log In</h2>
<p>Log in here to access your TSF stats. Please enter your <b>phone number</b> in the <a target="_blank" rel="noopener" href="https://telegram.org/faq#login-and-sms">international format</a> and we will send a confirmation message to your account via Telegram.</p>
<form id="send-form" class="login-form">
<div class="form-group">
<input type="tel" class="form-control tr-form-control input-lg" id="phone-number" placeholder="+12223334455" autocomplete="off"/>
</div>
<div class="popup-buttons">
<a class="btn btn-link btn-lg login-cancel-btn">Cancel</a><button type="submit" class="btn btn-link btn-lg">Next</button>
</div>
</form>
<div id="login-form" class="hide">
<div class="form-group">
<span class="form-control tr-form-control input input-lg input-disabled"><strong id="phone-number-field"></strong> (<a class="login-back" href="/auth">Incorrect?</a>)</span>
<p class="help-block dots-animated">We&#39;ve just sent you a message.<br/>Please confirm access via Telegram</p>
</div>
<div class="popup-buttons">
<a class="btn btn-link btn-lg login-cancel-btn">Cancel</a><a class="btn btn-link btn-lg login-back">Back</a>
</div>
</div>
</section>
</div>
</div>
</div></div>
<script src="/js/jquery.min.js?1"></script>
<script src="/js/bootstrap.min.js"></script>
<script src="/js/main-aj.js?57"></script>
<script src="/js/main.js?46"></script>
<script src="/js/tsf.js?3"></script>
<script src="/js/jquery-ui.min.js?1"></script>
<script src="/js/tchart.min.js?18"></script>
<script src="/js/billboard.min.js?1"></script>
<script src="/js/stats.js?18"></script>
<script>ajInit({"version":551,"apiUrl":"\/api?hash=telegram-crawler","unauth":true});</script>
<script id="aj_script">window.initDevPageNav&&initDevPageNav();
Aj.onLoad(function(state) {
function requestConfirmation(event) {
event && event.preventDefault();
var phone = $('#phone-number').val();
$.ajax({
type: 'POST',
url: '/auth/request',
data: {
phone: phone
},
success: function(result) {
$('#phone-number-field').text(phone);
$('#send-form').addClass('hide');
$('#login-form').removeClass('hide');
checkAuth(result.temp_session);
},
error: function(xhr) {
showAlert(xhr.responseText || 'Server error');
},
dataType: 'json'
});
return false;
}
function cancelConfirmation(event) {
event && event.preventDefault();
$('#phone-number-field').text('');
$('#send-form').removeClass('hide');
$('#login-form').addClass('hide');
$('#phone-number').focus();
clearTimeout(window.authTimeout);
return false;
}
function checkAuth(temp_session) {
clearTimeout(window.authTimeout);
window.authTimeout = setTimeout(function doCheckAuth() {
$.ajax({
type: 'POST',
url: '/auth/login',
data: {
temp_session: temp_session
},
success: function(result) {
if (result) {
location.reload();
} else {
checkAuth(temp_session);
}
},
error: function (xhr) {
showAlert(xhr.responseText || 'Server error');
},
dataType: 'json'
});
}, 700);
}
$('#login-popup-container').on('popup:open', function() {
$('#phone-number').focus();
});
$('#login-popup-container').on('popup:close', function() {
cancelConfirmation();
if (location.pathname == '/auth') {
window.history && history.replaceState(null, null, '/');
}
});
$('#login-popup-container #send-form').on('submit', requestConfirmation);
$('#login-popup-container .login-cancel-btn').on('click', function(e) {
e.preventDefault();
closePopup('#login-popup-container');
});
$('#login-popup-container .login-back').on('click', cancelConfirmation);
$('.login-link').on('click', function(e) {
e.stopImmediatePropagation();
e.preventDefault();
openPopup('#login-popup-container');
});
});
Aj.onUnload(function(state) {
$('#login-popup-container').off('popup:open');
$('#login-popup-container').off('popup:close');
$('#login-popup-container #send-form').off('submit');
$('#login-popup-container .login-cancel-btn').off('click');
$('#login-popup-container .login-back').off('click');
$('.login-link').off('click');
});
</script>
<script>Aj.pageLoaded();</script>
</body>
</html>