- 公開日:2024年10月07日
- | 更新日:2024年10月10日
暗号化の基礎技術および規格
- ライター:乘松 誠志
- その他
情報セキュリティに不可欠な暗号技術およびその規格について、簡単にまとめたいと思います。
NISTとFIPS
NIST(National Institute of Standard and Technology)はアメリカ合衆国の国立の計量標準の研究所で、FIPS(Federal Information Processing Standards)はNISTが発行する情報処理に関する標準規格です。
暗号について良く参照されるFIPSの項目はFIPS 140で、暗号モジュールに関するセキュリティ要件の仕様であり、2019年発行のFIPS140-3が最新です。米国政府のみならず一般企業の調達要件に、FIPS140-3認証取得を求められるケースが増えてきています。
暗号化アルゴリズム
FIPS140-3の認証取得を得るためには、FIPSやNIST SP(Special Publications)で定義された暗号化アルゴリズムを採用することが不可欠です。暗号化には対称鍵暗号、非対称鍵暗号の2つの方式があり、各々に対して詳細な条件が定められています。ここでは、各方式についてまとめます。
対称鍵暗号
共通鍵暗号とも呼ばれ、暗号化と復号化を同じ鍵(共通鍵)で行う方式です。
本方式は、計算コストの低さから、大規模データやリアルタイムの暗号化に広く用いられています。しかし、共通鍵が漏洩した場合に第三者がデータを復号化できてしまう欠点があります。
本方式の代表的なアルゴリズムとしてはAES(Advanced Encryption Standard) があります。FIPS 197として規格化されており、データを区切り、置き換え・並べ替え・鍵とのXORのセットを複数回繰り返すものです。
AESの鍵長として128bit、192bit、256bitが選べますが、128bitでも鍵無しではいまだに解読されておらず、処理速度の面から実用上は128bitで十分と考えられます。
非対称鍵暗号
公開鍵暗号とも呼ばれ、暗号化と復号化を別々の鍵で行う方式です。
受信者(下図の場合はBさん)は、暗号化のための鍵(公開鍵)を生成し、送信者(下図の場合はAさん)に渡します。この公開鍵で暗号化したデータは、Bさんのみが持つ鍵(秘密鍵)でしか復号化できないようになっています。
秘密鍵を持たない第三者には復号化が困難な反面、対象鍵暗号に比べ計算量が多く、処理速度が遅くなる欠点もあります。
本方式の代表的なアルゴリズムとしてはRSA (RSAは3人の発明者の名前の頭文字)があります。大きな数の素因数分解には膨大な時間がかかることを利用したアルゴリズムですが、計算機技術の進歩により、公開鍵の長さを1024bit以上にしないと、秘密鍵が解読される可能性があります。NISTは公開鍵長として2048bitを推奨しています。
また本暗号方式の応用例として電子署名があります。
秘密鍵は鍵の作成者のみが持つ性質を応用し、署名生成を秘密鍵で行った場合、その署名が鍵の作成者のものであることの検証を、他者が公開鍵で行うことができます。
ハイブリッド暗号
上記2つの暗号方式を組み合わせたものになります。本方式では下記順で処理が行われます。
①送信者(Aさん)が共通鍵を作成する
②送信者は送信データを①の共通鍵で暗号化する
③受信者(Bさん)は公開鍵、秘密鍵を作成し、公開鍵は送信者に送信する
④送信者は③で受け取った公開鍵を使って①の共通鍵を暗号化し、②の暗号化データと共に受信者に送信する
⑤受信者は、秘密鍵を使って④で暗号化された共通鍵を復号し、その共通鍵を使って送信された暗号データを復号する。
つまり、対称鍵暗号方式の共通鍵のみを、非対称鍵暗号方式でやりとりすることにより、対称鍵暗号方式の共通鍵が漏洩した場合のリスクを抑えつつ、そのメリット(計算コスト低による高速処理)を生かすことが出来ます。
Webページのhttpsで始まるものは、サーバーとクライアント間の通信にこのハイブリッド暗号方式が使われています。
ハッシュ化
暗号化と混同されやすいものとしてハッシュ化がありますので、ここで少し説明します。ハッシュ化とは、データを不可逆変換する処理のことで、復号化は不可能となります。ここが暗号化と異なります。また、異なるデータをハッシュ化して同じデータになる可能性は非常に低いとされています。
ハッシュ化の主な用途としては
・パスワード等の重要なデータの保存・管理
・データが改竄されていないかの確認
となります。
ハッシュ化を行うハッシュ関数の代表的なものとしてSHA-256があります。この関数は、FIPS 180-4として規格化されており、264-1 bitまでの任意の長さのデータを、256bitのデータに変換します。
例:
“MACNICA” をSHA-256変換した結果は
0e136a1b3f4acea90a64b2f6dac65e986a80f6083e84501e9db89f7f5623c110
となります。
まとめ
本日は、暗号化の基礎技術および規格について簡単にご紹介いたしました。
上記に紹介した暗号化手法につきましては、あくまでFIPS140-3の要件の一部であり、AES、RSAをサポートしているからといってFIPS140-3認証を得ているわけではない点はご注意願います。
ルネサス社マイコンのFIPS140-3およびその他セキュリティ関係の認証取得の最新の状況につきましては、弊社サポート担当 までお問い合わせ願います。