Jump to content

trevizan

Apoiador Nibble
  • Content Count

    45
  • Joined

  • Last visited

  • Country

    Brazil

Community Reputation

23 Excellent

1 Follower

About trevizan

Recent Profile Visitors

1,041 profile views
  1. De nada e grato por responder à minha curiosidade. Espero que atinja seu objetivo. Boa sorte!
  2. Não sei se você é familiarizado, mas comumente projetos "abertos" têm seus códigos-fontes disponíveis. Tome cuidado para você não estar infringindo nenhuma cláusula de direito autoral. Ok?! Procure saber sobre a licença antes de utilizar o software, principalmente se for utilizar para fins comerciais. Isso que você está querendo fazer chama-se engenharia reversa. Para grande maioria dos casos, não é uma tarefa nada simples de executar. Além disso, envolve um certo dilema ético e legal. No canal papo binário lá no youtube tem um curso inteiro sobre isso, e aqui no site também há um livro sobre o assunto.
  3. Qual o nome desse projeto?
  4. Nessa semana que passou, o NIST anunciou os algoritmos criptográficos resistentes a computadores quânticos (ou algoritmos criptográficos pós-quânticos) aprovados para a próxima rodada do processo de padronização. Sete algoritmos são considerados finalistas (4 para cifração com chave pública e acordo de chaves, e 3 para assinaturas digital). Além disso, foi divulgada uma lista com oito alternativas de algoritmos que continuam como canditatos a serem padronizados futuramente. Para saber mais: https://csrc.nist.gov/projects/post-quantum-cryptography/round-3-submissions https://ladailypost.com/nist-post-quantum-cryptography-enters-selection-round/
  5. Hoje, 28/02/2020, foi resolvido o desafio RSA-250 (829 bits). https://lists.gforge.inria.fr/pipermail/cado-nfs-discuss/2020-February/001166.html O mesmo grupo de trabalho também resolveu o RSA-240 (795 bits) recentemente, em 02/12/2019. https://lists.gforge.inria.fr/pipermail/cado-nfs-discuss/2019-December/001139.html
  6. Mais comumente, primeiro é executado o processo de descompressão, jogando o binário do software inteiro na memória, e depois executa-se o software final, mas também é possível descomprimir dinamicamente de acordo com o fluxo de execução, nesse caso o controle será muito mais complexo.
  7. Olá, é bem difícil aconselhar pois são cursos bem distintos com diferentes focos. O importante é ter em mente que durante a graduação você deve focar em estabelecer bases sólidas para a sua carreira após a graduação. Eu fiz graduação em sistemas da informação, mestrado em eng. da computação e quase terminei o doutorado na mesma área do mestrado, mas tive que interromper. Fica claro que me achei mais em engenharia, mas não me arrependo em nada em ter feito graduação em sistemas. A área da segurança é bem abrangente também, mas vou tentar dar minha visão (generalizando em alguns pontos): Sistemas de informação vai te dar uma base sobre como a computação pode ser utilizada em sistemas e processos corporativos com um viés sócio-técnico. Se você acha que tem mais esse perfil, meu conselho é: não negligencie as disciplinas de humanas, pois elas te farão diferenciado. Esse tipo de curso pode ser muito bom se você quiser trabalhar com processos de segurança da informação, compliance, auditoria, etc... Em ciência da computação você vai obter uma base matemática forte, focando bastante em entender a teoria da computação e sua evolução. Em geral oferece uma base sólida bem específica, e você não necessariamente vai usá-la de forma clara no dia-a-dia, mas vai servir muito bem para entender o que acontece dentro das "caixas pretas" (para a maioria dos trabalhos em corporações, estou generalizando de acordo com o que observo no mercado). Essa base é bem importante se você quiser trabalhar com ciência de dados, engenheria reversa ou criptografia, por exemplo. Para o curso de engenharia de software eu não consigo opinar muito, mas me parece sistemas de informação com menos parte de humanas/ sócio técnico e com extras de tecnologias. Muita coisa aplicada que é fácil aprender na prática ou em cursos extra curriculares. Também senti falta de algumas disciplinas tradicionais presentes na grade da maioria dos cursos de engenharia, como: cálculo 2 e 3, cálculo numérico, resistência dos materiais, mecânica dos fluídos, etc... Pensando na área da segurança parece interessante para quem quer atuar em processo de desenvolvimento seguro. Do curso de inovação, eu achei muito aberto e, na minha opinião, demanda muita maturidade para escolher bem as optativas , acho que seria mais ideal se você já tivesse uma base sólida em computação, pelo menos um bom curso técnico ou tecnológico, e já estivesse atuando no mercado e sabendo muito bem o que quer. Além disso, você pode enfrentar o obstáculo dos recrutadores não saberem exatamente do que se trata seu curso e se o mesmo ofereceu as bases que você precisa para preencher determinadas vagas (novamente estou generalizando com base no que observo, não realizei nenhum estudo que prova esse ponto de vista). Você também pode dar uma olhada na grade de engenharia da computação, que além de uma base de algoritmos vai te oferecer base em hardware, interessante se você quiser atuar em áreas de infraestrutura (redes, virtualização, devops, por exemplo), áreas que interagem com hardware e dependem da arquitetura e da organização dos computadores (engenharia reversa, análise de malware, desenvolvimento de drivers e componentes de S.O., etc...) ou em sistemas embarcados (automação industrial, agrícola, residencial, etc.., dispositivos dedicados ou Internet das coisas). Também é importante notar que os cursos de engenharia costumam ser mais caros e de maior duração. Espero ter ajudado.
  8. Basicamente eu vi quais valores precisavam ser testados (os que não eram múltiplos de 2, 3 ou 5) a partir do número 7 e notei que essa sequência de incremento se repetia (como um padrão): 4, 2, 4, 2, 4, 6, 2 e 6. Validei os resultados de 2 a pouco mais de 32 mil e não apresentou nenhum retorno incorreto para o intervalo. Enfim, o problema é que a complexidade de todos esses algoritmos ainda é da ordem de grandeza de raiz quadrada de n, ou seja, ainda é alta. Eu preciso estudar melhor o crivo de Erastótenes para opinar, mas a primeira vista a abordagem me parece bem diferente e o ganho de desempenho não compensa a limitação de valor máximo que pode ser testado. Daí talvez seja mais interessante brincar com coisas mais sérias, como o teste de Fermat ou AKS, que apresentam complexidade logarítmica.
  9. Olás! Fiquei pensando como seria estender a estratégia de eliminar os testes de ímpares múltiplos de três para também eliminar os testes dos múltiplos de cinco. Cheguei ao seguinte algoritmo. Este executa cerca de 13% mais rápido que o algoritmo anterior e cerca de 47% mais rápido que o algoritmo que só considera a raiz quadrada. int isPrime(unsigned int n) { unsigned int i, s; if (n <= 5) return (n == 2 || n == 3 || n == 5); // Mais um caso especial... Se for divisível por 2, ou por 3, ou por 5, não é primo! if ( ( n % 2 ) == 0 || ( n % 3 ) == 0 || ( n % 5 ) == 0) return 0; s = sqrt(n); for ( i = 7; i <= s; i += 6 ) { if ( ( n % i ) == 0) return 0; i += 4; if ( ( n % i ) == 0) return 0; i += 2; if ( ( n % i ) == 0) return 0; i += 4; if ( ( n % i ) == 0) return 0; i += 2; if ( ( n % i ) == 0) return 0; i += 4; if ( ( n % i ) == 0) return 0; i += 6; if ( ( n % i ) == 0) return 0; i += 2; if ( ( n % i ) == 0) return 0; } return 1; }
  10. Muito interessante, acho que consigo explicar como funciona de uma forma complementar. Esse algoritmo pula os ímpares múltiplos de três no momento que incrementa quatro no contador (i+=4) , a partir do número nove, visto que a divisibilidade por três já foi testada. Desta forma: testa o 5; // valor inicial testa o 7; //após incrementar i+=2 pula o 9; //ao incrementar i+=4 testa o 11; //após incrementar i+=4 testa o 13; //após incrementar i+=2 pula o 15; //ao incrementa i+=4 testa o 17; //após incrementar i+=4 testa o 19; //após incrementar i+=2 pula o 21; //ao incrementa i+=4 ... e assim por diante. Note que comparado a abordagem que você descreveu anteriormente, em um ciclo de três testes (if ( ( n % i ) == 0) ) um teste é eliminado . Assim, é possível eliminar 1/3 dos testes a serem executados.
  11. Parabéns, @fredericopissarra. Pelos livros e pela atitude de disponibilizá-los.
  12. Salve! Já está em tempo de estrear esta seção do fórum e usar um pouco do hype da suposta chamada supremacia quântica, alcançada pelo Google, para motivar o estudo de uma nova área. Novamente venho aqui indicar um vídeo do Nerdologia (fazer o que?!) que traz uma ótima visão geral dos conceitos e desafios. Um outro vídeo que achei interessante, informal e muito menos preciso, mas que apresenta uma visão mais amigável das aplicações da tecnologia em questão, pode ser assitido a seguir. Falando em Google e supremacia quântica (termo que eu acho horrível!), o vídeo a seguir contextualiza de forma geral o assunto e comenta sobre a treta discussão saudável entre os pesquisadores do Google e da IBM. Se inglês não é problema para você, talvez seja mais interessante assistir o vídeo da própria Nature (revista científica que publicou o artigo): O único ponto que senti falta em nesses vídeos anteriores foi o entrelaçamento (ou emaranhamento) quântico, que não é exatamente computação, mas está intimamente ligado ao nosso mundo (o do Mente Binária) por sua aplicação em telecomunicação. Esse ponto é abordado no vídeo a seguir: Se você quiser ter uma visão um pouco mais formal/técnica/aprofundada, você pode assistir o vídeo a seguir: É isso! Espero que seja proveitoso para quem se interessar.
  13. Acho legal deixar o problema disponível caso outras pessoas se interessem: Desafio: [CRIPTOGRAFIA COM MATRIZES] A mensagem: JVNZFNVTP foi gerada pela Matriz A utilizando a equivalência numérica das letras do alfabeto conforme a figura 2, e esconde o nome de um famoso cientista. Descriptografe.
  14. Trata-se de um vídeo já meio antigo, mas interessante por cobrir de uma forma muito rápida e dinâmica toda a parte da história da criptografia comumente apresentada nos livros e cursos sobre o tema. Esse tópico não é útil na prática (para proteger dados), mas é importante conhecê-lo para compreender as motivações e a concepção mais básica da criptografia. Ao final do vídeo o narrador menciona a importância do advento da criptografia de chave pública ocorrido na década de 1970. Contudo, faltou mencionar a importância do advento dos computadores digitais, e do uso da lógica binária e da álgebra booleana, avanços ocorridos nas décadas de 1930 e 1940 que elevaram a segurança da criptografia simétrica a um novo patamar, tornando obsoletos as técnicas e os mecanismos criptográficos anteriores (os que são explicados no vídeo).
×
×
  • Create New...