
情報理論および情報システムにおけるデジタルデータとは、離散的な記号列として表現される情報であり、各記号は文字や数字などのアルファベットから有限の数の値のみを取ることができます。例えば、英数字の文字列で構成されるテキスト文書があります。現代の情報システムにおけるデジタルデータの最も一般的な形式はバイナリデータです。バイナリデータは、0または1のいずれかの値を取ることができる2進数(ビット) の文字列で表現されます。
デジタルデータは、連続した実数の範囲の値で表されるアナログデータとは対照的です。アナログデータは、連続した値を取るだけでなく、時間とともに連続的に変化するアナログ信号(時間の連続した実数値関数)によって伝送されます。一例として、音波における気圧の変化が挙げられます。
データが情報 となるには解釈が必要です。現代(1960年以降)のコンピュータシステムでは、すべてのデータはデジタル化されています。
デジタルという言葉は、数字や指を意味するラテン語のdigitusと同じ語源から来ています。指は数を数えるのによく使われるからです。ベル電話研究所の数学者ジョージ・スティビッツは、 1942年に対空砲の照準と発射を目的とした装置から発せられる高速の電気パルスを指してデジタルという言葉を使いました。[ 1 ]この用語はコンピューティングとエレクトロニクスの分野で最もよく使われており、特にデジタルオーディオやデジタル写真のように現実世界の情報が2進数値形式に変換される場合によく使われます。
記号(例えば、英数字)は連続していないため、連続情報やアナログ情報をデジタルに変換するよりも、記号をデジタルで表現する方がはるかに簡単です。アナログからデジタルへの変換のようなサンプリングや量子化の代わりに、ポーリングやエンコードといった技術が使用されます。
シンボル入力デバイスは通常、一定の間隔でポーリングされ、どのスイッチが切り替えられたかを確認するスイッチのグループで構成されています。1回のポーリング間隔内に2つのスイッチが押されたり、スイッチが押されて離され、再び押されたりすると、データは失われます。このポーリングは、メインCPUへの負担を軽減するために、デバイス内の専用プロセッサによって実行されます。[ 2 ]新しいシンボルが入力されると、デバイスは通常、CPUが読み取れるように、特殊な形式で 割り込みを送信します。
スイッチが少数のデバイス(ジョイスティックのボタンなど)の場合、それぞれの状態を1ワードのビット(通常、離された状態は0、押された状態は1)としてエンコードできます。これは、キーの押下の組み合わせが意味を持つ場合に便利で、キーボードの修飾キー(ShiftキーやCtrlキーなど)の状態を渡すために使用されることもあります。ただし、1バイトまたは1ワードのビット数を超えるキーをサポートすることはできません。
多数のスイッチを備えたデバイス (コンピューターのキーボードなど) では、通常、これらのスイッチがスキャン マトリックスに配置され、個々のスイッチが x 線と y 線の交点に配置されます。スイッチが押されると、対応する x 線と y 線が接続されます。ポーリング (この場合はスキャンと呼ばれることが多い) は、各 x 線を順にアクティブ化し、どの y 線に信号があり、どのキーが押されたかを検出することによって行われます。キーボード プロセッサは、キーの状態が変化したことを検出すると、キーのスキャン コードと新しい状態を示す信号を CPU に送信します。その後、記号は、修飾キーの状態と目的の文字エンコードに基づいてエンコードまたは数値に変換されます。
特定のアプリケーションでは、データの損失なくカスタムエンコーディングを使用できます。ただし、ASCIIなどの標準エンコーディングを使用すると、標準に含まれていない「ß」などの記号を変換する必要がある場合に問題が発生します。
1986年には、世界の情報保存技術容量のうちデジタル化されたものは1%未満であったが、2007年にはすでに94%に達していたと推定されている。[ 3 ] 2002年は、人類がアナログ形式よりもデジタル形式でより多くの情報を保存できるようになった年(「デジタル時代の始まり」)と考えられている。[ 4 ] [ 5 ]

デジタルデータには、保存中のデータ、転送中のデータ、使用中のデータの3つの状態があります。[ 6 ] [ 7 ]機密性、整合性、可用性は、データの誕生から破棄までのライフサイクル全体を通じて管理される必要があります。[ 8 ]
情報技術における保存データとは、あらゆるデジタル形式(クラウドストレージ、ファイルホスティングサービス、データベース、データウェアハウス、スプレッドシート、アーカイブ、テープ、オフサイトまたはクラウドバックアップ、モバイルデバイスなど)でコンピュータデータストレージに物理的に格納されているデータを指します。保存データには、構造化データと非構造化データの両方が含まれます。[ 9 ]この種のデータは、ハッカーやその他の悪意のある脅威によってデジタル的にデータにアクセスされたり、データストレージメディアが物理的に盗難されたりする恐れがあります。組織では、このデータへのアクセス、変更、盗難を防ぐために、パスワード保護、データ暗号化、またはその両方の組み合わせなどのセキュリティ保護手段を採用することがよくあります。この種のデータに使用されるセキュリティオプションは、一般的に保存データ保護(DARP)と呼ばれています。[ 10 ]
定義には以下が含まれます:
「…コンピュータストレージ内のすべてのデータ。ただし、ネットワークを通過するデータや、読み取りまたは更新のために一時的にコンピュータメモリに存在するデータは除く。」[ 11 ]
「…ストレージ内のすべてのデータですが、ネットワークを頻繁に通過するデータや一時メモリに保存されるデータは除きます。保存データには、アーカイブデータ、頻繁にアクセスまたは変更されないデータ、ハードドライブ、USBメモリ、バックアップテープやディスクに保存されたファイル、オフサイトまたはストレージエリアネットワーク(SAN)に保存されたファイルなどが含まれますが、これらに限定されません。」[ 12 ]
一般的に、アーカイブデータ(つまり、変更されないデータ)は保存媒体を問わず保存データであり、常時または頻繁に変更されるアクティブデータは使用データであると認識されています。「非アクティブデータ」とは、変更される可能性はあるものの、頻度は低いデータと解釈できます。「常時」や「頻繁」といった用語の曖昧さから、保存データの中には保存データと使用データのどちらにも包括的に定義できないものもあります。これらの定義は、保存データが使用データのスーパーセットであると想定しているように解釈できます。しかし、頻繁に変更される使用データは、完全に静的であるか、時折変更されるかにかかわらず、保存データとは異なる処理要件を持ちます。
保存データはその性質上、企業、政府機関、その他の機関にとってますます懸念事項となっています。[ 11 ]モバイルデバイスは、紛失や盗難の際に保存データを不正アクセスから保護するために、特定のセキュリティプロトコルに従うことが多く、 [ 13 ]データベース管理システムやファイルサーバーもリスクにさらされていると考えられるようになってきています。[ 14 ]データがストレージ内で未使用のまま放置される時間が長ければ長いほど、ネットワーク外の権限のない個人によってデータが取得される可能性が高くなります。
データ暗号化は、不正アクセスや盗難の際にデータの可視性を防ぐもので、移動中のデータの保護によく使用され、保存中のデータの保護にもますます推奨されています。[ 15 ]保存中のデータの暗号化には、 AESやRSAなどの強力な暗号化方式のみを使用する必要があります。ユーザー名やパスワードなどのアクセス制御が失敗した場合でも、暗号化されたデータは暗号化されたままである必要があります。複数のレベルで暗号化を強化することが推奨されます。暗号化は、データを格納するデータベースと、データベースが格納されている物理ストレージに実装できます。データ暗号化キーは定期的に更新する必要があります。暗号化キーはデータとは別に保管する必要があります。暗号化により、データまたはハードウェアのライフサイクルの終了時に暗号シュレッディングも可能になります。機密データの定期的な監査はポリシーの一部である必要があり、スケジュールに従って実行される必要があります。最後に、機密データは可能な限り最小限の量のみ保管してください。[ 16 ]
トークン化は、保存データを保護するための非数学的なアプローチです。機密データを、トークンと呼ばれる機密性のない代替データに置き換えます。トークンには、外在的または悪用可能な意味や価値はありません。このプロセスではデータの種類や長さは変更されません。そのため、データの長さや種類に敏感なデータベースなどのレガシーシステムでも処理できます。トークンは、従来の暗号化データと比較して、処理に必要な計算リソースとデータベースのストレージ容量が大幅に削減されます。これは、機密情報を隠蔽したまま、特定のデータを完全にまたは部分的に処理や分析のために可視化することで実現されます。処理能力とストレージ要件が低いため、トークン化は、大量のデータを管理するシステムにおける保存データの保護に最適な方法です。
保存中のデータへの不正アクセスを防ぐさらなる方法は、特にデータが世界中に分散している場合(海外のアーカイブなど)にデータ フェデレーション[ 17 ]を使用することです。一例としては、アーカイブ データを米国内のオフサイトに保管しているヨーロッパの組織が挙げられます。米国愛国者法[ 18 ]の規定により、米国当局は、米国と関係のないヨーロッパ市民の個人情報が含まれている場合でも、その境界内に物理的に保管されているすべてのデータへのアクセスを要求できます。当局には復号化された情報を要求する権利があるため、データ暗号化だけではこれを防ぐことはできません。外国と関係のない市民の個人情報をその発信国内に保持する(個人情報ではない情報や海外の当局に関連する情報とは別にする)データ フェデレーション ポリシーは、この懸念に対処する 1 つの選択肢です。ただし、外国に保存されているデータは、CLOUD 法の法律を使用してアクセスできます。
使用中データとは、非永続的なデジタル状態または揮発性メモリ(通常はコンピュータのランダムアクセスメモリ(RAM)、CPUキャッシュ、またはCPUレジスタ)に保存されているアクティブなデータを指す情報技術用語です。[ 19 ]
使用中のデータは、データベース内に存在する、あるいはアプリケーションによって操作されているという文脈において、「アクティブデータ」を意味することもあります。例えば、クラウド向けの一部のエンタープライズ暗号化ゲートウェイソリューションは、保存データ、転送中データ、使用中データを暗号化できると主張しています。[ 20 ]
一部のクラウドSaaS(サービスとしてのソフトウェア)プロバイダーは、CPUとメモリが使用されているため、アプリケーションによって現在処理されているデータを使用中データと呼んでいます。[ 21 ]
使用中データは、その性質上、企業、政府機関、その他の組織にとってますます懸念事項となっています。使用中データ、つまりメモリには、デジタル証明書、暗号化キー、知的財産 (ソフトウェア アルゴリズム、設計データ)、個人を特定できる情報などの機密データが含まれている可能性があります。使用中データが侵害されると、暗号化された保存データや移動中のデータにアクセスできるようになります。たとえば、ランダム アクセス メモリにアクセスできる人は、そのメモリを解析して保存データの暗号化キーを見つけることができます。その暗号化キーを入手すれば、暗号化された保存データを復号化できます。使用中データへの脅威は、コールド ブート攻撃、悪意のあるハードウェア デバイス、ルートキット、ブートキットの形で現れる可能性があります。
暗号化は、不正アクセスや盗難の際にデータの可視性を防ぐため、移動中データと保存中データの保護に広く利用されており、使用中データの保護にも最適な方法としてますます認識されています。メモリを暗号化するプロジェクトは複数存在します。Microsoft Xboxシステムはメモリ暗号化を提供するように設計されており、 PrivateCore社は現在、x86サーバー向けの完全メモリ暗号化に加えてアテステーション機能も提供する商用ソフトウェア製品vCageを提供しています。[ 22 ]セキュリティ強化されたx86およびARM汎用プロセッサの可用性を強調した論文がいくつか発表されています。[ 19 ] [ 23 ] その研究では、ARM Cortex-A8プロセッサを基盤として、完全メモリ暗号化ソリューションが構築されています。プロセスセグメント(スタック、コード、ヒープなど)は、個別または複合的に暗号化できます。この研究は、モバイル汎用汎用プロセッサに完全メモリ暗号化を実装した初の事例です。このシステムは、CPU境界外のあらゆる場所で暗号化されたコードとデータの機密性と整合性の両方を保護します。
x86システム向けには、AMDが2017年にEpycで導入したセキュアメモリ暗号化(SME)機能がある。[ 24 ] Intelは、次期CPUでトータルメモリ暗号化(TME)機能を提供することを約束している。[ 25 ] [ 26 ]
TRESORやLoop-Amnesiaなどのオペレーティングシステムカーネルパッチは、CPUレジスタに暗号鍵を保存できるようにオペレーティングシステムを修正し、RAMに暗号鍵を保持することを回避します。このアプローチは汎用性が低く、使用中のすべてのデータを保護できるわけではありませんが、コールドブート攻撃から保護します。暗号鍵はRAMではなくCPU内に保持されるため、保存されている暗号鍵は、メモリ内の暗号鍵を侵害する可能性のある攻撃から保護されます。
エンクレーブは、RAM内の「エンクレーブ」を暗号化することで保護することを可能にします。これにより、エンクレーブのデータはRAM内では暗号化されますが、CPUおよびCPUキャッシュ内では平文として利用できます。インテル社は、ソフトウェア・ガード・エクステンションの一部として「エンクレーブ」の概念を導入しました。インテルは2013年に発表した技術論文で、ソフトウェアとCPUハードウェアを組み合わせたアーキテクチャを発表しました。[ 27 ]
セキュア・マルチパーティ・コンピュテーションや準同型暗号など、いくつかの暗号化ツールは、信頼できないシステム上でデータのプライベートな計算を可能にします。使用中のデータは暗号化された状態で操作されるため、処理を実行するシステムに公開されることはありません。
転送中のデータは、移動中のデータ[ 28 ]や飛行中のデータ[ 29 ]とも呼ばれ、通常はコンピュータネットワーク上で送信元と送信先の間を移動中のデータです。
転送中のデータは、インターネットなどのパブリックまたは信頼できないネットワークを介して流れる情報と、企業またはエンタープライズローカルエリアネットワーク(LAN)などのプライベートネットワークの範囲内で流れるデータの2つのカテゴリに分けられます。[ 30 ]

コンピュータ内のデータは、ほとんどの場合、パラレルデータとしてやり取りされます。コンピュータとの間でやり取りされるデータは、ほとんどの場合、シリアルデータとしてやり取りされます。温度センサーなどのアナログ機器から取得されたデータは、アナログ-デジタル変換器を使用してデジタルデータに変換できます。コンピュータで演算される数量、文字、記号を表すデータは、磁気、光、電子、または機械記録媒体に保存・記録され、デジタル電気信号または光信号の形式で送信されます。 [ 31 ]データは周辺機器を介してコンピュータに出入りします。
コンピュータの物理メモリ要素は、アドレスと1バイト/ワードのデータストレージで構成されています。デジタルデータは、多くの場合、テーブルやSQLデータベースなどのリレーショナルデータベースに保存され、抽象的なキー/値のペアとして表現されます。データは、配列、グラフ、オブジェクトなど、様々な種類のデータ構造で構成できます。データ構造は、数値、文字列、さらには他のデータ構造など、様々な種類のデータを保存できます。
メタデータはデータを情報に変換するのに役立ちます。メタデータとはデータに関するデータのことです。メタデータは暗黙的、明示的、または付与される場合があります。
物理的なイベントやプロセスに関連するデータには、時間的な要素が含まれます。この時間的な要素は暗黙的に示される場合があります。例えば、温度ロガーなどのデバイスが温度センサーからデータを受信する場合がこれに該当します。温度データを受信すると、そのデータは「現在」という時間的な基準を持つものと想定されます。そのため、デバイスは日付、時刻、温度をまとめて記録します。データロガーが温度データを送信する場合、各温度測定値のメタデータとして日付と時刻も報告する必要があります。
基本的に、コンピュータはデータの形で与えられた一連の命令に従います。特定のタスク(または複数のタスク)を実行するための一連の命令はプログラムと呼ばれます。プログラムとは、コンピュータまたはその他の機械の動作を制御するコード化された命令の形をとったデータです。[ 32 ]通常、コンピュータによって実行されるプログラムはマシンコードで構成されます。プログラムによって操作されるが、中央処理装置(CPU)によって実際に実行されないストレージ要素もデータです。最も本質的には、単一のデータは特定の場所に格納された値です。したがって、コンピュータプログラムは、プログラムデータを操作することにより、他のコンピュータプログラムを操作することが可能です。
データバイトをファイルに保存するには、ファイル形式でシリアル化する必要があります。通常、プログラムは他のデータとは異なる特別なファイルタイプで保存されます。実行ファイルにはプログラムが含まれ、その他のファイルはすべてデータファイルです。ただし、実行ファイルには、プログラムに組み込まれている、プログラムで使用されるデータが含まれる場合もあります。特に、一部の実行ファイルにはデータセグメントがあり、通常は定数と変数の初期値が含まれており、どちらもデータと見なすことができます。
プログラムとデータの境界線は曖昧になることがあります。例えば、インタープリタはプログラムです。インタープリタへの入力データ自体もプログラムですが、ネイティブマシン語で表現されているわけではありません。多くの場合、インタープリタで解釈されたプログラムは人間が読めるテキストファイルであり、テキストエディタプログラムで操作されます。メタプログラミングも同様に、プログラムが他のプログラムをデータとして操作することを伴います。コンパイラ、リンカー、デバッガ、プログラムアップデータ、ウイルススキャナなどのプログラムは、他のプログラムをデータとして使用します。
例えば、ユーザーはまずオペレーティングシステムに、あるファイルからワードプロセッサプログラムを読み込むよう指示し、次に実行中のプログラムを使って別のファイルに保存されている文書を開いて編集するかもしれません。この例では、文書はデータとみなされます。ワードプロセッサにスペルチェッカー機能も搭載されている場合は、スペルチェッカーの辞書(単語リスト)もデータとみなされます。スペルチェッカーが修正候補を提示するために使用するアルゴリズムは、機械語データか、何らかの解釈可能なプログラミング言語で記述されたテキストのいずれかです。
別の用法では、バイナリファイル(人間が読めるものではない)は、人間が読めるテキストと区別するためにデータと呼ばれることがあります。[ 33 ]
2007年のデジタルデータの総量は2810億ギガバイト(281エクサバイト)と推定された。[ 34 ] [ 35 ]
データ内のキーは、値のコンテキストを提供します。データの構造に関わらず、常にキーとなる要素が存在します。データおよびデータ構造内のキーは、データ値に意味を与えるために不可欠です。値、または構造内の値の集合に直接的または間接的に関連付けられたキーがなければ、値は意味をなさなくなり、データではなくなります。つまり、値がデータと見なされるためには、値要素にリンクされたキー要素が存在する必要があるということです。
次の例に示すように、データはコンピューター内で複数の方法で表現できます。
ランダム アクセス メモリ(RAM) には、CPU が直接アクセスできるデータが格納されます。CPU は、プロセッサ レジスタまたはメモリ内のデータのみを操作できます。これは、CPU がストレージ デバイス (ディスク、テープなど) とメモリ間のデータ転送を指示する必要があるデータ ストレージとは対照的です。RAM は、読み取りまたは書き込み操作のアドレスを提供することでプロセッサが読み取りまたは書き込みを行うことができる、線形に連続する位置の配列です。プロセッサは、メモリ内の任意の位置をいつでも任意の順序で操作できます。RAM では、データの最小要素は 2 進ビットです。RAM にアクセスするための機能と制限は、プロセッサによって異なります。一般的に、メイン メモリは、アドレス 0 ( 16 進数の0) から始まる位置の配列として配置されます。各位置には、コンピュータ アーキテクチャに応じて、通常 8 ビットまたは 32 ビットを格納できます。
データ キーは、メモリ内の直接のハードウェア アドレスである必要はありません。間接、抽象、および論理キー コードを値と関連付けて格納し、データ構造を形成できます。データ構造には、データ値が格納される構造の先頭からの所定のオフセット(またはリンクやパス) があります。したがって、データ キーは、構造へのキーと、構造へのオフセット (またはリンクやパス) で構成されます。このような構造が繰り返され、同じ繰り返し構造内にデータ値とデータ キーのバリエーションを格納すると、結果はテーブルに似ていると考えられます。テーブルでは、繰り返し構造の各要素が列と見なされ、構造の各繰り返しがテーブルの行と見なされます。このようなデータ編成では、データ キーは通常、列の 1 つ (または複数の列の値の複合) の値です。
繰り返しデータ構造を表形式で表現することは、数ある可能性の一つに過ぎません。繰り返しデータ構造は階層的に構成することができ、ノードは親子関係のカスケードで互いにリンクされます。ノードには、値や、場合によってはより複雑なデータ構造がリンクされます。このように、ノードの階層構造は、ノードに関連付けられたデータ構造を参照するためのキーを提供します。この表現は、逆ツリーと考えることができます。現代のコンピュータオペレーティングシステムのファイルシステムが一般的な例であり、XMLもその一つです。
データは、キーでソートされると、いくつかの固有の特徴を持ちます。キーのサブセットのすべての値が一緒に表示されます。同じキーを持つデータのグループを順番に通過する場合、またはキーのサブセットが変更される場合、これはデータ処理の分野ではブレークまたはコントロールブレークと呼ばれます。これは特に、キーのサブセットにおけるデータ値の集約を容易にします。
フラッシュメモリのような大容量の不揮発性メモリが登場するまで、永続的なデータストレージは、磁気テープやディスクドライブなどの外部ブロックデバイスにデータを書き込むことで実現されていました。これらのデバイスは通常、磁気メディア上の特定の位置をシークし、所定のサイズのデータブロックを読み書きします。この場合、メディア上のシーク位置がデータキー、ブロックがデータ値となります。初期に使用されていた生のディスクデータファイルシステムまたはディスクオペレーティングシステムは、データファイル用にディスクドライブ上の連続したブロックを予約していました。これらのシステムでは、すべてのデータが書き込まれる前にファイルがいっぱいになり、データ領域が不足することがありました。そのため、各ファイルに十分な空き領域を確保するために、多くの未使用のデータ領域が非生産的に予約されていました。その後、ファイルシステムはパーティションを導入しました。パーティション用にディスクデータ領域のブロックを予約し、必要に応じてパーティションのブロックをファイルに動的に割り当てることで、割り当てられたブロックをより経済的に使用しました。これを実現するために、ファイルシステムは、カタログまたはファイルアロケーションテーブルで、データファイルによって使用されているブロックと未使用のブロックを追跡する必要がありました。これによりディスクのデータスペースの利用効率は向上しましたが、ディスク上のファイルの断片化が発生し、データの読み取りに必要なシーク時間の増加によるパフォーマンスのオーバーヘッドが発生しました。現代のファイルシステムは、断片化されたファイルを動的に再編成することで、ファイルアクセス時間を最適化します。ファイルシステムのさらなる発展により、ディスクドライブの仮想化が実現しました。つまり、複数の物理ドライブをパーティションとして論理ドライブとして定義できるようになりました。
膨大なデータ集合から小さなデータサブセットを取得する場合、データを順次検索する作業は非効率的になる可能性があります。インデックスとは、ファイル、テーブル、データセット内のデータ構造からキーと位置アドレスをコピーし、それらを逆ツリー構造を用いて整理することで、元のデータのサブセットを取得する時間を短縮する方法です。そのためには、取得するデータのサブセットのキーを、取得を開始する前に知っておく必要があります。最も一般的なインデックスは、Bツリーと動的ハッシュキーインデックス方式です。インデックス作成は、データのファイリングと取得のオーバーヘッドとなります。インデックスを整理する方法としては、キーをソートする方法やバイナリサーチアルゴリズムを使用する方法などがあります。
オブジェクト指向プログラミングでは、データとソフトウェアを理解するために 2 つの基本概念を使用します。
指定されたクラスのオブジェクトは、インスタンス化されて初めて存在します。オブジェクトの参照がクリアされると、オブジェクトも存在しなくなります。オブジェクトのデータが格納されていたメモリ位置はガベージとなり、再利用可能な未使用メモリとして再分類されます。
データベースの登場により、永続的なデータストレージにさらなる抽象化レイヤーが導入されました。データベースは、メタデータと、クライアントとサーバーシステム間の構造化クエリ言語プロトコルを使用し、コンピュータネットワークを介して通信し、データ保存時に 2フェーズコミットログシステムを使用してトランザクションの完全性を確保します。
Apache Hadoopなどの最新のスケーラブルで高性能なデータ永続化技術は、高帯域幅ネットワーク上の多数の汎用コンピュータによる超並列分散データ処理に依存しています。このようなシステムでは、データは複数のコンピュータに分散されるため、システム内の特定のコンピュータは、データのキーに直接的または間接的に表現される必要があります。これにより、異なるコンピュータで同時に処理されている2つの同一のデータセットを区別することが可能になります。
:0すべてのデジタル情報は、通信に関してアナログデータと区別される共通の特性を持っています。
デジタル信号は一般に、現代の電子機器やコンピューターで使用されるバイナリ電子デジタル システムに関連付けられますが、デジタル システムは実際には古くから存在し、バイナリまたは電子である必要はありません。