Help us understand the problem. What is going on with this article?

暗号化方式/アルゴリズム/パディング/ブロック化のまとめ

More than 1 year has passed since last update.

あるAPIと暗号化した通信を行う際に、API側から指定された暗号化方式について「???」となったので、暗号化に関する用語と概念の自分用まとめ。

暗号化の種類

暗号化には共通鍵暗号、秘密鍵暗号の2種類がある。

暗号方式 主なアルゴリズム 特徴
共通鍵暗号 AES、RC4、DES、3DES 暗号化と復号化に同じ鍵を利用
秘密鍵暗号 RSA、ElGamal 暗号化と復号化で異なる鍵を利用

このうちAES,RSAがよく使われる。
またハイブリット方式というものもよく使われる(SSLとか)。

共通鍵暗号では、処理時間が高速なのですが、第三者に鍵の情報が分かってしまうとデータが復号されてしまうという問題があります。また、公開鍵暗号では、安全に鍵の情報を保持できるのですが、処理時間が非常に遅いという問題があります。そこで、これら2つの方式の利点を兼ね備えたハイブリッド方式という手法があります。ハイブリッド方式では、共通鍵を安全に渡すために、鍵交換の際には公開鍵暗号を使用して、実際のデータの暗号化には共通鍵を使用します。これにより鍵は安全に配布でき、高速処理できます。
http://www.infraexpert.com/study/security4.html

ブロック暗号化

AESにせよRSAにせよ、通常、暗号化は鍵のサイズと同じバイト長を1ブロックとして暗号化する。1024ビットの鍵ならば128バイトを1ブロックとして暗号化する。

パディングモード(パディング方式)

分割する時にブロックで綺麗に割り切れない場合は、パディングで穴埋めする。
パディング方式の種類としてあげられるのは、PKCS#5 とか PKCS#7 とか、Optimal Asymmetric Encryption Padding(OAEP)とか。OAEPはRSAと組み合わせることが多く、その場合はRSA-OAEPと呼ばれる。
cf. http://pentan.info/doc/block_cipher.html#anc_padding

暗号化モード(暗号利用モード)

暗号化モード 特徴
ECB ブロックに分割しそのまま暗号化。そのため鍵と暗号対象データが同じであれば、同じ暗号データになる。
CBC 最初のブロックについては初期ベクトル(IV)と暗号対象データをXOR計算した結果を暗号化する。次のブロックについては、前のブロックとそのブロックをXOR計算した結果を暗号化する。そのため、元のデータと鍵が同じでも一意の暗号データになりにくい。

cf. http://qiita.com/hibara/items/c9096376b1d7b5c8e2ae

その他の種類については https://ja.wikipedia.org/wiki/%E6%9A%97%E5%8F%B7%E5%88%A9%E7%94%A8%E3%83%A2%E3%83%BC%E3%83%89

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした