머클-헬만 배낭 암호체계
Merkle–Hellman knapsack cryptosystem더 머클-헬먼 배낭 암호 시스템은 초기 공개키 암호체계 중 하나이다.1978년 랄프 머클과 마틴 헬먼에 의해 출판되었다.다항식 시간 공격은 1984년에 Adi Shamir에 의해 출판되었다.그 결과, 암호체계는 현재 불안정한 것으로 간주되고 있다.[1]: 465 [2]: 190
역사
공개키 암호화의 개념은 1976년 휘트필드 디피와 마틴 헬먼에 의해 도입되었다.[3]당시 그들은 어떤 비밀 "트랩도어" 정보 없이는 계산하기 어려운 함수인 "트랩도어 함수"의 일반적인 개념만을 제안했지만, 아직 그러한 함수의 실질적인 예를 찾지 못하고 있었다.그 후 1977년 RSA, 1978년 Merkle-Hellman과 같은 몇 년 동안 다른 연구자들에 의해 구체적인 공개키 암호 시스템이 제안되었다.[4]
설명
Merkle-Hellman은 공개키 암호체계로, 암호화를 위한 공개키와 암호 해독을 위한 비공개키라는 두 개의 키가 사용된다.그것은 서브셋 합계 문제(캡삭 문제의 특별한 경우)에 근거한다.[5]문제는 다음과 같다: 정수 과 정수 c 의 집합이 주어진 c{\에 하는 A 의 하위 집합을 찾으십시오 일반적으로 이 문제는 NP-완전한 것으로 알려져 있다.그러나 이(가) 증가하여 집합의 각 요소가 집합의 모든 숫자의 합보다 작을 경우 문제는 "쉬운"이며 단순한 탐욕 알고리즘으로 다항식 시간에 해결할 수 있다.
인 머클-헬먼, 메시지 암호를 해독하려면 겉보기에는 "힘든" 배낭 문제를 해결해야 해.개인 키에는 숫자 의 증가 목록이 포함되어 있으며 공용 키에는 W 의 "disguided" 버전인 숫자 의 증가되지 않는 목록이 포함되어 있다 개인 키에는 하드 변환에 사용할 수 있는 일부 "rapdoor" 정보도 포함되어 있다. 을(를) 사용한 배낭 문제에서 W 을(를 사용한 손쉬운 배낭 문제.
RSA와 같은 다른 공개 키 암호 시스템과 달리, Merkle-Hellman의 두 키는 서로 교환할 수 없으므로 개인 키를 암호화에 사용할 수 없다.따라서 Merkle-Hellman은 Samir가 서명에 사용할 수 있는 변종을 발표했음에도 불구하고 암호화 서명에 의한 인증에 직접 사용할 수 있는 것은 아니다.[6]
키 생성
1. 블록 크기 을 선택하십시오 이 키로 n {\ n 길이의 정수를 암호화할 수 있다.
- 은 > i= - 1 1 < c\ .
3. 무작위 정수 을(를) 다음과 같이 선택한다.
4. ,)= , r 및 이 (가) 같은 값인 임의 r r}을 선택하십시오
5. 순서 계산
- 여기서 =
공개 키는 이고 개인 키는(, , r) 입니다
암호화
을 (를) -bit m {\2}\m_로 구성되며 이 가장 높은 순서 비트로 한다. 이 (가) 0이 아닌 i{\ b_{i를 선택하고 함께 추가하십시오.동등하게 계산한다.
- = = b
은 c 입니다
암호 해독
암호문 을를) 해독하려면 c}을를) 합한 B {\ c의 서브셋을 찾아야 한다 우리는 를 }의 서브셋을 찾는 것의 하나로 변환함으로써 이 문제는 다항식 시간 내에 해결될 수 있다
1. 확장유클리드 알고리즘을 사용하여 modulo 의 모듈 반전을 계산한다. 이 (가) 과(와) 동일하므로 역이 존재할 것이다
- 의 계산은 메시지와 무관하며, 개인 키가 생성되었을 때 한 번만 할 수 있다.
2. 계산하다
3. 아래에 설명된 간단한 탐욕 알고리즘에 의해 증가 W 을 (를 하여 c′{\에 대한 부분집합 문제를 해결하십시오.Let be the resulting list of indexes of the elements of which sum to . (That is, .)
4. m 비트 위치에 각각 1개, 기타 모든 비트 위치에 0개씩 메시지 {\을(를) 생성하십시오.
부분합계 문제 해결
이 단순한 탐욕 알고리즘은 다항식 시간에서 을를) 합한 증가 W 의 하위 집합을 찾는다.
- 1. 을(를) 빈 목록으로 초기화하십시오.
- 2. 에서 c c보다 작거나 같은 가장 큰 요소를 w j {\displaystyle w_라고 말하십시오
- 3. 빼기: ′ ′- c
- 4. 에 j 을(를 추가하십시오
- 5. 이 (가) 0보다 크면 2단계로 돌아가십시오.
예
키 생성
다음과 같은 8개 값의 무작위적으로 증가된 시퀀스를 만들어 8비트 숫자를 암호화하는 키를 만드십시오.
합계가 706이므로 에 대해 더 큰 값을 선택하십시오
- =
에 복사하려면 r r을(를) 선택하십시오
- =
의 각 요소에 modulo 을 (를) 곱하여 공용 B 을(를) 생성하십시오
그러므로 =( , , , )
암호화
8비트 메시지를 = = 2 각 비트에 의 해당 숫자를 곱하고 결과를 추가한다.
0 * 295 + 1 * 592 + 1 * 301 + 0 * 14 + 0 * 28 + 0 * 353 + 0 * 120 + 1 * 236 = 1129
암호 텍스트 은 (는) 1129이다.
암호 해독
1129의 암호를 해독하려면 먼저 확장 유클리드 알고리즘을 하여 r md {\의 모듈 반전을 찾으십시오
- = - 1 = - 1 8 = .
계산 = c = 8 = .
탐욕스러운 알고리즘을 사용하여 를w i {\displaystyle 값의 합으로 분해하십시오.
따라서 = + + = + + w + w 2 {\3}+ 색인 은 X=(, , , 2, 2로 계산할 수 있다
- = = - i= 2 - - + + - = + + = m97.
암호해석
![]() |
1984년에 Adi Shamir는 개인 키를 사용하지 않고도 다항식 시간에 암호화된 메시지를 해독할 수 있는 Merkle-Hellman 암호 시스템에 대한 공격을 발표했다.[7] The attack analyzes the public key and searches for a pair of numbers and such that is a superincreasing sequence.공격에 의해 발견된(, ) 쌍은 개인 키의 , ) 과 같지 않을 수 있지만, 이 쌍과 로 B{\을(으)를 사용하는 하드 배낭 문제를 초증가 시퀀스를 사용하는 쉬운 문제로 변환하는 데 사용할 수 있다.그 공격은 오직 공개 키에서만 작동한다. 암호화된 메시지에 대한 접근은 필요하지 않다.
참조
- ^ Schneier, Bruce (1996). Applied Cryptography. New York: John Wiley & Sons. ISBN 0-471-12845-7.
- ^ Stinson, Douglas R. (1995). Cryptography: Theory and Practice. Boca Raton: CRC Press. ISBN 0-8493-8521-0.
- ^ Whitfield Diffie; Martin Hellman (1976). "New directions in cryptography". IEEE Transactions on Information Theory. 22 (6): 644. CiteSeerX 10.1.1.37.9720. doi:10.1109/TIT.1976.1055638.
- ^ Merkle, Ralph; Hellman, Martin (1978). "Hiding information and signatures in trapdoor knapsacks". IEEE Transactions on Information Theory. 24 (5): 525–530. doi:10.1109/TIT.1978.1055927.
- ^ Cherowitzo, William (2002-03-02). "Merkle-Hellman Knapsack Cryptosystem". Math 5410 - Modern Cryptology. Retrieved 2019-08-18.
- ^ Shamir, Adi (July 1978). "A Fast Signature Scheme". MIT Laboratory for Computer Science Technical Memorandum. 79 (MIT/LCS/TM–107): 15240. Bibcode:1978STIN...7915240S.
- ^ Shamir, Adi (1984). "A polynomial-time algorithm for breaking the basic Merkle - Hellman cryptosystem". IEEE Transactions on Information Theory. 30 (5): 699–704. doi:10.1109/SFCS.1982.5.