2017-01-03 3 views
1

私は、スマートフォンに搭載されたセンサーからデータを読み取り、このデータをJSON形式でアプリケーションサーバーに送信するAndroidアプリケーションを作成しました。Androidアプリケーション:DESまたはRSA?

私は、httpsプロトコルで動作し、相互認証(自己署名証明書で構成)で自分自身を認証するようにserverとandroid appを構成しました。

Androidアプリケーションで、クライアントとサーバーが認証プロセスを開始する前に暗号化を追加するように求められました。

この点に関して、私は、リソース消費の観点からDESとAESの間で最良のアルゴリズムが何であるかを理解したいと思います。

ウェブ上で何も見つかりません。私はこの議論についてもっと理解できるいくつかのリソースに私をリダイレクトできますか?

答えて

3

DESは、ほぼすべての正当な対称暗号化の使用で推奨されていません(これは時代遅れであり、容易にブルートフォース可能です)。 Blowfish、Twofish、RC4(また示唆されていない)、3DES/TDESは他の選択肢ですが、AES(ブロックサイズ128ビットのRijndael)は標準的な対称暗号化ソリューションです。この場合、AESは普遍的にサポートされ、あなたの最善の解決策になります。 AndroidはネイティブのJava JCA (formerly JCE)ライブラリとSpongyCastle(Android向けに設計されたBouncyCastleの改訂版)を通じてAES暗号化をサポートしています。

:あなたはこれをバックアップするために、より実質的な何かが必要な場合は

、資源がたくさんあります

CSPRNGから生成された強固な(128ビットまたは256ビット)鍵を使用するか(PBKDF2、bcrypt、または高い作業係数/反復での強力なパスフレーズから安全に派生)、それぞれに固有の予測不可能なIV GCMまたはEAXのような関連するデータ(AEAD)cipher block mode of operationでの認証された暗号化、または(好ましくは)暗号化テキストのHMACベースのメッセージ認証コード(MAC)を無効にし、一定時間平等チェックの前に復号化を実行します。

2

DESを使用しないでください。それは確かに骨董品(40歳以上)と短いキーの長さ(56ビット)は、今日はかなりのハードウェアで非常に迅速にクラックすることができることを意味します。

その弱点は以前から認識されていたので、より良いセキュリティを提供するために、Triple DES (3DES)が導入されました(キー長を112ビットに増やす)。しかしながら、アルゴリズムは各ブロックのデータを暗号化するためにはるかに多くの作業をしなければならないので、これは計算時間の増加を犠牲にして来た。

AESはあらゆる点で3DESを打ち負かします。設計上、it is able to operate at high speed with low memory requirements。さらに、最新のプロセッサ(Intel x86およびARMアーキテクチャを含む)にはbuilt-in AES instructionsがあり、ハードウェアで暗号化と復号化を実行できるため、3DESで可能となるよりもはるかに高速です。

1

私はDESに関して他の答えに同意する必要があります - それは動機づけられた攻撃者に対してほとんど防御を与えません。

RSA(あなたのタイトルで言及されている他のアルゴリズム)では、公開鍵暗号化アルゴリズムは一般的にはかなり遅いです(個人的にタイムアウトしたことはありませんが、それ)。

また、長いメッセージを交換するために公開鍵暗号を使用することは、おそらく安全性が低いです。いくつかの背景として、公開鍵暗号は、一般に、ある種のtrap-door function(すなわち、計算が比較的容易であるが逆関数を見つけることが困難な関数)に依存する。これらの機能は非常に見つけにくいことが判明しました。現在最も一般的なものの1つ(RSAの基礎となっているもの)はinteger factorizationであり、 "標準"コンピュータではNP-Intermediateです(しかし、量子コンピュータではbrokenです)。

まず、整数の因数分解は、NP-中間体であるという事実は、RSAで、少なくとも理論上の弱点である - 技術的には、誰もが(ただし、NP-中間の問題は本質的多項式時間アルゴリズムより「困難」であること、実際にを証明しませんコンピュータサイエンスの主要な未解決の問題の1つであるP vs. NP problemを解決する必要があるからです。

トラップドア機能の多くは、AESやTwofishな​​どの良い対称鍵アルゴリズムを破るほど難しくないことが判明しています。つまり、公開鍵のための最善の公開解読法暗号化アルゴリズムは、対称鍵アルゴリズムのものより少なくともいくらか実行可能である傾向があります。 (AESをブルートフォースで「破壊」することが完全に不可能で、それに対する既知の攻撃も実現可能なものではありません。なぜなら、ここにはarticleがあります。

このため、公開鍵暗号は、鍵交換などの目的でよく使用されます。この時点で、両当事者は対称鍵暗号方式に切り替わります。

すべてのことは、他の人が正しいAESを使用しているということです。

関連する問題