私たちは、すべての単一ソースファイルを(GPGで)暗号化し、make(具体的にはGNU Make)をシームレスに動作させるC/C++プロジェクトを持っています暗号化されていないソース)。C++プロジェクトで暗号化された個別ファイルをセットアップする
我々は唯一のCまたはC++ファイルを暗号化した場合、これはこのようなルールを達成するためにかなり簡単そうです:
%.o : %.cc.gpg %.hh
$(GPG) --decrypt $< | $(CXX) $(CFLAGS) -x c++ -c -o [email protected] -
我々はヘッダファイルを暗号化する起動した場合しかし、それは、多くのトリッキー取得しますCファイルには、任意の数のヘッダを#includeすることができます。最初は依存関係リストを生成し、暗号化されたすべてのものを復号化してコンパイルする必要があるようです。理想的には、コンパイルが行われている間に解読されたファイルを置いておくのではなく、メモリ内で解読が行われるのが理想的です。
いくつかの注意、コメントを見越して私が買ってあげる:(
- ユーザーのワークフローはそのエディタのGPGプラグインを必要とするだろうが、残りの部分は、可能な限りシームレスにする必要がありますすなわち、従来のコマンドラインベースのLinux svn + make + gccワークフロー)
- 私たちはソース管理のためにSubversionを使用しています。私たちは知っていると(例えば破壊のsvn diffのと同様に、この場合の影響)、暗号化ファイルシステム(LUKS)の
- subversionのレポ生活源でOKバイナリ・ブロブとして格納されており、アクセスはHTTPS経由
- ですこれは管理の必要条件です
- この問題に関する私のウェブ調査では、多くの人がすべてのソースファイルを暗号化しないと主張しているのを見てきました。私が言ったように、それは管理要件です。しかし、これらの議論によって対処されていないことの1つは、システム管理者からソースを安全に保つことです。はい、いくつかの点であなたは人々を信頼しなければなりませんが、ソースはコークのレシピのようなものです。制御できないと文字通り会社を台無しにする可能性があります。だからなぜチャンスを取る?
新しい管理をオプションにしていますか? :-) –
復号鍵をビルドプロセスにどのように取り入れる予定ですか?パスフレーズファイル経由の場合は、暗号化されたファイルシステムを使用してデベロッパーワークステーションを設定してください。 –
Linuxシステムで作業する場合、「すべてをメモリ内で実行する必要があります」という点は無視できます。ファイルに書き込む必要があるソリューションがあれば、そのファイルをメモリにマウントされたパーティション(例:/ tmp)に保存するだけです。それで、*ディスク上に*終わるべきではありません。 – Darhuuk