
블록체인과 블록체인 프로젝트를 깊이 있게 이해하고 싶다면 암호화에 대한 이해가 불가피할 것입니다. 블록체인은 암호화의 통합 응용 프로그램입니다.암호를 이해해야만 블록체인을 진정으로 이해할 수 있습니다.
치타 블록체인 센터는암호학의 기원에 관한 인기 있는 과학 기사첫 번째 레벨 제목
수수께끼 암호화 기계
제2차 세계대전 초기 파시즘의 전반적인 전력은 사실상 동맹국에 비해 훨씬 열세였지만, 독일과 일본은 제2차 세계대전 초기 기습전술과 선제공격을 많이 채택했고, 특정 전쟁 이점을 얻었습니다.
기습 전술을 효과적으로 구현하기 위해서는 정보가 매우 중요하므로 정보의 보안을 어떻게 보장하느냐가 제2차 세계대전 당시 암호학의 주요 목표였습니다.
정보의 절대적인 보안을 위해서는 일회성 패드 방식으로 정보를 암호화하는 것, 즉 각 문자를 임의의 변위로 암호화하는 것이 필요하다고 이전 기사에서 언급했습니다. 각 문자를 입력한 후 암호화된 문자를 출력합니다.
당시 가장 진보된 기계는 로터 암호화기라고 불리며 일회성 암호화를 매우 잘 구현했습니다. 그리고 그 원리는 실제로 우리에게 친숙한 주행 거리계와 매우 유사합니다.
(하위 유닛의 바퀴는 1회 회전, 상위 유닛의 바퀴는 1그리드 회전)
우리 모두는 주행 기록계 기계를 알고 있으며 일주일을 반복하는 데 오랜 시간이 걸립니다.
주행 거리계 휠의 숫자를 스크램블하고 앞으로 틱이 없으면 로터에 각 숫자를 더하여 변위 번호를 얻은 다음 암호화하려는 문자에 대해 변위 암호화를 수행하는 것이 일반적인 원칙입니다. 로터 암호화 시스템의
암호화기와 수신기는 다음 방법에 따라 동일한 변위 시퀀스를 생성할 수 있습니다. 먼저 동일한 시스템을 공유한 다음 초기 상태에 동의해야 합니다. 이것은 기계 코드 설정으로 정의되며, 각각의 기계를 동일한 위치로 조정하고 마지막으로 동일한 작업을 계속 수행하여 동일한 시퀀스를 얻습니다.
각각 26개의 번호를 갖는 3개의 로터에 대해, 로터(26)의 3승(17576개)의 회전을 통해 각 시퀀스의 변위 시퀀스가 반복된다.
그리고 각 로터의 위치는 시퀀스의 해당 위치와 동일하며,초기 기계 상태를 기계 코드 설정이라고 하고, 모든 기계 코드 설정을 모아놓은 것을 기계 코드 공간이라고 하는데, 기계를 초기에 설정하는 방법이 늘어나면 기계 코드 공간도 늘어난다.
기계 코드 설정을 선택할 때 이 공간에서 시작점을 선택합니다.기계 코드가 노출되도록 설정하면 암호화된 시퀀스 전체가 유출됩니다.
따라서 이 로터 암호화기의 보안성은 코드 공간의 크기와 코드 설정의 무작위성에 달려 있습니다.
제2차 세계 대전 중 나치가 사용한 가장 중요한 암호화 기술 중 하나는 Enigma로 알려진 암호화 기계였습니다.
전쟁이 끝날 무렵 에니그마는 1억 5천만 가지가 넘는 방식으로 설정될 수 있었습니다. 이로 인해 독일군은 연합군이 Enigma를 획득했으며 가능한 모든 코드 설정을 확인할 수 없다고 믿게 되었습니다.
양 당사자가 Enigma를 사용하여 통신하려면 먼저 일일 기계 코드 설정을 공유해야 합니다. 이를 통해 각 기계를 동일한 위치로 조정할 수 있습니다. 이 프로토콜은 전쟁 중에 반복적으로 변경되었지만 일반적으로 배포 키에 배포됩니다. 모든 작업자는 매일 해당 날짜의 설정을 잘라내어 해당 날짜에 기계에 필요한 구성(예: 사용할 로터 및 로터 순서)을 알려줍니다. 그런 다음 사용 후 기계 코드 설정이 파괴됩니다.
그러나 통신수에게는 여전히 한 가지 중요한 단계가 남아 있습니다. 통신하기 전에 각 로터의 초기 위치를 선택해야 하며 일부 게으른 작업자는 매우 간단한 실수를 합니다. 기계식 자전거 잠금 장치를 사용하면 로터를 초기 위치에서 몇 번 이동하거나 일반적인 조합을 재사용하는 경향이 있습니다. 이렇게 하면 초기 로터 위치의 균일한 분포가 파괴되고 반복 관찰 후 육군이 회로를 완전히 복원할 수 있습니다. 로터의 역방향 분포.
이런 낮은 수준의 인적 오류는 에니그마 머신의 최종 크랙으로 이어졌고, 이는 전쟁의 흐름에 간접적으로 영향을 미쳤다.
첫 번째 레벨 제목
의사 난수 생성기
의사 난수를 이해하기 전에 실제 난수를 살펴보겠습니다. 우리의 물리적 세계에는 모든 곳에 임의의 변동이 있습니다. 노이즈라는 임의의 변동을 측정하여 진정한 난수를 생성할 수 있습니다.노이즈를 측정하는 과정을 샘플링이라고 합니다., 샘플링을 통해 난수를 얻을 수 있습니다. 그러나 상대적으로 말하자면,기계는 결정론적이며 작업은 예측 가능하고 반복 가능합니다.
1946년 폰 노이만은 군용 수소폭탄 설계에 참여하여 ENIAC이라는 컴퓨터를 응용하여 핵융합 과정의 시뮬레이션을 반복적으로 계산하려 했으나 이를 위해서는 무작위로 생성된 숫자에 대한 빠른 접근이 필요했고 이러한 숫자가 반복 가능함을 보장해야 했습니다. 그러나 ENIAC의 메모리는 매우 제한적이며 긴 임의 시퀀스를 저장하는 것은 불가능합니다.
따라서 von Neumann은 임의성을 기계적으로 모방하는 알고리즘을 설계했는데 그 알고리즘은 다음과 같다.이 숫자는 시드라고 하는 밀리초 단위의 현재 시간과 같은 노이즈 측정값에서 가져올 수 있습니다.그런 다음 이 시드를 입력으로 사용하고 간단한 계산을 수행합니다. 시드 자체를 곱하고 이 결과의 중간 부분을 출력한 다음 이 출력을 다음 시드로 사용하고 이 과정을 필요한 만큼 반복합니다.
이를 중간 점수라고 하며 많은 의사 난수 생성기 중 하나입니다. 그렇다면 무작위로 생성된 시퀀스와 유사 무작위로 생성된 시퀀스의 차이점은 무엇입니까?
핵심 차이점은 의사 난수가 특정 숫자에 도달하면 시퀀스가 결국 반복된다는 것입니다.이전에 사용된 시드 번호가 알고리즘에 나타나면 주기가 시작되며 의사 난수 시퀀스가 반복되기 전의 길이를 마침표라고 하며 이 기간은 원래 시드의 길이에 의해 엄격히 제한됩니다.
예를 들어 2자리 시드를 사용하면 알고리즘은 루프를 반복하기 전에 최대 100개의 숫자를 생성할 수 있고, 3자리 시드는 루프를 반복하기 전에 1000개의 숫자를 생성할 수 있으며 4자리 시드는 루프를 반복하기 전에 1000개의 숫자를 생성할 수 있습니다. 루프를 반복합니다. 10,000개의 숫자를 생성하지만 충분히 큰 시드를 사용하면 시퀀스의 숫자가 반복되기 전에 수조로 확장됩니다.
매우 중요한 또 다른 중요한 차이점이 있는데, 그것은 의사 난수로 숫자를 생성할 때 생성할 수 없는 시퀀스가 있다는 것입니다.
예를 들어, 암호화자인 Alice가 20개 변위의 진정한 무작위 시퀀스를 생성하는 경우 이는 26의 20제곱 가능성을 포함하는 모든 가능한 변위 시퀀스 스택에서 시퀀스를 무작위로 선택하는 것과 같습니다. 이것은 천문학적입니다. 수치.
그러나 암호화기가 4자리 임의 시드를 사용하여 20자리 의사 난수 시퀀스를 생성하는 경우 10,000개의 가능한 결과 중에서 동등하게 일반적인 선택만 할 수 있습니다. 즉, 10,000개의 다른 시퀀스만 생성할 수 있습니다.
무작위 변위에서 의사 무작위 변위로 이동할 때 키 공간을 상대적으로 작은 시드 공간으로 축소하는 것과 같습니다.
의사 난수 개념을 제안하여 암호화기와 수신자가 전체 임의 변위 시퀀스를 미리 공유할 필요가 없고 비교적 짧은 임의 시드만 공유한 다음 이를 겉보기에 동일한 임의 시퀀스로 확장하면 됩니다. 필요할 때.
하지만 그들이 이 씨앗을 나누기 위해 만나지 않는다면 어떨까요? 이것은 현대 암호화 기술의 가장 중요한 내용이며 블록체인 암호화의 핵심이며 다음 기사에서 집중적으로 다룰 것입니다.