
Russian: 
Мы вскоре займемся и математической, и практической сторонами
разработки систем, которые используют криптографию,
но есть один момент, который я очень хочу подчеркнуть
и добиться вашего понимания.
Самостоятельная разработка криптосистемы -- очень сложная задача,
в которой очень легко наделать ошибок.
Один пример, который всегда полезно помнить,
-- и это важно --
мы часто рассматриваем программы как "черные ящики"
с входом и выходом,
и наши шифрующие функции обычно получают ключ и сообщение
и выдают некий криптотекст,
и реализации, которые мы будем рассматривать в рамках этого предмета,
будут функционально верными,
они будут выдавать правильные данные.
Но они не будут безопасными,
и причина, по которой они не будут безопасными,
состоит в том, что в реальности нет "черных ящиков".
Есть множество деталей,
которые можно замечать.
Можно видеть, сколько времени уходит на обработку.
И когда есть возможность наблюдать свойства функции
-- отличные от ее ожидаемой работы --
-- отличные от входных и выходных данных

German: 
Wir kommen nun zur Mathematik und zur Anwendung,
Systeme, die Kryptographie nutzen, zu implementieren.
Aber da ist eine Sache, die ich wirklich betonen möchte,
und sichergehen, dass ihr sie versteht.
Eigene Kryptographie zu implementieren ist sehr anspruchsvoll,
es ist etwas, das man sehr leicht falsch machen kann.
Ein Beispiel davon, um es im Kopf zu haben,
und das ist eine wichtige Sache:
Wir betrachten Programme oft als black boxes
mit Eingaben und Ausgaben,
und unsere Verschlüsselungsfunktion wird üblicherweise einen Schlüssel und eine Nachricht bekommen
und einen Geheimtext erzeugen.
Und die Implementationen, die wir in diesem Kurs zeigen,
werden funktional korrekt sein,
sie werden die korrekten Ausgaben erzeugen.
Sie werden nicht sicher sein,
und der Grund dafür, dass sie nicht sicher sind, ist:
Wenn wir etwas benutzen, ist es keine echte black box.
Es gibt viele Dinge, die jemand
dabei beobachten könnte.
Er könnte beobachten, wie lange es dauert.
Und wenn man Eigenschaften einer Funktion
beobachten kann, neben ihrem Verhalten als Funktion,
neben den Ein- und Ausgaben,

Chinese: 
我们会探讨数学和
利用密码学执行系统的做法 
不过这里有件事我得强调
并确认你了解——
执行你自己的加密方法非常具有挑战性 
而且非常容易出错 
记住一个例子
这非常重要
我们常把程序想成有输入和
输出的黑箱 
而我们的加密函数通常会取一个金钥和一则讯息
来产生某则密文 
我们在这门课里给你看的执行法
功能都会是正确的 
它们都会产生正确的输出 
但他们不安全 
之所以不安全
在于我们用它们的时候他们并不是真的是黑箱 
某些人可以
观察到一堆东西 
他们可以观察执行花多久时间 
而当你能观察到函数除了功能
输入、输出外的
一些特性时 

Portuguese: 
Vamos estudar a matemática e os aspectos práticos
da implementação de sistemas criptográficos,
mas há algo que quero realçar,
e ter a certeza de que entendes.
Implementares a tua própria criptografia é muito desafiante,
mas é algo em que facilmente cometerás erros.
Um exemplo que deverás recordar --
e isto é muito importante --
muitas vezes pensamos nos programas como caixas negras
com entradas e saídas,
e as nossas funções de encriptação em geral pegam numa mensagem
e produzem texto cifrado,
e as implementações mostradas neste curso
estarão funcionalmente correctas,
e produzirão as saídas correctas.
Mas não são seguras,
e a razão porque não são seguras
é que não são "mesmo" caixas negras quando as usamos.
Há montes de outros aspectos que alguém
poderia observar na caixa.
Poderia medir quanto tempo leva a encriptação.
E quando podes observar propriedades
de uma função - para além do seu comportamento funcional
e das suas entradas e saídas --

English: 
We'll get into both the mathematics and the practice
of implementing systems using cryptography,
but there's one thing I want to really emphasize,
and make sure that you understand.
Implementing your own cryptography is very challenging,
it's something that is very easy to do incorrectly.
One example of that to keep in mind--
and this is an important thing--
so we often think about programs as black boxes
with inputs and outputs,
and our encryption functions will usually take a key in a message
and produce some ciphertext,
and the implementations we'll show in this class
will be functionally correct,
they'll produce the correct outputs.
They won't be secure,
and the reason they won't be secure is
things aren't really black boxes when we use them.
There's lots of other things that someone
could observe about this.
They could observe how long it takes.
And when you can observe properties
of a function--other than their functional behavior--
other than just their inputs and outputs--

Portuguese: 
Vamos estudar a matemática e os aspectos práticos
da implementação de sistemas criptográficos,
mas há algo que quero realçar,
e ter a certeza de que entendes.
Implementares a tua própria criptografia é muito desafiante,
mas é algo em que facilmente cometerás erros.
Um exemplo que deverás recordar --
e isto é muito importante --
muitas vezes pensamos nos programas como caixas negras
com entradas e saídas,
e as nossas funções de encriptação em geral pegam numa mensagem
e produzem texto cifrado,
e as implementações mostradas neste curso
estarão funcionalmente correctas,
e produzirão as saídas correctas.
Mas não são seguras,
e a razão porque não são seguras
é que não são "mesmo" caixas negras quando as usamos.
Há montes de outros aspectos que alguém
poderia observar na caixa.
Poderia medir quanto tempo leva a encriptação.
E quando podes observar propriedades
de uma função - para além do seu comportamento funcional
e das suas entradas e saídas --

Chinese: 
我們會探討數學和
利用密碼學執行系統的做法，
不過這裡有件事我得強調
並確認你了解——
執行你自己的加密方法非常具有挑戰性，
而且非常容易出錯。
記住一個例子——
這非常重要——
我們常把程式想成有輸入和
輸出的黑箱，
而我們的加密函式通常會取一個金鑰和一則訊息
來產生某則密文，
我們在這門課裡給你看的執行法
功能都會是正確的，
它們都會產生正確的輸出，
但他們不安全，
之所以不安全
在於我們用它們的時候他們並不是真的是黑箱。
某些人可以
觀察到一堆東西，
他們可以觀察執行花多久時間，
而當你能觀察到函式除了功能、
輸入、輸出外的
一些特性時，

Russian: 
-- это называется сторонним каналом.
Примером стороннего канала будет хронометраж работы.
Например, время работы функции может быть разным,
оно может зависеть от сообщения или ключа.
Большая часть кода, который мы будем писать на этих занятиях,
будет обладать таким свойством.
Мы не будем усложнять наш код
ради решения проблемы сторонних каналов,
но в смысле правильной реализации
этот вопрос очень важен,
и есть множество способов для кода обладать сторонними каналами.
В кэше процессора могут оказываться разные данные,
которые могут быть как-то видны,
используемая процессором мощность
может различаться,
и уже найдены пути взлома смарт-карт
с помощью замера потребляемой мощности, когда они проводят шифрование,
что может подсказывать что-то о ключе.
Это просто пример моментов,
которые очень трудно правильно реализовать при разработке криптосистем.
Есть вопросы, о которых, если вы разрабатываете криптосистему
для какой-то важной цели, надо беспокоиться.
Об этих моментах мы беспокоиться не будем
в большей части кода в наших занятиях,

Portuguese: 
diz-se que é criado um "canal lateral."
Um exemplo de canal lateral é precisamente medir tempos.
O tempo de execução da função poderá variar,
pode depender da mensagem ou da chave.
A maior parte do código que iremos escrever neste curso
terá essa propriedade.
Não vamos complicar aqui o nosso código
devido à preocupação em evitar canais laterais,
mas em termos de implementações reais e correctas,
isso é muito importante,
e há muitas formas de os progamas permitirem canais laterais.
A encriptação poderá afectar os dados na cache do processador,
e isso poderá de algum modo ser visível,
poderá afectar o consumo de energia
do processador,
e já foi mostrado como "crackar" smart cards
medindo o consumo de energia enquanto eles encriptam
e assim obter algumas pistas sobre a chave.
Bem, isto é um exemplo do tipo de coisas
que são muito difíceis de fazer certas quando se implementa criptografia.
São coisas que, se estiveres a implementar criptografia
para usar em aplicações importantes, deverão constar das tuas preocupações.
São coisas que não nos vão preocupar
na escrita da maioria dos programas aqui neste curso

Chinese: 
這就代表有旁路。
旁路的一個例子是時序。
執行函式的時間不一，
可能會隨訊息或金鑰改變。
我們在這門課裡寫的程式
多有這項特性。
我們不會增加我們的程式碼
的複雜性來對付旁路問題，
但就執行正確來說，
對付旁路問題相當重要，
此外，程式的旁路種類有一大堆，
這可以影響到處理器的快取，
某種程度上，這影響可能顯而易見，
這可以影響你的處理器
的耗電功率，
已經有人示出藉測量加密時的耗電量
來破解智慧卡的方法，
這能給你關於金鑰的線索，
這只是眾多例子的其中一個例子而已。
正確執行加密很困難，
如果我們在為重要的用途開發加密方法，
你得擔心很多事。
在我們這門課裡寫的大部分程式，
有很多你不必擔心的事，

Chinese: 
这就代表有旁路 
旁路的一个例子是时序 
执行函数的时间不一 
可能会随讯息或金钥改变 
我们在这门课里写的程序
多有这项特性 
我们不会增加我们的代码
的复杂性来对付旁路问题 
但就执行正确来说 
对付旁路问题相当重要 
此外 程序的旁路种类有一大堆 
这可以影响到处理器的快取 
某种程度上 这影响可能显而易见 
这可以影响你的处理器
的耗电功率 
已经有人示出借测量加密时的耗电量
来破解智慧卡的方法 
这能给你关于金钥的线索 
这只是众多例子的其中一个例子而已 
正确执行加密很困难 
如果我们在为重要的用途开发加密方法 
你得担心很多事 
在我们这门课里写的大部分程序 
有很多你不必担心的事 

English: 
that's called a side channel.
An example of a side channel is timing.
So, the time it takes to run this function could vary,
it could depend on the message or the key.
Most of the code that we're going to write in this class
will have that property.
We're not going to be adding complexity
to our code to worry about things like side channels,
but in terms of implementing things correctly,
that's really important,
and there are lots of ways that code could have side channels.
It could affect what's in the cache of the processor,
and that could be visible in some way,
it could actually affect how much power
your processor uses,
and people have shown ways to break smart cards
by measuring the power consumption as they do encryption
and that gives you some insight into what the key is.
So, this is just an example of the kinds of things
that it's very hard to get right in implementing cryptography.
These are things that, if you were building cryptography
for any important use, you'd have to worry about.
These are things that we are not going to worry about
in most of the code that we write in this class

Portuguese: 
diz-se que é criado um "canal lateral."
Um exemplo de canal lateral é precisamente medir tempos.
O tempo de execução da função poderá variar,
pode depender da mensagem ou da chave.
A maior parte do código que iremos escrever neste curso
terá essa propriedade.
Não vamos complicar aqui o nosso código
devido à preocupação em evitar canais laterais,
mas em termos de implementações reais e correctas,
isso é muito importante,
e há muitas formas de os progamas permitirem canais laterais.
A encriptação poderá afectar os dados na cache do processador,
e isso poderá de algum modo ser visível,
poderá afectar o consumo de energia
do processador,
e já foi mostrado como "crackar" smart cards
medindo o consumo de energia enquanto eles encriptam
e assim obter algumas pistas sobre a chave.
Bem, isto é um exemplo do tipo de coisas
que são muito difíceis de fazer certas quando se implementa criptografia.
São coisas que, se estiveres a implementar criptografia
para usar em aplicações importantes, deverão constar das tuas preocupações.
São coisas que não nos vão preocupar
na escrita da maioria dos programas aqui neste curso

German: 
dann nennt man das einen Seitenkanal.
Ein Beispiel für einen Seitenkanal ist die Dauer.
Die Zeitspanne, die die Funktion braucht, könnte variieren.
Sie könnte von der Nachricht oder vom Schlüssel abhängen.
Der meiste Code, den wir in diesem Kurs schreiben,
wird diese Eigenschaft haben.
Wir werden nicht anfangen, Komplexität hinzuzufügen
zu unserem Code, um uns um etwas wie Seitenkanäle zu kümmern.
Aber um die Sachen korrekt zu implementieren,
ist das wirklich wichtig.
Und Code kann auf vielerlei Weise Seitenkanäle haben.
Er könnte den Cache des Prozessors beeinflussen
und das könnte irgendwie sichtbar sein.
Er könnte sogar beeinflussen, wieviel Energie
dein Prozessor verbraucht.
Man hat gezeigt, dass man Smartcards knacken kann,
indem man den Stromverbrauch während der Verschlüsselung misst,
und das liefert Erkenntnisse über den Schlüssel.
Das ist nur ein Beispiel der Art Dinge,
wegen denen es sehr schwer ist, die Implementation von Kryptographie richtig zu machen.
Das sind Dinge, um die ihr euch, wenn ihr Kryptographie
für eine wichtige Anwendung baut, kümmern müsst.
Das sind Dinge, um die wir uns nicht kümmern werden,
in den meisten Programmen, die wir im Kurs schreiben.

Chinese: 
所以你不该把我们的执行法看成安全执行法 
执行你自己的加密方法的唯一理由只是
好玩和学习而已 
而这是我们希望你能从这在堂课执行加密方法所得到的 
但如果你真的想使用加密方法
来保护什么重要的东西 嗯……
你应该要使用已经被小心审核过
并考虑到
各种问题——像是时序旁路
的函数库
要有其他人已经够仔细
地看过且对它们的正确性及安全性
有高度信心的函数库 
我要确定大家有仔细注意
这一点 
所以我们要来一个测验
你该不该用这门课里的代码
来保护核武发射的代码呢？

Portuguese: 
por isso não deves nunca considerá-los seguros.
As únicas razões válidas para implementares cripto
é para te divertires e aprenderes.
E isso é o que espero que leves deste curso,
mas se queres mesmo usar criptografia
para proteger algo importante, bem --
deves usar uma biblioteca com funções de cripto
que tenham sido escrutinadas com cuidado,
e que tenha sido escrita de forma a prevenir
possíveis canais laterais obtidos com medidas de tempos,
que tenha sido revista por peritos
com muito cuidado, para se ter uma confiabilidade elevada
em que a biblioteca está correcta e é segura.
Quero ter a certeza de que todos prestaram muita atenção
a este aspecto da segurança,
e por isso vamos fazer um questionário:
Deverias usar código escrito nestas aulas para
proteger códigos de lançamento de mísseis nucleares?

Portuguese: 
por isso não deves nunca considerá-los seguros.
As únicas razões válidas para implementares cripto
é para te divertires e aprenderes.
E isso é o que espero que leves deste curso,
mas se queres mesmo usar criptografia
para proteger algo importante, bem --
deves usar uma biblioteca com funções de cripto
que tenham sido escrutinadas com cuidado,
e que tenha sido escrita de forma a prevenir
possíveis canais laterais obtidos com medidas de tempos,
que tenha sido revista por peritos
com muito cuidado, para se ter uma confiabilidade elevada
em que a biblioteca está correcta e é segura.
Quero ter a certeza de que todos prestaram muita atenção
a este aspecto da segurança,
e por isso vamos fazer um questionário:
Deverias usar código escrito nestas aulas para
proteger códigos de lançamento de mísseis nucleares?

English: 
so you shouldn't view these implementations as secure implementations.
The only reason to implement your own crypto
is for fun and learning.
And that's what we hope you'll get from this class by doing it,
but if you actually want to use cryptography
to protect anything important, well--
you should use a library implementation
that's been carefully vetted,
that's been written in a way to worry about
these kinds of issues like timing side channels,
and that other people have looked at
carefully enough to have some higher level of confidence
that it's correct and secure.
So I want to make sure everyone was paying careful attention
to that last point,
and we'll have a quiz:
Should you use any code from this course
to protect nuclear launch codes?

Russian: 
поэтому вы не должны считать эти реализации безопасными.
Единственный смысл в самостоятельной реализации криптосистем
-- это из интереса и для обучения.
И мы надеемся, что как раз это вы и будете делать на занятиях.
Но если вы собираетесь использовать криптографию
для защиты чего-то важного,
-- тогда лучше применять готовую библиотеку,
которую уже тщательно проверили,
которая была написана так, чтобы решать проблемы
вроде сторонних каналов,
и которая была исследована другими
достаточно тщательно, чтобы можно было
предполагать, что ошибок нет, и все безопасно.
Поэтому я хочу убедиться, что меня внимательно слушали
в этом вопросе,
и сейчас будет контрольный вопрос:
Можете ли вы использовать программы из наших занятий
для защиты кодов доступа к ядерному оружию?

German: 
Darum solltet ihr diese Implementationen nicht als sicher betrachten.
Der einzige Grund, eigene Kryptographie zu implementieren
ist zum Spaß und zum Lernen.
Und wir hoffen, dass ihr das von diesen Kurs haben werdet, indem ihr es macht.
Aber wenn ihr tatsächlich Kryptographie verwenden wollt,
um irgendetwas Wichtiges zu schützen,
dann solltet ihr Bibliotheken verwenden,
die sorgsam untersucht worden sind,
die so geschrieben sind, dass sie
solche Dinge wie Seitenkanäle berücksichtigen,
und die von anderen Personen geprüft wurden,
so sorgfältig, dass sie einen höheren Level des Vertrauens genießen,
dass sie korrekt und sicher sind.
Ich möchte sichergehen, dass jeder gut aufgepasst hat
bei diesem letzten Punkt
und wir machen ein Quiz:
Sollte man Programmcode von diesem Kurs verwenden,
um nukleare Launch Codes zu schützen?

Chinese: 
所以你不該把我們的執行法看成安全執行法。
執行你自己的加密方法的唯一理由只是
好玩和學習而已，
而這是我們希望你能從這在堂課執行加密方法所得到的，
但如果你真的想使用加密方法
來保護什麼重要的東西，嗯……
你應該要使用已經被小心審核過
並考慮到
各種問題——像是時序旁路——
的函式庫——
要有其他人已經夠仔細
地看過且對它們的正確性及安全性
有高度信心的函式庫。
我要確定大家有仔細注意
這一點，
所以我們要來一個測驗：
你該不該用這門課裡的程式碼
來保護核武發射的程式碼呢？

Portuguese: 
As respostas são... não -- selecciona a escolha correcta.

English: 
The answers are no--check the correct answer.

Russian: 
Ответ: нет. Выберите правильный ответ.

Chinese: 
答案是“不”——请勾选正确的答案 

German: 
Die Antworten sind[br]Nein[br]Kreuze die richtige Antwort an

Portuguese: 
As respostas são... não -- selecciona a escolha correcta.

Chinese: 
答案是「不」——請勾選正確的答案。
