ひとり情シス日記#7 セキュリティ:暗号化と認証

小さな組織でひとり情シスやる事になったので、自己リマインド&勉強アウトプット用の記事。随時更新。


そもそも暗号化とは

暗号の歴史は古く、古代ローマではアルファベット文字を組み合わせた円盤(シーザーリング)で左右どちらかに指定の数分だけ動かして暗号‐解読するシーザー暗号が使用されていた。
現代のインターネットではクライアントとサーバー(またはクライアント)間の通信において、途中経路で悪意あるユーザーはパケットキャプチャなどのハッキングにより情報を盗み取る事が出来る。暗号化していたら、盗み取られても内容の解読は困難になる。

代表的なパケットキャプチャにワイヤーシャークがある。通信プロトコル単位で内容が可視化される。暗号化されていない通信の平文も読み取ることが可能。実際は通信経路上のL2スイッチにミラーポート設定を行う必要があったり、HTTPS接続やwifi接続でも暗号化された通信が一般的なため攻撃者が行う方法として現実的ではないと思われる。

出典:さくらのナレッジ

共通鍵暗号方式

暗号化と復号化も共通の鍵を使用するため、処理が速い。
問題はどうやって互いに鍵情報を安全に共有するか(オフライン上での受け渡しなど)鍵の配送問題がある。また、複数人がやりとりする場合は、経路の数だけ鍵が必要となる。

出典:キャノン サイバーセキュリティ情報局

ブロック暗号

・元のデータを128bit×nなどブロック単位で暗号化。
・推奨アルゴリズムはAES、Camellia。
・AESの鍵長は128bit、192bit、256bitから選択可能。
※AESはwifi接続でも使用されている。 

ストリーム暗号

・元データの流れに沿って1bit、8bit、32bitなど小さい単位で順次暗号化。
・推奨アルゴリズムはKCipher-2。
・動画配信などリアルタイム性が求められる通信に用いられる。

量子暗号(量子鍵配送)

量子力学では古典物理学とは異なり、量子ビットが「0か1」か確定していない重ね合わせである波の状態から、観測することで「0または1」の粒状態に確定する。1つの量子から2つに分離したペアの量子は一方が観測されると、もう一方の状態が確定する。これを量子もつれといい、高速を超えた距離にある離れた状態でも連携される。この性質を利用し、量子暗号では量子状態を保った共通鍵での暗号化通信が行われる。もし配信経路で鍵情報の盗聴(第3者による観測)が行われた場合は、量子状態であるペアの鍵が破壊されるため、安全性が担保される。

公開鍵暗号方式

暗号化と復号化を公開鍵と秘密鍵のペアを使用。
共通鍵暗号方式にくらべ、処理時間が長い。また、なりすまし問題として本当に意図した相手が発行した公開鍵なのか、正当性を見極める認証問題がある。

出典:キャノン サイバーセキュリティ情報局

RSA

代表的な鍵交換として、桁数の大きな整数を素因数分解するのが困難な特性を利用したRSAがあるが、PFS(Perfect Forward Secrecy/暗号鍵を使い捨て)の特性が無いため、鍵共有では非推奨とされている。また、量子コンピューターによる素因数分解の解読についても指摘されている。
※RSAは署名や守秘では使用されている。

DH法(Diffie-Hellman鍵交換)
オープンな経路上で公開鍵を共有しながら、お互いの秘密情報(乱数)をそれぞれが使用して計算し、最終的には安全な共通鍵を生成することが可能。

ハッシュ関数

ある元データにハッシュ関数(SHA256など)を用いてハッシュ値を求める。ハッシュ関数は一方向性を持ち、ハッシュ値から元のデータを逆算することはできない。
主に使用されているアルゴリズムはSHA-256で、256ビットの文字列を生成する。 16進数1文字(0~f)を表すのに4ビット(f=1111)が必要なので、256ビットのハッシュ値を16進数で表すと「256÷4=64文字」になる。

SHA・・・Secure Hash Algorithm

出典:クジラソフトハッシュ変換

具体的な使用例としては、改ざん検出がある。送信者が送りたい平文と平文のハッシュ値を生成して受信者へ送る。受信者は自身で計算したハッシュ値と送信者からのハッシュ値が一致していれば、改ざんされていないと判断することが出来る。この仕組みに公開鍵暗号方式を組み合わせることで後述するデジタル署名が実現可能となる。

SHA256の暗号化された情報が不可逆的である説明が分かりやすい動画

(256bit暗号化を解読するために必要な計算量)
⇒高性能GPUを搭載した約40億PCをgoogleが保有している
⇒googleのような会社が地球に40億社存在している ※この辺から無理
⇒地球人口80億人の半分の40億人に、これらの計算力を与える
⇒宇宙にこれら40億の地球が存在している
⇒さらに40億倍率が続く・・・・

ハッシュ関数の性質を利用した具体的な用途

改ざん検出以外にも利用用途がある。

①多くのショッピングや何かしらのサービスサイトはユーザーIDとパスワードを使ってログインする。こうしたWebサイトでは、ユーザーIDとパスワードを平文で保存せずにハッシュ化された情報で保管する。
入力した情報と登録されている情報とを照会・比較し、一致していればログインできる仕組みになっており、ユーザー側が入力した情報をハッシュ値に変換し、それをWebサイト側のデータベースで保管されているハッシュ値と比較すれば、ログインIDとパスワードが一致するかどうかが分かる。ハッシュ化することにより、漏洩時のリスクを軽減することができるが、元の平文が簡素で推測されやすいものであれば、たとえSHA-256でハッシュ化されていても、ブルートフォース攻撃やレインボーテーブル攻撃によって解読されるリスクがある。

②セキュリティソフトでのパターンマッチングにもSHA256のハッシュ値が利用されている。ファイルそのものを検証する場合、データ量が膨大になるため、固定長のハッシュ値であれば効率の良い運用が可能となる。悪意のあるマルウエアのハッシュ値は公開されており、VirusTotalで調べることができる。

既知のマルウエアのハッシュ値b8ef959a9176aef07fdca8705254a163b50b49a17217a4ff0107487f59d4a35

ブルートフォース攻撃(総当たり攻撃)

ブルートフォース攻撃は、あらゆる文字列を一つ一つ試してハッシュ値と一致するものを見つける方法。例えば、パスワードが「abcd」のような短いものであれば、攻撃者は「aaaa」、「aaab」、「aaac」など、すべての可能な組み合わせを順に試す。SHA-256は計算コストが高いため、ブルートフォース攻撃には非常に多くの計算リソースが必要。

レインボーテーブル攻撃

攻撃者は、既に計算された膨大な数のハッシュ値と対応するプレーンテキストのリスト(レインボーテーブル)をあらかじめ作る事で、攻撃対象のハッシュ値をこのテーブルと照合し、一致するものを見つけることで元のパスワードを迅速に特定する。
対策としては、平文にランダムな値であるソルトを加えてハッシュ化することでテーブル照合を難しくさせる事が有効とされている。

CRYPTREC暗号リスト

電子政府における調達のために参照すべき暗号のリスト

電子政府における調達のために参照すべき暗号のリスト(CRYPTREC暗号リスト)

認証

認証とは人や物などの対象について、その正当性を確認すること。主に以下の2種類に分類される。

①Authentication(二者間認証)
認証される者について、認証が必要な場所で直接認証を行う。サーバーログインなど。

②Certification(三者間認証)
認証される者と認証場所とは別に、認証する者(認証者)が存在する方法。
認証者が信頼できる期間である必要があり、後述するPKI(公開鍵基盤)がこの仕組みで動いている。サーバー証明など。

RADIUSとは

RADIUS(Remote Authentication Dial-In User Service)は、ユーザーの認証、承認、およびアカウンティングを管理するために使用されるプロトコル。主にネットワークアクセス制御に使用され、リモートアクセスサービスにおいて広く利用されている。

使用例

RADIUSはクライアント-サーバモデルに基づいて動作する。以下は対向するクライアントとの使用例。
・無線アクセスポイント:ユーザーのWi-Fiアクセスを制御。
・VPNゲートウェイ:リモートユーザーのVPNアクセスを制御。
・L3SWやルーター:telnetやsshなどのVTYvirtual teletype)接続を制御。

AAA

RADIUSはAAAと呼ばれる3つの機能を使ってセキュリティを高める

1.認証(Authentication)
ユーザーのIDとパスワードなどの認証情報を確認し、ユーザーが正当な権限を持つかどうかを検証。認証方法には、パスワード認証、ワンタイムパスワード(OTP)、証明書ベースの認証などがある。

2.認可(Authorization)
認証されたユーザーに対して、どのリソースやサービスにアクセスできるかを決定。ユーザーごとに異なるアクセス権限を設定し、ネットワークポリシーに従ってアクセスを制御する。

3.アカウンティング(Accountingu)
ユーザーのネットワーク利用状況を記録し、ログを生成。利用時間、データ量、接続先などの情報を収集し監査に利用。

①‐③ユーザーは、ルーターや無線アクセスポイントなどのネットワークデバイス(RADIUSクライアント)へ接続を行う。
※無線アクセスポイントの接続とあるが、オフィスネットワークなどビジネス環境を想定している。家庭内のwifi環境では通常のWPA2-AESの暗号通信で充分であり、RADIUS環境の構築は過剰であると言える。

④RADIUSクライアントはユーザーからの接続要求を受け取り、RADIUSサーバに接続認証を要求する。RADIUSサーバは認証情報をデータベースと照合し、認証、承認、アカウンティングを行う。

⑤‐⑥認証が成功すると、RADIUSサーバはRADIUSクライアントに対して、RADIUSクライアントはユーザーにアクセス許可を返します。

RADIUSは、UDP(User Datagram Protocol)を使用して通信する。認証要求はポート1812、アカウンティング要求はポート1813を使用する。

デジタル署名

メッセージの完全性を保証すると共に、メッセージの作成者を担保(否認防止)をする事ができる

①送信者は公開鍵ペアを作成し、平文をハッシュ化。
②送信者はハッシュ値を自身の秘密鍵で暗号化(デジタル署名)する。
③送信者は平文とデジタル署名を受信者へ送る。
④受信者は公開鍵及び、平文とデジタル署名を受け取る。
⑤受信者は送信者の公開鍵でデジタル署名を復号し、ハッシュ値を取り出す。さらに自身で平文をハッシュ化し比較検証を行う。

PKI(Public Key INfrastructure:公開鍵基盤)

公開鍵暗号、デジタル署名、デジタル証明書の技術要素を利用して構築された一連のシステムをPKI(Public Key INfrastructure)という。

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