简体   繁体   中英

OpenResty lua-resty-string: Unable to decrypt data which can be decrypted by Golang and Python

OpenResty lua-resty-string: Unable to decrypt data which can be decrypted by Golang and Python https://github.com/openresty/lua-resty-string

I can decrypt data with enc, key, iv like:

test_enc:"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"
test_key:="4AvVhmFLUs0KTA3Kprsdag=="
test_iv:="vN2mBu17W/8Ewfg3AX8Ayg=="

by Golang and Python:

Golang Code:

func decodeAesGcmTest() {
    test_enc := "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"
    test_key := "4AvVhmFLUs0KTA3Kprsdag=="
    test_iv := "vN2mBu17W/8Ewfg3AX8Ayg=="
    key, _ := base64.StdEncoding.DecodeString(test_key)
    byteKey := []byte(key)
    add := []byte("")
    block, _ := aes.NewCipher(byteKey)
    aesgcm, _ := cipher.NewGCMWithNonceSize(block, 16)

    iv, _ := base64.StdEncoding.DecodeString(test_iv)
    enc, _ := base64.StdEncoding.DecodeString(test_enc)
    plaintest, _ := aesgcm.Open(nil, iv, enc, add)
    fmt.Println("plaintest: ", string(plaintest))
}

Python Code:

def test_gcm_decode():
    test_enc = "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"
    test_key = "4AvVhmFLUs0KTA3Kprsdag=="
    test_iv = "vN2mBu17W/8Ewfg3AX8Ayg=="
    enc = base64.b64decode(test_enc)
    key = base64.b64decode(test_key)
    iv = base64.b64decode(test_iv)
    mode = AES.MODE_GCM

    decryptor = AES.new(key, mode, iv)
    plaintext = decryptor.decrypt(enc)
    print(plaintext)

but I cannot decrypt it with lua-resty-string:

local function gcm_decrypt()
    local aes = require "resty.aes"
    local ngx_decode_base64 = ngx.decode_base64
    local cipher_len = {
        128,
        192,
        256
    }
    local test_enc = "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"
    local test_key = "4AvVhmFLUs0KTA3Kprsdag=="
    local test_iv = "vN2mBu17W/8Ewfg3AX8Ayg=="

    local enc = ngx_decode_base64(test_enc)
    local key = ngx_decode_base64(test_key)
    local iv = ngx_decode_base64(test_iv)

    for _, vv in ipairs(cipher_len) do
        local decryptor, err = aes:new(key, nil, aes.cipher(vv, "gcm"), {iv = iv}, nil, nil, false)
        if decryptor then
            local plaintext, err = decryptor:decrypt(enc)
            if not err and plaintext then
                return true
            else
                ngx.log(ngx.ERR, "decrypt failed: ", err)
            end
        else
            ngx.log(ngx.ERR, "aes new failed: ", err)
        end
    end
end

Is the method I am using is wrong?

Thank you~

I try to decrypt with enc, key, iv using Golang and Python .

I want to decrypt with enc, key, iv using lua-resty-string but failed.

In lua-resty-string , the :decrypt(ciphertext, tag = nil) method expects an authentication tag passed as a separate parameter: https://github.com/openresty/lua-resty-string/blob/v0.15/lib/resty/aes.lua#L270

Conversely, the Golang/Python libraries you've used expect an authentication tag appended to a ciphertext

Check this question for futher explanation:

The authentication tag is defined as an output parameter in GCM (see section 7, step 7 of NIST SP 800-38D). In all the API's I've encountered it's appended to the ciphertext.

RFC 5116, section 5.1, AEAD_AES_128_GCM :

An authentication tag with a length of 16 octets (128 bits) is used. The AEAD_AES_128_GCM ciphertext is formed by appending the authentication tag provided as an output to the GCM encryption operation to the ciphertext that is output by that operation.

A real life example (Python cryptography library): https://github.com/pyca/cryptography/blob/39.0.0/src/cryptography/hazmat/backends/openssl/aead.py#L259-L267


This is a fix for your OpenResty code:

-- "An authentication tag with a length of 16 octets (128 bits) is used"
local tag_len = 16

-- enc_data = enc[:-16], enc_tag = enc[-16:]
local enc_data = enc:sub(1, -(tag_len + 1))
local enc_tag = enc:sub(-tag_len)

decryptor:decrypt(enc_data, enc_tag)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM