1

私の会社のクライアントの多くは、研究ベースでデータ取得ソフトウェアを使用しています。一般的な調査の性質上、改ざんを防ぐためにデータを暗号化するよう依頼するクライアントもいます。データが改ざんされていることが判明した場合、深刻な問題が生じる可能性があります。

一部のバイナリソフトウェアは、ソースに保存されているランダムな文字のようなパスワードで出力ファイルを暗号化します。ソフトウェア レベルでは、暗号化されたファイルを読み取り専用操作で開くことができます。誰かがデータを変更できるようにパスワードを本当に知りたい場合、それは可能ですが、大変な作業になります。

別のソフトウェアを迅速に開発するために Python を使用することを検討しています。暗号化の機能を複製してデータの改ざんを無効/抑止するために、これまでに思いついた最良のアイデアはctypes、ファイルの読み取り/書き込み操作に DLL を使用するだけで、暗号化と復号化の方法が「十分に」難読化。

「クラック不可能な」方法が実現不可能であることは十分承知していますが、同時に、暗号化/復号化のアプローチが Python のソース コードにプレーン テキストで記述されていることに満足していないことは明らかです。「データ改ざんの非常に強力な阻止」で十分だと思います。

Python を使用して、暗号化やその他のデータ整合性の証明の満足のいく媒体を達成するための最良のアプローチは何でしょうか? 「改ざん防止署名」の生成について話している別の投稿 を見ましたが、署名が純粋な Python で生成された場合、任意のデータの署名を生成するのは簡単です。データの完全性を証明するために家に電話することはできるかもしれませんが、それは関係者全員にとって大きな不便のようです.

4

3 に答える 3

12

一般的な原則として、改ざんから保護するために暗号化を使用するのではなく、デジタル署名を使用します。暗号化によって機密性が確保されますが、完全性が求められます。

データのハッシュ値を計算し、改ざんできないことがわかっている場所にハッシュ値を保存するか、デジタル署名します。

あなたの場合、あなたのソフトウェアだけがファイルを生成できるようにしたいですか? あなたが言うように、ユーザーがソフトウェアにアクセスできる場合、これを行うための本当に安全な方法は存在しません. その制約を考えると、DLL を使用するというあなたのアイデアは、できる限り良いものだと思います。

于 2009-07-24T16:46:22.247 に答える
3

パスワードをどこかに埋め込んでいる場合は、すでにうんざりしています。何も保証できません。

ただし、公開キー/秘密キー暗号化を使用して、データが改ざんされていないことを確認できます。

それが機能する方法は次のとおりです。

  1. 公開鍵と秘密鍵のペアを生成します。
  2. 秘密鍵を安全に保ち、公開鍵を配布します。
  3. データをハッシュし、秘密鍵でハッシュに署名します。
  4. 公開鍵を使用してハッシュを検証します。

これにより、データが社外では効果的に読み取り専用になり、パスワードを配布せずにデータが変更されていないことを簡単に検証する方法がプログラムに提供されます。

于 2009-07-24T16:45:37.333 に答える