위험 경고: '가상화폐', '블록체인'이라는 이름으로 불법 자금 모집 위험에 주의하세요. — 은행보험감독관리위원회 등 5개 부처
검색
로그인
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
시장 동향 보기
마음 읽기: 영지식 증명에서 "지식" 추출
安比(SECBIT)实验室
特邀专栏作者
2019-08-28 02:28
이 기사는 약 9828자로, 전체를 읽는 데 약 15분이 소요됩니다
차세대 인터랙티브 시스템(보안 프로토콜)의 세 가지 속성인 "완전성", "신뢰성" 및 "영지식"을 분석합니다.

편집자 주: 이 기사의 출처는편집자 주: 이 기사의 출처는앰비랩스(ID: secbitlabs)

어떤 이론은 매우 흥미롭고, 영지식 증명도 그 중 하나입니다. 이 기사는 "영지식 증명 탐색" 시리즈의 세 번째 기사입니다. 전체 텍스트는 약 8,000단어이며 몇 가지 수학 공식이 포함되어 있습니다.

이 글은 Github에 업데이트 되었습니다.

https://github.com/

And what, Socrates, is the food of the soul? Surely, I said, knowledge is the food of the soul. 

이 글은 Github에 업데이트 되었습니다.

— 플라톤

보조 제목

"제로 지식" vs. "신뢰성"

  • 영지식 증명을 소개하는 많은 기사에서 다음 세 가지 속성을 볼 수 있습니다.

  • 완전성 - 완전성

  • 건전성 - 신뢰성

영지식 —— 영지식

그러나 이 기능의 의미와 통찰력을 깊이 있게 설명하는 기사는 거의 없습니다.존재하다"시리즈 (2) "시뮬레이션"의 이해

’ 기사에서 우리는 “시뮬레이터”라는 개념을 소개했습니다. 많은 소개 기사에서 "시뮬레이션"에 대한 언급을 피하지만 "시뮬레이션"은 "보안"을 정의하는 중요한 무기이기 때문에 보안 프로토콜의 핵심이라고 할 수 있습니다.

Rather than giving a list of the events that are not allowed to occur, it (the definition of zero-knowledge proof) gives a maximalist simulation condition.

— Boaz Barak

일반적으로 우리는 먼저 몇 가지 보안 이벤트를 나열한 다음 다음과 같이 설명하는 방식으로 보안을 정의합니다. 시스템이 안전하면 나열된 보안 이벤트가 발생하지 않습니다.

암호학자 Boaz Barak의 말을 빌리자면, "영지식 증명"은 일어날 수 없는 사건들의 목록을 주는 것으로 정의되는 것이 아니라, 직접적으로 가장 극단적인 "시뮬레이션 조건"을 주는 것입니다.

소위 "시뮬레이션 조건"은 "시뮬레이션" 방식을 통해 "이상적인 세계"를 구현하여 "실제 세계"와 구별할 수 없게 만드는 것을 말하며, 이상 세계에는 지식이 없기 때문에 다음과 같은 결론을 내릴 수 있습니다. 현실세계는 "영지식"을 만족시킨다.

  • 차세대 인터랙티브 시스템(보안 프로토콜)의 세 가지 속성인 "완전성", "신뢰성" 및 "제로 지식"을 계속해서 분석합니다.

  • 건전성: Alice는 지식 없이는 Bob의 검증을 통과할 수 없습니다.

  • 완전성: Alice는 지식이 있는 경우 Bob의 검증을 통과할 수 있습니다.

영지식: Alice는 상호 작용 중에 지식에 대한 정보를 공개하지 않습니다.

"신뢰성"과 "완전성" 사이에는 일종의 "대칭성"이 있음을 알 수 있습니다. 신뢰성은 악의적인 Alice가 반드시 실패하도록 보장하는 반면 완전성은 정직한 Alice가 반드시 성공하도록 보장합니다.

"완전성"은 증명하기가 더 쉽습니다. Alice가 정직하고 Bob이 정직하면 모두가 행복합니다. 이것은 코드를 작성하고, 테스트 사례를 제공하고, 종료하는 것과 같습니다.

"신뢰성"을 어떻게 정의해야 하는지 생각해 봅시다. 이 건전성 제안의 반대는 다음과 같습니다. (실제 세계에서) Alice가 Bob의 검증을 통과할 수 있다면 Alice는 지식을 가지고 있어야 합니다. 또는: Alice는... "비밀"을 알고 있습니다!

다음 질문은 Alice가 "비밀"을 알고 있음을 증명하는 방법입니다.

이것도 어려울 것 같죠? 기계가 "비밀"을 알고 있음을 증명해야 하는 경우 가장 쉬운 방법은 기계의 하드 디스크나 메모리에서 "비밀"을 찾는 것이지만 이렇게 하면 비밀이 노출됩니다. 기계가 블랙박스라면? 아니면 앨리스는? 우리는 마음을 읽는 능력이 없기 때문에 그녀의 마음의 비밀을 추측할 수 없습니다.

"알다"를 정의하는 방법?

"제로 지식"은 검증자 Bob이 "지식"과 관련된 정보를 "추출"할 수 있는 (컴퓨팅) 능력이 없음을 보장합니다. 추출할 수 없는 "지식"이 존재하지 않는다는 의미는 아닙니다. "신뢰성"은 지식의 "존재"를 보장합니다.

"지식 제로"를 보장하는 것은 "지식"이 존재하는 경우에만 의미가 있습니다.

이 기사에서는 "신뢰성"과 "알기"에 대해 설명합니다."지식"을 더 분석하기 위해 먼저 매우 간결하고 널리 사용되는 영지식 증명 시스템인 Schnorr 프로토콜을 소개합니다. 이 프로토콜은 소위 Σ-Δ 프로토콜이라고 하는 대규모 보안 프로토콜을 나타내며 Schnorr 프로토콜 확장도 "』[1] 핵심 기술 중 하나.

보조 제목

컴팩트 슈노르 프로토콜

  • sk = a

  • PK = aG

Alice는 비밀 번호 a를 가지고 있습니다. 이 번호를 "개인 키"로 생각한 다음 타원 곡선 그룹의 점 a*G(aG로 약칭)에 "매핑"할 수 있습니다. 우리는 이 점을 "공개 키"로 간주합니다.

"매핑"이라는 단어에 주목하십시오. 여기에서는 "동형"의 개념을 간략하게 소개합니다. 타원 곡선 그룹 유한 필드 간에 동형 매핑 관계가 있습니다. 기호 Zq를 사용하여 유한 필드를 나타내며 소수 q는 유한 필드의 크기를 나타내며 0, 1, 2, ..., q-1의 정수 집합을 나타냅니다. 타원 곡선에서 기준점 G를 전달하여 정확히 q 곡선 점 집합인 0G, G, 2G, ..., (q-1)G로 표시된 "순환 그룹"을 생성합니다. 임의의 두 곡선 점은 G + G = 2G, 2G + 3G = 5G와 같이 "특수 이진 연산"을 수행할 수 있습니다. 그래서 우리는 그것을 표현하기 위해 + 기호를 사용합니다. 이 그룹을 순환 그룹이라고 부르는 이유는 그룹의 마지막 요소 (q-1)G와 G가 그룹의 첫 번째 요소 0G로 되돌아가기 때문입니다.

유한 필드에 대한 임의의 정수 r이 주어지면 순환 그룹에서 대응하는 점 rG를 찾거나 스칼라 곱으로 r*G를 나타낼 수 있습니다. 그러나 역 계산은 매우 "어려우며" 이산 로그 문제로 알려진 "암호화 문제"입니다[2].

즉, 타원곡선 순환군 위의 점 R이 임의로 주어지면 유한체의 어느 정수가 R에 해당하는지 계산하기가 매우 어렵다. 이 역계산은 불가능하다고 생각하십시오.

Schnorr 프로토콜은 유한 필드와 순환 그룹 간의 단방향 매핑을 최대한 활용하고 가장 단순한 영지식 증명 보안 프로토콜을 구현합니다. Alice는 Bob에게 PK에 해당하는 개인 키 sk를 가지고 있음을 증명합니다.

1단계: 영지식을 보장하기 위해 Alice는 Bob이 개인 키를 추출하지 못하도록 보호하는 데 사용되는 난수 r을 생성해야 합니다. 이 난수는 또한 타원 곡선 그룹 rG에 매핑되어야 합니다.

2단계: Bob은 챌린지에 대해 임의의 숫자를 제공하려고 합니다. 이를 c라고 하겠습니다.

3단계: Alice는 도전 횟수에 따라 z = r + a * c를 계산하고 동시에 z를 Bob에게 보내고 Bob은 다음 공식으로 확인합니다. z*G ?= R + c*PK = rG + c*(aG )

세 번째 단계에서 z를 "동형적으로" 확인하는 Bob의 계산 프로세스를 볼 수 있습니다. 이 공식이 참이면 Alice가 개인 키 a를 가지고 있음을 증명할 수 있습니다.

하지만 왜?

  • z의 계산 및 검증 프로세스는 매우 흥미롭고 몇 가지 주요 기술이 있습니다.

  • 먼저 Bob은 "무작위" 챌린지 번호를 제공해야 하고 Bob은 타원 곡선에서 동형적으로 z를 확인합니다. 챌린지 번호 c를 미지의 것으로 간주하면 r+a*c=z는 1차원 방정식으로 간주될 수 있습니다. 여기서 r과 a는 방정식 계수입니다. c를 알 수 없다는 전제하에 r + a*x = r' + a'*x가 성립한다면 Schwatz-Zippel 정리[3]에 따라 r=r', a=a ' 둘 다 설립되었습니다. 즉, c를 알 수 없다는 전제 하에서 Alice가 z를 계산하고 Bob을 속이기 위해 다른 r', a'의 또 다른 쌍을 찾는 것은 거의 불가능합니다. 이 무작위 챌린지 번호 c는 r과 a의 제약 조건을 구현합니다. Bob은 임의로 숫자를 선택하지만 Alice는 미리 알지 못하기 때문에 Alice는 개인 키 a를 사용하여 z를 계산해야 합니다. 여기서 핵심은 c가 임의의 숫자여야 한다는 것입니다.

  • 또한 프로토콜의 첫 번째 단계에서 생성된 난수 r은 a의 기밀성을 보장합니다. "일관성 분포"를 준수하는 난수에 추가될 때 비밀의 합계는 여전히 "일관성 분포"를 준수하기 때문입니다.

보조 제목

제로 지식 증명

Schnorr 프로토콜이 약한 "영지식" 속성인 "SHVZK"를 증명하는 방법을 살펴보겠습니다.

참고: 여기서 증명하는 것은 SHVZK(Special Honest Verifier Zero-Knowledge)뿐입니다. SHVZK는 계약에서 Bob의 행동이 비합리적이지 않아야 한다고 요구합니다. 일반적인 의미에서 "영지식"은 Bob에게 어떠한 요구 사항도 부여하지 않으므로 이를 약한 속성이라고 합니다. 현재 Schnorr 프로토콜은 완전한 "영지식"을 증명할 수 없지만 일부 프로토콜 단계를 추가하여 완전한 영지식 목표를 달성할 수 있습니다. 자세한 내용은 여기서 확장하지 않습니다. 관심 있는 독자는 [4]를 참조하십시오. 나중에 Fiat-Shamir 변환을 논의할 때 이 문제를 다시 논의할 것입니다.

먼저 "시뮬레이터"는 "이상적인 세계"를 시뮬레이션합니다. 이상적인 세계에서는 Zlice와 Bob 간의 대화가 시뮬레이션됩니다. Zlice는 Schnorr 프로토콜, sk에 대한 지식이 없고 Bob은 공개 키 PK를 가지고 있습니다. 아래 그림을 봐주세요. Bob은 Schnorr 프로토콜의 두 번째 단계에서 난수 c를 생성해야 합니다. 여기에 추가 요구 사항이 있습니다. 즉, Bob은 외부 "난수"에서 "정직하게" 난수를 얻을 수 있습니다. 컨베이어 벨트" 에서 각 난수는 사전에 "동전"을 k번 던짐으로써 생성되는 2^k 범위 내의 일회성 분포 난수여야 합니다. Bob은 다른 방식으로 난수를 생성할 수 없으므로 Bob이 정직해야 합니다.

Zlice가 Bob을 속일 수 있는 방법은 다음과 같습니다.

프롤로그: Zlice는 sk에 대해 알지 못합니다. 이 시점에서 Bob의 난수 캐러셀은 일부 난수로 미리 배치되었습니다.

1단계: Zlice는 일관된 분포로 난수 c를 생성하고 새로운 "슈퍼 파워"를 사용하여 방금 생성된 난수 c를 Bob의 난수 컨베이어 벨트의 첫 번째 난수로 대체합니다. 현재 Bob은 이를 감지할 수 없습니다.

2단계: Zlice는 난수 z를 다시 생성한 다음 R'=z*G - c*PK를 계산하고 R'을 Bob에게 보냅니다.

3단계: 이때 Bob은 난수 컨베이어 벨트에서 c를 가져와 Zlice로 보냅니다. 이 c는 정확히 첫 번째 단계에서 Zlice가 생성한 c입니다.

4단계: Zlice는 3단계에서 생성된 난수 z를 Bob에게 보내고 Bob은 Schnorr 프로토콜의 검증 공식에 따라 검증을 수행하여 이 공식이 완벽하게 성립함을 확인할 수 있다.

"실제 세계"에서 Schnorr 프로토콜을 비교할 수 있습니다. 두 세계에서 Bob은 검증을 통과할 수 있습니다.

  • 그러나 차이점은 다음과 같습니다.

  • "이상적인 세계"에서 Zlice는 sk가 없지만 "실제 세계"에서 Alice는 sk가 있습니다.

  • "이상적인 세계"에서 z는 난수이고 sk는 관여하지 않지만 "실제 세계"에서는 z가 sk로 계산됩니다.

"이상적인 세계"에서 Zlice는 초능력을 사용하여 Bob의 난수를 대체합니다. "실제 세계"에서 Alice는 Bob의 난수 컨베이어 벨트를 볼 수 없으며 컨베이어 벨트의 숫자를 변경할 수 없습니다.

Q

여기서 생각해 보십시오.

(2분 후...)

내 대답은 아니오 야.

Alice가 미리 난수를 알고 있으면 Alice(실제 세계에서)는 시뮬레이터 Zlice가 한 것처럼 Bob을 속일 수 있습니다.

보조 제목

조우 시뮬레이터

사실 "신뢰성"과 "영지식"이라는 두 속성은 다른 차원에서도 대칭을 이룹니다. 신뢰성은 악의적인 Alice가 반드시 실패하도록 보장하고 지식이 없으면 악의적인 Bob이 성공하지 못할 것임을 보장합니다. 흥미롭게도 이 대칭은 시뮬레이션된 "이상적인 세계"에 반영됩니다.

신뢰성의 정의를 분석해 보겠습니다. Alice의 지식 부족으로 인해 Bob의 확인이 실패합니다. 그 반대의 제안은 다음과 같습니다. Bob의 성공적인 확인은 Alice가 지식을 가지고 있어야 한다는 것입니다.

우리는 초능력이 발휘될 수 있는 "이상적인 세계"에서 Alice의 지식을 테스트하기 위해 시뮬레이터를 다시 사용했습니다.

다시 말하지만 평행 우주에는 두 개의 세계가 있는데 하나는 "이상 세계"이고 다른 하나는 "현실 세계"라고 합니다. 이상 세계의 흥미로운 점은 "시뮬레이터"에 의해 시뮬레이션되고 시뮬레이터는 초능력을 가진 NPC를 이상 세계에 배치할 수 있다는 것입니다. 이번에는 앨리스의 두 아바타가 '이상세계'와 '현실세계'에 동시에 투입된다.

"당신"이 Bob의 역할을 하고 당신이 이야기하고 있는 Alice가 정말로 "신뢰할 수 있는지"를 알고 싶다고 가정해 봅시다. 따라서 초능력을 가진 NPC의 도움을 받아 "이상적인 세계"에 들어가면 반대편에 있는 앨리스의 지식을 "추출"할 수 있습니다.

무엇 무엇을? 프로토콜은 지식이 없다는 것을 방금 증명하지 않았습니까? 제로 지식은 Bob이 "지식" 조각을 추출할 수 없음을 의미합니다. 여기서 칠판을 치면 "제로 지식"은 "현실 세계"를 위한 것입니다. 우리가 지금 논의하고 있는 것은 마법의 "이상적인 세계"입니다.

다시 말하지만, "이상적인 세계"에서는 초능력을 가진 NPC를 사용하여 "현실 세계"의 앨리스가 속일 수 없도록 앨리스의 지식을 추출할 수 있습니다. 그녀는 지식이 없어야 하며, 지식이 없으면 NPC가 "이상적인 세계"에서 어떤 것도 추출하는 것이 불가능합니다.

그러나 "실제 세계"에서는 NPC를 사용할 수 없으며 물론 앨리스의 지식을 볼 수 없으며 "영 지식"의 본질에 위배되지 않습니다. 두 세계의 사건은 "구분할 수 없기" 때문에 "실제 세계"에서 Alice는 지식이 있어야 한다고 결론을 내릴 수 있습니다.

아이디어 정리: Alice가 대화형 세션에서 부정 행위를 할 수 없음을 증명하는 방법은 무엇입니까? "이상적인 세계"를 시뮬레이트할 수 있는 이 대화형 세션에 대해 "시뮬레이션 알고리즘"을 정의해야 합니다. 여기서는 "추출기"라는 특별한 역할이 있습니다. 앞에서 언급한 NPC는 "슈퍼 파워"를 전달할 수 있습니다. Alice의 지식을 "추출"하지만 상대방이 "알지 못하게" 합니다.초능력은 필수입니다! 이것은 "시리즈 (2) "시뮬레이션"의 이해

』 초능력이 없어도 시뮬레이터에 치팅 기능이 있다면 프로토콜이 "신뢰할 수 없다"(Unsoudness)는 것을 증명하는 것과 같다고 설명했습니다. 마찬가지로 "추출기"가 초능력 없이도 정보를 추출할 수 있는 능력이 있다면 프로토콜이 영지식이 아님(Not-zero-knowledge)을 증명하는 것과 같습니다.

이것은 특정 대화형 시스템의 증명에 따라 다르며 방금 이야기한 Schnorr 프로토콜부터 시작하겠습니다.

보조 제목

지식 증명: "지식 증명"

Schnorr 프로토콜의 "신뢰성"을 증명하고 이 슈퍼 NPC가 "이상적인 세계"에서 Alice의 개인 키를 추출하는 방법을 살펴보겠습니다. 그리고 이 "슈퍼 파워"는 여전히 "시간을 거슬러" 있습니다.

1단계: Alice는 난수 r을 선택하고 R=r*G를 계산한 다음 R을 "추출기"로 보냅니다.

2단계: 추출기는 임의의 챌린지 번호 c를 선택하여 Alice에게 보냅니다.
3단계: Alice는 z를 계산하고 응답하며 추출기는 z가 올바른지 확인합니다.

4단계: 추출기가 z에 문제가 없음을 확인한 후 초능력을 발동하고 2단계 이전의 시간을 되돌린다.

5단계: 추출기는 다시 앨리스에게 다른 랜덤 챌린지 번호 c'를 보냅니다.

6단계: Alice는 z'를 다시 계산하고 확인을 위해 추출기로 보냅니다.

7단계: 이제 추출기에 z와 z'가 있으므로 "지식 추출"을 달성하기 위해 Alice가 소유한 개인 키 a를 직접 계산할 수 있습니다.

이 시점에서 기본적으로 "신뢰성"이 입증됩니다. 신뢰성과 제로 인텔리전스의 "대칭성"에 대해 조금 느끼십니까?

참고: 모든 신뢰도에 반드시 추출기 알고리즘이 필요한 것은 아닙니다. 추출기를 사용하여 신뢰성을 증명하는 증명 시스템을 "지식 증명"이라고 합니다.

보조 제목

ECDSA 시그니처 공격 해석

블록체인 시스템 곳곳에서 볼 수 있는 ECDSA 서명 방식도 단순한 영지식 증명 시스템이다. 타원 곡선 디지털 서명 체계 ECDSA는 Schnorr 프로토콜과 매우 유사하며 Schnorr 프로토콜에 기반한 서명 체계는 1991년 "Journal of Cryptography"[5]에 발표되었습니다. 1991년 NIST(National Institute of Standards)가 디지털 서명 알고리즘을 선택했을 때 우아한 Schnorr 서명 방식이 실제로 특허를 받았기 때문에 NIST는 또 다른 서명 방식인 DSA(Digital Signature Algorithm)를 제안했고 이 방식은 타원을 지원했습니다. 곡선은 그런 다음 ECDSA라고 합니다. Satoshi Nakamoto가 Bitcoin을 구상할 때 서명 알고리즘으로 ECDSA를 선택했지만 곡선은 NIST 표준에서 권장하는 타원 곡선인 secp256-r1이 아니라 secp256-k1을 선택했습니다. 강과 호수의 소문 때문에 NIST는 타원 곡선 매개변수의 선택을 조작하여 일부 기관이 이산 대수 문제를 해결하기 위해 알려지지 않은 방법을 사용하도록 하여 "실제 세계"에서 초강대국을 가질 수 있는 능력을 갖게 할 수 있습니다. 많은 사람들은 Satoshi Nakamoto가 비트코인을 설계할 때 의도적으로 약간 덜 안전해 보이는 secp256-k1과 같은 곡선을 선택하면서 이러한 고려 사항을 가지고 있었는지 의심하고 있습니다.

ECDSA 서명을 분해하고 대화형 방식으로 ECDSA와 유사한 인증 체계를 정의해 보겠습니다. 상호 작용에 대해서는 아래 그림을 참조하십시오.

1단계: Alice는 여전히 난수 k를 선택하고 k를 타원 곡선에 매핑하여 점 K를 얻은 다음 Bob에게 보냅니다.

2단계: Bob은 c와 e라는 두 개의 난수를 생성하여 Alice에게 제공해야 합니다.

3단계: Alice는 s를 계산하여 s의 계산 프로세스가 올바른지 확인하는 Bob에게 보냅니다.

참고: ECDSA 서명 체계에 익숙한 독자를 위해 간단히 설명하면 Bob이 생성한 c는 서명된 메시지의 Hash 값 Hash(m)에 해당하고 e는 변환 함수 F(K)에 의해 생성됩니다. . 그 중 F(.)는 타원곡선 위 점의 x좌표를 취하여 (mod q)[6]를 거치면 얻어진다.

ECDSA 서명 방식은 심각한 보안 위험이 있다는 말이 있는데, 두 개의 서명에 동일한 난수를 사용하면 서명자의 개인키가 노출된다. 사실 Schnorr 서명 방식도 같은 문제가 있습니다.

Sony PlayStation 3 엔지니어는 ECDSA 라이브러리 함수를 호출할 때 난수를 입력해야 하는 매개변수 위치에 상수를 전달했습니다. 암호화에 익숙한 해커들이 이 심각한 백도어를 발견했습니다. 2011년 1월 마법소년 지오핫(Geohot)은 소니 PS3의 마스터 개인키를 공개했다. 소니는 나중에 분노했다... (온라인에서 후속 기사 검색 가능)

k = (c - c')/(s - s')a = (k * s - c)/e

Alice가 두 상호 작용에서 동일한 K를 사용하는 경우 Bob은 두 개의 서로 다른 c와 c'를 전송하여 s와 s'를 얻은 다음 다음 공식으로 개인 키 a를 계산할 수 있습니다.

그렇다면 이 "보안 백도어"를 어떻게 보아야 할까요? 여러분 생각해 보세요. 이 보안 백도어는 이전에 우리가 증명한 Schnorr 프로토콜의 신뢰성 증명과 거의 동일합니다! 이 알고리즘은 ECDSA 인증 프로토콜의 "신뢰성" 증명에서 정확히 "추출기" 알고리즘입니다. 단지 신뢰도 증명에서 앨리스가 동일한 난수 k를 사용하여 두 번 인증하기 위해서는 "추출기"가 "시간 역전"이라는 슈퍼파워를 사용해야 한다는 것뿐입니다.

그러나 Sony PS3 시스템에서 난수는 알려지지 않은 엔지니어가 고정 값으로 작성했으며 이는 해커에게 "초능력"을 직접 부여하는 것과 동일하며 이것이 "현실 세계"에 있습니다. 즉, 해커는 "시간을 거슬러 올라가지" 않고 "추출기"를 구현할 수 있습니다.

반복할 수 없는 난수의 문제만은 아닙니다. 대신 난수는 암호학적으로 안전한 난수여야 합니다.

1: z1 = r1 + c1*a2: z2 = r2 + c2*a

"선형 합동"의 원리를 사용하여 의사 난수 생성기에 의해 난수 r이 생성되는 경우 r의 값이 계속 변하더라도 여전히 "지식 추출"을 막을 수 없다고 상상해 보십시오. 선형 합동 알고리즘이 r2= d*r1 + e(mod m)라고 가정하고 Schnorr 프로토콜의 세 번째 단계로 돌아갑니다.

공격자가 Alice에게 두 개의 연속 서명을 요청하면 r2를 r1에 대입한 후 공격에 대한 두 개의 미지수(r1, a), z1, z2, c1, c2, d, e를 풀기 위한 두 개의 선형 방정식이 됩니다. 후자 이 방정식 시스템은 중학교 수학 지식만으로 풀 수 있습니다.

이는 Schnorr 프로토콜(또는 ECDSA 프로토콜)의 "설계 결함"이 아니며, 오히려 원칙적으로 프로토콜의 신뢰성을 보장하는 Schnorr 프로토콜의 보다 섬세한 설계입니다. 한 눈에 "간결함"을 달성하기 위해 유사한 기술이 암호화 프로토콜에 자주 나타납니다. 그러나 프로토콜의 내부 메커니즘이 명확하지 않은 경우, 특히 "이상적인 세계"와 "실제 세계"의 구분이 명확하지 않은 경우 사용자는 다양한 멋진 "보안 허점"을 쉽게 도입할 수 있습니다.

  • 안전하고 신뢰할 수 있는 소프트웨어를 작성할 수 있는 책임감 있는 코더로서 우리는 무엇을 알아야 합니까? 물론 보안 프로토콜의 설계 메커니즘을 철저히 이해하는 것이 가장 좋지만 대부분의 경우 이것은 비현실적입니다. 일반적으로 우리는 다양한 암호화 도구를 "블랙 박스"로 사용하지만 이것으로는 충분하지 않을 수 있습니다.

  • "안전 정의"란 무엇입니까?

  • "이상적인 세계"에서 "초능력"은 정확히 무엇입니까?

보조 제목

브레인홀: 우리는 시뮬레이션된 세계에 살고 있습니까?

"시뮬레이터"를 처음 읽었을 때 가장 먼저 생각한 것은 영화 "매트릭스"였습니다. 우리가 살고 있는 "현실 세계"는 어떤 시뮬레이터에 의해 시뮬레이션된 "이상적인 세계"일 수 있습니다. 우리가 보고 듣고 지각하는 모든 것은 "시뮬레이션"된 것입니다. "현실 세계"에서 우리는 매트릭스에 살고 있습니다. 그러나 우리는 이것을 인식하지 못합니다.

일찍이 춘추전국시대에 장자는 비슷한 문제에 대해 생각하고 있었다.

예전에 Zhuang Zhou는 자신이 나비인 꿈을 꾸었고 나비가 너무 생생했습니다. Zhizhi에 대한 자기 참조 및! 나는 Zhou Ye를 모른다. 갑자기 느끼면 일주일처럼 느껴질 것입니다. Zhou Zhimeng이 Hu Die이고? 나비의 꿈은 주유? Zhou와 Hu Die는 그들만의 차이점이 있을 것입니다. 이를 구체화라고 합니다.

—— "장자 평등"

속담으로 설명하자면, 장자는 어느 날 잠이 들었고 그가 나비가 되어 가볍게 춤추는 꿈을 꾸고 깨어났을 때 그가 여전히 장자라는 것을 알았습니다. 그래서 장자는 꿈에서 나비로 변한 것인지, 나비가 꿈에서 장자로 변한 것인지 고민했다. 꿈이 현실이라면...

"통 안의 뇌"는 미국의 철학자 길버트 하먼이 제안한 아이디어입니다. 현실 세계에서.

이 아이디어는 철학자 데카르트의 "최초의 철학적 명상"[7]에서 나온 것으로, 그는 우리가 모든 것을 의심해야 하며 인간의 모든 지식, 수학, 기하학, 지각된 세계를 하나씩 테스트해야 한다고 주장합니다. 그러나 그는 "나는 생각한다, 고로 나는 존재한다"를 제외하고 모든 지식이 신뢰할 수 없다는 것을 발견했습니다. 왜냐하면 우리의 두뇌는 "초능력"을 가진 사악한 악마에게 속을 가능성이 높기 때문입니다.

  • 2003년 옥스포드 대학의 철학 교수인 닉 보스트롬은 "우리는 컴퓨터 시뮬레이션 세계에 살고 있습니까?"라는 논문을 엄숙하게 썼습니다. "[8]. 다음 세 가지 사실 중 적어도 하나가 참이라고 생각하십시오.

  • 인류 문명은 완전히 소멸되었습니다.

  • 인간 문명은 현실 세계를 완전히 시뮬레이션할 수 있는 기술 수준에 도달했지만, 어떤 이유에서인지 아무도 신의 역할을 하기 위해 새로운 시뮬레이션 세계를 만들려고 하지 않습니다.

우리의 현재 인류 문명은 가상의 세계에 살고 있습니다.

실리콘밸리 기업가 일론 머스크는 공개 인터뷰에서 "우리가 기본적인 현실 세계에 살고 있을 확률은 10억분의 1"에 불과하다고 말했다. 즉, 그는 우리가 컴퓨터 게임(시뮬레이션 세계)에 살고 있고, 시뮬레이션 세계 밖에는 이 세계를 개발하고 조작하는 프로그래머가 있으며, 우리 각자는 게임 캐릭터(NPC)라고 믿고 있습니다.

아이폰 탈옥과 오토파일럿에 지친 마법소년 Geohot은 올해 3월 "South by Southwest" 컨퍼런스에서 "Jailbreaking the Simulation"이라는 제목의 연설을 했습니다[9]. 그는 우리가 가상의 세계에 살고 있다고 믿으며 소위 신은 외부 세계에서 살아 있고 발로 차는 코더입니다.그들은 우리의 "현실 세계"를 만들도록 프로그래밍했습니다.물론 그들은 하나 이상의 사본을 시작했을 수 있습니다. 세계. 그러나 그들은 외부의 "시뮬레이션된 세계"에 살 수도 있습니다.

우리가 시뮬레이션 세계에 살고 있다면 지구 어딘가에서 "시뮬레이션 트랩도어"라는 뒷문을 찾아 "시뮬레이터"의 초능력을 얻고 놀라운 "비밀 지식"을 추출할 수 있습니다.

우리의 세계가 실제로 프로그램에 의해 시뮬레이션된다면 이 프로그램에 버그가 있을 수 있으며 버그가 있으면 이 버그를 사용하여 감옥에서 탈출하고 "이상적인 세계"를 뛰어 넘어 외부 세계에 도달할 수 있습니다. 코드 파머 신에 대해 이야기합시다.

지금 농담하는 거지? 다음은 Zhihu [10]의 단락에서 발췌한 것입니다.

세상이 가상이라면 어떤 예가 그것을 증명할 수 있습니까?

1. 왜 거시적으로는 풍부하고 다채롭지만 미시적 소립자는 모두 똑같은가? 이것은 그림과 똑같은 것이지만 픽셀은 정확히 같은 것입니다.

2. 빛의 속도에 상한선이 있는 이유는 무엇입니까? 기계의 작동 속도가 제한되어 있기 때문에

3. 플랑크 상수가 있는 이유는 무엇입니까? 머신 데이터의 제한된 정밀도로 인해

4. 미세 입자가 모두 확률 구름인 이유는 무엇입니까? 이것은 시스템이 루프에 빠지는 것을 방지하기 위해 추가된 임의의 섭동입니다.

5. 파울리 배제 원칙이 있는 이유는 무엇입니까? 시스템에서 채택한 데이터 조직은 다차원 배열인 것 같습니다.

6. 양자 컴퓨터는 왜 순식간에 모든 가능성을 시도할 수 있을 정도로 빠르게 실행됩니까? 이것은 본질적으로 호스트의 인터페이스를 호출하기 때문에

7. 양자 얽힘이 있는 이유는 무엇입니까? 이것은 실제로 동일한 개체를 참조하는 두 개의 포인터입니다.

9. 시간이 시작된 이유는 무엇입니까? 시스템에 부팅 시간이 있습니다

계속되다

계속되다

암호 프로토콜을 설계하는 것은 줄타기를 하는 것과 같습니다."지식 제로"와 "신뢰성"을 동시에 달성하려면 프로토콜의 내용을 완전히 무작위로 만들고 "지식"이 참여할 수 있도록 해야 합니다. 프로토콜의 상호 작용에서. 프로토콜이 제대로 설계되지 않거나 올바르게 구현되지 않으면 시스템 보안이 무너집니다. 예를 들어 제로 지식이 파괴되어 "지식"이 실수로 유출되거나 신뢰도가 파괴되어 누구나 증명을 위조할 수 있습니다. 또한 이러한 종류의 보안은 기존 코드 기반 메커니즘 취약점보다 훨씬 더 심각하며 발견하기가 더 어렵습니다. 엄격하게 수학적 논증을 위해서는 이것이 필수적인 것처럼 보입니다.

If you would be a real seeker after truth, it is necessary that at least once in your life you doubt, as far as possible, all things. 

우리의 세계는 정말로 "삼체 문명"에 의해 시뮬레이션된 것입니까? 이러한 가능성을 배제할 수 없으며, 아마도 우리는 우리의 다양한 집착을 진지하게 재검토해야 할 것입니다. 하지만 그래서? 적어도 내 "생각"은 진짜입니다.

당신이 진실로 진리를 찾는 사람이라면 인생에서 적어도 한 번은 당신이 할 수 있는 모든 것에 질문하십시오.

智能合约
安全
Odaily 공식 커뮤니티에 가입하세요