라빈 암호체계
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
라빈 암호체계는 1978년 마이클 O. 라빈에 의해 처음 발표된 트랩도어 함수를 기반으로 하는 공개 키 암호 시스템이다. 이 시스템은 소인수 분해 문제의 어려움에 기반하여 암호화와 디지털 서명에 사용되며, 키 생성, 암호화, 복호화의 세 가지 알고리즘으로 구성된다. 라빈 암호는 효율적인 암호화 속도를 가지지만, 복호화 과정에서 여러 개의 가능한 평문이 생성될 수 있으며, 선택 평문 공격 및 선택 암호문 공격에 취약하다는 특징이 있다. 또한, 전자 서명 알고리즘으로도 활용될 수 있으며, 서명 생성 및 검증 과정을 통해 메시지의 무결성을 보장한다.
더 읽어볼만한 페이지
라빈 암호체계 | |
---|---|
개요 | |
종류 | 공개 키 암호 방식 |
기반 | 라빈 서명 |
세부 사항 | |
보안 | 소인수 분해 문제의 어려움에 기반 |
취약점 | 선택적 평문 공격에 취약 |
비고 | Rabin 암호체계는 소인수 분해가 어렵다는 가정에 기초한 공개 키 암호 방식이다. |
2. 역사
마이클 O. 라빈은 1978년에 라빈 서명 방식의 일부로 라빈 트랩도어 함수를 처음 발표하였다.[3][4][5] 라빈 서명 방식은 서명을 위조하는 것이 소인수 분해만큼 어렵다는 것을 증명할 수 있는 최초의 디지털 서명 방식이었다.
라빈 암호체계는 키 생성, 암호화, 복호화의 세 단계로 이루어진다.
이 트랩도어 함수는 이후 교과서에서 공개 키 암호화 방식의 예로 재사용되었으며,[6][7][1] 라빈이 암호화 방식으로 발표한 적은 없지만, 라빈 암호 시스템으로 알려지게 되었다.
3. 절차
3. 1. 키 생성(Key generation)
앨리스는 매우 크며 서로 다른 두 소수 p와 q를 선택한다. 계산 편의를 위해 p ≡ q ≡ 3 (mod 4)를 만족하는 소수를 사용해도 좋다. (이러한 수를 블럼 수라고 한다.) n = pq를 계산하여 밥에게 공개한다. n은 공개 키, p와 q는 앨리스의 개인 키이다.[1]
라빈 암호체계의 키 생성 과정은 다음과 같다.
단계 | 설명 |
---|---|
1 | 서로 다른 두 개의 큰 소수 p와 q를 선택한다. 이때, p ≡ 3 (mod 4) 및 q ≡ 3 (mod 4)를 만족해야 한다. |
2 | n = pq를 계산한다. |
여기서 n은 공개 키이고, (p, q) 쌍은 개인 키이다.[2] p와 q를 블럼 수로 선택하면 복호화 처리가 간소화된다.[3]
3. 2. 암호화(Encryption)
밥은 앨리스에게 보낼 평문 m을 선택한다. 이때 m은 1부터 n-1 사이의 값이다. 밥은 암호문 을 계산하여 앨리스에게 전송한다.[1]예시로, 및 을 사용하면 이 된다. 평문으로 을 선택하면, 암호문은 다음과 같이 계산된다.
:.
메시지 ''M''은 가역적인 매핑을 사용하여 숫자 ''m'' ()으로 변환된 후, 을 계산하여 암호화할 수 있다. 이렇게 계산된 ''c''가 암호문이 된다.[1]
평문을 ''x''라고 할 때, 암호화는 다음과 같이 수행될 수도 있다.
:
3. 3. 복호화(Decryption)
앨리스는 암호문 ''c''와 개인 키 (''p'', ''q'')를 이용하여 평문 ''m''을 복원한다.먼저, ''mp'' = √''c'' (mod ''p''), ''mq'' = √''c'' (mod ''q'')를 계산한다. 그리고 ''p'' * ''yp'' + ''q'' * ''yq'' = 1을 만족하는 ''yp'', ''yq''를 확장 유클리드 알고리즘을 이용해 찾는다.
중국인의 나머지 정리를 이용하여 다음 네 개의 근을 구한다.
- ''r''1 = (''yp'' * ''p'' * ''mq'' + ''yq'' * ''q'' * ''mp'') mod ''n''
- ''r''2 = ''n'' - ''r''1
- ''r''3 = (''yp'' * ''p'' * ''mq'' - ''yq'' * ''q'' * ''mp'') mod ''n''
- ''r''4 = ''n'' - ''r''3
이 네 개의 근 중 하나가 원래의 평문 ''m''이다.
만약 이면, 아래 성질을 이용해 더 쉽게 풀 수 있다.
- (는 르장드르 기호)
네 개의 값 중 어느 것이 올바른 평문인지 판별하기 위해, 평문에 중복성(redundancy)을 추가하거나 패딩 기법을 사용할 수 있다.[1]
4. 특징
라빈 암호체계는 다음과 같은 특징을 가진다.
- 효율성: RSA에 비해 암호화 과정이 효율적이다. 라빈 암호는 제곱 연산만으로 암호화를 수행하지만, RSA는 세제곱 이상의 연산을 필요로 한다.[1]
- 효과성: 암호화 함수가 4:1 함수이므로 복호화 과정에서 네 가지 서로 다른 결과가 나오며, 이 중 셋은 가짜 결과이다. 따라서 복호화 시 진짜 결과를 잘 추론해야 한다. 평문이 텍스트 메시지인 경우 추론이 어렵지 않지만, 숫자 값인 경우 모호성 제거 방식을 사용해야 한다.[8] 이러한 단점을 보완하기 위해 암호문과 평문이 1:1 대응이 되도록 하는 알고리즘이 사용되기도 한다.
- 보안성: 소인수 분해 문제와 동치이므로, 소인수분해 일반 공식이 나오거나 동치성이 증명되기 전까지는 상당히 안전하다고 볼 수 있다. 그러나 선택 암호문 공격에 취약하며, 선택 평문 공격에 대해 구별 불가능성을 제공하지 않는다.[1]
4. 1. 효율성(Efficiency)
암호화 과정은 RSA에 비해 효율적이다. 라빈 암호는 제곱 연산만으로 암호화를 수행하는 반면, RSA는 세제곱 이상의 연산을 필요로 한다.[1] 복호화 과정의 효율성은 RSA와 비슷하다. 두 번의 모듈러 지수 연산과 중국인의 나머지 정리를 사용한다.[1]4. 2. 효과성(Effectiveness)
암호화 함수가 4:1 함수이므로, 복호화 과정에서 네 가지 서로 다른 결과가 나오고 이 중 셋은 가짜 결과이기 때문에, 복호화 과정에서 진짜 결과를 잘 추론해야 한다. 특히 숫자 값을 암호화한 경우 모호성 제거 스킴(disambiguation scheme)을 사용해야 한다.[8] 이 단점을 개량해서 [암호문 1: 평문 1]을 유지하는 알고리즘이 쓰인다.복호화는 올바른 결과 외에 세 개의 잘못된 결과를 생성하므로 올바른 결과를 추측해야 한다. 이는 라빈 암호체계의 주요 단점이며, 널리 실용화되지 못한 요인 중 하나이다.[8]
평문이 텍스트 메시지를 나타내도록 의도된 경우 추측은 어렵지 않다. 그러나 평문이 숫자 값을 나타내도록 의도된 경우 이 문제는 일종의 모호성 제거 방식을 통해 해결해야 할 문제가 된다. 이 문제를 제거하기 위해 특수한 구조의 평문을 선택하거나 패딩을 추가할 수 있다. 역전의 모호성을 제거하는 방법은 Blum과 Williams에 의해 제안되었다. 사용되는 두 소수는 4 모듈로 3과 합동인 소수로 제한되고, 제곱의 영역은 이차 잔여 집합으로 제한된다. 이러한 제한은 제곱 함수를 트랩도어 순열로 만들어 모호성을 제거한다.[8]
4. 3. 보안성(Security)
라빈 암호 알고리즘은 소인수 분해 문제와 동치이다. (이는 RSA 암호에서는 증명되지 않았다.) 따라서 소인수분해 일반 공식이 나오거나 동치성이 증명되기 전까지는 상당히 안전하다고 볼 수 있다.하지만 라빈 암호 시스템은 선택 암호문 공격(chosen ciphertext attack)에 취약하다.[1] 암호화 과정이 결정적이므로, 공격자는 암호문과 후보 메시지가 주어지면 후보 메시지를 암호화하여 주어진 암호문이 생성되는지를 쉽게 확인할 수 있다. 즉, 구별 불가능성을 선택 평문 공격에 대해 제공하지 않는다.
또한, 제작 시 quadratic residue modulo n을 사용하므로, 이와 관련된 공격이 가능하다.[1]
라빈 암호 시스템은 선택 암호문 공격에 취약하며, 예를 들어 중복성을 추가하여 단일 근을 생성하는 방식으로 공격을 방해할 수 있지만, 이 경우 소인수 분해 문제와의 동등성 증명이 실패하여 안전성이 불확실해진다.[1]
라빈 암호의 해독 문제는 소인수 분해 문제로 귀착시킬 수 있다. 어떤 평문 ''x1''에 대응하는 암호문 ''y1''이 주어졌을 때, 특정 방정식을 만족하는 ''x''를 구할 수 있다면, 높은 확률로 ''x1''과는 다른 값 ''x2''를 얻을 수 있고, 이를 통해 높은 확률로 소인수 p 또는 q를 구할 수 있다.[1]
5. 디지털 서명 알고리즘
라빈 암호 체계는 전자 서명을 생성하고 검증하는 데 사용될 수 있다. 서명 생성에는 개인 키 가, 서명 검증에는 공개 키 이 필요하다.
5. 1. 서명(Signing)
메시지 은 개인 키 를 사용하여 다음과 같이 서명할 수 있다.1. 임의의 값 를 생성한다.
2. 암호화 해시 함수 를 사용하여 를 계산한다. 여기서 이중 막대 기호는 연결을 나타낸다. 는 보다 작은 정수여야 한다.
3. 개인 키 를 사용하여 의 제곱근을 찾는다. 그러면 일반적인 네 가지 결과 가 생성된다.
4. 각 를 제곱하면 가 생성될 것으로 예상할 수 있다. 그러나 이는 가 와 를 법으로 한 이차 잉여인 경우에만 참이다. 이 경우인지 확인하려면 을 제곱한다. 이렇게 해서 가 생성되지 않으면, 새로운 임의의 로 이 알고리즘을 반복한다. 적절한 를 찾기 전에 이 알고리즘을 반복해야 하는 예상 횟수는 4이다.
5. 의 제곱근 을 찾았으면, 서명은 이다.
5. 2. 서명 검증(Verifying a signature)
공개 키 ''n''을 사용하여 메시지 ''m''에 대한 서명 (''r'', ''u'')를 검증하는 방법은 다음과 같다.1. ''c'' = H(''m'' || ''u'')를 계산한다.
2. ''r''′ = ''c''2 mod ''n''을 계산한다.
3. ''r''′ ≡ ''r'' 이면 서명이 유효하고, 그렇지 않으면 위조된 것이다.
참조
[1]
서적
Mathematics of Public Key Cryptography
Cambridge University Press
[2]
서적
Lecture Notes on Cryptography
https://cseweb.ucsd.[...]
2008-07
[3]
서적
Foundations of Secure Computation
Academic Press
[4]
간행물
Digitalized Signatures and Public Key Functions as Intractable as Factorization
http://publications.[...]
1979-01
[5]
학술회의
The Exact Security of Digital Signatures—How to Sign with RSA and Rabin
Springer
1996-05
[6]
서적
Cryptography: Theory and Practice
Chapman & Hall/CRC
2006
[7]
서적
Handbook of Applied Cryptography
https://cacr.uwaterl[...]
CRC Press
1996-10
[8]
서적
Lecture Notes on Cryptography
https://cseweb.ucsd.[...]
2008-07
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com