AES-256bitの暗号化と復号化について
最高レベルの暗号化強度を有するAES-256bitが実現するセキュアな暗号化とはどのようなものなのかについてメモっています。
暗号化とは、ある決まった規則に基づいてデータを変換する方式です。
暗号化には以下の2つの方法が取られています。
・共通鍵暗号化方式
・公開鍵暗号化方式
共通鍵暗号は、暗号化と復号の双方に同じ鍵を用いる方式です。同じ鍵を共有するために、鍵を受信者に対して安全に知らせなければなりません。
公開鍵暗号は、対になる2つの暗号化鍵と復号鍵を使う方式です。鍵の受け渡しを行う必要がなく、共通鍵暗号よりも強度が高いと言われていますが、一般的に共通鍵暗号よりも暗号化、復号に時間がかかるため、多くの場合に共通鍵暗号方式が使われています。
その共通鍵暗号化方式の規格「DES(Data Encryption Standard)」を1976年に定めましたが、さすがに最新暗号解読技術に追いつけず、新規格として2001年に登場したのが、「AES(Advanced Encryption Standard)」です。
なので、原理的にはDESと同じですが、DESの56bit鍵より長い128bit、192bit、256bitの3通りの鍵が利用可能でより高い強度を実現しています。
以下サイトにC言語のAES256bitの暗号化&復号化のサンプルソースがあります。
<https://github.com/dhuertas/AES/blob/master/aes.c>
このサンプルでは、cipher関数で暗号化対象データの配列変数inを暗号化し、配列outに格納します。
そのときに使われる256bitの暗号化鍵が配列変数keyです。共通鍵暗号化方式であるため、同じkeyを使い、inv_cipher関数で暗号化済みデータoutを復号化し、配列変数inに再度格納して表示するサンプルになります。
相手方と同じ暗号鍵で暗号化復号化を行うプログラムを作成時に参考してください。
0コメント