Existe algum padrão de algoritmo para proteger qualquer conteúdo da Web e garantir que eu seja o primeiro a criar?

29

Alguns anos atrás, havia um hacker (não se lembra quem ele era) que divulgava completamente uma vulnerabilidade em um determinado sistema, mas para garantir que ninguém aceitasse isso, ele criou algum tipo de chave PGP.

O que eu entendi na época é que ele criou uma chave para garantir que foi ele quem a descobriu, mas não revelou quem ele era, apenas criou um mecanismo para provar que ele foi quem criou a divulgação. .

Está bem. Eu entendo como algoritmos e criptografia funcionam. Mas ainda não entendo como é possível criar uma chave para proteger um determinado conteúdo divulgado na Web e provar que você foi quem criou primeiro! São apenas palavras!

Isso é realmente possível? Qual deve ser o processo para garantir que você possa prová-lo empiricamente? Eu entendi corretamente ou provavelmente perdi algo em relação a este caso?

Espero que essa pergunta seja específica o suficiente, basicamente é apenas como proteger um conteúdo que você criou na Web (um parágrafo, um código, uma palavra etc.) e garantir que você foi quem o criou primeiro, dentro de um dado contexto.

Com o meu conhecimento, não vejo como isso é possível, mas estou intrigado se houver uma maneira prática de fazê-lo. Existe?

Fagner Brack
fonte
9
Talvez perguntar em crypto.stackexchange.com seria uma idéia melhor?
Euphoric
5
@FagnerBrack - Não copie / cole. Apenas sinalize a pergunta para a migração para a criptografia SE.
Mouviciel
10
But I still don't understand how you can create a key to protect a given content disclosed in the web to prove you are the one who created it first! It is just words!Há uma diferença entre provar que você criou algo e provar que você foi o primeiro a criar algo. A chave PGP pode provar que o hacker enviou o relatório de vulnerabilidade. Não há garantia de que a vulnerabilidade não tenha sido descoberta ou relatada antes dele, mas ele pode pelo menos mostrar que a denunciou em uma determinada data.
Doval
2
Havia uma história sobre um matemático que descobriu uma prova e ainda não queria publicá-la, mas também não queria que outra pessoa recebesse crédito. Então, em vez disso, ele publicou as letras das sentenças da prova classificadas em ordem alfabética. Eu esqueci qual era o nome dele.
Paul
3
@Paul - isso seria Robert Hooke, a lei de Hooke en.wikipedia.org/wiki/Hooke's_law
James McLeod

Respostas:

1

Eu provavelmente perdi alguma coisa sobre este caso?

Eu acho que a parte que falta é uma entidade confiável.

Quando você faz o hash do arquivo com o conteúdo que deseja certificar, pode mostrar ao mundo que você é o proprietário deste documento, sem divulgá-lo. Tudo está muito bem, mas como você pode provar que possui este documento em algum momento específico do passado?

É disso que trata o carimbo de data / hora confiável. Aqui está um extrato da wikipedia :

A técnica é baseada em assinaturas digitais e funções de hash. Primeiro, um hash é calculado a partir dos dados. Um hash é uma espécie de impressão digital digital dos dados originais: uma sequência de bits diferente para cada conjunto de dados. Se os dados originais forem alterados, isso resultará em um hash completamente diferente. Esse hash é enviado ao TSA *. O TSA concatena um carimbo de data / hora para o hash e calcula o hash dessa concatenação. Por sua vez, esse hash é assinado digitalmente com a chave privada do TSA. Esse hash assinado + o registro de data e hora é enviado de volta ao solicitante do registro de data e hora que os armazena com os dados originais (consulte o diagrama).

(*) Autoridade de Data e Hora

Uso o Timestamping Service da Universign, que possui um bom conjunto de ferramentas para facilitar a execução de toda a operação. Existem muitas empresas que oferecem serviços semelhantes.

É interessante notar que, como o @JoelFan mencionou, esse bitcoin fornece uma maneira de obter uma entidade confiável que não é centralizada (por que devo confiar em alguém?). A cadeia de bitcoin fornece uma linha do tempo (você pode provar que um documento incrustado na cadeia de bitcoin foi criado antes de outro na cadeia). No meu entender, no entanto, você ainda perderia a data e a hora efetivas do evento.

Além disso, Trusted Timestamping é uma referência válida em litígios.

mika
fonte
2
Existem datas e horários incorporados nos cabeçalhos dos blocos no bitcoin ... embora eles não sejam impostos pelo protocolo, geralmente é confiável que eles tenham pelo menos uma "precisão de precisão" (ou seja, com precisão de 1 dia) ... também é possível para inspecionar a toda blockchain do bloco em questão até hoje para se certificar a data vezes são monótona crescente
JoelFan
Desculpe demorar muito para aceitar uma resposta. O hacker provavelmente usou uma entidade confiável, não consegui encontrar uma maneira razoável de proteger a autoria do conteúdo sem uma entidade confiável.
Fagner Brack
39

Nos tempos antigos, os cientistas publicavam anagramas de seu trabalho para poder dizer "eu pensei nessa idéia". (veja as seções 'história' e 'estabelecimento de prioridade'). O problema é que eles queriam ter crédito por isso, mas também permitiam que outros cientistas publicassem seus resultados se tivessem outras idéias sem desenvolver a idéia original. .

Por exemplo, Gallileo publicou SMAISMRMILMEPOETALEVMIBVNENVGTTAVIRAS, que era um anagrama de altissimvm planetam tergeminvm obseravi, traduzido do latim: "Eu observei o planeta mais alto em três formas". Ele entendeu errado - Saturno (o planeta 'mais alto' conhecido na época) não é constituído por três partes. Cinqüenta anos depois, Christiaan Huygens publicou: AAAAAAA ABCCC D EEEEE H IIIIIII LLLL MM NNNNNNNNN OOOO PP Q RRT TTUTU UUUUU que em latim é Annulo cingitur, tenui, plano, nusquam cohaerente, ad eclipticam inclinato que se traduz em "É cercado" anel plano que não toca nele e está inclinado contra a eclíptica ".

Embora agora sejam de interesse histórico, eles mostram um conceito importante na época - fornecendo um 'hash' fácil de dizer "esse hash codifica esse texto". É fácil passar do texto conhecido para o anagrama ou o hash, mas é difícil descobrir o que é se você não souber o que é em primeiro lugar.

Com os mecanismos modernos, temos outras maneiras de fazer hashes. Muitos deles estão intimamente relacionados à criptografia. Existe a função de hash criptográfico . A idéia é, ainda assim, que é fácil passar do texto que você conhece para o hash, mas difícil de ir do hash para o texto que você não conhece.

Portanto, se você tiver um programa, poderá publicar um hash do programa que faz alguma coisa e, quando estiver pronto para divulgá-lo (possivelmente depois que a empresa o corrigir ou um período de tempo depois), você poderá publicar o código real e todos podem ver que, sim, esse código corresponde a esse hash.


fonte
1
Very nice pouco de história sobre o uso de haxixe antes da era digital :)
mika
30

Você pode fazer isso com bastante facilidade. Se você tem um texto simples text, chave secreta Se a chave pública Pque você faz S(text)e obter o cipher.

Agora você pode publicar ciphere Pmas não S. Portanto, todos podem descriptografar o ciphercom Pfazendo P(cipher). Se você agora quer provar que é quem criou o cipher(e, portanto, o original text), pode publicar Sou - se não quiser que ninguém conheça S - pode criar outro S("I was really the one who found the text first")e publicá-lo. Porque não há como criar uma cifra que é descriptografada com P(cipher)isso resulta em algum texto significativo.

É assim que você pode provar.

valenterry
fonte
13
Como isso ajuda? Qualquer pessoa que possa descriptografar a cifra pode republicar da mesma maneira com sua própria chave secreta e você não tem como provar qual parte publicou primeiro e qual copiou da outra sem confiar em algum registro de terceiros do tempo de publicação.
R ..
2
@R .. O conteúdo da internet geralmente tem uma data associada (por exemplo: postagens no fórum). Se houver várias pessoas que alegam ser os inventores / descobridores originais, basta verificar as datas.
Paul
2
Você também pode incluir algum conteúdo no texto não criptografado via P (conteúdo). O verdadeiro proprietário de S será capaz de descriptografar essas informações adicionais, enquanto um representante não poderá fazer isso.
Dancrumb
10
@ Paul: Mas então a criptografia é irrelevante. É equivalente a apenas postar seu conteúdo em texto sem formatação e confiar na data.
R. ..
2
@R .. a idéia é que, sem saber S, é muito difícil criar um pedaço de texto cipher2que P(cipher2)não seja sem sentido. Com Sisso é trivial, como S("the text you want")= cipher2. Fazer o inverso equivale a derrotar o método de criptografia.
congusbongus
21

É possível fazer o hash dos dados que você deseja marcar com hora e transformá-los em um endereço de Bitcoin. Isso é conhecido como carimbo de data / hora confiável . Fazendo um pequeno pagamento (um satoshi ou 0,00000001 BTC), o pagamento é armazenado na blockchain junto com o endereço para o qual você pagou.

Como apenas o hash é armazenado na blockchain do Bitcoin, ninguém pode dizer quais dados você armazenou, mas, dados os dados pré-hash, você pode provar que os dados foram criados antes do bloco que contém o pagamento feito nesse endereço.

JoelFan
fonte
1

Uma maneira muito simples de estabelecer que você é o primeiro a publicar algo, sem revelar quem você é imediatamente, mas com a opção de fazer isso mais tarde:

  1. Publique-o em uma fonte pública conhecida (todos podem ver que você o publicou)
  2. Nesta publicação, adicione uma linha: Originalmente publicado em dd / mm / aaaa pelo proprietário de [email protected]

Não há necessidade de criptografar nada.

Claro que há a chance de você não querer publicar seus resultados ainda. Nesse caso, você precisa criptografar tudo, exceto a linha com o endereço de email. No entanto, agora pode ser mais difícil publicá-lo em um site conhecido.

Dennis Jaheruddin
fonte
4
E se o "site reconhecido" alterar a data ou o email da publicação? Isso pode acontecer devido a más intenções, mesmo que o site seja invadido. (Ok, estou sendo bastante paranóico aqui, mas esse é o ponto. Se existe uma maneira de alguém além do autor original alterar a prova, sua solução não é realmente determinística). O ponto aqui não é confiar apenas em testemunhas humanas, mas de uma maneira que qualquer pessoa possa confirmar a autoria de uma certa maneira, sem que seu conteúdo precise ser "publicado" ou "patenteado" por uma entidade confiável.
Fagner Brack
@FagnerBrack, arxiv.org provou ser suficiente para quase 1 milhão de trabalhos de pesquisa.
Brian S
1
Posso colocar qualquer coisa lá ou deve passar por alguma revisão por pares e só será autorizada sob restrições específicas? Esta questão não se destina diretamente aos trabalhos de pesquisa, trata-se da possibilidade de alcançar o mesmo resultado (ou equivalente) de forma programática.
Fagner Brack
2
Use archive.org para publicar - como o arXiv, é um repositório confiável e duradouro, mas, diferentemente do arXiv, é gratuito para carregar conteúdo lá. O registro de data e hora de qualquer coisa que você publicar lá seria considerado muito confiável.
precisa
1
Concordo que a fama é a única maneira de espalhar conhecimento de maneira rápida e confiável.
bigstones
0

Esta é uma opinião diferente da resposta de valenterry.

Aqui está como você faria isso usando o PGP:

Gere um par de chaves pública / privada.

  1. Você mantém a chave privada e garante que ela permaneça secreta.
  2. Você criptografa sua ideia com sua chave pública: P (idéia)
  3. Você coloca P (idéia) em algum lugar confiável (não por você, mas em geral) e registrará o horário.
  4. Quando você precisa provar que criou a idéia primeiro, obtém o carimbo de data e hora de quando armazenou os dados e descriptografa os dados com sua chave secreta. S (P (ideia)) => ideia

Esse método não requer o lançamento de sua chave secreta, o que geralmente é uma má idéia. É verdade que você sempre pode criar um novo par de chaves PGP - não custa nada, mas não deve distribuir imprudentemente chaves secretas se quiser ser credível.

A parte mais difícil é provar o tempo, mas em termos de documentação de uma vulnerabilidade, não precisamos de uma solução 100% à prova de balas e verificável em tribunal, apenas precisamos de algo que seja 'bom o suficiente'. Os logs de um provedor de armazenamento em nuvem (dropbox, rackspace, google etc.) provavelmente são bons o suficiente, supondo que eles implementem um serviço seguro.

Também vale a pena notar que, sendo o primeiro com uma ideia e com o carimbo de data e hora, nunca significou que você foi a primeira pessoa a pensar nela. Se alguém pensou antes de você, mas nunca registrou a ideia com um mecanismo de carimbo de data e hora, não pode provar que a fez antes de você. Então, se estamos tentando descobrir quem foi o primeiro a fazer isso, e tudo o que sabemos é a hora em que você o criou, então devemos assumir que você o criou primeiro (a outra pessoa pode estar mentindo).

Shaz
fonte
-1

Ugh, muitas dessas respostas estão erradas.

1) O que o hacker fez não teve nada a ver com criptografia.

2) O que o hacker fez não teve nada a ver com tempo (horário, etc).

O que o hacker fez foi assinar publicamente o documento de lançamento. Quando você assina algo PGP (um email, um documento do word etc.), cria um hash que é a soma do hash do documento que está sendo assinado e sua própria chave privada. Agora, para provar que você é o criador do documento, você só precisa "mostrar" a chave privada, pois provavelmente apenas o autor a conhece. Criptograficamente falando, você pode "mostrar" que possui a chave privada sem realmente mostrar a chave.

Com efeito, ele assinou digitalmente o documento. A única pessoa que pode copiar essa assinatura é alguém com sua chave privada. Não há nada a dizer que o documento foi feito hoje ou ontem, ou foi a primeira instância dele a existir. Nenhuma quantidade de carimbos de data e hora de hash ou o que quer que isso mude.

A única maneira de assinar algo digital IN TIME, é usar o blockchain à la bitcoin. Não poderia haver moeda digital sem verificação de tempo - o fato de a pessoa A enviar dinheiro para a pessoa B é irrelevante, a menos que saibamos quando. Você não pode entrar em uma loja com um pedaço de papel e dizer "minha mãe me enviou US $ 100 uma vez. Gostaria de comprar pão", porque o recebimento de uma transação não significa que o dinheiro ainda lhe pertence. Você pode ter dado a outra pessoa nesse ínterim. A blockchain resolve esse problema fazendo com que um grande número de pessoas (mineradoras de bitcoin) concorde com o fato de que a transação ocorreu em um determinado momento (e depois registrando esse tempo na blockchain para sempre).

JJ
fonte
2
este não parece oferecer nada substancial sobre pontos feitos e explicado em anteriores 6 respostas (em particular, muito foi escrito sobre timestamping confiável e bitcoin abordagem já foi apresentado)
mosquito