본문 바로가기
Major/#정보보호(Data protection)

전자 서명의 공개키 암호 알고리즘 (Public key algorithms for electronic signatures)

by Bright_Between 2023. 4. 24.
반응형

전자 서명 매커니즘에서 공개키 암호는 서명 및 인증 기능에 핵심적인 역할을 합니다. 이번 포스팅에서는 전자 서명에서 공개키 암호가 어떻게 사용되는지 자세히 살펴보겠습니다.

 

전자 서명 매커니즘 (출처: https://m.upbitcare.com/academy/education/blockchain/94)



전자 서명은 디지털 문서의 무결성을 보장하고, 문서 작성자를 인증하기 위한 기술입니다. 디지털 문서는 누구나 쉽게 생성하거나 변경할 수 있기 때문에, 전자 서명은 문서가 변경되지 않았음을 보장하는 동시에 문서 작성자의 신원을 확인하는 역할을 합니다. 이를 위해 전자 서명은 공개키 암호화 기술을 사용하여 문서를 암호화하고 서명합니다.

전자 서명에서 사용되는 공개키 암호화 기술은 대칭키 암호화와 달리, 서명과 검증에 서로 다른 키를 사용합니다. 즉, 서명에는 개인키를 사용하고, 검증에는 공개키를 사용합니다.

 

전자 서명의 과정은 다음과 같습니다. 먼저, 문서 작성자는 문서를 작성한 후, 전자 서명을 생성합니다. 이때, 서명을 생성하기 위해 개인키를 사용합니다. 개인키는 문서 작성자만이 가지고 있기 때문에, 서명을 생성한 것이 문서 작성자임을 증명할 수 있습니다.

다음으로, 서명이 포함된 문서를 검증할 대상자는 공개키를 이용하여 서명을 검증합니다. 공개키는 모든 대상자들이 가지고 있으며, 서명을 생성한 문서 작성자의 공개키를 이용하여 서명을 검증합니다. 검증이 성공적으로 이루어지면, 문서가 변경되지 않았음을 보장할 수 있습니다.

이렇게 전자 서명은 공개키 암호화 기술을 사용하여 서명 및 인증을 수행합니다. 전자 서명에서 사용되는 공개키 암호화 기술은 대표적으로 RSA와 DSA 등이 있으며, 이들 알고리즘은 다음과 같이 작동합니다.

 

RSA 알고리즘 (출처: http://marcof.tistory.com/59)



RSA 알고리즘은 대표적인 공개키 암호화 알고리즘으로, 1977년 Ron Rivest, Adi Shamir, Leonard Adleman이 발표했습니다. RSA 알고리즘은 매우 강력한 보안성을 가지고 있으며, 전자 서명에서도 많이 사용됩니다.

RSA 알고리즘의 동작 방식은 다음과 같습니다.

 

RSA 알고리즘은 대칭키 암호화와는 다르게, 두 개의 서로 다른 소수 p와 q를 이용하여 공개키와 개인키를 생성합니다. 암호화를 수행할 때는 공개키를 사용하며, 복호화를 수행할 때는 개인키를 사용합니다.

RSA 알고리즘에서는 먼저, 두 소수 p와 q를 선택합니다. 이 두 소수의 곱을 n으로 정의하고, n을 이용하여 φ(n) 값을 구합니다. φ(n)은 n보다 작으면서 n과 서로소인 자연수의 개수를 나타냅니다. 이후, φ(n) 값을 이용하여 e와 d를 구합니다.

e와 d는 서로 역수 관계에 있으며, e는 φ(n)과 서로소인 값 중 하나를 선택합니다. 이렇게 선택된 e를 공개키로 사용하며, d는 다음과 같은 조건을 만족하는 값 중 하나를 선택하여 개인키로 사용합니다.

ed ≡ 1 (mod φ(n))

 

 

RSA 알고리즘 (출처: https://www.holaxprogramming.com/2017/06/12/encryption-with-rsa/)



이제, RSA 알고리즘에서 메시지를 암호화하는 과정은 다음과 같습니다. 메시지를 숫자로 변환한 후, 공개키 e를 사용하여 다음과 같은 연산을 수행합니다.

암호문 = (메시지)e (mod n)

이 암호문을 전송받은 대상자는 개인키 d를 사용하여 복호화를 수행합니다. 이때, 복호화 과정은 다음과 같습니다.

메시지 = (암호문)d (mod n)

RSA 알고리즘의 보안성은 두 소수 p와 q를 찾는 것이 어렵기 때문에 보장됩니다. 따라서, 보안성을 높이기 위해서는 더 큰 소수 p와 q를 사용하면 됩니다. 하지만, RSA 알고리즘은 암호화 및 복호화에 대해 연산이 복잡하고 느리기 때문에, 대용량 데이터의 암호화에는 적합하지 않을 수 있습니다.

 

DSA알고리즘 (출처: https://hini7.tistory.com/89)



DSA 알고리즘은 전자 서명에서 사용되는 공개키 암호화 알고리즘으로, Digital Signature Algorithm의 약자입니다. DSA 알고리즘은 RSA 알고리즘과 마찬가지로 공개키와 개인키를 이용하여 서명을 생성하며, 보안성 또한 매우 높습니다.

DSA 알고리즘의 동작 방식은 다음과 같습니다. 먼저, 두 개의 소수 p와 q를 선택합니다. 이때, p는 q-1의 배수이며, q는 임의의 소수입니다. 이후, 알고리즘에서 사용할 파라미터 g와 x를 선택합니다. g는 p와 q의 값에 의존하는 값으로, x는 0보다 크고 q보다 작은 임의의 정수입니다.

이렇게 선택된 p, q, g, x 값을 사용하여 공개키와 개인키를 생성합니다. 공개키는 p, q, g, y의 4개 값으로 이루어져 있으며, y는 다음과 같은 공식에 의해 계산됩니다.

y = gx mod p

여기서, mod는 나머지 연산을 나타냅니다. 개인키는 x 값입니다.

이제, DSA 알고리즘에서 서명을 생성하는 과정은 다음과 같습니다. 먼저, 서명을 생성할 메시지를 선택합니다. 이후, k라는 임의의 수를 선택하고, 다음과 같은 연산을 수행합니다.

r = (gk mod p) mod q
s = (k-1 (H(m) + xr)) mod q

여기서, H(m)은 메시지의 해시값을 나타내며, mod q는 나머지 연산을 나타냅니다. 이렇게 생성된 r과 s 값을 이용하여 서명값을 생성합니다.

이 서명값을 전송받은 대상자는 공개키를 이용하여 다음과 같은 연산을 수행합니다.

w = s-1 mod q
u1 = H(m)w mod q
u2 = rw mod q
v = ((g^u1y^u2) mod p) mod q

여기서, ^는 거듭제곱 연산을 나타내며, mod p는 나머지 연산을 나타냅니다. v 값은 서명의 유효성을 검증하는데 사용됩니다. v 값이 r과 같은 경우, 서명은 유효한 것으로 간주됩니다.

 

DSA 알고리즘 (출처: https://hini7.tistory.com/89)



DSA 알고리즘은 RSA 알고리즘보다 연산 속도가 빠르기 때문에 대용량 데이터의 암호화 및 서명에 적합합니다. 또한, RSA 알고리즘과 달리 소수를 찾는 작업이 별도로 필요하지 않기 때문에 보안성도 더 높은 것으로 알려져 있습니다.

하지만, DSA 알고리즘에서는 k 값이 반드시 무작위로 선택되어야 하며, 이 값이 예측 가능한 경우에는 보안성이 크게 저하될 수 있습니다. 따라서, DSA 알고리즘을 사용할 때는 이러한 취약점을 고려하여 k 값을 선택해야 합니다.

공개키 암호화와 전자 서명은 현대 정보 보안에서 매우 중요한 역할을 합니다. 공개키 암호화는 대칭키 암호화에 비해 보안성 면에서 더욱 우수합니다. 대칭키 암호화에서는 암호화와 복호화에 동일한 키를 사용하기 때문에, 키를 탈취당하면 보안성이 크게 저하됩니다. 그러나 공개키 암호화에서는 공개키와 개인키가 분리되어 있기 때문에, 개인키가 탈취되더라도 공개키를 이용한 암호화는 여전히 안전합니다.

또한, 전자 서명은 인터넷 상에서의 안전한 데이터 전송을 위해 매우 중요합니다. 전자 서명을 이용하면, 송신자가 전송한 데이터가 변조되거나 위조된 것이 아님을 증명할 수 있습니다. 따라서, 전자 상거래나 인터넷 뱅킹 등에서는 전자 서명이 필수적으로 사용됩니다.

 

RSA, DSA 차이 (출처: https://velog.io/@inyong_pang/Programming-%EC%95%94%ED%98%B8%ED%99%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%A2%85%EB%A5%98%EC%99%80-%EB%B6%84%EB%A5%98)



그러나, 공개키 암호화와 전자 서명도 완벽한 보안을 보장하는 것은 아닙니다. 암호학 분야에서는 끊임없이 새로운 보안 취약점이 발견되고, 이를 이용한 공격 기술도 발전하고 있습니다. 따라서, 보안 기술을 항상 최신 상태로 유지하고, 새로운 취약점이 발견될 때마다 적극적으로 대처해야 합니다.

또한, 공개키 암호화와 전자 서명은 수학적인 계산을 기반으로 하고 있기 때문에, 계산 능력이 매우 뛰어난 컴퓨터나 컴퓨터 클러스터를 이용한 대규모 공격에도 취약할 수 있습니다. 따라서, 보안성을 높이기 위해서는 적어도 2048비트 이상의 긴 키를 사용하는 것이 좋습니다.

이와 같이 공개키 암호화와 전자 서명은 현대 정보 보안에서 매우 중요한 역할을 합니다. 암호학 분야에서는 계속해서 새로운 보안 기술이 개발되고 있으며, 이러한 기술들을 적극적으로 활용하여 보안성을 높이는 것이 중요합니다. 또한, 보안에 대한 지식과 인식을 널리 확산시키고, 개인정보 보호와 같은 보안에 대한 교육과 교육적인 대책도 필요합니다.

반응형

댓글