NAME

evp - 고수준 암호 함수

SYNOPSIS

#include <openssl/evp.h>

DESCRIPTION

EVP 라이브러리는 암호 함수들에 대한 고수준 인터페이스를 제공한다.

EVP_SealXXXEVP_OpenXXX 함수는 전자 "봉투(envelope)"를 구현하기 위한 공개키 암호화 및 복호화를 제공한다.

EVP_DigestSignXXXEVP_DigestVerifyXXX 함수는 전자 서명 및 메시지 인증 코드(MAC)를 구현한다. 이전의 EVP_SignXXXEVP_VerifyXXX 함수도 참고하라.

EVP_EncryptXXX 함수로 대칭 암호화를 쓸 수 있다. EVP_DigestXXX 함수는 메시지 다이제스트를 제공한다.

EVP_PKEYXXX 함수는 비대칭 알고리즘에 대한 고수준 인터페이스를 제공한다. EVP_PKEY를 새로 만드는 건 EVP_PKEY_new(3)를 보라. EVP_PKEY_set1_RSA(3) 페이지에서 설명하는 함수들을 이용해 EVP_PKEY를 특정 알고리즘의 개인키에 연계하거나 EVP_PKEY_keygen(3)으로 새 키를 생성할 수 있다. EVP_PKEY_cmp(3)로 EVP_PKEY를 비교하거나 EVP_PKEY_print_private(3)으로 찍을 수 있다.

EVP_PKEY 함수들은 비대칭 알고리즘의 모든 연산들을 지원한다.

EVP_BytesToKey(3) 함수는 다소 제한된 패스워드 기반 암호화를 지원한다. 매개변수들을 조심스럽게 선정하면 PKCS#5 PBKDF1 호환 구현이 가능하다. 하지만 신규 응용에서는 보통 이를 쓰지 않는 게 좋다. (대신 PKCS#5의 PBKDF2 등을 쓰는 게 좋다.)

EVP_EncodeXXXEVP_DecodeXXX 함수는 베이스64 인코딩 및 디코딩을 구현한다.

대체 구현을 제공하는 ENGINE 모듈이 있으면 대칭 알고리즘(암호), 다이제스트, 비대칭 알고리즘(공개키 알고리즘) 모두를 대체할 수 있다. 암호나 다이제스트의 ENGINE 구현이 기본으로 등록돼 있으면 여러 EVP 함수들에서 자동으로 내장 소프트웨어 구현 대신 그 구현을 사용하게 된다. 더 자세한 내용은 engine(3) 맨 페이지를 확인하라.

여러 알고리즘에 저수준의 알고리즘별 함수가 존재하기는 하지만 사용을 권하지 않는다. ENGINE과 함께 쓸 수 없으므로 그 저수준 함수들로는 새 알고리즘의 ENGINE 버전에 접근할 수 없다. 또한 코드에 새 알고리즘을 도입하기 힘들어지고, 저수준에서는 일부 옵션들을 깔끔하게 지원하지 않으며, 어떤 연산들은 고수준 인터페이스를 쓸 때 더 효율적이다.

SEE ALSO

EVP_DigestInit(3), EVP_EncryptInit(3), EVP_OpenInit(3), EVP_SealInit(3), EVP_DigestSignInit(3), EVP_SignInit(3), EVP_VerifyInit(3), EVP_EncodeInit(3), EVP_PKEY_new(3), EVP_PKEY_set1_RSA(3), EVP_PKEY_keygen(3), EVP_PKEY_print_private(3), EVP_PKEY_decrypt(3), EVP_PKEY_encrypt(3), EVP_PKEY_sign(3), EVP_PKEY_verify(3), EVP_PKEY_verify_recover(3), EVP_PKEY_derive(3), EVP_BytesToKey(3), ENGINE_by_id(3)

Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.


2021-03-25