見出し画像

暗号の基本

多くのITエンジニアは開発でGitを利用したことがあると思います。そんな中、お作法的な理解の元に公開鍵を生成してリポジトリに登録した経験ありませんか?
今回はそんな、身近で利用される暗号の基本的な内容を簡単にまとめてみました。

暗号の必要性

暗号は情報セキュリティ3要素の中の主に2つを守るために存在します。

機密性(Confidentiality)

許可された人だけが情報を閲覧できる状態を表します。

完全性(Integrity)

情報が正確で改ざんされていない状態を表します。

暗号化と復号

『鍵』と『アルゴリズム』を組み合わせ、『メッセージ』を解読できない状態に変換することを暗号化と呼び、元の『メッセージ』に戻す事を復号と呼びます。(元に戻せない不可逆な暗号も存在します)

暗号化方式

主に以下の3つの方式が存在します。

  • 共通鍵暗号方式

  • 公開鍵暗号方式

  • ハイブリッド暗号方式

共通鍵暗号方式

暗号化と復号で同じ鍵を利用する方式です。
共通鍵をどのように共有するのか、鍵管理コスト(下に説明あり)をどう考えるのかがセキュリティ上の課題となります。
この方式を利用した有名な暗号方式にはAESがあります。

公開鍵暗号方式

暗号化と復号で違う鍵(鍵ペア)を利用する方式です。
暗号化、復号の処理が複雑なため時間がかかるという課題があります。
この方式を利用した有名な暗号方式にはRSAがあります。

鍵管理コスト

大勢と暗号化通信を行うにあたりどれだけ鍵の管理にコストがかかるかの指標となります。以下は、100人が相互に暗号化通信を行う場合を例となります。

  • 共通鍵暗号方式:4950種類の鍵が必要(n×(n-1)÷2)

  • 公開鍵暗号方式:200種類の鍵が必要(2n)

ハイブリッド暗号方式

公開鍵暗号と共通鍵暗号を組み合わせて利用することで、それぞれの課題を克服した方式です。
HTTPSのセキュアな通信(TLS)で利用されています。

最後に

今回は(可逆)暗号の基本的な内容となりますが、不可逆な暗号(ハッシュ化)や量子暗号なども今後紹介したいと思っています。

身近で利用される暗号の基本的な内容を理解することで、セキュリティに対しての理解を深めるキッカケにしてもらえれば幸いです。

余談

本記事の画像は2023年11月11日に開催されたJJUG CCC(日本Javaユーザグループ クロスコミュニティカンファレンス)で登壇した際のスライドを抜粋したものになります。

この記事が気に入ったらサポートをしてみませんか?