数年前、特定のシステムの脆弱性を完全に開示したハッカー(彼が誰であるかは覚えていません)がいましたが、だれもそれを信用していないことを確認するために、何らかのPGPキーを作成しました。
当時私が理解していたのは、彼がそれを発見した人であることを確認するための鍵を作成したが、実際に誰であるかを開示しなかった、彼が開示を作成した人であることを証明できるメカニズムを作成したことです。
OK。アルゴリズムと暗号がどのように機能するかがわかります。しかし、Webで公開された特定のコンテンツを保護して、自分が最初に作成した本人であることを証明するためのキーを作成する方法がわかりません。言葉だけです!
本当に可能でしょうか?経験的に証明できるようにするためのプロセスは何ですか?私はそれを正しく理解しましたか、それともこの事件に関して何かを見逃しましたか?
この質問が十分具体的であることを願っています。基本的には、Webで作成したコンテンツ(段落、コード、Wordなど)を保護し、最初にそれを作成した人であることを確認する方法です。与えられたコンテキスト。
私の知識ではそれがどのように可能であるかはわかりませんが、それを行うための実用的な方法があるかどうか私は興味をそそられます。ある?
私はおそらくこの事件に関して何かを見逃しましたか?
あなたが欠けているのは信頼できる実体だと思います。
証明したいコンテンツでファイルをハッシュすると、このドキュメントを公開することなく、このドキュメントの所有者であることを世界中に示すことができます。これはすべて問題ありませんが、このドキュメントが過去の特定の時期にあったことをどのように証明できますか?
これがTrusted Timestampingに関するものです。これが wikipedia からの抜粋です:
この手法は、デジタル署名とハッシュ関数に基づいています。まず、データからハッシュが計算されます。ハッシュは、元のデータの一種のデジタルフィンガープリントです。データのセットごとに異なるビットの文字列です。元のデータが変更された場合、これは完全に異なるハッシュになります。このハッシュはTSA *に送信されます。 TSAはタイムスタンプをハッシュに連結し、この連結のハッシュを計算します。このハッシュは、次にTSAの秘密鍵でデジタル署名されます。この署名付きハッシュ+タイムスタンプは、元のデータと共にこれらを保存するタイムスタンプのリクエスタに送り返されます(図を参照)。
(*)タイムスタンピング機関
私は、Universignのタイムスタンプサービスを使用しています。このサービスには、操作全体を簡単に実行できるようにするための素晴らしいツールセットが含まれています。同様のサービスを提供している企業はたくさんあります。
@JoelFanが述べたように、そのビットコインは一元化されていない信頼されたエンティティを取得する方法を提供することに注目するのは興味深いことです(なぜ私は誰かを信頼する必要があるのですか?)。ビットコインチェーンはタイムラインを提供します(ビットコインチェーンにちりばめられた1つのドキュメントが、チェーンのさらに下にある前に作成されたことを証明できます)。しかし、私の理解では、イベントの発効日と時刻を逃してしまいます。
また、信頼できるタイムスタンプは、訴訟において有効な参照です。
昔は、科学者たちは自分の研究成果の anagrams を公開して、「私はこの考えについて考えた」と言えるでしょう。 (「歴史」と「優先順位の確立」セクションを見てください)実は、彼らはそれを信用できるようにしたかっただけでなく、他の科学者が元のアイデアに基づいていない他のアイデアを持っている場合、その結果を公開することを望んでいました。
たとえば、Gallileoは[〜#〜] smaismrmilmepoetalevmibvnenvgttaviras [〜#〜]を公開しました。これはaltissimvm planetam tergeminvmのアナグラムでしたラテン語から翻訳されたobseraviは、「私は最も高い惑星を3重の形で観察しました」と読みます。彼はそれを誤解しました-土星(当時知られている「最高」の惑星)は3つの部分で構成されていません。 50年後、Christiaan Huygensが出版AAAAAAA CCCCC D EEEEE H IIIIIII LLLL MM NNNNNNNNN OOOO PP Q RR S TTTTT UUUUUこれはラテン語でAnnulo cingitur、tenui、plano、nusquam cohaerente、ad eclipticam inclinatoで、「薄いフラットリングで囲まれています。それに触れて、黄道に対して傾けてください。」
それらは現在注目されている歴史的なビットですが、それらは当時重要な概念を示しています-「このハッシュはこのテキストをエンコードする」と言うのが簡単な「ハッシュ」を提供します。既知のテキストからアナグラムまたはハッシュに移動するのは簡単ですが、そもそもそれが何であるかわからない場合、それが何であるかを理解することは困難です。
現代のメカニズムでは、ハッシュを実行する他の方法があります。それらの多くは暗号と非常に密接に関連しています。 暗号化ハッシュ関数 があります。それでも、あなたが知っているテキストからハッシュに行くのは簡単ですが、ハッシュからあなたが知らないテキストに行くのは難しいです。
したがって、プログラムがある場合、何かを実行するプログラムのハッシュを公開し、次にを発行することができますare公開する準備ができたら(おそらく会社が修正した後、またはしばらくしてから)、実際のコードを公開すると、誰もがそれを見ることができます。そうです、このコードはそのハッシュと一致します。
とても簡単にできます。平文text
、秘密鍵S
、公開鍵P
がある場合は、S(text)
を実行してcipher
を取得します。
これで、cipher
とP
を公開できますが、S
は公開できません。したがって、誰でもP(cipher)
を実行することにより、cipher
をP
で復号化できます。 cipher
(したがって、元のtext
)を作成したのが自分であることを証明したい場合は、S
を公開するか、またはだれにもSを知らせたくない-別のS("I was really the one who found the text first")
を作成して公開できます。 P(cipher)
で解読される暗号を作成する方法がないため、意味のあるテキストになります。
それがあなたがそれを証明する方法です。
タイムスタンプを付けたいデータをハッシュしてビットコインアドレスに変換することが可能です。これは 信頼できるタイムスタンプ として知られています。少額の支払い(satoshi、または0.00000001 BTC)を行うことで、支払いはあなたが支払ったアドレスとともにブロックチェーンに保存されます。
ビットコインブロックチェーンにはハッシュのみが格納されるため、格納したデータは誰にもわかりませんが、事前にハッシュされたデータが与えられれば、そのアドレスに対して行われた支払いを含むブロックの前にデータが作成されたことを証明できます。
あなたがすぐに誰であるかを明らかにせず、後でこれを行うオプションを持つことなく、あなたが何かを最初に公開したことを証明する非常に簡単な方法:
何も暗号化する必要はありません。
もちろん、まだ結果を公開したくない可能性もあります。その場合は、メールアドレスの行を除くすべてを暗号化する必要があります。しかし、今ではこれを有名なサイトで公開するのは難しいかもしれません。
これは、ヴァレンタリーの答えに対する別の見方です。
ここでは、PGPを使用してそれを行う方法を示します。
公開鍵/秘密鍵のペアを生成します。
この方法では、秘密鍵を解放する必要はありませんが、これは一般に悪い考えです。確かに、いつでも新しいPGP鍵ペアを作成できます。コストはかかりませんが、信頼できるようにしたい場合は、無謀に秘密鍵を渡してはなりません。
最も難しいのは時間を証明することですが、脆弱性を文書化するという観点からは、100%防弾および検証可能な法廷でのソリューションは必要ありません。必要なのは「十分に良い」ものだけです。クラウドストレージプロバイダー(ドロップボックス、ラックスペース、グーグルなど)のログは、安全なサービスを実装している場合、おそらく十分です。
また、最初にアイデアとタイムスタンプを付けたものであることは、あなたがそのアイデアについて最初に考えたことを意味するものではありません。誰かがあなたの前にそれを考えたが、そのアイデアをタイムスタンプ機構に登録しなかった場合、彼らはあなたの前にそれを作成したことを証明できません。したがって、誰が最初にそれを作成したのかを把握しようとしていて、私たちが知っているのはあなたがそれを思いついたときだけである場合、私たちはあなたが最初にそれを思い付いたと仮定する必要があります(他の人が嘘を吐いている可能性があります)。