解決策
LabVIEW VIパスワード保護
LabVIEW VIパスワード保護は、ユーザがVIを実行できますが、パスワードなしでVIのブロックダイアグラムを表示または編集することはできなくする機能です。この機能は、VIが再コンパイルされている限り、LabVIEWの将来バージョンで開かれた際に適用されます。VIをパスワードで保護する方法については、
パスワード保護VIを作成するを参照してください。
LabVIEWがVIを再コンパイルできるようにするには、VIのブロックダイアグラムを読み取ることができる必要があります。LabVIEWはユーザにパスワードの入力を求めずにこれを実行できる必要があるため、LabVIEWは強力な暗号化を使用してVIのブロックダイアグラムを保護することはできません。
現行のVIパスワード保護メカニズムは、VIパスワードとVI内の別の場所に埋め込まれた追加のソルト(ハッシュ関数への入力として使用されるデータ)から派生した一連のハッシュに依存しています。パスワード自体はVI内部に格納されることはありませんので、VIを再コンパイルする必要がある場合は、パスワードの入力を求めずにLabVIEWがブロックダイアグラムにアクセスできることを確認します。
VIのブロックダイアグラムを表示または編集しようとすると、VIパスワードの入力を求められます。ユーザがパスワードを入力すると、入力されたパスワードの計算されたハッシュセットが、VIに格納されたハッシュと比較されてから、ユーザがブロックダイアグラムにアクセスできるようになります。この方法とVIのブロックダイアグラムを暗号化しないように設計した結果、攻撃者は下記のいずれかの方法でパスワードハッシュを自分で置き換えることができます。
- ソルトとVIファイル内のハッシュの正確な位置を決定する
- または - - LabVIEWプロセスのハッシュ比較ルーチンを変更する(例: メモリデバッガを使用する)
これまでのところは数少ないと考えていますが、攻撃者はVIのパスワード保護を解読し、パスワードを別の攻撃者のものに置き換えるプログラムを作成することは可能です。
VIパスワード保護よりも高いセキュリティが必要な場合は、VIのブロックダイアグラムを削除することをお勧めします。
VIのブロックダイアグラムを削除する
VIのブロックダイアグラムを削除すると、VIパスワード保護を使用するよりも保護が強化されますが、ブロックダイアグラムの簡単な回復や異なるLabVIEWバージョンでの使用はできません。VIブロックダイアグラムを削除する方法については、
VIからブロックダイアグラムを削除するを参照してください。
VIのブロックダイアグラムを削除した後は、元のブロックダイアグラムをVIから復元することは非常に難しいです。それは、テキスト言語コンパイラによって生成された機械語命令を含む実行アプリケーションのみが与えられたテキストプログラムのソースを回復することに匹敵します。
さらに、LabVIEWはVIがコンパイルおよび保存された同じLabVIEWバージョンおよびプラットフォームでのみVIを実行することができます。逆に言うと、新しいLabVIEWバージョンまたは他のプラットフォームは、VIを再コンパイルできません。したがって、サポートするLabVIEWのバージョンとプラットフォームの組み合わせごとに別々のVIを提供する必要があります。
VIブロックダイアグラムの削除に伴う配布負担を回避する目的で、VIブロックダイアグラムを削除するより安全性が低いVIパスワード保護機能を提供し続けています。