php / php/php-src

AES-GCM-SIV encrypts message incorrectly

オープン
#22,188 コメント 4 件 リアクション 0 件 担当者 1 名 GitHub で見る

@bukka がすでに取り組んでいます。

2026年5月29日 から。

Bug Extension: openssl Status: Needs Triage
主要言語
C
スター
40.4k
フォーク
8.1k
平均マージ
2日 13時間
マージ済み PR(30日)
96

説明

Description

The following code:

<?php
$algo = 'AES-256-GCM-SIV';
$data = 'plain text';
$pass = random_bytes(32);
$iv = str_repeat("\0", 12);
$enc = openssl_encrypt($data, $algo, $pass, OPENSSL_RAW_DATA | OPENSSL_DONT_ZERO_PAD_KEY, $iv, $tag);
$dec = openssl_decrypt($enc, $algo, $pass, OPENSSL_RAW_DATA | OPENSSL_DONT_ZERO_PAD_KEY, $iv, $tag);
$result = $data === $dec;
var_dump($result, $enc, $dec, $tag, openssl_error_string());

Resulted in this output:

bool(false)
string(10) "cipertext"
bool(false)
NULL
bool(false)

But I expected this output instead:
$result must be true

According to the AES-GCM-SIV spec, the ciphertext $enc must be exactly $data length + 16 bytes for the authentication tag. Alternatively, the tag can be passed separately via the $tag parameter.

PHP Version
PHP 8.5.6 (cli) (built: May  6 2026 09:31:05) (ZTS Visual C++ 2022 x64)
Copyright (c) The PHP Group
Built by The PHP Group
Zend Engine v4.5.6, Copyright (c) Zend Technologies
    with Zend OPcache v8.5.6, Copyright (c), by Zend Technologies

OpenSSL 3.5.6 7 Apr 2026

---

PHP 8.5.6 (cli) (built: May 19 2026 23:08:03) (NTS)
Copyright (c) The PHP Group
Built by https://github.com/docker-library/php
Zend Engine v4.5.6, Copyright (c) Zend Technologies
    with Zend OPcache v8.5.6, Copyright (c), by Zend Technologies

OpenSSL 3.5.6 7 Apr 2026
Operating System

No response

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。