argra****@users*****
argra****@users*****
2013年 9月 29日 (日) 16:10:29 JST
Index: docs/perl/5.18.1/perlsec.pod diff -u docs/perl/5.18.1/perlsec.pod:1.1 docs/perl/5.18.1/perlsec.pod:1.2 --- docs/perl/5.18.1/perlsec.pod:1.1 Tue Sep 17 23:17:40 2013 +++ docs/perl/5.18.1/perlsec.pod Sun Sep 29 16:10:28 2013 @@ -58,6 +58,8 @@ =head2 Taint mode +(汚染モード) + =begin original Perl automatically enables a set of special security checks, called I<taint @@ -342,9 +344,16 @@ @files = <*.c>; # 安全でない (readdir() のようなものを使う) @files = glob('*.c'); # 安全でない (readdir() のようなものを使う) +=begin original + # In either case, the results of glob are tainted, since the list of # filenames comes from outside of the program. +=end original + + # どちらの場合でも、glob の結果は汚染されています; ファイル名の一覧は + # プログラムの外部から来るからです。 + =begin original $bad = ($arg, 23); # $bad will be tainted @@ -373,8 +382,8 @@ =end original -The exception to the principle of "one tainted value taints the whole -expression" is with the ternary conditional operator C<?:>. +「一つの汚染された値が式全体を汚染する」の原則の例外は、3 項条件演算子 +C<?:> です。 3 項条件を使ったコード $result = $tainted_value ? "Untainted" : "Also untainted"; @@ -1110,17 +1119,16 @@ =end original -Hash Algorithm - Hash algorithms like the one used in Perl are well -known to be vulnerable to collision attacks on their hash function. -Such attacks involve constructing a set of keys which collide into -the same bucket producing inefficient behavior. Such attacks often -depend on discovering the seed of the hash function used to map the -keys to buckets. That seed is then used to brute-force a key set which -can be used to mount a denial of service attack. In Perl 5.8.1 changes -were introduced to harden Perl to such attacks, and then later in -Perl 5.18.0 these features were enhanced and additional protections -added. -(TBT) +ハッシュアルゴリズム - 以前 Perl で使われていたようなハッシュアルゴリズムは、 +ハッシュ関数に対する衝突攻撃に対して脆弱であることでよく知られています。 +この攻撃は、非効率的な振る舞いをさせるために同じバケツに入るようなキーの集合を +構築することで行われます。 +このような攻撃はしばしばキーをバケツにマッピングするために使われる +ハッシュ関数の種の発見に依存します。 +この種はそれからサービス拒否攻撃を起こせるブルートフォースキー集合に +使われます。 +Perl 5.8.1 でこのような攻撃に対する Perl の強化が導入され、後に Perl 5.18.0 で +これらの機能は拡張され、追加の防御が追加されました。 =begin original @@ -1131,16 +1139,16 @@ =end original -At the time of this writing, Perl 5.18.0 is considered to be -well-hardened against algorithmic complexity attacks on its hash -implementation. This is largely owed to the following measures -mitigate attacks: -(TBT) +これを書いている時点では、Perl 5.18.0 はハッシュ実装に対するアルゴリズム的 +複雑性攻撃に対してよく防御されていると考えられています。 +これは主に以下のような要素が攻撃を緩和していることに依ります: =over 4 =item Hash Seed Randomization +(ハッシュの種のランダム化) + =begin original In order to make it impossible to know what seed to generate an attack @@ -1152,16 +1160,18 @@ =end original -In order to make it impossible to know what seed to generate an attack -key set for, this seed is randomly initialized at process start. This -may be overridden by using the PERL_HASH_SEED environment variable, see -L<perlrun/PERL_HASH_SEED>. This environment variable controls how -items are actually stored, not how they are presented via -C<keys>, C<values> and C<each>. -(TBT) +攻撃キー集合を生成するための種が何かを知ることを不可能にするために、この種は +プロセス開始時にランダムに初期化されます。 +これは PERL_HASH_SEED 環境変数を使うことで上書きできます; +L<perlrun/PERL_HASH_SEED> を参照してください。 +この環境変数はアイテムが実際にどのように保管されるかを制御するもので、 +C<keys>, C<values>, C<each> 経由でどのように表現されるかを +制御するものではありません。 =item Hash Traversal Randomization +(ハッシュ探索のランダム化) + =begin original Independent of which seed is used in the hash function, C<keys>, @@ -1174,17 +1184,19 @@ =end original -Independent of which seed is used in the hash function, C<keys>, -C<values>, and C<each> return items in a per-hash randomized order. -Modifying a hash by insertion will change the iteration order of that hash. -This behavior can be overridden by using C<hash_traversal_mask()> from -L<Hash::Util> or by using the PERL_PERTURB_KEYS environment variable, -see L<perlrun/PERL_PERTURB_KEYS>. Note that this feature controls the -"visible" order of the keys, and not the actual order they are stored in. -(TBT) +ハッシュ関数でどの種が使われるかとは独立に、C<keys>, C<values>, C<each> は +ハッシュ毎にランダム化された順序で要素を返します。 +挿入によってハッシュが変更されると、そのハッシュの反復順が変わります。 +この振る舞いは、L<Hash::Util> の C<hash_traversal_mask()> を使うか、 +PERL_PERTURB_KEYS 環境変数を使うことで上書きできます; +L<perlrun/PERL_PERTURB_KEYS> を参照してください。 +この機能は keys の「見える」順序を制御するもので、実際に保管される順序を +制御するものではありません。 =item Bucket Order Perturbance +(バケツ順の撹乱) + =begin original When items collide into a given hash bucket the order they are stored in @@ -1194,14 +1206,16 @@ =end original -When items collide into a given hash bucket the order they are stored in -the chain is no longer predictable in Perl 5.18. This has the intention -to make it harder to observe a collisions. This behavior can be overridden by using -the PERL_PERTURB_KEYS environment variable, see L<perlrun/PERL_PERTURB_KEYS>. -(TBT) +あるハッシュバケツで要素が衝突したとき、Perl 5.18 ではチェーンに保管される順番は +もはや予測できなくなりました。 +これは、衝突を観測するのをより困難にする意図があります。 +この振る舞いは PERL_PERTURB_KEYS 環境変数を使うことで上書きできます; +L<perlrun/PERL_PERTURB_KEYS> を参照してください。 =item New Default Hash Function +(新しいデフォルトハッシュ関数) + =begin original The default hash function has been modified with the intention of making @@ -1209,12 +1223,13 @@ =end original -The default hash function has been modified with the intention of making -it harder to infer the hash seed. -(TBT) +デフォルトハッシュ関数は、ハッシュの種の推論をより難しくするために +修正されました。 =item Alternative Hash Functions +(代替ハッシュ関数) + =begin original The source code includes multiple hash algorithms to choose from. While we @@ -1225,12 +1240,12 @@ =end original -The source code includes multiple hash algorithms to choose from. While we -believe that the default perl hash is robust to attack, we have included the -hash function Siphash as a fall-back option. At the time of release of -Perl 5.18.0 Siphash is believed to be of cryptographic strength. This is -not the default as it is much slower than the default hash. -(TBT) +ソースコードには選択できる複数のハッシュアルゴリズムが含まれています。 +デフォルトの perl ハッシュは攻撃に頑強であると信じていますが、 +フォールバックオプションとして Siphash ハッシュ関数も含めています。 +Perl 5.18.0 のリリースの時点で、Siphash は暗号学的強度を持つと +信じられています。 +これはデフォルトのハッシュよりもはるかに遅いので、デフォルトではありません。 =back @@ -1244,12 +1259,11 @@ =end original -Without compiling a special Perl, there is no way to get the exact same -behavior of any versions prior to Perl 5.18.0. The closest one can get -is by setting PERL_PERTURB_KEYS to 0 and setting the PERL_HASH_SEED -to a known value. We do not advise those settings for production use -due to the above security considerations. -(TBT) +特別な Perl をコンパイルしない限り、Perl 5.18.0 より前のバージョンと正確に +同じ振る舞いにする方法はありません。 +最も近いのは、PERL_PERTURB_KEYS に 0 を設定し、PERL_HASH_SEED に既知の値を +設定することです。 +上述のセキュリティ上の問題のため、製品にはこの設定をしないことを勧めます。 =begin original @@ -1263,10 +1277,8 @@ B<Perl はハッシュキーの順序について何の保障もありません> し、Perl 5 の 間でも既に何度か変更されています。 -また、ハッシュキーの順序は、今までもこれからも、挿入順に影響を受け、 -the history of changes made -to the hash over its lifetime. -(TBT) +また、ハッシュキーの順序は、今までもこれからも、挿入順と、ハッシュに対して +行われた変更の歴史の影響を受けます。 =begin original @@ -1282,9 +1294,8 @@ また、ハッシュ要素の順序はランダム化されますが、この「擬似整列」は 以下のことに B<使うべきではありません>: リストをランダムに -シャッフルするようなアプリケーション -(Perl 5.8.0 から標準モジュールとなっている L<List::Util> の -C<List::Util::shuffle()> や、CPAN モジュールである +シャッフルするようなアプリケーション (Perl 5.8.0 から標準モジュールと +なっている L<List::Util> の C<List::Util::shuffle()> や、CPAN モジュールである C<Algorithm::Numerical::Shuffle> を使ってください)、 順列の生成 (CPAN モジュールである C<Algorithm::Permute> や C<Algorithm::FastPermute> を 使ってください)、あらゆる暗号アプリケーション。