あるお客様からリクエストをいただきましたが、今までそのようなリクエストに遭遇したことがないため、どこから始めればよいのかもわかりません。
私たちの顧客は大学のネットワークであり、私たちはそれらをサイトに構築しています。そのサイトでは、とりわけ、大学の1つでの研究に関する詳細情報を取得するために、潜在的な申請者が記入できるフォームになります。ユーザーがこのフォームに記入した後(メールや電話番号の入力を含む)、関連する大学から関連情報が連絡されます。
現在、法的な理由により、クライアントはこのフォームにもチェックボックスがあり、応募者がこれらの大学から宣伝用資料を取得することに同意することをチェックするように求めています。もちろん問題ありません。しかし、ここにリクエストの奇妙な部分があります:
記入された各フォームの詳細は、信頼できる方法で保存する必要があります。明らかに、ユーザーがフォームを送信した後にDBが変更される可能性があるため、フォームの値をデータベース(ユーザーが同意したかどうかを示す列)に保存するだけでは不十分です。私たちのクライアントは、他の大学ポータルが記入されたフォームのスクリーンショットを作成し、ユーザーの名前を含む名前と日付をファイルに付けるなど、簡単に見つけられる方法で専用フォルダーのどこかに保存すると主張していますと時間。
私の質問は次のとおりです。ユーザーが実際にフォームに入力したことを証明する方法としてスクリーンショットを使用することを聞いたことがありますか?信頼できると考えられる他の方法はありますか?
データベースで偽の値と同じくらい簡単に偽のスクリーンショットを作成できるので、私はそのようなことを聞いたことがなく、ばかげているでしょう。
[〜#〜] edit [〜#〜]さらに、つまり、WTF? Webを介して誰かのスクリーンショットのスクリーンショットを取得することはできないため、サーバー上でページを再構築してスクリーンショットを撮る必要があることは明らかです。
私はこの答えを質問から始めることを知っていますが、私はポイントを持っています:
リクエストの想定される不合理さに疑問を投げかけることなく、これが典型的なHTTPブラウザーベースのWebアプリケーションである場合、プログラムでスクリーンショットをキャプチャしてサーバーに送信するにはどうすればよいでしょうか。
これはブラウザのセキュリティとプライバシーに関する深刻な懸念を表すため、これが不可能であることを願っています。
スクリーンショットのキャプチャ時に誰かのクレジットカード番号も画面に表示されていたとしましょう。これで、不注意でクレジットカード情報が取得され、システムはPCIに準拠しているはずです。これは、まったく別の懸念事項です。
これを行う唯一の方法は、Flash、Silverlight、Javaアプレットなどのサードパーティのブラウザプラグイン、またはシステム特権を昇格したActiveXコントロールを使用することです。コンポーネントは署名される必要があり、ユーザーはコンポーネントが自分のマシンでコードを実行するためのアクセス権を持つことに同意する必要があります。
この計画には非常に多くの穴があり、他の大学が同様のことを実施していることを私は真剣に疑っています。私のプロとしてのキャリアの中で、少なくともWebアプリケーションに関しては、これについて聞いたことはありません。
編集:
私はちょうどあなたのクライアントが本当に求めていると私が思うことをより大きく反映する別のオプションを考えました。
私は、クライアントに同意し、アプリケーションにアクセスするためにNDAドキュメントに署名する必要があるクライアント向けのアプリケーションを用意しました。私は署名可能なPDFドキュメントを通じてこれを達成しました。 PDF文書に署名フィールドを含めることができます。これは、ペン+パッドUSBコンポーネントを使用するか、クリックして確認するだけで、法的には、物理的に手で文書化します。
これは電子署名と呼ばれ、法廷で保留されます。
署名後のPDFドキュメントは暗号化され、署名とともにハッシュが保存され、ドキュメントが署名後に改ざんされていないことを確認します。 Adobeのような最近のPDFリーダーは、署名されたドキュメントを実際にサーバーに送信して、安全に保管するためにドキュメント管理システムまたはデータベースに保存できます。
管理者ユーザーはいつでもこれらのドキュメントの1つを呼び出して印刷できます。
これは、顧客が実際に必要としているものに沿っている可能性がありますが、適切に説明する時間が不十分でした。
本当の質問は、フォームに名前が表示されている人が本当にフォームに記入したのでしょうか?
つまり、誰かがWebサイトにアクセスして「Bill Gates」という名前を入力し、「E-mail me Send me OK」ボックスをクリックした場合、スクリーンショットはそれが本物のBill Gatesであることをどのように証明しますか?
彼らは多くのサイトがしていることをすることを検討しました、そしてそれは誰かが確認するためにクリックしなければならないユニークなリンクを含む確認メールを送りますか?そうすれば、少なくとも、その電子メールアカウントにアクセスできる誰かからの確認があるという記録があります。
この議論は、その人が同意したことを絶対に証明する方法がないという理解から始める必要があります。これは、現実の世界でも同じです。フォームに実際に署名し、その上に血を一滴落とす人をビデオで撮ったとしても、彼らはそのビデオが偽造されたもので、知らないうちに血が抜き取られ、サインが偽造されたと言えます。しかし、絶対的な証明は必要ありません。妥当な量の証拠。
デジタルの世界では、任意のデータ-テキスト、画像、データベース内のデータ、または電子メール-偽造できます。証明に最も近いのは、ユーザーが秘密キーを使用して何かを暗号化し、公開キーがそれを解読することを示すことです。しかし、これは現在ほとんどのユーザーの能力を超えており、秘密鍵が盗まれたと言うことはできます。
私たちにできる最善のことは:
テキストではなく画像を保存しても、証拠としては何も追加されません。それが行うすべてはプロセスをより遅くそしてより高価にすることです。
私の仕事では、ユーザーがステートメントに署名するアプリケーションがあります。法的には、私たちが運営する管轄区域は、ユーザーフォームに電子メールアドレスを入力するが電子署名としてカウントされる可能性があるという法律を可決しました。ユーザーがクリックする必要のあるリンクを送信することにより、ユーザーがアドレスにアクセスできることをすでに確認しています。これは絶対的な証拠ではありませんが、私たちの目的には十分に適していると見なされています。
取得する情報が何であれ、タイムスタンプの取得も提案するので、「この正確な日時に同意した」と言えます。それが法的関連性を持っているかどうかはわかりませんが、ユーザーにそれ以外のことを証明する機会が増えるため、より説得力があるように見えます(たとえば、「私は当時コンピューターにいなかったという証拠があります」 )。
あなたができるすること可能性があるが証拠と見なされること:
法的助言としてこれを取らないでください。
別のオプションは、クライアントからの生のHTTP Postを記録することです。これには、スクリーンショットを必要とせずに、IP、発信元、ブラウザなどが含まれます。次に、これをraw形式の挿入のみのテーブル、または単純なフラットログファイルに記録できます...
他のいくつかのオプションを考えようとしているだけなのは、このようなばかげたリクエストに思いがけないほど頻繁に遭遇する傾向があるためです...
スクリーンショットは簡単に作成できます。暗号化の根拠のない、あらゆる種類のハッシュ、タイムスタンプなどと同様に。マーケティング資料を人々に送信したり、情報を第三者と交換したりする前に、カレッジが肯定的な同意を得たことを証明できるようにするための厳しい規制要件があると考えられます。
これを行う唯一の信頼できる方法は、ユーザーに暗号署名を要求することです。例として、 http://launchpad.net WebサイトがUbuntu行動規範に暗号で署名するように求める方法を確認してください。
これは、法的文書で暗号署名が使用される可能性がある管轄区域でのみ法的効力を持ちますが、特定のテキストに署名することにより、ユーザーは、後で検証可能な同意の証拠を提供できます。大学が同じ公開鍵から正しい署名を偽造することは事実上不可能です。
カレッジがデータベースを更新して同意フィールドを反転し、公開キーを秘密キーを知っている別のキーに置き換えて、thatキー。
したがって、特定の個人に属していることを証明する第三者の署名鍵がなければ、ユーザーが大学がプライバシー設定を偽造しているかどうかをユーザーが確認できることになります。第三者の署名がなければ、それは大学に対するWordです。
さらに、すべてのキーの所有権を検証し、1つ以上の信頼できるサードパーティによって署名されたキーが必要な場合、カレッジは、かなりの露出がなければ、明らかに有効な署名を偽造することはできません(彼らは、偽のキーに署名してもらうために信頼できるサードパーティ)。この攻撃の難易度は、必要なサードパーティの署名の数に応じて増加しますが、別のポスターによると、不可能ではありません。
要約すると:
実用的な問題:
まず、クライアントの国/州の 電子署名 を読み、法的に拘束力のある方法と要件を見つけることに重点を置きます。拘束力のある電子署名を証明する唯一の方法としてスクリーンショットを必要とする国や州がないということは確かです。
たとえば、米国の47州では niform Electronic Transactions Act を受け入れています。これは、とりわけ「政府の問題」に適用されるため、大学の要件にも適用される可能性があります。役立つ可能性のある次の部分があります。
..
..
..
法律を知ったら、スクリーンショット方式のコストと比較して、最良の電子署名方式のコストを見積もります。
最後に、私の調査結果について彼らと話し合います。最初に、提案されたオプションと比較して、最良のオプションを説明します。次に、これによりプロジェクトに追加される時間を説明します。最後に、私がそうすることができるなら、この「機能」が最終的な請求書にxドルを追加することを彼らに伝えます。私は彼らへの追加費用の正当化として私への追加費用を使用することを確信しています。
それでも彼らがびくびくしないならば、私が彼らと同じ会議をすることができる何らかの正気のある監督者を彼らが持っているかどうか私は見るでしょう。
*私は弁護士ではありません。不明な点がある場合は、法的助言を求めてください。
これは法的な問題であり、実際の答えはもちろん国の法律、そして場合によっては地方の法律と正確な状況に依存します。したがって、本当の答えは弁護士からしか得られないことは明らかです。
ただし、私の(限られた)法的知識に関しては、スクリーンショットが何かの証拠と見なされると考える理由はありません。偽造するのは明らかに非常に簡単です。
あなたの最善の行動はおそらく、これは本質的に法的な問題であり、弁護士の助けが必要であることをクライアントに説明することです。その後、弁護士に相談してほしいのか、それとも自分で相談したいのかについて話し合います。
実現可能な解決策を得るために、(クライアントが同意した場合)自分で話し合うことをお勧めします。あなたがその面倒を望まない場合(または彼らがあなたにそれを支払う気がないかもしれないことを恐れている場合)、彼らにそれをさせてください。
ドキュメントが変更されていないことを検証する場合(データベースレコードなど)、「ベストプラクティス」は次のようになります。
これは、保険記録が改ざんされていないことを保証するために使用されています。しかし、私たちが一定の金額を支払った「信頼できるサードパーティ」は、ハッシュが自分自身と他のいくつかのクライアントに署名されたときにハッシュを公布したため、証拠を得るために召喚状にされる可能性のあるレコードの管理者が複数いました。
これは明らかにブール型フィールドを検証するようなものにとってばかげた負担です。しかし、もしあなたがクライアントにかかる費用を見せれば、彼らはおそらく馬鹿げたことをやめるでしょう。
リクエスト自体はばかげているし、フォームAに記入するときに人物Aがチェックボックスをオンにしたという合理的な証明はありませんが、質問の中に実際に回答できる質問があります。
[データが後で変更されていないことを確認する方法]ユーザーがフォームを送信した後にDBを変更できますか?
これは実際には、技術的に行う方が簡単かもしれません。
ユーザーが実際に送信した値を使用して、自分にメールを送信する(専用のメールボックスに)のは簡単です(まあ、それはサーバーの設定、しきい値、スパムとしてフィルターされる可能性、1秒あたりに送信される電子メールの数など)、およびデータがなかったことを示すのに十分送信後に変更されました。たとえば、Googleサーバーへの無制限のアクセス権がない限り、すべての人がコンテンツを変更できないと確信していると思います自分のGMailアドレスに送信した電子メール。
おそらく、データが後で変更されていないという証拠があっても、顧客は満足しないでしょうフォームの送信の間にデータが変更されていないことをどのように確認できますか?そして、電子メールによる情報の送信(そしてデータベースへのコミット)?この場合、次のステップは次のとおりです。
メールは自動的に処理され、証拠として保管されます。
与えられた電子メールアドレスを使用している人が実際にスパムを受信することを望んでいるという証拠が得られたので、顧客はまだ満足していない可能性があります(これは通常、このようなクレイジーな要求を持つ顧客で発生します)。 誰かが誰かのメールボックスをハッキングして、スパムを受信するハッキーを登録した場合はどうなりますか?
このレベルの狂気でも、要件に技術的に対応できます。これで、オプトインメールを送信する代わりに、ウェブサイトのユーザーは次のことを行う必要があります。
ID /パスポートのコピーと署名付きの手紙を、この人が本当にスパムを受信することを望んでいることを伝えるメールを送信します。
返信されるシークレットコードを使用して電子メールアドレスを検証します。
しかし、これを行う前に、パート2で説明したことを実装してテストするように顧客に説得します。 1〜2か月後には、オプトイン電子メールを送信する人が誰もいないことがわかり、データベース内の法的証拠や改ざんされたデータを忘れてしまいます。
あなたがすることの法的地位は、ソリューションの技術的メリットとは無関係です。
例:
法律は嘆願書が各人のための署名を運ぶことを要求したので何年もの間議会のイギリスの議員はe-嘆願書を無視しました。次に誰かは、電子メールアドレス、日付、時刻、コメントのハッシュ(秘密鍵が含まれていなくても)が英国の法律では「デジタル署名」であることに気付きました。
したがって、弁護士に何をすべきかを教えてもらってください。それが音であるかどうか心配しないでください。
または、クライアントが弁護士に確認したことを信頼して、クライアントの要求に応えます。ディスカッションの記録があることを確認してください。
スクリーンショットはどのように鳴りますか?取得できるのは、HTMLとクライアントに送信するもの、およびクライアントからの電子応答です。どちらもスクリーンショットを必要としません。
スクリーンショットはブラウザがレンダリングするものであり、使用中のブラウザや、相手側の設定や機器によって多少異なります。個人的には、Firefox、Chrome、Opera、Mobile Safari、たまにLynxを使って閲覧しています。時には、IE.
エンドの標準ブラウザでページをレンダリングし、スクリーンショットを撮ることができますが、独自のドキュメントを作成して記録することは、裁判官を感動させることにはなりません。ユーザーにスクリーンショットを送信するように依頼することもできますが、それを実行してください。すべてのブラウジングデバイスにスクリーンショットを撮って送信する明確な方法があるわけではありません(iPhoneではどのように行いますか?)。スクリーンリーダーを使用して視覚障害のある顧客とやり取りしている場合、クライアント側に視覚的な表現がまったくない場合があります。 (私は私の盲目の友人のカップルがポータブルコンピュータを使用しているのを見ました。
そのため、スクリーンショットを取得する方法はなく、写真を撮る画面さえない場合があることをお客様に説明します。
列の値が信頼できることを保証するために、データベースの信頼できるタイムスタンプとデジタル署名とともに必須アクセス制御を作成することは実際に可能です。スクリーンショットは正解ではありませんが、望んでいることを正確に実現するTrusted Computingソリューションは存在します。詳細が必要な場合は、私とチャットを開始できます。
スクリーンショットが本物であることを確認する方法がないため、スクリーンショットはあまり証拠にはなりません。それは簡単に偽造される可能性があります。より技術的なソリューションに関する限り、MySQLには アーカイブストレージエンジン があり、挿入と選択のみをサポートしています。テーブルから削除することはできません。ちなみに、ALTER TABLEを別のストレージエンジンに変更し、レコードを削除してから、ALTER TABLEを実行すると、誰にも気付かれずにエンジンを元に戻すことができる可能性があります。 。次に、実際のローカルデータベースマシンへのログインを追跡して、変更した可能性のあるユーザーを特定します。また、バイナリログを分析したり、生のクエリログを有効にして、この種のアクティビティを引き起こしたクエリを発行した可能性があるユーザーを確認することもできます。どのデータベーステクノロジを使用しているかはわかりませんが、データが簡単に変更されないようにするソリューションを考え出せるはずです。
改ざん防止に最も近いスキーマは、ユーザーが(クライアント側の)Javascriptを使用してフォームに入力したときに公開鍵と秘密鍵のペアを生成し、フォームのコンテンツ、公開鍵、および署名をサーバーに送信し、秘密鍵をユーザーに提示して、メモを取って安全な場所に保管するよう依頼します。
このスキーマを使用すると、署名の生成に使用される秘密キーがわからないため、フォームデータを改ざんすることが不可能であることを証明できます。このスキーマの弱点は、秘密鍵に触れたことがないこと、およびユーザーが秘密鍵を紛失してはならないことを証明できる必要があることです。
秘密鍵にアクセスしたことがないことを証明できる必要があるため、フォームの署名を生成するときに、HTMLとすべてのJavaScriptを含める必要がある場合があります。これは、ユーザーがデータの送信に使用する正確なフォームを証明します(そのため、送信後にフォーム/ JavaScriptを変更していないことを証明し、JavaScriptを使用して秘密鍵を盗んでいないことを証明します)。
このスキーマは複雑であり、複雑なシステムと同様に、穴がないことを保証することはできません(実際には、穴があるとかなり確信しており、誰かが指摘できると思います)。
すでに指摘したように、あなたはその人が同意したかどうかを本当に証明することはできません。
a)電子メールアドレスに送信されたリンクを使用して、同意を確認するように相手に依頼します(これにより、billgates @ Microsoft.comを入力しただけではありません)。
b)マーケティング/プロモーションの登録を解除するオプションを提供する
私はあなたが座って ESIGN Act を読むことをお勧めします。この法令は、法的拘束力を持たせるために電子署名を記録する必要があるものとそうでないものをカバーしています。以前の雇用主で、最も難しい法的ハードルは、署名と文書を10〜15年先まで読めるようにすることでした。
記入された各フォームの詳細は、信頼できる方法で保存する必要があります。明らかに、ユーザーがフォームを送信した後にDBが変更される可能性があるため、フォームの値をデータベース(ユーザーが同意したかどうかを示す列)に保存するだけでは不十分です。私たちのクライアントは、他の大学ポータルが記入されたフォームのスクリーンショットを作成し、ユーザーの名前を含む名前と日付をファイルに付けるなど、簡単に見つけられる方法で専用フォルダーのどこかに保存すると主張していますと時間。
他の人が指摘したように、スクリーンショットは実行できないものです。すべての "マジック"ショーは純粋な偽物なので、偽造することができます。あなたが見る誰かが半分に切断されますが、実際には半分に切断されていません。
誰もが指摘しているように、機能リクエストの技術的および法的メリットは存在しません。つまり、ユーザーがスクリーンショットを手動で取り、フォームの添付ファイルとしてアップロードできるようにする場合のオプションがあります。
私は以前、私のクレイジーなシェアに対処したことがあります。いくつかの技術的な解決策を考えることができますが、クライアントに戻って、質問を「マーケティングメールを受信したくないですか?」 (または同様の表現)、その人がオプトアウトできるようにしますか?その後、スクリーンショットは必要ありません。