[Powered by Google Translate] [Semana 10]
[David J. Malan] [Harvard University]
[Esta é CS50.] [CS50.TV]
>> Todo ben! Este é CS50, pero non por moito máis tempo.
Este é o inicio da semana 10.
O mércores temos o noso proba, e despois vindeiro luns temos un bolo conmemorativo
como un círculo completo todo o camiño de volta de cero semana.
Hoxe, falamos de un dos meus temas favoritos, a dicir verdade -
a seguridade e privacidade e as implicacións de todo o hardware e software
que todos usamos estes días.
Para ser honesto, hai unha serie de ameazas por aí
que, se realmente non parou a pensar sobre eles,
son realmente moi asustado.
Caso en cuestión - se algún de vós xa descargar unha peza de software
fóra da Internet e instalar no seu ordenador,
xa estean implicados en un grao significativo de confianza, non?
Non hai nada impedir o Skype, ou Chrome, ou calquera peza de software
teña instalado no seu ordenador, desde a simple exclusión de todos os ficheiros do seu disco duro;
cargar todos os ficheiros do seu disco duro para o servidor algún bandido;
ler todos os seus e-mails, a partir de interceptación de todas as súas mensaxes instantáneas.
Porque a realidade é hoxe, con sistemas operativos máis modernos
hai realmente non é moi de un muro entre os programas que instalar,
e ti e eu somos practicamente só o tipo de cruzar nosos dedos e tendo en fe
que ese programa que baixo gratuitamente, ou que o que é 99 centavos,
é realmente completamente benigno.
Pero, como vimos a través de C, e agora PHP e JavaScript,
con esta capacidade de nos expresar a través de programación,
pode facer máis calquera cousa que quere un programa que un usuario a si mesmo podería facer.
>> Entón, hoxe imos nos centrarse sobre o tema -
non só algunhas ameazas, pero tamén defensas.
De feito, no mundo da seguridade en xeral,
hai un tipo de xogo de gato-e-rato,
e Eu ouso dicir que os bandidos case sempre teñen unha perna cara arriba.
Cando se trata de tomar partido de hardware e software nos nosos propios ordenadores persoais,
temos que entender que un cara malo simplemente precisa atopar un simple erro -
unha explotación, un erro - en unha peza de software que escribir ou está executando
para que el ou ela para asumir todo o noso sistema.
Por outra banda, nós - os bos - a necesidade de corrixir e corrixir os erros
e evitar todas estas debilidades.
E así, eu diría que, en xeral, os bandidos teñen a vantaxe.
Que clases como este e as clases posteriores son realmente sobre
non sobre o ensino como para frear as batallas que eses bandidos fan,
pero son sobre como se protexer ou polo menos como facer unha decisión calculada
que si, sei que este anaco de software podería realmente ler cada un dos meus e-mails,
pero eu estou ben con iso por mor do valor que me leva, por outro lado.
>> Estou moi satisfeito de ser acompañado por 2 das persoas máis intelixentes que eu coñezo -
Rob Bowden e Nate Hardison.
Rob está a piques de levar-nos a un paseo polo menor nivel de etiquetas de seguridade -
do compilador que, ata agora, todos temos benvida a amar e confiar. Rob Bowden.
[Aplausos]
>> [Rob] Todo ben. David ten practicamente tomado a miña lengalenga toda
que eu estaba indo a introducir con, pero -
Varias semanas atrás, viu o exemplo dun ataque de estourido de buffer
que é un exemplo de un hacker hacker nalgún peza de software
que non deben ser invadido.
O outro lado desta
é ás veces ten un software que é malicioso en si.
Non precisa aínda de ser cortado.
A persoa que escribiu o software quere hackear ti.
>> Nós só ir directo para o código,
dar un ollo no "login.c".
Aquí, un programa parvo que valida un nome de usuario e contrasinal combinación.
Aquí debe ser definitivamente ficar cómodo con C de novo para o quiz.
En primeiro lugar, estamos usando cordas comezar a describir o nome de usuario,
entón nós estamos usando a corda get para incorporarse o contrasinal,
e entón temos algunhas comprobacións triviais de xusto, é o nome de usuario "roubar"?
E é o contrasinal "thisiscs50"?
Ou, é o nome de usuario "Tommy" eo contrasinal "i <3javascript"?
Se algún deles é o caso,
entón nós estamos indo só para imprimir o "éxito", e entón temos acceso.
Se non, imos para imprimir "válido sesión" e despois, por suposto,
Como a memoria malloc esbozo cordas, o nome de usuario e contrasinal que libre.
Este é un programa de rexistro trivial,
e se pensar sobre cando entrar no aparello,
é moi semellante - ou incluso sesión no seu computador -
hai só uns programa de sesión, que é o que lle dá acceso.
Aquí, pasa que temos hard-Coded 'roubar', 'thisiscs50', 'Tommy', 'i <3javascript',
pero probablemente hai algún arquivo en algún lugar do seu sistema operativo
que ten unha lista de nomes de usuarios que poden acceder ao sistema
e unha lista de contrasinais asociadas cos nomes de usuarios.
Normalmente, os contrasinais non son só almacenadas en texto simple coma este.
Existe algún tipo de criptografía, pero iso vai facer para o noso exemplo.
>> Benvida ao noso compilador -
vai ser moi sinxelo.
Necesitamos que especificar alomenos un ficheiro que desexa compilar,
E entón aquí - estas liñas
só ler un arquivo de A.
Le o ficheiro enteiro nun buffer grande,
e, entón, nulo rematar noso buffer como sempre,
e, finalmente, só compilar o ficheiro.
Non imos ollar como compilación é realmente aplicado,
pero como unha información, que só chama Clang.
Nós imos empregar este programa para compilar as cousas en vez de Clang.
Un problema que comezar é que vemos queremos compilar noso compilador,
pero se nós non imos usar Clang, eu non sei o que eu vou compilar con.
Esta é unha cuestión xeral coñecido como cargando.
Entón, só esta vez, eu vou usar Clang para compilar noso compilador.
>> Se pensar en GCC e Clang -
estes programas, os compiladores están sendo actualizados constantemente,
e os compiladores son compilados empregando GCC e Clang.
Clang é só un gran C ou C + + programa,
para que o compilador que empregan para compilar que é Clang.
Aquí, agora, estamos indo só para estar usando o noso compilador para compilar noso compilador,
e podemos ata dicir - '/ compilador.', 'compiler.c', 'compile.c', 'o compilador'.
Teña en conta que este é o comando exacto eu corre antes -
basta substituír Clang con '. / compilador'.
E agora temos outro compilador, pero é exactamente o mesmo.
El só chama Clang.
>> Nós imos utilizar o noso compilador para compilar o programa de rexistro.
Okay - "usuario / compilador login.c-o.".
Así, a referencia non existe "GetString".
Ten un "-lcs50". Okay.
Entón agora eu teño o noso programa de login.
Executa-lo - recibir "Introduce o teu nome de usuario".
Un exemplo foi roubar. Introduza o seu contrasinal - thisiscs50.
E éxito! Eu teño acceso.
Executa-lo novo e inserir un contrasinal incorrecta -
ou nome de usuario e contrasinal non válidos -
válido login.
Okay. Nada de interesante sobre iso ata agora.
Pero, imos dar un ollo ao usuario de novo -
e este vai ser un exemplo un tanto trivial,
pero imos engadir unha outra persoa aquí e dicir: else if ((strcmp (nome, "hacker") == 0 &&
strcmp (contrasinal "LOLihackyou") == 0))
agora, printf ("hacked Agora tes acceso \ n").; ben.
Compilando iso - compilador login.c o login-lcs50 -
agora correndo a - e se eu usar o meu nome de usuario hacker
e contrasinal LOLihackedyou -
Será que eu escriba mal alí antes?
No login.c-iHack - eu non cortado porque eu creo que iso máis tarde.
Okay. Recompilación.
Re-running - hacker - LOLihackedyou -
Hacked! Agora tes acceso.
>> Non parece ser a de que gran parte da diferenza
porque é a mesma comprobación exacta que eu estaba facendo a outros nomes de usuarios e contrasinais.
Ademais, a gran cousa é que outras persoas miran para esta login.c -
dicir, se eu pasar iso para o meu compañeiro, e eles abren este ficheiro,
e ler isto, eles van ver - así, por que ten esas liñas de código aquí?
Este suposto non é algo que debe estar no seu programa.
Nalgúns programas - como calquera software propietario, que non é open-source -
pode nunca ver estas liñas de código.
Algo así como o Skype ou algo - por todo o que vostede sabe,
Skype está no seu ordenador e non é só unha combinación Username Contrasinal específica
que pode entrar no Skype, dalgunha forma especial.
Nós non sabemos sobre el, e as persoas non saben sobre iso,
porque non pode ler o código fonte para ver que non hai este burato.
>> O que chamamos iso -
aínda que este non é un exemplo moi intelixente -
iso é chamado dunha porta traseira.
Se pensas que a porta de atrás da súa casa.
Aquí, se eu validar con 'roubar' os nomes de usuario ou 'Tommy'
que sería como usar a "porta de entrada".
Esta é a forma que eu teño que suxeita o login.
Pero se eu entrar con ese nome de usuario e contrasinal -
a continuación, que está a usar a "porta de atrás".
Non era a forma intencionada para entrar no programa,
pero aínda funciona.
E as persoas, en xeral, non se quere saber sobre esas portas de atrás.
Estamos indo para mellorar esta situación.
Imos desfacer iso para a nosa login.c orixinal,
e imos dar un ollo ao noso novo compilador. Okay.
Todo aquí é exactamente o mesmo.
Estamos lendo o ficheiro enteiro nun buffer.
Todo aquí é o mesmo.
Nós só compilou o arquivo.
Pero agora eu teño esa gran aquí
que di que, se o arquivo que ocorrer de eu ser a compilación é login.c,
entón eu facer algo especial.
O que é que algo de especial?
Vexo aquí algunhas cordas chamado 'hack',
e ollando para estas liñas de código -
estas son as mesmas liñas de código - Eu creo que eu fixen 'iHack "uso e non' ihacked 'antes -
mirar para estas liñas de código,
son as mesmas liñas exactas de código que eu tiña en login.c antes.
Pero agora, en vez de telos en login.c,
Vou poñer-los no meu compilador.
>> Estas son as liñas de código que eu vou querer inserir login.c.
Estas liñas de código - o tapón que orixinalmente mantiña a miña login.c
non é máis vai ser grande abondo, porque agora quero tamén introducir este hack
no medio do meu programa.
Todo iso está facendo é crear un novo buffer que é grande o suficiente -
tanto para o arquivo orixinal e as liñas extras de código - o corte - que quero introducir alí.
Aquí está unha cousa a notar -
char * pattern = "/ / negar-lles acceso!"
Se miramos cara atrás, login.c,
vemos aquí este comentario - negar-lles acceso!
En login.c, este comentario parece completamente inocuo,
para que non sospeitar de calquera intención maliciosa con só este comentario.
Pero, no noso compilador, imos ollar especificamente para esta liña de código,
e, despois, cando atopalo -
estas liñas de código está inserindo noso invadir esa posición.
Entón, nós estamos interactuar sobre o login.c enteiro,
estamos introducindo que corte exactamente onde el di que negar-lles o acceso,
e despois imos compilar - e non o orixinal, login.c
pero o login.c novo con ese corte inserida ben en 'negar-lles acceso.
>> Agora quero compilar meu novo compilador que corte implicados.
Eu non vou usar Clang, entón imos copiar o compilador que usan antes
e usar isto - así, compilador compiler.c compile.c o evil_compiler.
Agora compilador noso mal -
se usarmos o noso compilador mal para compilar calquera outro arquivo,
o ficheiro pode compilar como debería.
É completamente normal.
Pero se usarmos o noso compilador mal para compilar a -
así, / evil_compiler login.c o login-lcs50. -
mirando login.c novo, non hai absolutamente nada aquí.
É o noso costume "se é ou roubo ou Tommy en que estamos, outra cousa que está fóra".
Pero cando executar o noso executable, iso vai funcionar como de costume.
Correr novo - hacker, LOLihackyou -
Hacked! Agora tes acceso.
Basta ollar para login.c, non cre que algo está mal.
Pero o compilador que está a ser usado para compilar login.c
é designado especificamente para introducir este hack no programa.
Nós só cambiamos o noso problema orixinal.
Orixinalmente, tiñamos esas liñas de código login.c que se alguén mirou para eles,
que sería como, por que son estes aquí?
Agora, se alguén pasa a ollar para o noso compilador,
eles van ollar para estas liñas de código e dicir:
porque son estes aquí?
Entón, non estamos completamente resolto o noso problema.
Pero podemos utilizar esa idea de novo.
>> Dando un ollo á nosa terceira versión do compilador,
É a mesma idea.
Nós ler o ficheiro enteiro nun buffer ata aquí,
Nós compilar o ficheiro aquí,
e eu teño algún tipo de hack corda aquí,
pero observar o arquivo que eu estou realmente cortar agora.
Estou compiler.c hackers
non login.c.
Pero o que estou introducindo en compiler.c?
Estou inserindo este código, que é o código exacto no noso compilador anterior,
que foi feito para introducir código login.c.
Aquí está o noso caso login.c arquivo strcmp
e despois introducir en Hack stuff login.c noso.
Este novo compilador pretende crear un compilador
que se destina a compilación de rexistro maliciosamente.
Imos ver por que isto nos axuda.
Todo o resto é o mesmo, polo que funciona exactamente como el traballou co noso compilador anterior.
Estamos só a iteração sobre a nosa compile.c enteiro.
Pero agora, en vez de buscar "negar-lles acceso",
que estamos a buscar "compilar o ficheiro. '
Onde é compilar o ficheiro?
Mirando para o noso compiler.c completamente inocente,
É ben aquí na parte inferior.
Este comentario - compilar o ficheiro - unha vez máis, que parece completamente inocuo.
Pero, na nosa versión maliciosa do compilador,
imos - ben antes de que o comentario - inserir este código
que se destina a introducir o código cando compilar login.c.
>> Hai unha serie de niveis de erro aquí.
Imos realmente executa-lo.
Unha vez máis, imos copiar o noso compilador orixinal.
Agora compilación, - compilador compiler.c compile.c o evilest_compiler -
e agora evilest_compiler.
Máis maligno compilador - usar isto para compilar noso compilador,
imos realmente ollar.
Evilest_compiler - traer-o, todo o camiño de volta para a versión 1 do noso compilador -
a versión 1 do noso compilador que foi só ler o ficheiro e recompila-lo.
Aquí, sabemos que evilest_compiler - cando compila o ficheiro -
vai inserir o código aquí antes de compilar o ficheiro,
e que o código será exactamente como o código a partir da segunda versión do noso compilador
que fixo iso.
Este código, que se destina a entrar en sesión,
vai ser inserido na nosa compilador compilador máis maligno.
Imos usar evilest_compiler para compilar noso compilador.
Agora imos usar o compilador,
voltar máis para entrar,
e lembre-se este login.c non ten absolutamente nada sospeitoso nel.
Pero, usando o noso compilador para compilar login.c,
Rob, thisiscs50, éxito.
Imos hacker de rexistro, LOLihackyou, hacked! Agora tes acceso.
>> Recoñecer que este era diferente da versión 2 do noso compilador.
O compilador que usan - imos volver - copia de sesión -
imos traer o noso compilador de volta aquí.
Retirada compilador máis maligno.
Todo o que nos queda agora é compilador.
Se olharmos para compiler.c,
non hai absolutamente nada alí que parece malicioso de calquera forma.
Se olharmos para login.c,
non hai absolutamente nada aquí que parece malicioso de calquera forma.
Pero cando usamos a nosa compilador para compilar login.c,
temos a versión hackable de login.c.
Cando usamos o noso compilador para compilar unha nova versión do compilador,
temos a versión hackable do compilador.
Agora, saír e distribuír noso executable compilador,
e ninguén vai saber que non hai nada de malicioso sobre iso.
>> Esta é realmente así - Eu non me lembro do ano -
Ken Thompson, e gañou o Premio Turing -
Se vostede non está familiarizado co Premio Turing, é case sempre definido como a
Premio Nobel de ciencia da computación, entón é así que eu vou definir iso.
Ken Thompson fixo un discurso cando recibiu o seu premio Turing
chamado "Reflexións sobre Confianza Confiar".
Basicamente, esta era a idea do seu discurso.
Pero en vez de noso compilador, estaba falando sobre GCC -
só un compilador outro como Clang -
e que estaba dicindo é que, como o noso login.c, o noso login.c parece relativamente inútil
pero el estaba falando sobre o real UNIX login.c.
Cando acceder ao seu dispositivo,
existe algún programa de login que está a ser executado.
Ese foi o login que estaba falando.
Este foi basicamente a súa idea.
El dixo que o GCC, el, en teoría, podería ter plantado un erro -
non é un erro, pero un código malicioso -
que ao compilar a función de rexistro - o ficheiro de sesión -
ía introducir unha porta traseira para que el puidese ir absolutamente calquera Unix no mundo
e faga o login co nome de usuario específico e algunha contrasinal.
Na época, o GCC foi practicamente o compilador que todos usado para calquera cousa.
Se alguén pasou para actualizar GCC,
entón eles recompilar GCC usando o GCC,
e aínda pode facer unha versión mala do GCC
porque foi especialmente elaborado para recoñecer que foi recompilar o compilador.
E se nunca usar o GCC para compilar un arquivo login.c,
a continuación, iria introducir esa porta traseira que podería usar para acceder a calquera ordenador.
>> Iso todo era teórico, pero - que circunstancia particular era teórico,
pero as ideas son moi reais.
En 2003, houbo un exemplo semellante onde -
imos dar un ollo neste ficheiro,
e iso non ten absolutamente nada que ver con iso, en realidade, pero o erro é semellante.
Este ficheiro só define unha función chamada división.
É preciso un argumento a, b un argumento,
ea intención é facer un dividido por b.
Pero fai unhas comprobación de erros,
así sabemos que as cousas son estrañas se b acontece igual a cero.
Se b é cero, entón dividir iso en dous casos.
Xa podes ver o erro.
O primeiro caso - a é cero, entón estamos facendo cero dividido por cero,
e nós só dicir que non está definida.
O segundo caso - a non é cero,
entón é algo así como 1 dividido por cero, e só conectar o infinito.
Máis que devolva o usual, un dividido por b.
E aquí, nós estamos correndo estes tres casos,
e nós realmente executar división - el grita para min -
así, ignorando as advertencias do Clang -
fin de non-void función - parece non compilar este antemán.
Voltar 0.
Fai dividir - todo ben.
Com División / vemos 3, Infinity, Infinity.
Cero dividido por cero non debería ter retornado infinito.
E se aínda non descubriu o erro aínda - ou non viu iso antes -
vemos que estamos facendo a = 0.
Probablemente nós significou a == 0. Probablemente.
>> Pero este foi realmente algo que, unha vez máis, en 2003, o kernel Linux -
entón o noso aparello emprega o núcleo de Linux -
calquera sistema operativo Linux usa o núcleo de Linux -
así un erro moi semellante a esta apareceu.
A idea detrás dese erro era -
de novo, non foi só algunha función que foi chamado, e fixo un pouco de verificación de erros.
Había algunhas entradas específicas que esta comprobación de erros -
debería ser así, todo ben, non se pode chamar esta función con un divisor de 0.
Entón, eu estou indo só para volver algún erro.
Excepto que non era tan inocente como só a creación dun igual a 0.
En vez diso, esta liña de código acaba facendo algo máis como usuario administrador =.
Ou user = superusuario.
Foi un inocente - a primeira vista - erro que podería ser só razoable
que eu só quería informar algo específico
se o usuario pasou a ser o administrador do superusuario.
Pero, entón, volver a pensar sobre iso, a persoa quería que parecese como un simple erro de dixitación,
pero este código realmente fora liberada,
entón sería capaz de invadir calquera sistema, pasando unha bandeira específica -
neste caso, b = 0 -
e sería automaticamente o usuario que o administrador
e el ten control total.
Iso aconteceu en 2003.
>> Aconteceu entón que a única razón foi capturado
foi porque pasou de haber algún sistema automatizado
que entendeu o cambio nese ficheiro
que nunca debería ser modificado por un humano.
O ficheiro só debe ser xerado automaticamente.
Aconteceu entón que alguén tocou -
así, a persoa que quería cortar tocou o ficheiro,
eo ordenador trabado que tocar.
Entón, eles cambiaron iso e só máis tarde entendeu o desastre sería
este saíra para o mundo real.
>> Vostede pode estar pensando que - volvendo ao noso exemplo compilador -
aínda que non pode ver - ollar o código fonte -
que nada en particular é malo,
se nós realmente ollar para o código binario do compilador,
veremos que algo está mal.
Como exemplo, se executar as cordas funcionar -
que está indo só para ollar sobre un ficheiro e imprimir todas as cordas que pode atopar -
se corremos cordas no noso compilador,
vemos que unha cadea de caracteres que atopa é este estraño -
else if (strcmp (nome de usuario, "hacker") - bla, bla, bla.
Se alguén pasou a ser paranóico o suficiente para non confiar no seu compilador,
eles poderían facer cordas e ver iso,
e entón eles saben que había algo mal co binario real.
Pero, cordas foi, inevitablemente, algo que foi compilado.
Entón, quen pode dicir que o noso compilador non só un código máis especial
que di que, se cordas é sempre executado no noso compilador, a saída non é todo de que o código malicioso.
>> A mesma idea con se queremos dis-montar o arquivo -
nós aprenden que a montadora trae-nos o código de montaxe dun código de máquina -
podemos ir na dirección oposta - objdump-d compilador -
nos dará a montaxe do noso código.
Mirando para iso,
é moi enigmático, pero quixésemos poderiamos ollar a través deste
e razón, espera, hai algo suceder aquí que non debe estar a suceder,
e despois imos recoñecer que o compilador está facendo algo malicioso.
Pero, así como cordas, quen pode dicir que non era especial objdump-casetonado.
Basicamente, todo se reduce a non pode confiar en nada.
O punto do papel que está a ser chamado de "Confianza Confiar" é
en xeral, nós confío noso compilador.
Vostede compilar o código e esperar que faga o que lle pedir para el facer.
Pero, por que ten que confiar no compilador?
Non escribiu o compilador. Vostede non sabe o que o compilador é necesariamente realmente facendo.
Quen vai dicir que pode confiar?
Pero, aínda así, ben, quizais podemos confiar no compilador.
Hai decenas de miles de persoas que miraron para iso.
Alguén debe ter recoñecido que algo estaba a suceder co compilador.
>> E se nós só ir nun nivel máis profundo?
Podería ata ser o seu procesador.
Por máis ridículo que iso podería ser posible,
quizais haxa algún funcionario deshonesto de Intel que crea estes procesadores
que sempre que o procesador entende que está executando algún comando
que está feito o login no ordenador,
o procesador ha aceptar un usuario específico e combinación de contrasinal.
Sería incontrolado complicada,
pero alguén podería facelo.
Nese punto, se realmente vai abrir o seu ordenador para ollar o procesador
e utilizar un microscopio de recoñecer que estes circuítos non están aliñados como deben ser?
Ninguén xamais vai pegar ese erro.
Nalgún momento, só tes que desistir e confiar en algo.
A maioría da xente non confía no compilador neste momento.
Iso quere dicir que non necesariamente que ten que.
Mirando para un vídeo un tanto infame -
[Música dramática xogar]
[É un sistema UNIX. Sei que isto.]
[E todos os arquivos -]
Ela dixo: "É un sistema UNIX. Sei que iso."
Substitúe UNIX co que o seu sistema operativo favorito é -
podería ter dito: "É un sistema Windows. Sei que iso."
É unha declaración completamente sen sentido,
pero, polo que sabemos, ela pasa a coñecer un porta dos fondos no sistema UNIX.
Ela sabe algunha combinación de usuario / contrasinal que vai realmente deixar la
facer o que ela quere.
>> Todo ben. A moral de hoxe é, basicamente, non pode confiar en nada.
Mesmo as cousas que escribe - non escribir o compilador.
O compilador pode ser malo.
Mesmo se non escribir o compilador, o único que está executando o compilador podería ser malo.
(Risas) Non hai moito que podes facer.
O mundo está condenado.
Voltar David!
[Aplausos]
>> [David] Grazas. Isto foi realmente deprimente.
Pero, en realidade, Rob é correcta.
Nós realmente non temos unha solución para iso, pero está a piques de recibir algunhas solucións
para algunhas defensas máis comúns.
En anticipación a iso, o que Nate e eu teño feito nos bastidores hai
é saber que hai tantos portátiles nesta sala,
estamos cheirando todo o tráfico sen fíos pasar por este espazo para os últimos 20 minutos
durante a charla de Rob, entón imos facer unha pausa 2 minutos aquí.
Nate vai montar, e despois imos falar sobre todas as cousas
que se podería atopar. (Risas)
>> Entón, eu podo ter esaxerado un pouco só por unha cuestión de drama,
pero podería ser cheirando todo o tráfico sen fío, porque de feito,
é así tan fácil.
Pero tamén existen formas que pode protexer contra iso, e así, con que,
Eu darlle Nate Hardison. >> [Nate] Sweet.
(Aplausos)
>> [Nate] Grazas, cara. Eu aprecio o grito para fóra.
Todo ben! É a semana do xogo. Vostedes están animado?
Esperamos que vai ser un gran xogo o sábado.
Eu imaxino que vós neste momento - unha vez que ten unha proba na Mércores
todo sobre o código, e só Sáb través dunha charla marabillosa por Rob
con unha morea de código C nel -
son quizais un pouco canso de código.
Nesta parte, non estamos realmente indo a tocar en calquera código que sexa.
Nós só imos falar sobre unha tecnoloxía que usa todos os días,
moitas veces para moitas, moitas horas ao día,
e imos falar sobre as implicacións sobre a seguridade que existen.
>> Nós falamos moito sobre a seguridade ao longo do semestre,
e nós comezamos cun pouco de cifrado.
[Bdoh lv vwlqng!]
E mentres vostedes están probablemente super-animado para estar pasando notas para o outro
en clase mediante unha cifra de César como esta,
en realidade, hai un pouco máis de diversión para ser tido cando está realmente a falar de seguridade
e este tipo de cousas.
Hoxe, nós estamos indo para cubrir algunhas tecnoloxías
que a xente realmente usar no mundo real para facer todo tipo de cousas
de sniffing paquetes persoas para realmente entrar e
invadir contas bancarias das persoas e todo iso.
Estas son ferramentas lexítimas de que estamos falando
coa excepción de que, finalmente, unha ferramenta.
>> E eu só quero facer un aviso rápido.
Cando falamos sobre isto, nós estamos falando sobre eles para que vostede sabe o que está aí fóra,
e está consciente de como ser seguro cando está fóra de usar o ordenador.
Pero nós definitivamente non quere dicir que ten que usar esas ferramentas
no seu dormitorio ou a súa casa, pois pode correr en lotes de grandes cuestións.
Esta é unha razón, hoxe, que realmente non estaban cheirando seus paquetes.
>> Todo ben. O pasado luns, falamos sobre as cookies, e HTTP e autenticación,
e como Firesheep abrir esta porta grande na súa conta de Facebook,
a súa conta de Hotmail - se alguén aínda usa Hotmail -
e moitas outras contas.
Unha gran cantidade deste material vai construír fóra do que,
Pero, primeiro, quero facer un tour rápido de como a Internet ten evolucionado ao longo do tempo.
Nos anos 90, vostedes poderían lembrar realmente conectar
seus ordenadores con un destes.
Agora nós non facemos iso moito máis.
Realmente que, a fin de conectar un cable Ethernet no meu portátil,
Eu agora teño que usar un destes adaptadores, que é unha especie de loucura.
>> En vez diso, en 1997 tivemos esta tecnoloxía nova e divertida
saíu que é coñecido como IEEE 802.11, polo que este é o estándar de Internet sen fíos
O IEEE é este órgano que dá a todos os tipos de -
publica todo tipo de patróns con relación aos ordenadores.
Os 802 patróns son todos sobre tecnoloxías de Internet.
Entón, 802.3, por exemplo, é o estándar Ethernet,
802.15.1, creo, é o estándar Bluetooth,
e 802,11 é todo sobre Internet sen fíos.
En 1997, este saíu. El non chegou a incorporarse inmediatamente.
Non foi ata 1999 eo modelo 802.11b saíu que quedou moi popular.
>> Como moitos de vostedes lembran cando os ordenadores comezaron a saír e quedando wi-fi sobre eles?
Iso foi legal, ne?
Lembro o meu primeiro portátil na escola,
e tiña unha placa sen fíos nela.
Meu pai me deu e foi dicindo que eu debería usalo para os meus aplicacións da facultade e de todos os que,
e eu non tiña idea de como eu ía buscar este material on-line.
Pero, afortunadamente, eu tiña unha tarxeta sen fíos, de xeito que foi moi legal.
Hoxe en día, tamén vai ver 802.11g, que é un dos outros realmente popular
patróns sen fíos que está aí fóra.
Ambos b e g son bastante desactualizados neste momento.
Alguén sabe cal é a versión maioría das persoas están neste momento
se eles están a mercar novos routers sen fíos e este tipo de cousas?
N. Exactamente. Bingo. E verifícase que o estándar de corrente alterna está saíndo dunha fase de proxecto,
e hai outras versións sobre o camiño.
Con cada un destes patróns que estamos gañando máis ancho de banda,
máis datos a unha velocidade máis rápida.
Esas cousas seguen cambiando moi rapidamente.
Tamén fai que nós temos que mercar máis routers e todas esas cousas divertidas.
>> Imos falar sobre o que realmente é a comunicación sen fíos no seu núcleo.
Con Ethernet e os vellos módems dial-up,
realmente tiña esa cousa que conectado ao seu ordenador,
e entón conectado a un módem de tipo, e entón plug nunha toma de parede.
Tiña esa conexión con fío, non?
O punto enteiro de fío é se librar destas cousas.
Co fin de facer iso, o que temos é esencialmente
unha comunicación de radio, onde o noso router sen fíos -
designado polo noso pequeno icono sen fíos -
está conectado a Internet con esta frecha sólida indicando algún tipo de conexión con fío,
pero cando se conectar ao router sen fíos
está realmente usando case como un Walkie-Talkie entre
o ordenador eo roteador sen fío.
O que é realmente legal sobre iso é que pode moverse.
Pode levar o seu ordenador todo Sanders, vai navegar na web, o que sexa,
como todos coñecemos e amamos,
e non tes que sempre ser conectado a nada.
Para que isto funcione, temos tanto a recepción deste e de transmisión.
É realmente como que Walkie-Talkie.
>> Este router sen fíos - que Sanders está sentado debaixo deste estadio, aquí -
sempre transmitindo e recibindo, transmitindo e recibindo,
e do mesmo xeito, os ordenadores están todos facendo este tipo de cousas, tamén.
Nós simplemente non podemos oín-lo.
A outra cousa que podes facer é que pode ter varios ordenadores
falando ao mesmo router sen fíos.
O máis próximo estea un router - e, de novo, esta é unha comunicación de radio -
canto máis preto está, mellor o sinal, mellor o seu ordenador 'oe' roteador
e pode comunicarse a Internet.
Se vostedes están sempre no seu dormitorio, na súa casa e está a se pregunta por que o seu sinal é malo,
probablemente é porque a). non está moi preto do seu encamiñador ou
b). hai algo entre vostede eo seu roteador como unha parede de cemento ou algo
que non deixa as ondas de radio pasan.
>> Imos falar un pouco sobre o porqué de bandidos como wi-fi.
Bandidos amo wi-fi por algúns motivos.
Aquí está o noso cara desagradável malo alí.
Unha razón pola que este cara malo ama wi-fi
é porque, por defecto, unha morea de routers wireless veñen e cando configure-los,
están sen criptografía.
Este foi un problema, e ten habido casos -
varias instancias, agora - onde vilán mostra-se para a casa de alguén,
enténdese que hai un sen cifrado Wi-Fi para que poidan conectarse.
Eles se conectan a internet wi-fi, e entón comezar a baixar todo tipo de cousas divertidas.
E eles non están baixando Gatinhos, non está baixando crías.
Isto é como o BitTorrent. Esta é a desagradábel do máis desagradable.
Houbo casos en que o FBI aínda envolvido
pensar que a persoa que ten a casa é realmente o
ir alí e baixando cousas que realmente non debería ser.
Tendo unencrypted wi-fi non é sempre algo que quere facer,
só para non ter o FBI vén bater á súa porta.
>> Outra razón pola cal os malos amo wi-fi
é a razón que David falei anteriormente durante o período.
Porque é unha comunicación de radio no seu núcleo,
Se sabe a canle, pode escoitar a emisora ​​de radio.
Por exemplo, se hai un dereito malo alí sentado no medio á dereita a carón do punto de acceso,
ben próximo ao roteador sen fío, o bandido pode escoitar todo o tráfico sen fíos
que a partir de todos estes ordenadores.
En realidade, estes faces - eses poucos afortunados que están aquí na fila de diante -
porque son super-preto de todos estes routers sen fíos
que sentir-se debaixo do escenario,
eles serían capaces de escoitar o tráfico de todos nesta sala enteira
se está conectado a internet wi-fi e comezar a navegar a través destes puntos de acceso.
Non é moi difícil sentir-se nunha boa posición para farejar e descubrir
o que os outros están facendo.
É algo para manter presente, especialmente se non está seguro de onde o punto de acceso e,
e está navegando, digamos, nun Starbucks.
>> Acontece que sniffing e todo iso
non é realmente difícil de facer.
Hai un programa chamado tcpdump que botan todo tipo de tráfico TCP
e pode executa-lo moi sinxelo - así como eu fixen esta mañá.
Aquí está un pouco de un despejo, e aquí está parte do tráfico que estaba benvida
miña rede na actualidade.
Podes ver - se é Vesgo realmente difícil - hai un pouco de Spotify alí.
No cumio do tcpdump - porque este é un tipo de dor de usar -
hai un programa chamado Wireshark que embalaxe todo isto en unha interface gráfica agradable.
Wireshark é super-man, así se pasar a ter clases de rede,
esta é unha ferramenta que vai amar, xa que axuda a dissecar todos os paquetes
que están flotando por aí.
Pero tamén pode ser usado para o mal.
É moi sinxelo, só tes que baixar este programa, arrinca,
iniciar unha captura de rede, para ver todo o que está a suceder -
e filtrar e facer todo tipo de cousas divertidas con el.
>> A outra cousa que podes facer coa comunicación sen fíos
é non só podes escoitar, pero tamén pode aprender a xogar coa rede
e inxectar as súas propias información para controlar a experiencia que outras persoas
na mesma rede sen fíos está comezando.
Imos dar un ollo niso.
Aquí está o Firesheep - que nós coñecemos e amamos desde a semana pasada -
que é o que a tecnoloxía de espionaxe.
Se, por exemplo, queriamos activamente o noso go bad guy e xogar con
un deses ordenadores,
Neste escenario, temos un ordenador que intenta surf para harvard.edu.
O que pasa é, o primeiro ordenador envía unha mensaxe ao roteador sen fío e di:
hey, eu quero ir www.harvard.edu visita.
Digamos, por algunha razón, eles están tentando obter información sobre o xogo deste fin de semana.
Cara malo, xa que el está sentado no medio,
ben próximo ao punto de acceso, pode ver que a comunicación vén do ordenador
no router, e el sabe, "Aha! Alguén vai harvard.edu". (Maldosamente risas)
Non vai ser esta latencia mentres a comunicación vai do router
a Internet para ir atopar a páxina na harvard.edu -
así como vostedes todos saben despois de facer o seu PHP serie de exercicios -
e así o bandido ten un pouco de tempo, un pouco de ventá,
en que pode responder con algunhas cousas.
>> Imos dicir que este cara malo, por suposto, é unha Yaley.
El responde con harvardsucks.org. Boo!
Cara moi, moi malo! Yaley malo!
Ou, peor aínda, pode responder con iso. [Http :/ / youtu.be/ZSBq8geuJk0].
Eu vou deixar vostedes descubrir o que é.
Esta é realmente unha tecnoloxía chamada Airpwn! que foi estreada en
unha das conferencias de seguridade de hai uns anos.
Con Airpwn! vostede é realmente capaz de inxectar o tráfico de volta para a rede.
Os ordenadores que estaban tentando ir a Internet e tentar chegar a
Google.com, para Facebook.com, para harvard.edu
ver a resposta malicioso entrar e asumir inmediatamente, ok,
esa é a resposta que eu estaba esperando e acaban recibindo o contido
harvardsucks.org ou nameyourfavoriteshocksite.com,
e podes ver como rapidamente as cousas van peor.
>> Todos estes tipos de cousas non se pode facer
con estas conexións con fíos, pois con unha conexión con fío
é difícil de espiar para o tráfico.
Se eu son un cara mal e nunha extremidade é o seu ordenador
e do outro lado é o seu router - o seu módem -
a única forma que eu poida poñerse en entre esa conexión é realmente emendar o meu ordenador
en algún lugar no medio
ou facer outra cousa co router, participada algo así.
Pero con wireless, que pode ser tan sinxelo coma sentada na fileira da fronte dunha aula,
e pode facer todo tipo de cousas desagradables para as persoas na parte de atrás.
>> Imos falar sobre como pode defender algunhas destas cousas.
As persoas que desenvolveron os patróns sen fíos - a - 802,11
eles non son persoas burras por calquera extensión da imaxinación.
Esta é unha tecnoloxía legal e cando estreou en 1999,
saíron con este estándar chamado WEP.
Podes ver aquí cando intenta e participar nunha rede sen fíos,
ten todo tipo de opcións de seguridade diferentes.
Isto é un tipo de dor, porque hai seis todos xuntos
e nunca realmente ten sentido que unha participar.
Este 1 arriba é o primeiro que veu con chama WEP.
WEP significa Wired Equivalent Privacy, creo eu,
Non Wireless Encryption Protocol que é un equívoco común.
Porque intenta darlle o equivalente a privacidade e protección de seguridade
equivalente ao dunha rede con fío
Con WEP que acaba pasando é,
ten unha contrasinal simple e pouco que escribe e que serve para cifrar
todas as súas comunicacións entre o seu ordenador eo roteador.
>> Cal é o problema con WEP aínda?
O contrasinal con WEP é moi curto,
e tamén todo o mundo usa a mesma contrasinal exacta,
e por iso é moi doado de descifrar.
Entón, moi rapidamente as persoas descubriron que o WEP era un problema,
ea única razón que velo amosar-se aínda sobre este cara é pouco -
existen algúns sistemas máis antigos que usan WEP -
o que debería estar a buscar son o WPA e WPA2 mesmo patróns
que foron liberados máis tarde.
Estes sistemas son un ir moito mellor en protección en Internet sen fíos.
Dito isto, eles aínda teñen algún Hackability.
Existen ferramentas aí fóra, que pode ir facelo.
Unha cousa en particular que pode ser desagradable é que
se conectar e rexistrado para un router sen fíos e usa algún tipo de
comunicación cifrada, verifícase que un hacker pode facilmente enviar un único paquete
Para desactivar vostede do router,
e unha vez que xa desconectado, ten poden entón escoitar -
poden cheirar os paquetes como tentar restablecer a conexión co router.
E con esa información que pode, entón, entrar e descifrar o resto da súa comunicación.
Este non é de forma algunha calquera tipo de seguro ademais de toda imaxinación.
>> A outra cousa que podes facer cando se está a creación de redes sen fíos
ou se está xuntando a eles é - vostede entender que aquí cando eu estou xuntando esta rede,
el pide para o nome da miña rede.
Isto tamén é coñecido como o SSID.
E mira aquí que na dereita eu teño unha caixa que me amosa os SSIDs dispoñibles.
Hai unha Universidade de Harvard, unha CS50 e CS50 unha rede persoal.
Agora, como moitos de vostedes sabían que había unha rede de Persoal CS50 redor?
Algúns de vostedes. Non todos vostedes.
O problema con iso, está claro, é que se non poñer isto na nosa lista de SSIDs,
ninguén sabería sobre iso máis probable.
Espero. A menos que vostedes están tentando crack na nosa sen fíos.
Pero iso é algo que pode facer que é realmente importante cando está configurando
un router na casa.
Iso probablemente non vai ocorrer durante uns anos para unha morea de ti,
Pero teña presente que o mantemento desta SSID de alí e tampouco nomealo
algo super común axudará mantelo máis seguro a longo prazo.
>> Unha parella finais de cousas que podes facer. Un é HTTPS.
Se vostede está en un Starbucks, se está nunha zona wi-fi público
e decide facer para acceder a súa conta bancaria, acceder ao seu Gmail, o seu Facebook,
asegúrese de que estas conexións están indo por HTTPS.
É unha capa adicional de seguridade, unha capa adicional de cifrado.
A única cousa a ter presente aquí é,
cantos de vós xa clicaram en que a pantalla grande, vermella, que di:
"Este sitio pode ser malo."
Sei que teño.
É, probablemente, cando está navegando todo para ir ver Patria ou algo así, non?
Si (Risas) É. Alí vai. Nós sabemos quen está a asistir Patria.
Que a pantalla grande, vermello alí
moitas veces indica que algo funky está a suceder.
Ás veces é só o sitio en si é certo,
pero que aínda pantalla grande, vermella xorde cando a xente está intentando
montaxe de rede ataca en ti.
Entón, se ves que a pantalla grande, vermello chegar nun Starbucks,
non prema por el.
Malas novas. Bad News Bears.
>> A última cousa que vostede pode ver
é algún tipo de VPN.
Este VPN está dispoñible a través de Harvard - vpn.fas.harvard.edu -
eo que isto significa que, en realidade, establece unha conexión segura
entre vostede e Harvard, funis de tráfico do seu medio-lo,
e de que xeito se está sentado en un lugar como a Starbucks
pode conectarse a Harvard, conseguir que o tráfico seguro, e despois buscar en Harvard.
De novo, non é infalible. As persoas poden estar no medio.
Poden comezar a rompe-lo, pero iso é moito máis seguro que confían na seguridade
do só wi-fi.
>> Todo ben. En suma,
cando está a creación de redes sen fíos,
cando está indo a usar sen fíos en público -
se é un Starbucks, se é Five Guys, se é b.good,
algo así - onde queira que eles teñen wi-fi -
ser consciente dos seus arredores.
Ser consciente de que as persoas poden facer.
E ser seguro. Non acceder á túa conta bancaria.
Podería ser un violento despertar se alguén aparece con contrasinal máis tarde.
Con iso, vaia vermello! E eu vou virar as cousas de volta para David por unha palabra final.
(Aplausos)
>> [David] Eu penso que eu ía compartir unha cousa coa experiencia persoal.
Unha ferramenta que pode gusta de xogar con - aínda que Apple practicamente erradicada esta cuestión
Se xa actualizou o seu software xa que -
pero para este fin de que realmente non ser capaz de confiar en software que usamos,
e puntos de Nate, sendo capaz de farejar un pouco do que as outras persoas están facendo
alí fóra - este era unha peza de software que saíu preto de un ano atrás-e-un-metade agora.
[IPhoneTracker] [http://petewarden.github.com/iPhoneTracker/]
Por algún tempo, o iTunes - antes iCloud, cando estaba sincronizar os seus iPods ou iPhones ou os seus
ou dos seus iPads con iTunes - no interese de copias de seguridade,
o que o seu iPhone e estes outros dispositivos veñen facendo hai tempo e
facendo uso de datos de GPS.
>> Todos saben, quizais, que os seus iPhones e Androids e Windows Mobile
e como nos días de hoxe pode seguir onde está no interese de amosar-lle mapas
e similares - ben o que Apple e estas empresas fan é
normalmente seguir case todos os lugares que realmente foi do interese de
mellora da calidade de servizo.
Un, pode recibir máis publicidade segmentada e similares,
pero dous, eles tamén poden descubrir onde hai hotspots sen fíos do mundo,
e isto pode axudar con xeo-localización - unha especie de triangulación da posición das persoas.
>> Para reducir a historia, todos nós tiñamos andado antenas para unha certa cantidade de tempo.
Desafortunadamente, a Apple tomou a decisión de proxecto - ou a falta dela -
para non cifrar esta información cando estaba sendo backup para o iTunes.
E o que o investigador de seguridade descubriu foi que este foi só un gran arquivo XML -
un arquivo de texto enorme - sentado en software persoas iTunes,
e se fose só un pouco curioso,
podería ir picando en torno á historia do seu cónxuxe, a historia da súa compañeira de cuarto,
a historia do seu irmán e similares,
e grazas a un software libre, pode trazar todas esas coordenadas GPS -
latitude e lonxitude.
>> Entón, realmente fixen iso co meu propio teléfono.
Liguei o meu teléfono, e con certeza, a miña versión de iTunes non foi codificado na época,
eo que eu era capaz de ver eran os meus propios patróns.
Aquí está os Estados Unidos e cada un deses círculos azuis representa
onde pasou de eu ter sido ao longo destes meses anteriores de ter este teléfono particular.
Eu gasto moito tempo, por suposto, no Nordeste, un pouco de tempo en California,
unha viaxe de curta duración para o Texas, e se entón ampliar ese -
este é todo tipo de multa e interesante, pero eu sabía que iso.
A maioría dos meus amigos sabía, pero se mergullar no máis profundo,
ver onde eu pasar a maior parte do meu tempo no Nordeste.
Se bloquear nalgunhas cidades de aspecto familiar -
este gran, mancha de tinta azul é esencialmente centrada sobre Boston,
e entón eu gastar un pouco de tempo nos suburbios que saen de Boston.
Pero eu tamén estaba facendo un pouco de consultar este ano.
E este ano é a costa leste, e realmente pode verme
e meu iPhone no meu peto viaxar cara atrás e cara adiante entre Boston e Nova York
e Filadelfia aínda máis para abaixo, así como gastar un pouco de tempo de vacacións
no Cabo, que é o brazo pouco alí fora.
Así, cada un destes puntos representa algún lugar que eu fora,
e completamente descoñecido para min, toda esa historia estaba alí, sentado
no meu ordenador de escritorio.
Se diminuír o zoom - esta, en realidade, foi un pouco preocupante.
Eu non tiña ningunha lembranza de nunca ser, en Pensilvania ese ano.
Pero a pesar de un pouco máis sobre iso e eu descubrir, oh, era en realidade a viaxe
e con certeza, o meu teléfono tiña me pegou.
>> Apple xa codificado esta información,
pero iso tamén é só proba de canta información está recollida sobre nós,
e como é doado - para mellor ou para peor - é aceptable.
Un dos take-aways espero falar de Rob, falar de Nate
e visuais pequenas como esta hoxe é só para ser todo o máis consciente deste
de xeito que, aínda que - como o punto de Rob - unha especie de nós estamos ferrados, non?
Non hai moito o que podemos facer cando se trata de algunhas destas ameazas,
pero ao final do día, temos que confiar en algo ou alguén
se queremos realmente usar esas tecnoloxías.
Polo menos podemos tomar decisións e decisións informadas calculados ou non
debemos realmente estar comprobando esta conta especialmente sensible
ou realmente debe ser o envío de que un pouco sospeitoso mensaxe instantánea
nun ambiente Wi-Fi coma este.
>> Entón, o que dixo, só unha permanece quiz, unha charla permanece.
Vemo-nos o mércores despois luns.
(Aplausos e exclamacións)
[CS50TV]