evp(7) - wariua/manpages-ko GitHub Wiki

NAME

evp - κ³ μˆ˜μ€€ μ•”ν˜Έ ν•¨μˆ˜

SYNOPSIS

#include <openssl/evp.h>

DESCRIPTION

EVP λΌμ΄λΈŒλŸ¬λ¦¬λŠ” μ•”ν˜Έ ν•¨μˆ˜λ“€μ— λŒ€ν•œ κ³ μˆ˜μ€€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•œλ‹€.

EVP_Seal* 및 EVP_Open* ν•¨μˆ˜λŠ” μ „μž "λ΄‰νˆ¬(envelope)"λ₯Ό κ΅¬ν˜„ν•˜κΈ° μœ„ν•œ κ³΅κ°œν‚€ μ•”ν˜Έν™” 및 λ³΅ν˜Έν™”λ₯Ό μ œκ³΅ν•œλ‹€.

EVP_DigestSign* 및 EVP_DigestVerify* ν•¨μˆ˜λŠ” μ „μž μ„œλͺ… 및 λ©”μ‹œμ§€ 인증 μ½”λ“œ(MAC)λ₯Ό κ΅¬ν˜„ν•œλ‹€. μ΄μ „μ˜ EVP_Sign* 및 EVP_Verify* ν•¨μˆ˜λ„ μ°Έκ³ ν•˜λΌ.

λŒ€μΉ­ μ•”ν˜ΈλŠ” EVP_Encrypt* ν•¨μˆ˜λ‘œ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€. EVP_Digest* ν•¨μˆ˜λŠ” λ©”μ‹œμ§€ λ‹€μ΄μ œμŠ€νŠΈλ₯Ό μ œκ³΅ν•œλ‹€.

EVP_PKEY* ν•¨μˆ˜λŠ” λΉ„λŒ€μΉ­ μ•Œκ³ λ¦¬λ“¬μ— λŒ€ν•œ κ³ μˆ˜μ€€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•œλ‹€. μƒˆ 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_PKEY_derive(3)λ₯Ό 보라.

  • μ„œλͺ…κ³Ό 검증은 EVP_PKEY_sign(3), EVP_PKEY_verify(3), EVP_PKEY_verify_recover(3)λ₯Ό 보라. 단 이 ν•¨μˆ˜λ“€μ€ μ„œλͺ…ν•˜λŠ” 데이터에 λ‹€μ΄μ œμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•˜μ§€ μ•ŠλŠ”λ‹€. λ”°λΌμ„œ 보톡은 EVP_DigestSignInit(3) ν•¨μˆ˜λ“€μ„ μ“°κ²Œ 될 것이닀.

  • μ•”ν˜Έν™”μ™€ λ³΅ν˜Έν™”λŠ” EVP_PKEY_encrypt(3)와 EVP_PKEY_decrypt(3)λ₯Ό 보라. 단 이 ν•¨μˆ˜λ“€μ€ μ•”ν˜Έν™”μ™€ λ³΅ν˜Έν™”λ§Œ μˆ˜ν–‰ν•œλ‹€. κ³΅κ°œν‚€ 연산은 λΉ„μ‹Ό μ—°μ‚°μ΄λ―€λ‘œ 보톡은 μ•”ν˜Έν™”λ˜λŠ” λ©”μ‹œμ§€λ₯Ό EVP_SealInit(3) 및 EVP_OpenInit(3) ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄ "μ „μž λ΄‰νˆ¬"에 λ„£κ²Œ 될 것이닀.

EVP_BytesToKey(3) ν•¨μˆ˜λŠ” μ’€ μ œν•œλœ νŒ¨μŠ€μ›Œλ“œ 기반 μ•”ν˜Έν™”λ₯Ό μ§€μ›ν•œλ‹€. λ§€κ°œλ³€μˆ˜λ“€μ„ μ‘°μ‹¬μŠ€λŸ½κ²Œ μ„ μ •ν•˜λ©΄ PKCS#5 PBKDF1 ν˜Έν™˜ κ΅¬ν˜„μ΄ κ°€λŠ₯ν•˜λ‹€. ν•˜μ§€λ§Œ μƒˆλ‘œ λ§Œλ“œλŠ” μ‘μš©μ—μ„œλŠ” 보톡 이λ₯Ό μ“°μ§€ μ•ŠλŠ” 게 μ’‹λ‹€. (λŒ€μ‹  PKCS#5의 PBKDF2 등을 μ“°λŠ” 게 μ’‹λ‹€.)

EVP_Encode* 및 EVP_Decode* ν•¨μˆ˜λŠ” 베이슀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

Copyright 2000-2018 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.


2018-03-12