Kerckhoffの原則
「すべてのアルゴリズムは公開すべきである。鍵だけが秘密である」
すなわち、
暗号アルゴリズムは公開すべきであり、公開しても鍵を秘密にすればその暗号は決して解読されないということ。

暗号方式は以下の暗号原理を具備することが必須
冗長性:能動的侵入者が送るランダムなメッセージを正当なものと解釈しないため
フレッシュネス :正当なメッセージの再送(リプレイ)攻撃を防止するため

対称鍵暗号方式では暗号化に用いる鍵と同一、または、暗号鍵から用意に導出可能な値を復号鍵として用いる。これに対し公開鍵暗号方式では、暗号化鍵と復号鍵として非対称な鍵を用いる。復号鍵は、秘密の知識なしには暗号化鍵から容易に導出不可能な鍵を用いる。