タグ付けされた質問 「encryption」

データの暗号化と復号化に関する質問。これは、攻撃者がデータを読み取ったり改ざんしたりできないようにデータをエンコードするプロセスです。暗号化に関する技術的な質問(アルゴリズムXのしくみなど)は話題外ですが、情報セキュリティや暗号化に関する姉妹サイトの対象となる可能性があります。

15
セキュリティで保護されたデータベースに保存されているパスワードを暗号化する必要があるのはなぜですか?
Webサービスがあります。現在、サーバー上のMySQLテーブルにプレーンテキストでパスワードを保存しています。私はこれがベストプラクティスではないことを知っています。それが私がそれに取り組んでいる理由です。 セキュリティで保護されたデータベースに保存されているパスワードを暗号化する必要があるのはなぜですか?誰かが私のデータベースにハッキングすると、全員のパスワードを取得することに気付きます。しかし、誰かが私のデータベースに入った場合、たとえばデータの削除など、他の問題があります。 私が考えることができるシナリオは、あなたがハッキングされているということです。数時間前からデータベースを復元すると、すべてが順調です。ただし、パスワードがプレーンテキストの場合...泥棒はすべてのパスワードを持っているため、すべてリセットする必要があります。ユーザーの面倒。 パスワードが暗号化されている場合は、以前のデータベースに復元するだけで済みます。これは正しい考えですか?

13
ゲーム内の暗号化されたコンテンツ
私は、暗号化を使用して、ユーザーがプログラム自体の外にある私のプログラムのコンテンツを理解できないようにするという考えを持っています。ユーザーのように、ゲームのデータを調べながら、ゲームで決して使用されていないテクスチャが、ある種のイースターエッグの一部であることに気付くかもしれません。これは、たとえば、オンラインで投稿された場​​合、全員を台無しにする可能性があります。 プレイヤーがゲーム内のセキュリティドアの正しい番号を押す必要がある秘密の部屋を想像してください。正しい番号が正しい場合は正しい解読キーを生成し、レベルのその部分を解読してドアを開けます。したがって、キーは実際には保存されないため、ゲームデータを調べてもイースターエッグにアクセスできなくなります。これは、ユーザー入力に基づいて生成されます。 ここに私が想像していたものの別の例があります。20のレベルのパズルゲームがあり、それぞれが異なるキーを使用して暗号化されています。解読キーをプログラムに保存して、誰かがプログラムを逆コンパイルして見つけられるようにする代わりに、前のパズルの解に基づいて暗号化/解読キーを生成します。この方法では、ゲームデータを見ても、プレーヤーは次のレベルに関する情報を取得する前にパズルを実際に把握する必要があります。 プレーヤーは、知識があれば、パズルソリューションの数がおそらく復号化キーの数より少ないことを考えると、「簡単に」ブルートフォースすることができます。それは本当にパズルの問題の複雑さであり、ここではあまり重要ではありません。私はそれに関する答えをここに投稿しましたが 今日、このようなことをしたプログラム/ゲームはありますか?暗号化されたコンテンツをゲームに保存しますか?そして、もしそうでなければ、なぜですか?店舗または国レベルで、それに関する多くの規則と規制がありますか?誰かが私が見落としている明らかな落とし穴を見ていますか?ユーザーエクスペリエンスのようなものを無視すると、このアイデアは私には聞こえるかもしれませんが、なぜこれを見たことがないのか興味があります。 編集:私が言っていることは正確には明確ではないかもしれないので、ここでより具体的な例を示します。 20文字の文字列を受け取り、ゲーム内の一部のコンテンツを暗号化/復号化するために使用できる対称キーを生成する関数があるとします。ユーザーがそのコンテンツにアクセスできる唯一の方法は、これらの20文字を知って同じキーを生成することです。このキーは直接保存されることはなく、ユーザーの入力に基づいてその場で生成されます。これらのキャラクターは、本やNPCとの対話など、ゲームの外に隠されていたり、ゲームの外でも箱の後ろに隠れていることがあります。 そのため、2 * 10 ^ 28通りの組み合わせを試してみると、ゲームデータを調べるよりも、意図した方法でコンテンツを見つける可能性が高くなります。 編集2:問題のコンテンツは、消費者に出荷される前に、任意の秘密鍵で暗号化されます。このキーは明らかにゲームに同梱されません。キーに基づいて作成された一連の手がかりを考えると、彼または彼女は何らかの方法でキーを一緒に戻さなければならず、それはゲーム全体またはどこかで隠されています。ただし、実際にゲームデータを調べない限り、コンテンツが暗号化されていることがわからないため、このシステムはユーザーに対して透過的です。 多くの人が言及しているように、これにはユースケースが限られているという明らかな欠点があります。一人の人がそれを理解したら、彼/彼女はそれを他のすべての人と共有するかもしれません。しかし、あなたの意図が何かを秘密にして、一人で解決できないようにし、人々が協力して解決する必要がある場合、またはイースターエッグが非常によく隠れて(設計上)それが怖い場合誰かがゲームプレイを通してではなくコード内でそれを見つける可能性が高いです。その後、これはうまくいくと思います。 個人的には、ゲームごとに一度だけ、コアゲームプレイに影響を与えないもの、たとえばイースターエッグ、秘密の結末などにのみ使用することをお勧めします。コンテンツを暗号化するのに十分なほど人々を遅くするためには、パズルは非常に複雑であるか、十分に隠されている必要があります。
45 encryption 

7
Webのコンテンツを保護して、私がそれを最初に作成したことを保証するアルゴリズムパターンはありますか?
数年前、特定のシステムの脆弱性を完全に開示したハッカーがいた(彼が誰であったか覚えていない)が、誰も信用していないことを確認するために、彼は何らかのPGPキーを作成した。 当時私が理解していたのは、彼がそれを発見した人であることを保証するためのキーを作成したが、実際に誰であるかを開示せず、彼が開示を作成した人であることを証明できるメカニズムを作成したことです。 OK。アルゴリズムと暗号化の仕組みを理解しています。しかし、ウェブで公開された特定のコンテンツを保護するためのキーを作成して、それが最初に作成されたものであることを証明する方法をまだ理解していません!言葉だけです! 本当に可能ですか?経験的に証明できるようにするためのプロセスは何ですか?私はそれを正しく理解しましたか、またはおそらくこのケースに関する何かを見逃しましたか? この質問が十分具体的であることを願っています。基本的には、Webで作成したコンテンツ(段落、コード、単語など)を保護する方法であり、与えられたコンテキスト。 私の知る限り、それがどのように可能かはわかりませんが、実用的な方法があれば興味をそそられます。ある?

4
ゼロ知識コードのホスティング?[閉まっている]
オンラインサービスプロバイダーによって保存されたデータの政府による広範囲な監視に関する最近の啓示に照らして、現在、ゼロ知識サービスが大流行しています。 ゼロ知識サービスは、すべてのデータがサーバーに保存されていないキーで暗号化されて保存されるサービスです。暗号化と復号化は完全にクライアント側で行われ、サーバーはプレーンテキストデータまたはキーを認識しません。その結果、サービスプロバイダーは、たとえ暗号化を解除したい場合でも、第三者にデータを解読して提供することはできません。 例を挙げましょう。SpiderOakは、Dropboxのゼロ知識バージョンとして見ることができます。 プログラマとして、私たちはコードのホスティングサービス(Bitbucket、Assemblaなど)の特定のクラスに対して、最も機密性の高いデータ(コード)に大きく依存し、信頼しています。もちろん私はここでプライベートリポジトリについて話しています-ゼロ知識の概念はパブリックリポジトリには意味がありません。 私の質問は: ゼロ知識コードホスティングサービスを作成するための技術的な障壁はありますか?たとえば、SVN、Mercurial、Gitなどの一般的なバージョン管理システムで使用されるネットワークプロトコルについて、クライアントとサーバー間で通信されるデータを暗号化するスキームの実装を困難(または不可能)にするものがありますか?サーバーが知らないキー? 今日存在するゼロ知識コードホスティングサービスはありますか?

4
この単純なXOR暗号化通信は完全に安全ですか?
アリスとピーターにはそれぞれ4GBのUSBフラッシュメモリスティックがあるとします。ランダムに生成されたビットを含むalice_to_peter.key(2GB)およびpeter_to_alice.key(2GB)という名前の2つのファイルを両方のスティックに保存します。二度と会うことはありませんが、電子的に通信します。また、Aliceはという変数を維持し、alice_pointerPeterはという変数を維持peter_pointerします。どちらも最初はゼロに設定されています。 アリスがピーターにメッセージを送信する必要がある場合、アリスnは次のことを行います(メッセージのn番目のバイトは次のとおりです)。 encrypted_message_to_peter[n] = message_to_peter[n] XOR alice_to_peter.key[alice_pointer + n] encrypted_payload_to_peter = alice_pointer + encrypted_message_to_peter alice_pointer += length(encrypted_message_to_peter) (そして最大限のセキュリティのために、キーの使用済み部分は消去できます) Peterはencrypted_payload_to_peter、alice_pointerメッセージの最初に格納された読み取りを受け取り、実行します。 message_to_peter[n] = encrypted_message_to_peter[n] XOR alice_to_peter.key[alice_pointer + n] また、最大限のセキュリティを確保するために、メッセージを読んだ後、キーの使用済み部分も消去します。 -編集:実際、この完全なチェックと認証のないこの単純なアルゴリズムのステップはセキュリティを低下させます。以下のPaŭloEbermannの投稿を参照してください。 ピーターがアリスにメッセージを送信する必要があるとき、彼らは今度はとで逆をpeter_to_alice.key行いpeter_pointerます。 この簡単なスキーマを使用すると、今後50年間、毎日2GB /(50 * 365)=〜115kBの暗号化データを双方向に送信できます。より多くのデータを送信する必要がある場合、たとえば、今日の2TB HD(1TBキー)を使用すると、より大きなキーを使用でき、今後50年間で60MB /日を交換できます。これは実際には大量のデータです。たとえば、圧縮を使用すると、1時間以上の高品質の音声通信になります。 攻撃者がキーなしで暗号化されたメッセージを読む方法はないようです。なぜなら、彼らが無限に高速なコンピューターを持っているとしても、総当たりで彼らはすべての可能なメッセージを制限の下で得ることができますが、これは天文学的な数字ですメッセージの数と攻撃者は、それらのどれが実際のメッセージであるかを知りません。 私は正しいですか?この通信方式は本当に安全ですか?また、安全な場合、独自の名前を持っていますか?XOR暗号化はよく知られていますが、両側で大きなキーを使用するこの具体的な実用的なアプリケーションの名前を探していますか?私はこのアプリケーションが私の前に誰かによって発明されたことを謙虚に期待しています。:-) 注:完全に安全であれば、驚くべきことです。今日の低コストの大容量ストレージデバイスでは、高価な量子暗号より安全な通信を行う方がはるかに安価であり、同等のセキュリティを備えているからです! 編集: これは、ストレージコストが減少するので、将来的にはより実用的になると思います。安全な通信を永遠に解決できます。今日、誰かが1年後でも既存の暗号を正常に攻撃し、しばしば高価な実装を安全でないものにするかどうかは確実ではありません。通信が発生する前の多くの場合、双方が個人的に会うとき、それが鍵を生成する時です。たとえば、大きなキーを持つHDを持つことができる潜水艦間の軍事通信に最適だと思います。また、軍の中央は各潜水艦にHDを持つことができます。アカウントを作成するときに銀行などと会うため、銀行口座を管理するなど、日常生活でも実用的です。

4
米国からの輸出制限に関するプログラマーの懸念
この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 暗号化ソフトウェアに関する米国の輸出規制を満たさなければならないソフトウェアを設計および公開するとき、どの側面を考慮する必要がありますか? ウィキペディアでは、暗号化ソフトウェアに割り当てることができるさまざまなカテゴリがあると述べています。また、輸出先(中国、ロシアなど)も大きな役割を果たしています。しかし、私はこれらの制限と私の仕事への影響を本当に理解していませんでした。 誰も私にそれを説明できますか? アプリケーションを公開しようとすると(たとえば、AppleのApp StoreやAndroidのマーケットで)、アプリケーションが米国の輸出規制を満たしていることを確認する必要があるからです。また、パスワードなどの安全な情報ストレージを提供する多くのアプリケーションがあります。 彼ら全員が政府に通知し、レビューを求めましたか?もちろん、彼らがそうしたかどうかはわかりません。しかし、彼らはこれを行う必要がありますか?

7
データベース内のデータを暗号化する必要がありますか?
私にはクライアントがあり、そのために、患者のケア、患者の管理、相談、履歴、カレンダーなど、基本的にはすべてに関するWebアプリケーションを作成します。 問題は、これが機密データ、患者の履歴などであるということです。 クライアントはデータベースレベルでデータを暗号化することを主張しますが、これはWebアプリのパフォーマンスを低下させると思います。(しかし、私はこれについて心配するべきではありません) 私は健康問題に関するデータ保護に関する法律を読んだことがありますが(ポルトガル)、これについてあまり具体的ではありません(これについて質問したばかりで、彼らの応答を待っています)。 次のリンクを読みましたが、私の質問は異なります。データベース内のデータを暗号化すべきかどうか。 データの暗号化で予測される問題の1つは、キーが必要になることです。これはユーザーパスワードかもしれませんが、ユーザーパスワードがどのようになっているか(12345など)を知っており、保存する必要のあるキーを生成しますどこかで、これは、プログラマー、dba、それにアクセスできるものは何でも、これについての考えを意味しますか? ランダムソルトをユーザーパスワードに追加しても、私はいつでもアクセスでき、データを復号化できるため、問題は解決しません。
16 php  mysql  encryption 

6
ウェブサイトとパスワードが安全であることをユーザーに保証する方法[非公開]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 信頼できるWebサイトでは、「すべてのデータは暗号化されています」または「すべてのパスワードは128ビット暗号化を使用して暗号化されています」などのクレームが常に表示されます。 私のウェブサイトでは、SHA-512(ほとんどの場合)ハッシュをランダムソルトで使用した後、すべてのユーザーパスワードをデータベースに保存します。パスワードが必要であるためにWebサイトの使用を妨げないように、パスワードが安全であることをユーザーに保証するスニペットを追加します。ユーザーに安全を感じてもらいたいのですが、ハッシュとは誰もが知っているとは思いません。 私の質問:「すべてのパスワードは暗号化され安全です」というメッセージを提供しても大丈夫ですか?平均的なユーザーはハッシュと暗号化の違いを知っているとは思わないので、見ているだけで安全だと感じる可能性が高い慰めの言葉「暗号化」?または、提供する必要がある代替メッセージはありますか? ちなみに、私は暗号化とパスワードハッシュが初めてであり、サイトを立ち上げた時点でこれで十分であるかどうか疑問に思っていました。安全でない場合は安全だとユーザーに伝えたくありません。どんな情報でも大歓迎です。ありがとう。


3
ROT13はどこで使用しますか?
vimのドキュメントを読んでいて、ショートカットがあることに気付きました。たとえば、g?wROT13を使用して次の単語を変換します。また、PythonファイルのエンコーディングをROT13に変更できることも知っています。 ここに私の質問があります:なぜですか?Django FUNserverのようないたずらプログラムを除けば、それほど有用ではないようです。
13 encryption 

2
(サードパーティの)データベースに重要なデータを保存する
データベースにSSN、クレジットカード番号、住所などの重要な(プライバシーに関する)ユーザーデータをどのように保存しますか? シナリオ: 使用可能にする必要があるデータのみが保存されます。たとえば、SSNが保存されるのは、アプリがSSNを使用して特定のレコードを識別するためです。ワンクリックトランザクションを可能にするためにクレジットカードの詳細が保存されます。そのようなデータの一部は暗号化して保存できますが、一部のデータはプレーンテキストで使用できる必要があります(フルテキスト検索など)。アプリはサードパーティのホスティングを使用します。 質問: HostGatorやApp Engineなどのサードパーティのホストでは、プレーンテキスト(またはその他)のデータはどの程度安全ですか? そのようなデータをサードパーティのホストに保存しますか(そして、このプラクティスは推奨されますか)? プレーンテキストで保存しますか、またはそのようなデータを暗号化しますか? 独自のサーバーを所有するリソースを持っている企業のみが、そのようなアプリの構築に進むべきでしょうか?

2
暗号化を元に戻すことはできませんか?
暗号化された文字列は復号化できないため、元の値が永久に失われるという印象を受けています。 ただし、次の文字列が常に「dominic」(私の名前)と等しい場合、それを逆にする論理的な方法はありません。それはランダムではなく、日付/時刻に基づいているわけではありませんが、それには論理的な方法がありますか? 0WrtCkg6IdaV/l4hDaYq3seMIWMbW+X/g36fvt8uYkE= 「dominic」(文字列)を何回または何回暗号化しても、常に上記と同じになります。それで、そのような文字列を解読する方法はありませんか? 私が話していることの例: public string EncryptPassword(string password) { return Convert.ToBase64String( System.Security.Cryptography.SHA256.Create() .ComputeHash(Encoding.UTF8.GetBytes(password))); }

2
データの暗号化/保護-高レベルのベストプラクティスに関する情報の入手先[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 6年前休業。 私が所属するグループの誰も、私も含めて、暗号化とセキュリティ、または特定の決定を行う背後にある理由を実際に理解していないと感じています。たとえば、私たちは最近、私たちが扱う別のグループのために処理するデータの暗号化について会話しました。したがって、企業ネットワークの整合性は非常に高いです)、私たちが扱う他のすべてと一緒に。もちろん、標準のガイドラインでは、このデータの「暗号化」を求めています。 明らかに、それは多くのことを意味する可能性があります-IPSec /暗号化された接続、暗号化されたファイル共有、DBに実装された暗号化(DB全体または列)、ファイル内の実際のビットの暗号化など-およびグループの一部の人々は実際にカウントされる唯一の種類の暗号化は、格納されているビットを直接暗号化することであるという印象です。議論は、他のすべては簡単に回避できるというものです-「DBが暗号化されている場合でも、ログインしてそこにデータを表示できます。ファイル共有が暗号化されている場合は、フォルダーへのアクセス許可がある限り、ファイルを取得できますが、ビットが直接暗号化されている場合は読み取ることができません。」私の本能は、そのステートメントは限られた理解に基づいていると言います:彼らはSQL Server Management Studioにログインしてデータを見ることができ、しかし、暗号化されたデータのストリームまたは配列を取得し、おそらくそれを解読するためにアクセスできる証明書を使用する方法を彼らは知らないので、それはおそらく安全です。彼らは正しいですか?私は正しいですか?誰も本当に知っているようには見えないので、決定は最も声の大きい人や最も高額な人の意見に基づいて行われます。 とにかく、それは私が話していることの単なる拡張例です。私は、ここでブラインドをリードしているブラインドであり、限られた理解に基づいて決定を下しているように感じ、それはイライラさせられます。私は暗号化の技術的なビットについては専門家ではありませんが、標準ライブラリを使用してストリームやアレイなどを暗号化する方法を知っています-データセキュリティの設計と、そのような決定の基礎となる情報についての知識が本当に必要な場合は、上記。この種のものについてどこで読むことができますか?

3
Webブラウザはどのようにパスワードを保存しますか?
現在のWebブラウザー(またはモバイルメールクライアントと一般的なソフトウェア)はユーザーパスワードをどのように保存しますか?パスワードの保存に関するすべての回答は、パスワード自体ではなく、ハッシュのみを保存する必要があると述べています。しかし、後でパスワードをプレーンテキストで必要とすることがわかっているときに、弱い暗号化(既知のキー)を使用せずにそれらをプレーンテキストで保存することなく、パスワードを保存するための最良の手法を見つけるためにWebを検索するのに苦労しています。ユーザーにマスターパスワードを要求しません。何か案は?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.