Development

OpenSSL BIGNUM ( W = G(A)^d x g^D mod n ) 예제

JayKimπŸ™‚ 2023. 4. 27. 16:32

BIGNUM 을 μ΄μš©ν•΄ μ•„λž˜ 곡식은 μ•žμ—μ„œ λΆ€ν„° μ°¨λ‘€λ‘œ κ³„μ‚°μ‹œ κ²°κ³Όκ°€ λ„ˆλ¬΄ 컀진닀.

$$ W = G(A)^d \times g^D mod n $$

이 연산에 λŒ€ν•΄μ„œ μ•„λž˜ 처럼 λ³€ν˜• ν•˜λ©΄ 같은 κ²°κ³Όκ°€ λ‚˜μ˜¨λ‹€.

$$ T1 = G(A)^d mod n $$
$$ T2 = g^D mod n $$
$$ W = T1 \times T2 mod n $$

그럼 OpenSSL BIGNUM 을 μ΄μš©ν•΄μ„œ κ΅¬ν•˜λŠ” μ†ŒμŠ€λŠ” λ‹€μŒκ³Ό κ°™λ‹€.

BN_mod_exp( T1, G(A), d, n, pCTX );
BN_mod_exp( T2, g, D, n, pCTX );
BN_mod_mul( W, T1, T2, n, pCTX );

사싀 μˆ˜ν•™μ€ 잘λͺ¨λ₯΄μ§€λ§Œ BIGNUM 을 μ΄μš©ν•΄ μˆ˜μ‹λŒ€λ‘œ 값을 λ§Œλ“€λ•Œ
이 μˆ˜μ‹μ„ λ‹¨μˆœνžˆ μ•žμ—μ„œ λΆ€ν„° κ΅¬ν•˜λ‹ˆ 값이 λ„ˆλ¬΄ μ»€μ Έμ„œ λ³€κ²½ ν•΄μ„œ κ΅¬ν•˜λ‹ˆ 잘 κ΅¬ν•΄μ‘Œλ‹€.

ν˜Ήμ‹œ μˆ˜ν•™ μž˜ν•˜μ‹œλŠ” 뢄이 μˆ˜μ‹ 계산에 λ¬Έμ œκ°€ 있음 μ•Œλ €μ£Όμ„Έμš”.