暗号化とセキュリティ技術およびデータ圧縮技術について
近年のディジタル技術の急速な発展は、情報の流通と共有を促進し、社会の構造や機能を連続的に繋いでいく、その中で個人情報や機密情報の保護と活用の矛盾相克を解決するため、情報を暗号化する技術や、情報にアクセスする事を制御するセキュリティ技術、また情報を圧縮する技術等の重要性が増している。
暗号化技術は、データを可読性がない形式に変換し、認証された受信者以外はアクセスできなくしてデータを保護するために使用される技術であり、機密性、完全性、および可用性を確保するために使用される。
可読性がない形式への変換は、秘密鍵または公開鍵を使用して行われる。秘密鍵を用いた方式では、メッセージの暗号化と復号に同じ鍵を使用し、公開鍵を用いた方式では、暗号化に公開鍵を使用し、復号に秘密鍵を使用しするものとなる。この方式では、公開鍵を公開しても秘密鍵が知られていなければ、暗号文を解読することができない形となる。
また、ハッシュ関数と呼ばれる技術を使用して、暗号化されたデータを安全に保存することもできる。ハッシュ関数は、データを固定長のランダムな文字列に変換するプロセスであり、同じデータに対しては常に同じ値を生成する。この値は、電子メッセージ認証コード(MAC)やデジタル署名の生成に使用さる。
セキュリティ技術は、ネットワークやシステムのセキュリティを確保するために使用される技術となり、ネットワークやシステムのセキュリティを確保することは、機密性、完全性、可用性、および認証性を保証することを意味するものとなる。セキュリティ技術には、以下のようなものがある。
- ファイアウォール:ネットワークとインターネットを分離し、ネットワークへの不正なアクセスを防ぐ。
- アンチウイルス:ウイルスやマルウェアなどの悪意のあるプログラムを検出して削除するためのソフトウェアとなる。
- スパムフィルター:迷惑メールを自動的に検出して削除するためのソフトウェアとなる。
- 侵入検知システム(IDS):ネットワークに侵入しようとする試みを検出し、警告を発行するためのシステムとなる。
- 仮想プライベートネットワーク(VPN):インターネット上での通信を暗号化し、セキュアな接続を提供するためのネットワークとなる。
- セキュアソケット層(SSL):Webサイト上でのセキュアな通信を提供するための暗号化プロトコルとなる。
データ圧縮技術は、データを圧縮するために使用される技術であり、データを小さくすることで、ストレージスペースを節約し、データ転送速度を高速化するために使用される。データ圧縮には、可逆圧縮と非可逆圧縮の2つの種類がある。
- 非可逆圧縮: 非可逆圧縮は、元のデータを復元できない圧縮のことを言う。この方法は、主に音声、映像、画像などのマルチメディアファイルに使用され、代表的なアルゴリズムには、JPEG(静止画像用)、MPEG(動画用)、MP3(音楽用)などがある。これらのアルゴリズムでは、圧縮率が高いため、データの品質には影響を与える場合がある。
- 可逆圧縮: 可逆圧縮は、元のデータを復元することができる圧縮のことを言う。この方法は、主にテキスト、文書、スプレッドシート、データベース、アプリケーションなどのデータファイルに使用され、代表的な可逆圧縮のアルゴリズムとしては、ZIP、GZIP、LZW、DEFLATEなどがある。これらのアルゴリズムでの圧縮率は、非可逆圧縮よりも低いが、データの品質は保たれるという特徴がある。
データ圧縮技術は、ストレージスペースの節約やデータ転送速度の向上に役立つが、圧縮率が高いほど、圧縮と復元の処理が時間がかかることがある。また、非可逆圧縮では、圧縮後の品質が元のデータよりも低下する場合があるため、圧縮率と品質のバランスを考慮する必要がある。
本ブログではこれら暗号化とセキュリティ技術およびデータ圧縮技術について以下のような項目を述べている。
実装
データ暗号化は、データを非可逆的に変換し、不正アクセスや情報漏洩から保護するための技術となる。暗号化によって、データは特定の鍵に依存し、鍵を知らない者にとっては理解できない形式に変換され、正当な鍵を持つ人だけがデータを復号化して元の状態に戻すことができるようになる。ここでは、この暗号化技術について様々なアルゴリズムと実装形について述べている。
データ圧縮は、情報をより効率的に表現するために、データのサイズを削減するプロセスであり、データ圧縮の主な目的は、データをより小さくすることで、ストレージスペースの節約やデータ転送の効率化を図ることとなる。ここでは、このデータ圧縮に関して様々なアルゴリズムとpythonによる実装について述べている。
アクセスコントロール(Access Control)技術は、情報システムや物理的な場所へのアクセスを制御し、権限を持つユーザーだけが許可されたリソースにアクセスできるようにするためのセキュリティ手法であり、データの機密性、完全性、可用性を保護し、セキュリティポリシーを実施するために広く使用されている技術となる。ここでは、このアクセスコントロール技術に関する様々なアルゴリズムや実装例について述べている。
- 分散型IOTシステムに用いられる分散型台帳技術とメッシュネットワーク
分散型IoTシステム(分散型インターネット・オブ・シングス)は、従来の中央集権型のIoTシステムに対して、分散型のアーキテクチャを採用したシステムで、IoTデバイスやセンサーが中央のサーバーに依存せずに、ネットワーク上で直接データを交換し、処理を行うものとなる。分散型台帳技術(DLT: Distributed Ledger Technology)は、デジタル台帳をネットワーク上の複数のコンピュータ(ノード)に分散して保存する技術であり、各ノードは台帳のコピーを保持し、全ノード間で同期が取られている。この技術は、データの透明性、セキュリティ、改ざん耐性を強化するために使われる。
- SolidプロジェクトとNFT
Solidプロジェクトは、World Wide Webの創始者であるティム・バーナーズリー卿(Sir Tim Berners-Lee)が提唱した、分散型のウェブを構築するためのプロジェクトとなる。Solidは”Social Linked Data”(社会的なリンクデータ)の略語で、ユーザーが自分自身のデータを所有・管理し、コントロールできるようにすることを目指し、このプロジェクトの主な目的は、ウェブの中心化と個人データの収集に対する現在の問題に対処するものとなる。
有向非巡回グラフ(Directed Acyclic Graph, DAG)は、様々なタスクの自動管理、あるいはコンパイラ等の処理など様々な場面で登場するグラフデータアルゴリズムとなる。今回は、このDAGについて述べてみたいと思う。
Rustは、Mozilla Researchが開発したシステムプログラミング向けのプログラミング言語であり、高いパフォーマンス、メモリ安全性、並列性、およびマルチスレッド処理を重視して設計されたものとなる。また、コンパイル時に強力な静的型チェックを行うことで、バグを予防することに焦点を当てた言語でもある。
ここでは、このRustに関する概要と基本的な文法および各種適用事例と具体的な実装について述べている。
一般的に、IoTデバイスはセンサーやアクチュエータを備えた小型のデバイスであり、ワイヤレス通信を使用してセンサーデータを収集し、アクチュエータを制御する形態となる。ワイヤレスでのIoT制御にはさまざまな通信プロトコルや技術が使用される。ここでは、このワイヤレス技術を用いたIoTを様々な言語で実装した例について述べている。
技術トピック
インターネットは、世界中のコンピューターネットワークが相互に接続されたグローバルなネットワークであり、Web技術はそのインターネット上で情報やコンテンツを発信し、閲覧するための技術となる。つまり、インターネットは情報通信の基盤であり、Web技術はその上で情報を発信し、共有し、閲覧するための具体的なツールと方法を提供するものと言うことができる。情報発信/共有/閲覧としてのWeb技術に対して、Web 3.0はセマンティックWeb技術とデータ意味論の向上に焦点を当てているのに対して、Web3は分散型ウェブの新しいアーキテクチャと哲学を表現し、分散型台帳技術、データの所有権、プライバシーを強調するものであるということができる。両者はウェブの未来において異なる側面を担当し、いくつかの点で重なる部分もあるが、異なる概念となる。
- 暗号情報セキュリティの技術と歴史 読書メモ
- データ圧縮アルゴリズム(1) ロス無し圧縮
圧縮技術には大きく分けて「ロスなし圧縮」と「ロスあり圧縮」の二つの技術がある。「ロスなし圧縮」は圧縮されても元のデータを完全に再現できるため本来であればこれ一つあればよいが、圧縮率がそれほどよくできないと言う課題を持つ為、「ロスあり圧縮」が利用されている。
「ロスなし圧縮」の基本原理は、データが反復している部分を見つけてそれを省略することにある。例えば以下のようなデータがあるとする。
「ロスあり圧縮」は文字通りロスを許容した圧縮技術である。解凍した時に間違いが存在しても良いってどんな場合?と一瞬考えるが、例えば画像情報とか音声情報等の細かな情報の違いはあっても人間から見ると同じに思えるような情報に対して適用される。またこのような情報は先述の文字列系の情報に比べて情報量が圧倒的に多く、データを圧縮する必要性があるものであるとも言える。
このような圧縮を実現する為の手法の一つが、データの一部を取り除いてしまう「除外トリック」になる。これは例えば画像情報の単位であるピクセルを取り除くことで行われる。最もシンプルなものはピクセルの列を機械的に一行一列おきに取り除いていく方法で、この手法を用いることで全体の1/4のデータ量まで減らす事ができる。
データの伝送と保存を考えた時に、最も重要なことはそのデータを「完全に正確に」保存/あるいは伝送することにある。それに対してメモリや通信等のハードウェアには必ずノイズや誤動作が付きまとい100%の動作は保証してくれない。その為ソフトウェア的な工夫で「完全に正確に」を担保してやる必要があり、それらを実現する技術の一つが「誤り訂正技術」になる。
ここで、通信伝送を考えた場合、信頼性を向上する為に最もシンプルな方法は電装を何度か繰り返して各試行の結果に対して多数決を取り最も多く出たものを正解として選ぶやり方があるが、この手法ではいくつか課題がある。一つはこのような手法はエラーの出現頻度がランダムな場合にのみ成り立ち、何らかの傾向でエラーが発生していると多数決はその傾向に引きずられることや、エラー率が高くなると試行回数を上げなくてはならなくなる事などである。
まず一番シンプルな暗号の手法は「共有する秘密を持つ」ことから始まる。あるデータを特定の人にだけ送る時、その人とだけ共有している秘密の数字があるとする。(例:322)その時データとして8を送る時、それを加えたものを相手に送り(322+8=400)相手が、送られた数字から共有する番号を引き算すれば良い。
これを更に実用的にするには、共有する数字が簡単に分からないもの、たとえばもっと長い数字を送れば良い。(例3桁の数字を秘密の数字にすると999通りあるが、この程度だとコンピューターは簡単にすべての組み合わせを試すことができる)一般的な暗号アルゴリズムでは送られたデータの30%を計算した桁数が鍵となるので、128ビットの暗号だと38桁で1兆の一兆倍の1兆倍より大きな数字となる。これを現在のコンピューターで計算すると10億年単位の時間がかかるので、安全な方式だと判断できる。
デジタル署名の「署名」は読めるけれど誰にもコピーできないものと定義される。これは誰でもコピーできる「デジタル」とは全く逆の概念となる。このパラドックスに解を提供するものがデジタル署名となる。
デジタル署名はそもそも何のために使われるかと言うと、通常の手紙のように自分が誰かに送るものに署名するのではなく、誰れかから署名されたものが送られてきた時に、コンピューターがチェックするために存在している。
今回は敵対的サンプル (Adversarial Examples)とセキュリティについて述べる。
スマートフォンの普及に伴い、我々の位置情報の取得が容易になり、位置情報を利用したさまざまなソーシャルネットワークのサービスが提供されている。そうした位置情報の分析と活用の2次利用の機械はさまざまな分野にひろがっており、交通情報の提供、都市設計といった社会サービス、また商圏分析などの商用ビジネスにも活用されている。
その一方で、位置情報から、個人の習慣、興味、行動、交際範囲など、プライバシーに関する情報が明らかになる危険性がある。位置情報を第三者に安全な利活用をしてもらうには、データを提供する側にプライバシー保護のための匿名化と呼ばれるデータ加工が必要となる。
現状の匿名化の安全性基準は匿名化データの形式のみを要件としており、十分な安全性が保証されているとはいえない。こでは、一般に広く普及している匿名化技術を位置情報に適用した場合の問題点を指摘し、匿名化手法の安全性評価のためのマルコフモデルに基づく統計的手法について述べる。
インターネットに接続されるEC2インスタンスには、外部からの攻撃に対処するため、通信ポートを制御するファイアーウォール機能が必要となる。AWSのファイアーウォール機能には2つのしくみが用意されている。一つは「セキュリティグループ」もう一つが「ネットワークACL」となる。前者はEC2インスタンスごに設定され、後者はサブネットごとに設定されるものとなる。
セキュリティレベルの異なる仕組みが用意されているのは、両者を使い分ける必要があるためで、大雑把に言うと、サブネット単位のセキュリティにはネットワークACLを使い、インスタンスごとに個別の対応が必要なポートの制御は、セキュリティグループを使う。
今回は、この2つのファイアーウォール機能について述べ、Apache HTTP ServerやnginxなどのWebサーバーソフトウェアをEC2インスタンスにインストールしたときに必要となる、セキュリティグループの変更方法について述べる。
マイクロサービスは、分離してデプロイし、使用状況を監視する必要がある。現在の作業負荷と処理時間を監視することで、それらをスケールアップするタイミングやスケールダウンするタイミングを判断することもできる。マイクロサービスベースのアーキテクチャのもう1つの重要な側面は、セキュリティとなる。マイクロサービスのセキュリティを確保する方法の1つは、各サービスが独自の認証・認可モジュールを持つようにすることとなる。だがこの方法はすぐに問題になる。各マイクロサービスが孤立してデプロイされるため、ユーザーを認証するための共通の基準に合意することが信じられないほど難しくなるためである。また、この場合、ユーザーとそのロールの所有権は、サービス間で分散してしまう。この章では、このような問題を取り上げ、マイクロサービスベースのアプリケーションを安全に、監視し、拡張するためのソリューションについて述べる。
シングルサインオン(SSO)は、複数の異なるシステムやアプリケーションに対して、一度の認証を行うことで、ユーザーがそれらのシステムやアプリケーションにシームレスにアクセスできる仕組みとなる。
シングルサインオンを実現するという点ではSAML認証とOAuthは同じといえるが、両者の違いを理解するためのポイントは“認証”と“認可”の違いとなる。認証とはユーザーを証明するプロセスであり、認可はアクセスの権限を与えるプロセスとなる。SAML認証は認証と認可を行ない、OAuthは原則認証を行なわずに認可のみとなる。つまり、OAuthではAPIを利用する際に認証が行なわれていない、という点がSAML認証との大きな違いとなる。
「ビットコインなどの仮想通貨や、それを支えるブロックチェーン技術は、極めて斬新なものだ。それは社会の基本的な構造を大きく変える潜在力を持っている」(経済学者 野口悠紀雄)
ビットコイン交換所運営会社の破綻などで、いまだ怪しげなものと見られることもある
ビットコインとブロックチェーン技術だが、その影響は金融だけでなく、様々な業界へ及ぶ。一体どんなビジネスが生まれようとしており、どんな技術がそれを可能にしているのか、日本の法制度はどう対応しているのか――。
本書では、ビットコインやブロックチェーン技術で事業や技術開発を進めるエキスパートらが業界の発展を目指して、実務で得たノウハウや知見を、金融の専門家だけでなく、
新規事業の開発や経営企画に携わる広いビジネスパーソンに向けて共有する。
コメント
[…] 数学 機械学習技術 人工知能技術 プログラミング技術 デジタルトランスフォーメーション アルゴリズム 暗号化とセキュリティとデータ圧縮 […]
[…] 数学 機械学習技術 人工知能技術 プログラミング技術 デジダルトランスフォーメーション アルゴリズム 暗号化とセキュリティとデータ圧縮 […]
[…] 数学 機械学習技術 人工知能技術 プログラミング技術 アルゴリズム 暗号化とセキュリティとデータ圧縮 デジダルトランスフォーメーション […]
[…] 数学 機械学習技術 人工知能技術 プログラミング技術 デジダルトランスフォーメーション アルゴリズム 暗号化とセキュリティとデータ圧縮 […]
[…] 機械学習技術 ユーザーインターフェース 暗号化とセキュリティとデータ圧縮 […]
[…] データベース技術 デジタルトランスフォーメーション技術 暗号化とセキュリティとデータ圧縮 […]
[…] センサーデータ/IOT技術 バンディット問題 強化学習技術 暗号化とセキュリティ技術およびデータ圧縮技術 深層学習技術 確率生成モデル 推薦技術 […]
[…] データとオントロジーのマッピングに関しては”機械学習における類似度について“に述べているような機械学習によるアプローチが重要となる。また、リアルタイムデータのハンドリングに関しては”データストリーム(時系列データ)の機械学習とシステムアーキテクチャ“を、またセキュリティ技術に関しては”暗号化とセキュリティ技術およびデータ圧縮技術“も参照のこと。 […]