Português:
Eu gosto bastante de livros. Acredito que ainda não tenha lido metade da minha biblioteca, mas mesmo assim continuo comprando livros. No momento criei uma lista de livros na Amazon que eu gostaria de ter. Como achei que o resultado ficou uma lista legal, decidi criar este post comentando rapidamente o motivo do meu interesse no livro em questão. São todos livros em Inglês e não sei se há versão em Português. Meu objetivo aqui não é recomendar leituras porque neste post comento sobre livros que ainda não li. Os temas basicamente são: computação, criptografia, matemática, neurociência, linguagem e física. Vamos lá.
English:
Sorry but there is no English version of this post.
Português:
Eu gosto bastante de livros. Acredito que ainda não tenha lido metade da minha biblioteca, mas mesmo assim continuo comprando livros. No momento criei uma lista de livros na Amazon que eu gostaria de ter. Como achei que o resultado ficou uma lista legal, decidi criar este post comentando rapidamente o motivo do meu interesse no livro em questão. São todos livros em Inglês e não sei se há versão em Português. Meu objetivo aqui não é recomendar leituras porque neste post comento sobre livros que ainda não li. Os temas basicamente são: computação, criptografia, matemática, neurociência, linguagem e física. Vamos lá.
Rogue Code: A Jeff Aiken Novel (Jeff Aiken Series) por Mark Russinovich
Trojan Horse: A Jeff Aiken Novel (Jeff Aiken Series) por Mark Russinovich
Zero Day: A Jeff Aiken Novel (Jeff Aiken Series) por Mark Russinovich
Esses três livros acima, do Mark Russinovich, são romances envolvendo segurança de computadores e guerra cibernética. Apesar de eu não gostar muito de ler romances, esses do Mark Russinovich eu gostaria de ler, principalmente por causa do autor. O Mark Russinovich é autor de outro livro bastante conhecido na área de segurança, o livro Windows Internals em que é co-autor com Alex Ionescu e David A. Solomon. Esse livro é um dos mais recomendados para entender como o Windows funciona. Posso estar errado mas acho que ele também foi um dos primeiros a falar sobre uma técnica bastante conhecida na criação de rootkits chamada syscall hooking. Foi também o responsável pela descoberta do rootkit no famoso caso da Sony.
Countdown to Zero Day: Stuxnet and the Launch of the World’s First Digital Weapon por Kim Zetter
Esse livro descreve a história por trás do Stuxnet, vírus de computador que foi criado com o objetivo de sabotar o projeto nuclear Iraniano. Devido a este objetivo específico esse vírus é considerado uma das primeiras armas digitais. Countdown to Zero Day parece ser um livro interessante para entender um pouco melhor o que acontece por trás dos bastidores.
The Codebreakers: The Comprehensive History of Secret Communication from Ancient Times to the Internet por David Kahn
The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography por Simon Singh
Esses dois livros parecem ser bem interessantes, eles falam da criptografia desde o passado remoto até hoje com criptografia quântica. Acho bastante útil aprender história da criptografia, este conhecimento acredito ser útil para entender um pouco melhor o presente e o futuro. A evolução da matemática e da criptografia, passando pelos trabalhos de várias pessoas interessantes. Assim como um pouco da história sobre a Segunda Guerra Mundial e a influência da criptografia na história da humanidade. O primeiro livro é gigante, contém 1200 páginas já o segundo tem 432 páginas e não parece ser um livro tão superficial.
Peer Reviews in Software: A Practical Guide por Karl Wiegers
Eu não conheço esse livro nem o autor. Mas em uma das pesquisas pela Internet sobre code review/code auditing, eu acabei me deparando com ele. Parece um livro interessante para mim que gosto e faço bastante auditoria de código. Apesar de ter visto somente comentários positivos sobre este livro, seu eu fosse realmente comprá-lo acho que iria pesquisar mais sobre ele antes.
Bulletproof SSL and TLS: Understanding and Deploying SSL/TLS and PKI to Secure Servers and Web Applications por Ivan Ristic
Enquanto trabalhei como penetration tester, umas das vulnerabilidades mas chatas de analisar eram as vulnerabilidades envolvendo SSL/TLS. Não demorava muito para novas vulnerabilidades serem descobertas e assim os protocolos e recursos considerados seguros se tornarem não-recomendados rapidamente. Um novo ataque, por exemplo, foi demonstrado alguns dias atrás na Black Hat 2016, link. Como consultor, eu tinha que estar atualizado a essas novidades e não é um dos assuntos mais simples de se entender. A chatice era para encontrar vulnerabilidades, mas também para corrigí-las. O autor Ivan Ristic trabalhou na Qualys, Inc e é um dos responsáveis por trás do SSL Labs. Esse é um sistema web desenvolvido que pontua a configuração SSL/TLS de um website, assim, administradores de sistemas e consultores de segurança podem rapidamente analisá-lo. Há algum tempo que não lido com SSL/TLS em meu dia a dia mas me lembro que receber a pontuação máxima no SSL Labs não era uma das tarefas mais simples. Por isso gostaria de ler esse livro e aumentar meu conhecimento no assunto.
The Tangled Web: A Guide to Securing Modern Web Applications por Michał Zalewski
Silence on the Wire: A Field Guide to Passive Reconnaissance and Indirect Attacks por Michał Zalewski
Michał Zalewski, preciso falar algo? Ele é um dos grandes pesquisadores e profissionais da área de segurança da informação. Atualmente, segundo seu Linkedin, trabalha no Google como Information Security Televangelist. Autor de ferramentas bastante conhecidas como o tão famoso AFL, Skipfish, pOf e outras. Também descobriu importantes vulnerabilidades em diversos softwares usados amplamente pela internet como no protocolo TCP (Transmission Control Protocol) e no software SSH (Secure Shell). Ele é creditado pela vulnerabilidade que aparece no filme Matrix, identificada pelo CVE-2001-0144. Essa vulnerabilidade é um pre-auth SSH integer overflow. Isso significa que para explorá-la em um sistema não é necessário saber usuário e senha e este é um serviço bastante utilizado. Sobre os livros, eles são muito bem falados por aí.
Hacking the Xbox: An Introduction to Reverse Engineering por Andrew Huang
Eu lembro de ter visto esse livro em algum lugar pela Internet. Mas recentemente li uma antiga entrevista com seu autor, Andrew Huang. Aí juntei uma coisa com a outra. Eu conhecia o livro, mas não conhecia o trabalho do autor. A entrevista menciona vários trabalhos interessantes feitos por Andrew Huang e por isso meu interesse pelo livro aumentou.
Applied Cryptography: Protocols, Algorithms and Source Code in C por Bruce Schneier
Cryptography Engineering: Design Principles and Practical Applications por Niels Ferguson
Há um tempo eu decidi começar estudar criptografia e matemática. Anteriormente eu não tinha muito noção da matemática envolvida na criptografia, depois de ter lido algumas coisas sobre, inclusive alguns capítulos do livro Criptografia e Segurança de Redes, eu conseguir entender um pouco melhor. Foi assim que consegui implementar o algoritmo de criptografia considerado defasado atualmente chamado DES (Data Encryption Standard). Esse é um algoritmo de criptografia defasado mas o conhecimento que eu adquiri foi bastante útil, no tempo me envolvi com conceitos bastante conhecidos no mundo da matemática e criptografia, como Galois Field e cifra de Feystel e conheci o trabalho de alguns cientistas importantes como o próprio Evariste Galois, Claude Shannon e outros. Agora eu devo seguir o próximo passo que é tentar implementar o AES (Advanced Encryption Standard). Devido a este motivo tenho bastante interesse em adquirir os livros acima. Os autores são profissionais bastante conhecidos e respeitados na área de criptografia. O primeiro livro parece conter exemplos em C e é assim que gosto de aprender, lendo código.
Mac OS X and iOS Internals: To the Apple’s Core por Jonathan Levin
Tenho uma certa paixão em estudar sobre como os sistemas operacionais funcionam. E por que não estudar MacOS X e iOS? Compreender bem como dois sistemas operacionais distintos implementam determinado recurso/algoritmo não é nada simples. Mas eu gosto dessa abordagem por que acredito aprender muito dessa forma. Entender como o FreeBSD e o Linux gerencia a memória do computador permite aprender o que tem de melhor entre os dois sistemas operacionais, descobrir qual a melhor forma de implementar determinado algoritmo, saber se determinada falha afeta ambos sistemas operacionais e assim por diante. Por exemplo, a vulnerabilidade identificada pelo CVE-2012-0217, conhecida em inglês como sysret vulnerability, quando descoberta, afetava o sistema operacional FreeBSD, mas a mesma vulnerabilidade já tinha sido corrigida no Linux há alguns anos.
Gray Hat Python: Python Programming for Hackers and Reverse Engineers por Justin Seitz
Black Hat Python: Python Programming for Hackers and Pentesters por Justin Seitz
Eu pretendo comprar esses para aprender Python, óbvio. Sinceramente eu não tenho muita habilidade com Python e pretendo resolver esse problema. Não tenho dificuldade para fazer o que preciso, mas perco muito tempo fazendo buscas na Internet. Não entrarei aqui na questão se Python é bom ou ruim ou se existe linguagens melhores. Simplesmente gostei de Python e quero aprender, ela atende meus requisitos. O autor Justin Seitz no momento em que escreveu e publicou o livro ele trabalhava na Immunity Inc, uma conhecida empresa americana na área de segurança da informação. Além de eu querer aprender Python, já tive oportunidade de folhear o livro e achei o conteúdo bastante interessante e é focado, de acordo com o título, para Hackers e Pentesters.
Linux Kernel Networking: Implementation and Theory (Expert’s Voice in Open Source) por Rami Rosen
Para ser sincero não espero muito desse livro. Na verdade gostaria de comprá-lo pelo motivo que eu tenho quase todos os livros sobre o kernel do Linux, só me falta esse. Eu mencionei não esperar muito do livro mas não pelo conteúdo em si e sim pela utilidade para mim. Esses livros técnicos eu costumo usar como referência ou consulta, quando tenho uma certa dúvida consulto o livro para tentar achar a resposta e ultimamente tenho me frustrado por que não tenho encontrado as respostas nos livros. Outro problema é que a maioria dos livros sobre kernel do Linux não são recentes e estão um pouco desatualizados. O kernel do Linux muda constantemente. Por esse motivo quando vou aprender algo novo, por exemplo, criar um driver, eu prefiro ler o código-fonte de um driver existente e funcional ao invés de aprender pelo livro.
TCP/IP Illustrated, Volume 1: The Protocols (2nd Edition) (Addison-Wesley Professional Computing Series) por Kevin R. Fall
TCP/IP Illustrated: The Implementation, Vol. 2 por Gary R. Wright
TCP/IP Illustrated, Vol. 3: TCP for Transactions, HTTP, NNTP, and the UNIX Domain Protocols por W. Richard Stevens
Como mencionado anteriormente eu gosto de ler código e entender como as coisas funcionam, principalmente em se tratando de sistemas operacionais. Mas para eu poder entender como os protocols de redes são implementos em kernel-space, eu preciso entender como o protocolo funciona em si. Por isso acho interessante ter bons livros de referências ao lado. Esses livros são bastante famosos e por terem tanto crédito parecem ser um dos melhores guias para redes e por este motivo gostaria de tê-los em mãos. Esses dias conversando com um amigo que gosta de kernel, e mencionei que estava dando uma olhada na parte de redes, ele automaticamente me perguntou, já leu o TCP/IP Illustrated? Quando lendo código-fonte de protocols de rede, além de livros, também acho interessante consultar as RFCs, algumas das coisas implementadas pelo kernel são descritas em RFC. Esta semana foi corrigida uma falha grave no protocolo TCP no kernel do Linux e de acordo com o que vi rapidamente a falha é justamente em um recurso descrito por uma RFC. A vulnerabilidade foi identificada pelo CVE-2016-5696.
Compilers: Principles, Techniques, and Tools (2nd Edition) por Alfred V. Aho
Já venho querendo ter esse livro há muito tempo. Compiladores é um conhecimento que na minha opinião não considero somente útil mas sim essencial, pelo menos para mim. Muitas vezes precisei pegar um trecho de código e compilar em diferentes compiladores para no final saber se aquele trecho contém ou não uma vulnerabilidade. Muitas vezes precisei aprender sobre compiladores para poder entender determinado comportamento em meus códigos. Há também casos de problemas de segurança envolvendo compiladores, por exemplo esse caso em que uma validação presente no código-fonte foi removida pelo compilador e com isso resultou em uma vulnerabilidade que permitiu a escalação de privilégios no kernel do Linux. Recentemente li um post mencionando que a análise feita pela Kaspersky a respeito do Equation Group estava errada. Não vou entrar em detalhes sobre esse assunto, mas o erro mencionado no artigo é relacionado a compiladores. Uma característica no código utilizado pelo Equation Group que acreditava-se ser um padrão específico do autor na verdade é uma característica de um compilador específico (gcc). Um código-fonte de um programa em C é só um código-fonte. É necessário um compilador para que este código-fonte possa ser compilado e assim o resultado pode ser executado em um sistema operacional rodando em cima de um arquitetura específica. O livro também é interessante para quem desejar se envolver com análise de código como dynamic, static e/ou taint analysis, binary rewriting ou trabalhar com AST (Abstract Syntax Tree) e IR (Intermediate Language), foi por este motivo que acabei conhecendo esse livro.
The Art of Computer Programming, Volumes 1-4A Boxed Set por Donald E. Knuth
Hoje em dia eu não programo muito. Gasto muito mais meu tempo livre lendo código do que escrevendo. Eu estava programando bastante com o Redshift mas agora com o projeto parado já não programo mas no mesmo ritmo. Esses livros do Donald Knuth são bastante comentados em qualquer canto que se fale sobre programação. É o livro que se deve ter, de acordo com o que dizem. Pelo forte título, percebe-se a importância do livro, assim como no famoso artigo do Ulrich Drepper, “O que todo programador deveria saber sobre memoria” que recomendo para todo programador.
PCI Express System Architecture por Ravi Budruk, Don Anderson e Tom Shanley
Já faz um tempo que venho estudando ataques mais baixo nível, como SMM (System Management Mode), BIOS (Basic Input Output System), UEFI (Unified Extensible Firmware Interface) e assim por diante. Entender sobre a arquitetura PCI (Peripheral Component Interconnect) é interessante por que é uma das interfaces que lhe permite atacar estes softwares. Por exemplo, para entrar no modo SMM uma SMI (System Management Interrupt) precisa ser acionada e ela não pode ser acionada diretamente via software. Mas há meios de acionar uma SMI via PCI. O pessoal do Invisible Things Labs também usou PCI para poder comprometer o Xen, nesse caso o recurso chamado MSI (Message Signaled Interrupt), link. Por isso gostaria de ter esse livro para entender um pouco mais sobre como a arquitetura PCI funciona.
Platform Embedded Security Technology Revealed: Safeguarding the Future of Computing with Intel Embedded Security and Management Engine por Xiaoyu Ruan
Acredito que esse livro seja o único livro existente sobre esse assunto. ME (Management Engine). Essas duas palavras em Inglês compõem o nome de uma tecnologia da Intel que permite o gerenciamento remoto do computador. É basicamente outro nome da tecnologia que é popularmente conhecida por vPro. ME é um segundo processador existente em um processador Intel 6º geração, codinome Skylake. A palavra processador é bastante abstrata e não menciona detalhes internos mas existem muito mais coisas dentro de um processador – o pacote que você recebe quando compra um processador. Esse livro é um pouco antigo e fala sobre quando tal tecnologia ainda era usada nas placas-mãe. Anteriormente, o trabalho feito por esse segundo processador era realizado por um dos chipsets da placa-mãe.
Beyond BIOS: Developing with the Unified Extensible Firmware Interface 2nd Edition por Vincent Zimmer
Eu o sigo no twitter e ele sempre está compartilhando artigos do meu interesse. Perdendo tempo na Amazon pesquisando por livros sobre programação de baixo nível acabei me deparando com o livro acima. Sinceramente não o conhecia como autor. O livro tem também mais dois co-autores, Michael Rothman e Suresh Marisetty.
Incompleteness: The Proof and Paradox of Kurt Gödel (Great Discoveries) por Rebecca Goldstein
Computability: Turing, Gödel, Church, and Beyond (MIT Press) por B. Jack Copeland
Esses dois são os mais difíceis de descrever. Eu tenho dois motivos para estar interessado nos livros acima. O primeiro é só por causa de um nome: Kurt Gödel. O segundo, por que quero melhorar minha compreensão sobre teoria da computabilidade. Falando sobre Gödel, ele foi um brilhante matemático austríaco que têm entre seus principais trabalhos os teoremas da incompletude. Eu já li bastante sobre estes teoremas mas acho que na verdade nunca consegui compreendê-los corretamente. Entretanto consigo certamente entender o impacto de seu trabalho que é considerado um dos mais importantes do século 20.
The Particle at the End of the Universe: How the Hunt for the Higgs Boson Leads Us to the Edge of a New World por Sean Carroll
Cheguei na Amazon e digitei “Higgs”. Meu objetivo era achar algo escrito pelo Peter Higgs, pelo que sei o Higgs não escreveu nenhum livro mas mesmo assim arrisquei. No meio dos resultados o que me chamou a atenção foi este livro acima escrito pelo Sean Carroll. O motivo de tê-lo escolhido no meio dos resultados é por-que além do assunto ser do meu interesse também conheço um pouco o Sean Carroll, pelo menos já assisti alguns videos dele. Peter Higgs ganhou o Prêmio Nobel de Física em 2013 e é um dos principais cientistas responsável pela teoria do bóson de higgs, partícula sub-atômica que foi descoberta em 2012, motivo pelo qual Peter Higgs compartilhou o Prêmio Nobel de Física no ano seguinte com outro cientista.
Cycles of Time: An Extraordinary New View of the Universe por Roger Penrose
Simplesmente cheguei na Amazon e digitei “Roger Penrose“. Acho que qualquer livro escrito por Roger Penrose eu gostaria de ler. Quem assistiu o filme A Origem, deve ter ouvido falar sobre um dos seus trabalhos, se não, então não prestou atenção no filme. Roger Penrose é considerado um dos maiores matemáticos ainda vivo. Um dos seus trabalhos é a Escada de Penrose, que aparece no filme A Origem. Mas esse é somente um dos seus trabalhos, quem quiser saber mais pode consultar sua biografia na Wikipedia. Eu não conheço o trabalho dele por isso gostaria de ler o livro mas sei que ele trouxe contribuições consideradas importantes na área de física matemática.
The Foundations of Science: Science and Hypothesis, The Value of Science, Science and Method por H. Poincaré
The Value of Science: Essential Writings of Henri Poincare (Modern Library Science) por Henri Poincaré
Quando li sobre Henri Poincaré pela primeira vez me espantei pelas palavras que usam para descrevê-lo. Henri Poincaré foi um grande matemático que viveu durante os finais do século 19. Ele é notavelmente citado por suas excelentes habilidades em todos os ramos da matemática. Lembro que fui apresentado ao trabalho de Henri Poincaré através das revistas Scientific American que costumo comprar e li um artigo falando sobre o trabalho dele, algo como o papel da hipótese na ciência. Ultimamente venho até pensando sobre o papel da hipótese na área de software exploitation. Ele contribuiu com a teoria da relatividade, entretanto pouquíssimas pessoas ouviram falar dele mas acredito que essas mesmas pessoas ouviram falar sobre Albert Einstein. Independente quem foi o real criador ou não, o papel fundamental de Henri Poincaré na história é indiscutível.
Surely You’re Joking, Mr. Feynman! (Adventures of a Curious Character) por Richard P. Feynman
The Feynman Lectures on Physics, boxed set: The New Millennium Edition por Richard P. Feynman
Quando meu interesse por física começou a surgir, gastei muito tempo inicialmente lendo biografias. E o Richard Feynman foi uma das que mais me despertou interesse. Prêmio Nobel de Física em 1965 por seu trabalho no desenvolvimento da mecânica quântica, entre seus trabalhos está a criação da QED (Quantum Electrodynamics), os diagramas de Feynman, seu envolvimento no Projeto Manhattan e na equipe que analisou o acidente do ônibus espacial Challenger. Acredito que o primeiro livro indicado é sobre sua história e vida e o segundo um clássico que contém as aulas ministradas por ele na universidade Caltech, California. No primeiro há um texto que já conheço que fala sobre o ensino de física no Brasil, link. Como tenho interesse em realmente aprender matemática e física, esse segundo livro é de bastante utilidade para mim.
The Language Instinct: How the Mind Creates Language (P.S.) por Steven Pinker
The Sense of Style: The Thinking Person’s Guide to Writing in the 21st Century por Steven Pinker
How the Mind Works por Steven Pinker
Words and Rules: The Ingredients Of Language por Steven Pinker
Além de computação também gosto de neurociência. É por causa disso que conheço o Steven Pinker. Mas meu interesse pelo seus livros nos dias atuais não se deve especificamente à neurociência, mas sim por causa da linguagem. Recentemente venho vagarosamente estudando linguagem e o Steven Pinker é um psicólogo e linguista conhecido da área. Além do Inglês que foquei bastante recentemente, também fiz um mês de curso de Polonês e continuo estudando desde então. Acredito que a língua influencie no pensamento, por isso tenho passado algum tempo pesquisando sobre o assunto. Esses livros são interessantes para aprender um pouco mais sobre como a linguagem funciona.
The Man Who Mistook His Wife For A Hat: And Other Clinical Tales por Oliver Sacks
Conheci o trabalho do neurologista Oliver Sacks em um podcast do pessoal do Nerdcast. Inclusive esse livro é mencionado no podcast. De lá para cá comecei a me deparar com o nome dele. Ainda não li nenhum livro do Oliver Sacks mas posso dizer que aprendi muita coisa com ele. Infelizmente ele faleceu em Agosto do ano passado. Antes disso ele escreveu o seguinte artigo.
Bom, no total são 38 livros. Pode demorar, porém pretendo compra-los e lê-los pelo ou pelo menos a metade deles. Alguns dos livros não são baratos e não sei quando vou poder comprá-lo, tem também que são bem antigos e hoje em dia podem não ter tanta relevância mas particularmente gostaria de tê-los em minha biblioteca. Caso algum leitor já tenha lido algum dos livros e quiser comentar, sinta-se a vontade.
English:
Sorry but there is no English version of this post.