暗号学において、BassOmaticは、 Phil Zimmermannが電子メール暗号化ソフトウェアPGP(最初のリリース、バージョン1.0)の一部として設計した対称鍵暗号です。ソースコードのコメントによると、彼は1988年頃からこの暗号を設計していましたが、1991年まで一般には公開されませんでした。 1991年のCRYPTO会議での昼食時にEli BihamがBassOmaticアルゴリズムのいくつかの深刻な弱点を指摘した後、[ 1 ] ZimmermannはPGPの後続バージョンでそれをIDEAに置き換えました。
ソースコードのコメントには、その名前の由来が次のように説明されています。「BassOmaticという名前は、ミキサーと魚一匹が登場する、ダン・エイクロイドの昔のサタデー・ナイト・ライブのコントに由来しています。BassOmaticアルゴリズムは、オリジナルのBassOmaticが魚に対して行ったことをデータに対して行います。」
このアルゴリズムは 256 バイト (または 2048 ビット) のブロックで動作します。実際のキーのサイズは8 ビットから 2048 ビットまでです。キーの最下位 6 ビットは制御ビットで、いくつかの可能なバリエーションから選択するために使用されます。ラウンド数は、下位 3 ビットの制御ビットに応じて 1 から 8 までです。ビット 4 は、2 つの可能なキー スケジュールから選択します。1 つは擬似乱数生成器のシードとしてキーを使用するもので、もう 1 つは BassOmatic 自体を使用するものです。このようなバリエーションをキーに依存させるということは、一部のキーは他のキーよりも弱くなければならないことを意味します。キー空間はフラットではありません。
選択されたキースケジュールにより、合計 8 つの順列テーブルが生成されます。各順列テーブルは、0 から 255 までの数値の順列です。各ラウンドは、ブロックと順列テーブルの 1 つとのXOR 演算、ブロック全体にわたる個々のビットのシュレッディングまたは順列、レーキングと呼ばれるキーなし拡散、および順列テーブルをS ボックスとして使用する置換ステップの 4 つの操作で構成されます。シュレッディング ステップでは、制御ビット 3 に応じて、8 つのビットプレーンすべてを個別に順列することも、4 つのグループで順列することもできます。順列テーブルは、特定のブロックに対する暗号化のすべてのラウンドを通じて同じままですが、制御ビット 5 が設定されている場合は、各ブロックの後にテーブルが再生成されます。