i have no idea

I have no idea

bibouroku

やる気の出ない情報セキュリティ3 「暗号技術~共通鍵暗号化技術~」

会社で情報セキュリティをやることになったので、勉強がてらメモ
知識を詰め込んだところで、実践で使えないタイプですが、知識を詰め込むことしかできない。

共通鍵暗号化技術

共通鍵暗号化技術は大きく2つの方式に分けられます。

  • ストリーム暗号化
  • ブロック暗号化

ストリーム暗号化方式は、疑似乱数生成器が生成する乱数を使い、入力された平文をビット単位で暗号化します。(RC4など)

ブロック暗号化方式は、データ撹拌部と鍵生成部から構成されていて、暗号化をブロック単位で行います。(DES,AESなど)

f:id:yabicon:20210426222827p:plain
ブロック暗号方式とストリーム暗号化方式


代表的な共通鍵暗号化技術

以下、代表的な共通鍵暗号化技術の軽い説明です。。

  • DESと3DES
    DES(Data Encryption Standard)は、64ビットのブロック単位で平文を暗号化する手法です。
    有効な鍵の長さは56ビット(64ビット-8ビット(パリティビット))となっており、鍵の組み合わせの総数は256(約7.2京)個となります。
    すげぇ!と思いきや、1999年のセキュリティコンテストで22時間で破られてしまいました。そのため安全性の観点から今はあまり使われていません
    3DESは、DESを3回 (暗号化→復号→暗号化) 行うことで暗号強度を高めたものになります。

  • AES
    AES(Advanced Encryption Standard)は、128ビット長のブロック暗号化方式です。
    有効な鍵の長さは、128,192及び256ビットの3つがありまして、今のところ安全であるとされていて、利用が推奨されています。

  • RC4
    RC4はストリーム式暗号化方式の一つであり、鍵長が可変(40~256ビット)の暗号化方式となります。
    Web通信の暗号化のためのSSL/TLSや、無線LANの暗号化のためのWEPで使われます。
    演算が高速に処理できるので、多く使われていましたが、今はAESも結構高速らしく、なかなか使われることがなくなってきたみたいです。。。


DESの仕組み

ところで共通鍵暗号化方式ってどんな感じでやっているんですか?DESの仕組みを見ていきます。
DESは時代遅れですが、基本的な仕組みを理解するのにはいいみたいですよ。

共通鍵暗号化方式のブロック暗号化方式は、「データ撹拌部」と「鍵生成部」からなります。

ブロック暗号化方式では、入力とする平文を64ビットの単位で分割して暗号化を実施します。最後にはみ出た部分は、パディングを行い無理やり64ビットにします。

f:id:yabicon:20210426222910p:plain
64ビットで分割して、パディングします

以下の手順で暗号化をします。
① あらかじめ定めた対応表に基づいて、文字の並び替え(初期転置)を行い、32ビットずつ右(R_0)と左(L_0)に分けます。

f:id:yabicon:20210426222949p:plain

② R_0はそのまま次の入力となるL_1とします(L_(n+1)=R_n)

f:id:yabicon:20210426223007p:plain

③ R0とサブ鍵K_1(48ビット)に関数fを適用した値と、L_0との排他的論理和を計算して、その値をR_1とします。(R(n+1)=L_n⊕f(R_n,K(n+1)))

f:id:yabicon:20210426223024p:plain

④ ②と③をn=16迄繰り返します。

f:id:yabicon:20210426223102p:plain

⑤ L_16とR_16を連結して一つのブロックとします。またブロックに対して文字の並び替え(最終転置)を行い、終了します。

f:id:yabicon:20210426223118p:plain

[補足]

  • 初期転置、最終転置について
    初期転置の配置は、初期転置IPを使います。初期転置IPは以下のようになっていて、たとえば最初の「58」は「入力の58ビット目を1ビット目に移動すること」を指します。
58, 50, 42, 34, ......
62, 54, 46, 38, ......  
11, 12, 63,  5, ......  
61, 53, 45, 27, ......  
  • 関数fについて
    以下のような感じになるらしいです(詳細は省く)、Sボックスっていうのは6ビットの入力ビット列に対して、0~15の値の一意の値を決めるものになります。0~15は4ビットで表現できます。

f:id:yabicon:20210426223146p:plain
関数fとは

  • サブ鍵Kの生成方法
    f:id:yabicon:20210426223208p:plain
    サブ鍵K_nの生成方法


パディング方式

ブロック暗号等、決まった長さのブロック単位で暗号化する場合、平文がブロック長に足りない場合、足りない部分に特定のデータを埋め込む処理(パディング)を行う必要があります。
パディングは、暗号化と復号の処理で一意である必要があります。ので、暗号文の送信者と受信者に標準的なパディング方式が知らされます。
パディング方式には以下のものが代表的なものとして上げられます。

  • PKCS#5
  • PKCS#7
  • ISO10126-2
  • ISO9797
  • ANSIX923
  • Zeros


ブロックチェイニング

ブロック暗号化方式において、分割したブロックに対して個別に暗号化を行うと、特定のブロックのみを解読され、平文を推測される等の、危険性があります。

f:id:yabicon:20210426223237p:plain
ブロック暗号の一部が解読される

そこで、前のブロックの暗号化の結果を次のブロックの暗号化に使用するなど、各ブロックに相関関係を持たせ、平文と暗号文が1on1にならないようにすることで安全性を高めることができます。
これが巷で話題のブロックチェイニングと呼ばれる技術です。。。!

代表的なモードとして、以下のものがあります。また、チェイニングせずに個別で暗号化するものをECB(Electronic CodeBook)モードと言います。使用の推奨はされていません。

  • CBC(Cipher Block Chaining)モード
  • OFB(Output Feed Back)モード
  • CTR(CounTeR)モード

CBCモードでは、1つ前の暗号文ブロックとの排他的論理和をとり、その結果を暗号化する手法です。
最初の平文ブロックは、初期化ベクトルという乱数列を別途用意する必要があります。
各ブロックが連鎖的に処理されるので、特定のブロックのみの解読が困難になります

f:id:yabicon:20210426223334p:plain
CBC(Cipher Block Chaining)モード

OFBモードは、初期化ベクトルを次々に暗号化していったものと平文との排他的論理和をとって暗号化する手法です。

f:id:yabicon:20210426223405p:plain
OFBモード(Output Feed Back)

CTRモードは、初期化ベクトルを使わず、ブロック長のカウンタを用います。
この手法は並列化ができるため、高速化が期待できます。

f:id:yabicon:20210426223450p:plain
CTR(CounTeR)モード

やる気の出ない情報セキュリティ2 「暗号技術ことはじめ」

会社で情報セキュリティをやることになったので、勉強がてらメモ
文献は「マスタリングTCP/IP 情報セキュリティ編」

リモートワークでやることないので、勉強しているけど、勉強したくない;;
トラックの運転手とかになりたい

暗号技術

暗号技術の基礎

暗号化とは、、なんとなくわかると思いますが、守りたいデータを意味のある情報として読めないように変換することを言います。
暗号化の手順のことを暗号化アルゴリズムといい、この暗号化アルゴリズムそのものは公開されていて、誰でも使えるようになっています。
実際に平文(暗号化されていないデータ)を暗号文に変換する時に使うものを暗号化鍵といい、これは公開してはいけません。

f:id:yabicon:20210421191821p:plain
暗号化

暗号化は、情報セキュリティの3つの性質、機密性を守るもので、通信するデータを守るために必要な技術です。

暗号化アルゴリズムにはどのようなものがあるのか、今は使われていないですが、古典的なアルゴリズムを見てみましょう

  • シーザー暗号
    シーザーさん(古代ローマ)が使ったシーザー暗号です。
    どのような暗号アルゴリズムかというと、
    平文(アルファベット)の文字列の各文字を決めた分だけ、ずらすというものです。(小学生とかで自分語みたいなのを作っていた記憶があるような)

    f:id:yabicon:20210421191902p:plain
    シーザー暗号

  • バーナム暗号
    バーナムさんが発明しました。暗号化する度に平文と同じ長さの乱数列を発生させ、それを暗号化鍵とする暗号アルゴリズムです。
    この手法は、究極の暗号とも言いますが、暗号化鍵の配送はどうするのかとか、乱数列の作り方がムズイとかの観点で運用することは困難となっています
    (疑似乱数と乱数って違うらしいですよ^^;;おそるべし)

    f:id:yabicon:20210421191935p:plain
    バーナム暗号

上記の2つも含まれますが、暗号文を送信する人と受信して復号する人との間で暗号化鍵を共有する必要がある暗号化方式を、共通鍵暗号化方式といいます。
共通鍵暗号化方式は、通信する2者間で一つ鍵が必要となるので、人数が増えるに連れて、鍵の数も膨大になっていきます(1000人の通信だと、n(n-1)/2 = 499,500個必要)
また、それらの鍵を安全に共有(鍵配布)を行うのも、結構難しく、鍵交換アルゴリズムなどを使う必要があります。

f:id:yabicon:20210421192026p:plain
共有鍵暗号方式

そこで新しく発明されたのが、公開鍵暗号化方式です。最初にRSAという暗号化アルゴリズムが発明されました。
これは、暗号化鍵と復号鍵を別々にします。暗号化鍵は公開して、ほかの人との通信を受ける時にその暗号化鍵で暗号化してもらう、
復号鍵(秘密鍵)は自分でこっそり持っておいて、公開された暗号化鍵で暗号化された通信を復号する、という感じです。

f:id:yabicon:20210421192101p:plain
公開鍵暗号方式

やる気の出ない情報セキュリティ1 「セキュリティ概論」

会社で情報セキュリティをすることになったので、勉強がてらメモ
参考文献は、「マスタリングTCP/IP 情報セキュリティ編」です。

ITの知識も薄いので、大変ですが、自分が理解できて、忘れないようにできたらいいなって思っています。
勉強はめてゃくちゃ嫌いです。。^^;;何も考えずに生きたい

 

情報セキュリティ概論

情報セキュリティとは

いわずもがな、IT(Information Tecnology)の普及はすごい。インターネットはいまや 世界中のほとんどの人が使っていて、インターネットが停止することは、世界中に大きな損害を与えることになります。

そういう障害に対応するための技術や仕組みのことを情報セキュリティって言います。

 

情報セキュリティの分類は2つあります

  • 物理セキュリティ
  • 論理セキュリティ

物理セキュリティは、建物や設備に対するセキュリティ(防犯カメラ、入退出管理とか)のこと  
論理セキュリティは、その他ITシステムに関するセキュリティ(システムセキュリティ)や、人に対するセキュリティ教育のことを言います。
たいていの情報セキュリティの本で学ぶことは、システムセキュリティとなります。

 

 

私たちは、情報セキュリティを学ぶことで何を守る必要があるのか、満たすべき3つの性質があります。
以下の3つの性質を満たしているか、対象となる機器やネットワーク、ソフトウェア等を確認します。

  • 機密性
  • 完全性
  • 可用性
    (3つ以外にも、真正性、責任追跡性、否認防止性等があります。)

 

機密性は、情報に対してだれがアクセスできて、アクセスできないかが明確であることです。
つまり、知られたくない情報は外部の人は中身を見ることができないことを保証するものとなります。

f:id:yabicon:20210420190704p:plain
メールサービスの機密性が侵害された

完全性は、情報が誰かによって改ざんされたり、削除されたりしていないことを言います。
情報がオリジナルのままであるかを保証するものとなります。

f:id:yabicon:20210420190745p:plain
メールサービスの完全性が侵害された

 可用性は、情報やITシステムにアクセスする際に、正常にサービスを受けることができるかどうかというものです。
システムダウンがされていない状態を保証するものとなります。

f:id:yabicon:20210420192328p:plain
メールサーバの可用性が侵害された

情報セキュリティでは、上の3つの性質に対する脅威に対策することが必要となります。
対策には予防、抑止、検知、回復という4つの観点に分類することができます。

 

セキュリティを構成する要素

情報セキュリティを構成する要素はいろいろあります。説明は後に書く予定です。

セキュリティに関する脅威

情報セキュリティに携わったら、脅威を知っておく必要があります。
以下のサイト等に書いてあります。

情報セキュリティ10大脅威 2021:IPA 独立行政法人 情報処理推進機構
NPO日本ネットワークセキュリティ協会 報告書・公開資料

 

毎年更新されているみたいなので要チェックですね。