2016-08-05 13 views
1

するための復号秘密を検証し、私は、OpenSSL AES-256-CBCを使用してファイルfile1を暗号化:openssl aes-256-cbc -a -salt -in file1 -out file1.enc -k secretチェック/ UNIXシステム上のOpenSSL

復号化はopenssl aes-256-cbc -d -a -in file1.enc -out file1.dec -k secret

を介して行われる検証する方法はあります実際に復号プロセスを開始する前に、秘密は正しいのですか?

私の研究はこれまでのところ有用な結果を示していません。

+0

スタックオーバーフローは、プログラミングおよび開発の質問のサイトです。この質問は、プログラミングや開発に関するものではないので、話題にはならないようです。ヘルプセンターの[ここではどのトピックを参照できますか](http://stackoverflow.com/help/on-topic)を参照してください。おそらく、[スーパーユーザ](http://superuser.com/)や[Unix&Linux Stack Exchange](http://unix.stackexchange.com/)の方が良いかもしれません。また、[Dev Opsについての質問はどこに投稿しますか?](http://meta.stackexchange.com/q/134306)を参照してください。 – jww

答えて

1

暗号化されたデータがあれば、復号化前に鍵が正しいかどうかを判断することはできません。データが意味をなさないかどうかを調べる以外に、解読後に鍵が正しいかどうかを判断することも不可能です。

キーが正しいかどうかを判断するには、他の方法を追加する必要があります。

0

あなたが求めているのは、完全性および/または信頼性のチェックです。 CBCモードのAESは、これらの機能を提供せず、単純な暗号化/復号化のみを提供します。

必要な場合は、CBCモードからGCMモードに切り替える必要があります。復号化中に真正性と整合性のチェックを行います。したがって、復号化に成功した場合は、復号結果が正しいことを確認してください。

0

これがシステム全体であれば、いいえ、OpenSSLには復号化の前にパスワードをチェックするメカニズムがありません(多くの場合、復号化後も)。しかし、そのようなシステムを構築することはできますが、それに制限されていればOpenSSLから構築することさえできます。

私たちがOpenSSLから構築する場合、それを解決するための最も簡単な方法は、同じパスワードを使っていくつかの既知のデータを暗号化することです。暗号化された既知の平文と暗号化された実際の平文を結合する。それらを複数の方法で接着することができます。最も簡単なコマンドライン形式は、ファイルを別々のファイルに貼り付けることです。その後、tarを一緒に貼り付けます。

解読する準備が整ったら、それらを引き裂き、既知の平文を解読しようとします。それが正しく解読されれば、あなたは金色になり、実際のデータを解読することができます。

OpenSSLには特に強力なKDFがありません。このアプローチは、brute-forceパスワードのクラッキングを少し簡単にします(ファイルに既知のヘッダーがある場合より簡単です)。

しかし、これでは暗号文が変更されないことは保証されません。攻撃者はまだそれを変更している可能性があり、OpenSSLは常に知っているとは限りません。フォーマットをさらに変更することでその問題を解決する方法がありますが、opensslは私が知っている直接的な方法を提供していません。ここでの最善のアプローチは、あなたの正確な制約に依存します。

関連する問題