RSA 암호화 방식은 큰 숫자를 소인수 분해하는 것은 어렵다.라는 수학적 원리에 의존하고 있기 때문에, RSA 공개 키의 길이는 최소한 현재까지 해독된 RSA 수 보다는 길어야 합니다. 예를 들어, 2020년에 RSA 수 중 829비트짜리 수인 RSA-250이 깨졌는데, 이는 829비트짜리 수의 소인수분해가 성공했다는 의미입니다. 즉, 829비트 길이 이하의 키는 해독이 가능하다는 의미가 됩니다. 때문에 829비트보다는 긴 키를 가지는 RSA-1024나 RSA-2048을 사용해야 합니다.(RSA-250이 나올 당시의 넘버링은 십진수 자릿수였고, 현재는 비트 수로 넘버링을 합니다. RSA-250은 829비트입니다.)
앞서 말했듯이 RSA 암호화의 원리는 큰 숫자를 소인수분해하는 것은 어렵다. 인데요, 때문에 키 길이가 길면 길수록 파훼되기 어려워집니다. 게다가, 키 길이를 2배로 늘린다고(예를 들어 1024 -> 2048) 파훼에 걸리는 시간이 2배로 늘어나는 것이 아니라 그 이상으로 늘어나게 됩니다. 즉, 키 길이가 길 수록 암호화 안정성은 더 좋아집니다. 하지만 키 길이를 무작정 길게 만들면 복호화에 드는 계산 비용도 늘어나기 때문에 무작정 긴 키를 사용하는 것은 좋지 않습니다. 때문에 적당히 긴 키 길이를 선택하는 것이 중요한데요, 현재는 RSA-2048가 많이 쓰이고 있고, 조금 더 중요한 곳에는 RSA-4096이나 RSA-8192를 쓰기도 합니다.
또한 2020년에 RSA-250이 깨졌듯이, 그보다 긴 길이의 키들도 언제 소인수 분해될 지 모릅니다. 때문에 RSA-2048 암호화가 상용화되기 이전에 많이 사용하던 RSA-1024방식은 지금은 안전할 지 몰라도 곧 파훼될 수도 있습니다. 그 시점이 언제가 될지는 모르지만요. 때문에 키가 길어질 수록 파훼되는데 걸리는 시간이 길어질 뿐이지 무적은 아닙니다.
그리고 RSA 암호화 자체가 위협받고 있기도 합니다. RSA 암호화 방식은 소인수 분해를 다항식 시간 내에 완료할 수 있는 알고리즘이 개발된다면 큰 위기를 맞게 됩니다. 그런데, 이미 양자 컴퓨팅 영역에는 소인수 분해를 다항식 시간 내에 완료할 수 있는 쇼어 알고리즘이라는 알고리즘이 존재합니다. 때문에 양자 컴퓨터 기술이 발전하고 상용화된다면 RSA 암호화 방식은 암호체계로서의 위치를 잃어버리게 될 가능성이 큽니다.
Q. RSA 알고리즘 말고 알고 있는 다른 공개키 알고리즘을 알고 있나요?
A. 현재 산업 표준으로는 거의 대부분 RSA를 사용한다고 알고 있는데요, 차세대 공개키 암호화 알고리즘으로 타원 곡선을 이용한 암호화 알고리즘이 주목받고 있습니다.
Q. HTTPS의 공개키 알고리즘에서도 RSA 알고리즘을 사용하나요?
A. 일반적으로는 RSA를 사용합니다. 극히 드문 경우에 타원 곡선 암호화 알고리즘을 쓰기도 한다고 하네요.
Q. RSA가 어떻게 동작하나요?
A. RSA 암호화에는 공개키 N, e, 비밀키 d가 존재합니다. 어떤 평문 a를 암호화할 때는