仕 様
emLibは、あらゆるデバイスへの移植性を考慮して設計されています。このモジュールは、PCアプリケーションや組み込みターゲットデバイスで使用できます。
emLibは、スピード性能と小さなメモリフットプリントで最適化されています。ソースはANSI-Cで完全に書かれています。標準テストパターンを使用したAPIの検証コードが含まれています。
〈暗号モジュール〉
AESモジュール:16バイト以上のデータの暗号化/復号化のための連鎖ブロック処理を含むAES 128ビットおよび256ビットアルゴリズムの実装。
DESモジュール:8バイト以上のデータを処理するためのCBCも含むDES(56ビット)アルゴリズムの実装。より高いセキュリティ(TDES、トリプルDES)を達成するために、DES関数を複数回呼び出すことができます。
〈データの完全性チェック〉
・ CRCライブラリ:ノーマルおよびビット反転形式の、32ビット幅までの任意の多項式の取り扱い。汎用のCRC関数に加えて、emLib CRCは、CRC-CCITT、CRC-16、およびCRC-32を含む一般的なCRC多項式の最適化された実装を特長としています。
・ECCライブラリ:複数のビットエラーの検出と訂正のためのルーチンを提供します。これには、4ビット、8ビット、24ビット、および40ビットのエラー訂正の実装が含まれます。
AES とDES
〈AESとは?〉
Advanced Encryption Standard(ショートAES)は、データの暗号化を暗号化するために使用される対称鍵アルゴリズムです。米国国立標準技術研究所(NIST)によって制定され、2001年以来電子データを暗号化するための標準です.AESは、データ暗号化標準DES)。AESは、128ビットの固定ブロックサイズと128,192または256ビットのキーサイズを使用する置換置換ネットワークブロック暗号です。データブロックは、8ビットのセルサイズを有する4行マトリックスに格納される。キーの長さに基づいて、これらのブロックは、いくつかのラウンドでキーの一部を使用して変換されます。AES128は10ラウンドのAES256 14を使用します。したがって、AES256による暗号化はAES128より約40%遅くなります。各ラウンドでは、ラウンド鍵が元の鍵から導出される。その後、各バイトはルックアップテーブルに従って非線形に置換され、データ行列の行は周期的にシフトされ、混合される。emLib AESは128ビットまたは256ビットのキーを使用して、一度に16バイトのデータのブロックを暗号化します。アルゴリズムの性能を最適化するために、ラウンド鍵の生成は、実際の暗号化または復号化の前に行うことができ、複数回使用することができる。置換および混合のステップでは、事前計算ルックアップテーブルを使用してemLibを構築して、速度性能を向上させることができます。emLibは、メモリを節約するために、これらのテーブルなしで構築することもできます。AESは、暗号ブロック連鎖(CBC)モードで16バイトの倍数を処理するためにも使用できます。CBCモードでは、16バイトのすべてのチャンクは、暗号化される前の以前の暗号化(暗号テキスト)の結果とXORリンクされます.1ブロックを復号化するには、すべての前のブロックを知る必要があります。第1のブロックの暗号化のために、ブロックにリンクされる初期化ベクトルを使用して、第1のブロックを共通の第1のデータブロックと比較することによりブルートフォース復号化することができないことを確認することができる。
〈emLib AESの使用〉
emLib AESモジュールはシンプルで強力なAPIを備えています。既存のアプリケーションに簡単に統合することができます。コードはANSI-Cで完全に書かれています。すべての機能は、検証API機能を使用して標準テストパターンで検証できます。より高い最適化レベルのために使用されるテーブルを生成するための関数も、完全な透過性のために含まれています。このモジュールは、高速または低メモリ使用のあらゆる要件に適合するように構成可能な最適化で構築することができます。単純にデータを暗号化または復号化するには、アプリケーションは1つの関数を呼び出すだけです。複数のブロックを同じ鍵で処理する必要がある場合、鍵から計算されたラウンド鍵を含むコンテキストを準備し、暗号化および復号化機能によって直接使用することができます。これらの機能を複数回呼び出す場合、この方法は処理速度がやや速くなります。
〈DESとは〉
短いDESというデータ暗号化規格は、データの暗号化および復号化のための対称鍵アルゴリズムです。それは1970年代に開発され、国家標準局(NBS、今NIST)によって米国の標準として確立されました。DESはAES。DESはブロック・サイファーで、固定長のデータ・ブロック(64ビット)を使用します。処理に使用される鍵は64ビットで構成され、実際には変換には56ビットが使用され、パリティチェックには8ビットが使用されます。DESは、データの初期パーミッション、16ラウンドの変換、および初期パーミュテーションの逆である最終パーミッションを実行します。変換では、データブロックは最初に2つの32ビットブロックに分割され、最初のブロックはFeistel暗号を使用してラウンド鍵で変換され、2番目のブロックとXORリンクされます。最初のブロックと結果ブロックは次のラウンドで使用されます。emLib DESは、64ビットのキーを使用して、一度に68ビットのデータのブロックを暗号化します。アルゴリズムの性能を最適化するために、ラウンド鍵の生成は、実際の暗号化または復号化の前に行うことができ、複数回使用することができます。DESは、暗号ブロック連鎖(CBC)モードで64ビット以上を処理するためにも使用できます。
CBCモードでは、64ビットのすべてのチャンクは、暗号化される前の以前の暗号化(暗号テキスト)の結果とXORリンクされます。1つのブロックを解読するには、前のすべてのブロックを知る必要があります。第1のブロックの暗号化のために、ブロックにリンクされる初期化ベクトルを使用して、第1のブロックを共通の第1のデータブロックと比較することによりブルートフォース復号化することができないことを確認することができます。
〈emLib DESを使用〉
emLib DESモジュールにはシンプルで強力なAPIがあります。既存のアプリケーションに簡単に統合することができます。コードはANSI-Cで完全に書かれています。すべての機能は、検証API機能を使用して標準テストパターンで検証できます。より高い最適化レベルのために使用されるテーブルを生成するための関数も、完全な透過性のために含まれています。単純にデータを暗号化または復号化するには、アプリケーションは1つの関数を呼び出すだけです。複数のブロックを同じ鍵で処理する必要がある場合、鍵から計算されたラウンド鍵を含むコンテキストを準備し、暗号化および復号化機能によって直接使用することができます。これらの機能を複数回呼び出す場合、この方法は処理速度がやや速くなります。
CRC
emLib CRCは包括的かつ効率的でありながら、巡回冗長検査を使用するチェックサム計算のライブラリです。
〈CRCとは〉
CRC(Cyclic Redundancy Check)は、デジタルネットワークとストレージデバイスのデータ転送でエラー検出を提供するためのチェックサムの計算によく使用される技術です。CRC計算の基本原則は、Wesley Petersonによって1961年に発明されましたが、今日の標準実装の多くは、後でいくつかの他の研究者や数学者によって公開されました。
CRCはCRCが計算された生データにまだ含まれていない情報を含まないチェックサムを計算するために循環ブロックコードを利用するので、巡回冗長とみなされます。代わりに、CRCチェックサムの有用性は、通信チャネルおよび記憶装置内の誤ったデータを検出する固有の能力に由来する。ビットエラーの不均等数およびほとんどの2ビットエラー、ならびにある長さのバーストエラーを含む、いくつかの問題がある。
これを行うために、CRCアルゴリズムは、CRCを計算するための生データの多項式除算で除数として使用される生成多項式を必要とする。この除算の残りの部分が結果とみなされます。ハードウェアでは、CRCチェックサム計算は、線形フィードバックシフトレジスタを使用して容易に実施することができる。次の図は、これらのハードウェア実装の基本原理を示しています。
異なる生成多項式を使用することにより、異なる誤り検出特性が得られるので、適切な生成多項式の選択は非常に重要な問題である。この選択プロセスにおけるいくつかの要因は、CRCを計算するデータの長さ、所望の誤り検出特性、および計算の所望の性能です。
多項式除算で使用される生成多項式を定義するだけでなく、初期化ベクトルなどのさらなる仕様への準拠を必要とする様々なCRC計算アルゴリズムが業界標準に組み込まれています。
〈emLib CRCの使用〉
emLib CRCモジュールには、シンプルで強力なAPIがあり、既存のアプリケーションに簡単に統合できます。コードはANSI-Cで完全に書かれています。
emLib CRCは、特定の標準実装に完全に準拠しているAPI関数を提供するのではなく、代わりに汎用CRCルーチンを提供します。これにより、一度に複数の標準実装での使用が可能になりますが、ユーザーは必要な初期化ベクトルを確認し、アプリケーション内からさらに仕様を実行する必要があります
連続する生データのCRCを単純に計算するには、アプリケーションは1つの関数を呼び出すだけでよいです。2つ以上の別個のデータ領域を同じCRCに処理する必要がある場合、これらの領域のそれぞれについてインクリメンタルな計算には、関数への後続の呼び出しを使用することができます。すべての機能は、検証API関数を使用して標準テストパターンで検証できます。特定の多項式に使用されるルックアップテーブルを生成する関数も、完全な透過性のために含まれています。
〈サンプル〉
emLibには、サンプルアプリケーションが含まれており、その機能を実演し、アプリケーションの出発点として使いやすいものを提供します。アプリケーションのソースコードは出荷時に含まれています。emLib CRCには、次のアプリケーションが付属しています。
CRCAugmentFile.exe:Windows:コマンドラインツールは計算されたCRCでファイルを補強します。32ビットの多項式0x04C11DB7を使用
CRCCalc.exe:Windows任意の多項式に対するビット単位のAPI関数を使用して、指定されたファイルのCRCを計算するコマンドラインツール。計算パラメータはユーザーが設定可能
CRCValidate.exe:Windows標準のテストパターンを使用してemLib CRC APIを検証するコマンドラインツール
CRCVerifyAugmentedFile.exe:Windows 拡張されたファイルの整合性を検証するためのコマンドラインツール。32ビットの多項式0x04C11DB7を使用
ECC
emLib ECCは、データエラーの検出および訂正機能を提供するライブラリです。ライブラリは、デジタルネットワークまたはストレージデバイスに格納されたデータの信頼性を確保するために使用できます。誤り検出および訂正は、BCH線形ブロック符号を用いて行われています。
〈emLib ECCのしくみ〉
ビットエラーは、通信チャネルを介した送信中にデータビットの値が意図せずに変更された場合、またはデータを保持するストレージが破損した場合に発生します。ビット誤りが避けられない場合は、誤り訂正を用いてそれらを訂正しなければならない。データの再送、データのミラーリング、パリティチェックなど、ビットエラーを訂正するさまざまな方法があります。emLib-ECCは、後でビットエラーを修正するために使用できるペイロードデータのチェックサムを生成するためにパリティチェックを使用します。
〈アプリケーションの使用〉
典型的には、ビット誤り訂正は、ビット誤りを計算し、特定し、修正する複雑なアルゴリズムを必要とする。このため、妥当な時間内にこれらの操作を実行するのに役立つ専用ハードウェアが使用されます。一方、ビットエラー訂正用の専用ハードウェアを使用すると、システムのコストが増加します。したがって、少数のMCUおよびストレージデバイスでのみ使用できます。大部分のMCUおよびストレージデバイスには、エラー訂正のための専用ハードウェアがなく、ターゲットアプリケーションはソフトウェアで修正する必要があります。emLib-ECCは、アプリケーションが専用のハードウェアを必要とせずにビットエラーを修正し、コストを削減できるようにすることで、ここで役立ちます。
典型的な例は、ストレージとしてSLC NANDフラッシュデバイスを使用するシステムです。ほとんどすべての現代のSLC NANDフラッシュデバイスは、マルチビット誤り訂正を必要とする。内部ハードウェアECCを使用してビットエラーを訂正することができるNANDフラッシュデバイスがありますが、内部ハードウェアECCなしのバリアントよりも価格面で高価です。価格の差は、高価でないNANDフラッシュデバイスを使用することで大幅なコスト削減につながる大容量システムでは重要になります。emLib-ECCは、ターゲットアプリケーションがソフトウェア内のビットエラーを効率的にチェックして訂正できるようにすることにより、ハードウェアビットエラー訂正なしで安価なNANDフラッシュデバイスを使用する可能性を提供します。
〈BCHとは〉
BCHは、複数のランダムビットエラーを検出して訂正することができる広く使用されている線形ブロックエラー訂正コードです。コードの名前は、Raj Bose、DK Ray-Chaudhuri、Alexis Hocquenghemのコードを発見した科学者の名前に由来します。エラー訂正符号は、ビットエラーに対して保護されなければならない情報ビットに冗長パリティチェックビットを追加することによって機能。情報ビットは、パリティチェックビットとともに、コードワードを形成する。パリティチェックビットは、情報ビットの線形結合(XORおよびシフト演算)であり、生成多項式の手段によって計算される。生成多項式は、訂正可能なビット誤りの数およびデータブロックのサイズなどのBCHコードの能力に基づいて選択される。誤り訂正プロセスは、任意の2つの異なる有効な符号語間の(ビット誤りなしの)ハミング距離(すなわち、異なる値を有するビット位置の数)が、訂正可能なビット誤りの数のちょうど2倍であるという特性を使用する一を足す。この特性を使用して、誤り訂正手順は、ビット誤りを伴う符号語を有効な符号語にマッピングし、したがって、発生したビット誤りを訂正することができる。BCHコードは、誤り訂正能力+ 1に等しいビット誤りの数を検出することができるが、訂正しない。ランダムビットエラーを訂正するBCHコードの能力が与えられると、このエラー訂正コードは、通常、NANDフラッシュデバイスに記憶されたデータの訂正に使用される。
〈emLib ECCを使用〉
emLib ECCモジュールにはシンプルで強力なAPIがあります。既存のアプリケーションに簡単に統合することができます。コードはANSI-Cで完全に書かれています。
連続データブロックのECCを単純に計算するには、アプリケーションは1つの関数を呼び出すだけでよい。2つ以上の別個のデータブロックが同じECCによって保護される必要がある場合、データブロックのリストを処理することができる別個のAPI関数を呼び出すことができる。
すべての機能は、検証API関数を使用して標準テストパターンで検証できます。異なる計算に使用されるルックアップテーブルを生成するための関数も、完全な透過性のために含まれています。
パッケージ
〈emLib-DES〉
・ パフォーマンステストや単一の検証スイートを含むDESを使用したemLib暗号化ライブラリ
〈emLib-AES〉
・ パフォーマンステストや単一の検証スイートを含むAESを使用したemLib暗号化ライブラリ。
このソフトウェアは、EC規則第428/2009号の第5部第2部「情報セキュリティ」に従って、二重使用製品として分類されています。
EU外の目的地へのソフトウェアの輸出または譲渡には輸出許可が必要です(第22パラ8および10 EGデュアルユースVO)
〈emLib-CRC〉
・ パフォーマンステストや検証スイートを含む巡回冗長検査を使用したチェックサム計算ライブラリ
〈emLib-ECC〉
・ パフォーマンステストや検証スイートを含むデータエラーの検出と訂正のためのECCライブラリ
〈emLib-C〉
・ GCCや組込みシステム向けに特別に設計され、最適化されたランタイムライブラリ。
*価格はemLibに適用されます 単一製品ライセンス(SP-SCL/SP-OCL)とemLib単一開発者ライセンス(SSL/SOL)です。製品ファミリ、CPUライセンス、バイアウトは、要望に応じて利用できます。すべての価格はドイツの消費税を含まない。ドイツ国内の出荷の場合は、19%の消費税を加算してください。すべての価格は電子貨物を指し、いつでも変更される可能性があります。すべての価格には、無料のソフトウェアアップデートと12ヶ月間のサポートが含まれています。