こんにちは。iimonでエンジニアをしている林と申します。
今回は情報セキュリティについて調べた事を記事にしました。
全部記事にすると、とてつもない量になりますので分けていこうかなって思います。
今回は情報セキュリティと暗号技術の機密性の概要について解説していきます。
暗号化について使われる用語については以下になります。
暗号の用語
- 平文
- 暗号化される前のデータ
- 暗号文
- 暗号化されたデータ
- 復号化
- 暗号化されたデータを平文に戻す
- 鍵
- 暗号化、復号化の際に使用する鍵データ
- 暗号解読
- 正規の復号手順を踏まずに暗号化されたデータの平文を取得することに成功したこと。一部でも解読出来たら暗号解読出来たと判断される場合もあるので状況によって意味が異なってくる
そして情報セキュリティーの要素ですがいくつかの要素で構成されています。
情報セキュリティの3要素
- 機密性
- データの秘匿
- 完全性
- データの正確さ(改竄されてないこと)
- 可用性
- データをいつでも安全に利用できる状態の確保
情報セキュリティの観点としては上記の3つは最低限保証しなければなりません。
そしてより重要な情報を扱う上では以下の追加要素も考慮しなければなりません。
情報セキュリティの追加要素
- 真正性
- 通信相手が本当に本人なのか
- 責任追跡性
- システムがおかしな挙動をしたり攻撃された時に原因を追跡できるようにする
- 否認防止
- 取引などの承認を本人が了承したにも関わらず否認された時に反論できるようにする
- 信頼性
- 不具合なくシステムが正常に動作していること
暗号技術の要素
そして暗号技術は主に以下の要素を満たす為に利用される技術です。
セキュリティ業界での原理原則
以下がセキュリティ業界で広く知れ渡っている原理原則とのことです。
他にもあるかもしれませんが、今回は以下の3つを紹介していきます。
- Work Factor
- ケルクホフスの原理
- シュナイアーの法則
- 暗号学者ブルース・シュナイアーによって提唱されたもので、最強の暗号のプロである(と自分で思い込んでいる)自分自身でも破れないようなセキュリティを作って『安全だ』などと思うのは、無能な素人と同レベルだ。他の多くの専門家による長年の解析を経ても破ることができないようなセキュリティを作る事こそが難しいのだ」というものです。こちらは、要約すると以下の理由により安全じゃないと言う提唱のようです。
- バイアス:設計者はシステムが安全であると信じたいというバイアスがあり、潜在的な脆弱性を見逃す可能性がある
- 専門知識の限界: 暗号システムの安全性を評価するには、幅広い専門知識と経験が必要で、設計者がすべての攻撃手法や脆弱性を知っているわけではないため、他の専門家によるレビューが不可欠
- 多様な視点の欠如: 他の専門家によるレビューは、異なる視点やアプローチを提供できる。これにより、設計者が見逃した脆弱性や攻撃手法が発見される可能性が高まる。
- コミュニティの検証: 暗号システムの安全性は、様々なコミュニティによる検証とテストを経て初めて確立される。多くの専門家がシステムを評価し、攻撃を試みることで、システムの強度が担保される。
言われてみれば自分で作った暗号を自分で破れないからと言って、それが安全だという確証は無いのでケルクホフスの原理に従って暗号アルゴリズムを作った際は公開するべきと言う考え方に共感しました。
機密性
暗号化技術の機密性は暗号化と復号化の2つで構成されています。
主に暗号化する場合は以下の3つが使われる事が多いです。
共通鍵暗号
秘密鍵暗号や対称鍵暗号とも呼ばれます。
共通鍵暗号は暗号化する時に使う鍵と復号する時に使う鍵が同じ暗号方式です。
どちらも同じ鍵を使って暗号、復号を行う為、
秘密鍵として他人に知られないようにしないといけません。
主にHDDの暗号化や無線LANやVPNなどの暗号化に使われているみたいです。
流れとしては以下のようになります。
1、秘密鍵を他人に知られないように共有
2、送信者は秘密鍵で平文を暗号化し送信
3、受信者は秘密鍵で復号し平文を取得
公開鍵暗号
非対称鍵暗号とも呼ばれます。
公開鍵暗号は暗号化用の公開鍵と復号化用の秘密鍵を作る暗号方式です。
共通鍵暗号と違い、秘密鍵でのみ復号化出来、公開鍵から秘密鍵を求めることは数学的に困難とされているので共通鍵暗号のように鍵を相手に渡すのに苦労することはない利点があります。
主に暗号通信や電子署名の暗号化に使われているみたいです。
流れとしては以下のようになります。
1、受信者が公開鍵と秘密鍵の鍵ペアを作成
2、送信者に公開鍵を共有
3、送信者は公開鍵で平文を暗号化して暗号文を送る
4、受信者は秘密鍵で復号
ハイブリット暗号
ハイブリット暗号は共通鍵暗号の鍵を公開鍵暗号で暗号化して渡し、
送信データ本体は共通鍵暗号で暗号化して送る暗号方式です。
公開鍵暗号と共通鍵暗号を組み合わせて軽くする暗号方式になります。
主にHTTPSで使われているみたいです。
流れとしては以下のようになります。
1、受信者は公開鍵を送信者に共有しておく
2、送信者は共通鍵暗号の秘密鍵を都度作成(セッション鍵とも呼ばれる)
3、送信者は作成した共通鍵暗号の秘密鍵を公開鍵で暗号化して送る
4、送信者は平文を共通鍵で暗号化して送る
6、受信者は暗号文を復号した共通鍵で復号
上記のいずれかの暗号方式を使用しセキュアな通信を実現してます。
まとめ
暗号化の機密性の概要について解説しました。
情報セキュリティとしては、ほんの基礎の基礎でしか無いんですが、概要だけでも纏めているだけで自分の中に落とし込まれて大分整理がついたので良かったなって思います。
詳しい暗号化のアルゴリズムまで纏められなかった為、他のブログと被らなければ次回纏めたいと思います。
完全性や真正性の解説もありますし、続けて行くと超大作になりそうです。。。
乞うご期待!!!!!!
また、iimonではエンジニアを募集しています。カジュアルからでもお話させていただきたく、是非ご応募していただけると嬉しいです! Wantedly / Green
参考資料
図解即戦力 暗号と認証のしくみと理論がこれ1冊でしっかりわかる教科書
https://narto.hatenablog.com/entry/2023/01/27/225839
https://www.gmosign.com/media/work-style/post-0241/
https://news.mynavi.jp/techplus/article/db_security-6/#:~:text=暗号化におけるワークファクター,考えることができます。
https://www.markupdancing.net/archive/20180221-093200.html
https://www.gmo.jp/security/ciphersecurity/encryption/
https://xtech.nikkei.com/it/atcl/column/16/072100153/072100009/
https://techlabo.ryosan.co.jp/article/23103003_1023.html#:~:text=暗号技術は、セキュリティ機能,に読まれないこと。
https://www.fujitsu.com/jp/solutions/business-technology/security/secure/column/201703-1/
https://www.youtube.com/watch?v=8BIqiqQnmZ8
https://xtech.nikkei.com/it/article/COLUMN/20060620/241303/
https://meetsmore.com/product-services/electronic-signature/media/105405