양자 암호 라이브러리 설치 후 + 검증 알고리즘 선택 (미완성)

8010 단어
본고는 유니버설 포바 프로토콜 문서와 함께 다운로드와 설치NIST post-quantum competition의 각 pqcrypto 참가자의 비교적 쉬운 정도를 설명하고자 한다.
항목이 어떤 알고리즘을 사용할지 설명하는 단독 보고서가 있을 것이다.
하지만 궁금증을 풀기 위해
  • 'SIKE'는 장기 PKI 알고리즘으로 사용된다.그것은 제3차 결승전의 입후보자이며 모든 다른 pq 암호화 알고리즘에서 가장 작은 서명 크기(긴 시간, 현재 300바이트 미만)가 생겼다

  • 'SIKE' is constructed by taking the supersingular isogeny of two derived elliptic curves ; 따라서 이것은 우리가 흔히 알고 있는 개념인'익숙함'(저자가 생각할 수 있는 거의 모든 암호화 화폐는 Edwards 곡선이나 NIST 타원 곡선 알고리즘을 주소 생성 방안으로 사용한다)
  • 최근 발표된 연구의 다음 그림에서는 이러한 주요 치수에 대한 알고리즘 구현의 효율성 향상에 대해 간략하게 설명합니다.

    source: https://sike.org/files/SIDH-spec.pdf


    위의 글은'SIKEp751'과'SIKEp610'을 개괄적으로 기술했다. 왜냐하면 본문을 작성할 때 최종적으로 어느 것을 선택할지 최종 결정을 내리지 않았기 때문이다.
    더 안전한 (p751)을 선택한 알고리즘의 실례화(추가 암호화 작업의 증가로 인한 성능 저하)가 속도/성능에 어떤 균형을 이룰지 평가하기 위해 더 많은 정보를 수집해야 한다.
    어떤 상황에서도 알고리즘의 압축 버전을 선택한다(뚜렷한 이유에서, 알고리즘을 사용하는 압축 버전을 선택해도 안전성/성능에 의미 있는 저하를 초래하지 않는다).
    키 크기 비교를 깊이 연구하기 전에 주의해야 할 것은 다른 pq 방안이 어떤 상황에서 서명/키 (privkey) 크기가 몇 KBs를 넘었다는 것이다.
    대체 검토에서는 주요 크기 축소를 위한 권장 최적화 시나리오를 요약했습니다.
    마이크로소프트와'디지털 보안 그룹'연구진이 2019년에 발표한 'Dual Isogenies and Their Application to Public-Key Compression for Isogeny-based Cryptography'라는 연구에서 연구진은 서로 다른 알고리즘 최적화 방안(SIKE)을 개괄적으로 기술했는데 이 알고리즘은 더욱 작은 서명을 제공했다.
    특히 다음 사항에 대해 살펴보겠습니다.

    "Compression has been included in the Round 2 submission of SIKE and, along with the introduction of new parameter sets, has enabled public keys of merely 196 bytes and ciphertexts of only 209 bytes for NIST level 1"


    위 발췌문에서 언급한 NIST의'레벨1'명칭은 양자 능력이 있는 상대를 가정해 알고리즘의 이론적 비트 강도를 말한다.

    source: https://eprint.iacr.org/2019/711.pdf


    키/공개 키/암호/공유 키 크기 문제 해결
    비트코인은 secp256k1(ecdsa)을 사용합니다.압축된 원시 키는 33 바이트입니다. (키 좌표/데이터 점은 기호 정수이기 때문에 추가 바이트를 추가했습니다. ['y' 가 '0선' 의 북쪽인지 남쪽인지 지정해야 합니다.]
    즉,
  • 'p610'SIKE 교체된 개인 키는 secp256k1 개인 키 크기의 15배, 그 공공 키는 secp256k1 개인 키 크기의 8.5배, 그리고
  • 옵션 라이브러리 = https://libpqcrypto.org/install.html
  • 설명은 Debian/Ubuntu 시스템을 겨냥한 것이다(이것은 매우 좋다. 어쨌든 나는 이 방면에서 소란을 피우거나 소란을 피우고 싶지 않다)
  • 모든 Python 통합이 완료되기 전에 설치해야 함
  • 완료 후 필요한 절차를 Docker의 기본 용기 실례에 추가할 수 있다(실례화 중인 서버에 대해 우리가 모든 상황에서 PQCrypto에게 이익을 얻을 수 있도록 하고, 우리에게 제공하는 이익을 누리지 않을 이유가 없다)
  • sudo apt install build-essential
  • sudo apt install libssl-dev
  • sudo apt install libgmp-dev
  • sudo apt install python3#그때
  • 다운로드 예정

    "Check that df /home/ shows at least 300000 1K-blocks available, and that df -i /home/ shows at least 30000 inodes free. Currently a typical compile-and-test run uses about 200MB and about 15000 inodes."


    이러한 예방 조치를 취한 후 다음 스크립트를 작성합니다.
    #!/bin/sh
    
    # Before proceeding, have to create a 'libpqcrypto' system user 
    
    sudo adduser --disabled-password --gecos libpqcrypto libpqcrypto
    
    # login to the newly created user 
    
    su - libpqcrypto 
    
    # Run these commands as said user (in one script) 
    
    touch pqinstall.sh # (to create the file) 
    
    cat <<EOF >>pqinstall.sh 
    wget -m https://libpqcrypto.org/libpqcrypto-latest-version.txt
    version=$(cat libpqcrypto.org/libpqcrypto-latest-version.txt)
    wget -m https://libpqcrypto.org/libpqcrypto-$version.tar.gz
    tar -xzf libpqcrypto.org/libpqcrypto-$version.tar.gz
    cd libpqcrypto-$version
    ln -s $HOME link-build
    ln -s $HOME link-install 
    EOF
    
    그때부터 우리는 운행을 시작했다chmod +x pqinstall.sh.그 다음에 우리는 pqinstall.sh 파일을 실행한다.
    스크립트가 실행될 때, 우리는 ./do을 실행한다. ["컴파일, 테스트, 설치. 75가지 다른 암호화 알고리즘을 컴파일, 테스트, 설치하는 데 상당한 시간이 걸릴 것이다."
    완성된 후에 우리는 그곳에서 exit 명령을 실행할 수 있다. (이것은 모두 하나의 스크립트에서 컴파일될 수 있다. 그들이'do'명령을 사용하여 무엇을 가리키는지 되돌아보아야 한다//간단한 cat do면 충분하다)
    GMP 다운로드

    what the fuck are they referring to with this?

    GMP header files: sudo apt install libgmp-dev^^ (이것은 본문 시작할 때 언급한 것입니다. 단지, 일반적인 Ubuntu/Debian 실례와 함께 설치하고 준비해야 한다는 것을 알아차리지 못했을 뿐입니다.)

    libpqcrypto 설치 후: CLI 설정


    (URL=https://libpqcrypto.org/command.html)
    라이브러리가 성공적으로 설치되면 /home/libpqcrypto/command를 경로에 추가하는 것을 권장합니다.이것이 라이브러리의 실제 설치 위치인지 확인해야 한다

    this will be successful if we begin the installation process from the root home directory of the newly created libpqcrypto user


    구체적으로 명령은: export PATH=$PATH:/home/libpqcrypto/command^ ~/.bashrc 파일에 추가하는 것이 좋습니다.
    기타 정보
    내가 읽은 내용에 따르면 '/home/libpqcrypto/command' 디렉터리에는 직접 호출할 수 있는 바이너리 파일이 포함될 것 같습니다.
    추가 설명이 이를 증명합니다.

    ""You can indstead put /home/libpqcrypto/command/ in front of each command name; but this does not work for the pq-*-all wrappers."


    서명 생성 예제(이 템플릿은 모든 서명에 적용됨)
  • 새 키 쌍 생성: pq-keypair-sphincsf256sha256 5>publickey 9>secretkey(5와 9는 무슨 뜻입니까?)
  • 메시지에 서명: pq-sign-sphincsf256sha256 <message 8\<secretkey \>signedmessage
  • 서명 메시지 확인 및 원래 메시지 복원: pq-open-sphincsf256sha256 <signedmessage 4<publickey >message
  • 검증에 실패하면 pq-open-sphincsf256sha256 빈 출력을 생성하고 stderr에 오류 메시지를 출력하고 100
  • 을 종료합니다
    암호화 예시 (샘플은 암호화 기반 pq 알고리즘에 적용됨)

    "There is a unified interface for all encryption systems"

  • 키 쌍 생성: pq-keypair-mceliece8192128 5>publickey 9>secretkey
  • 암호화 메시지: pq-encrypt-mceliece8192128 <message 4<publickey >ciphertext
  • 밀문을 복호화하고 원시 메시지를 복원한다: pq-decrypt-mceliece8192128 <ciphertext 8<secretkey >message
  • Python 인스턴스화


    여기에 포함된 정보 및 명령(우리가 찾고 있는 것) = https://libpqcrypto.org/python.html
    "Pythonpath"를 내보낸 후 스크립트 시작 import pqcrypto ("libqcrypto"프로젝트 폴더로 생성될 하위 디렉터리의 내용입니다. 다음 명령을 실행하십시오.export PYTHONPATH="/home/libpqcrypto/python${PYTHONPATH+:$PYTHONPATH}" (이 코드는 한 줄에 놓아야 한다. 형식이 좀 이상할 수도 있다)
    모든 관련 정보는 위에서 제공한 URL 링크에 있습니다. (내가 사용하고자 하는 후량 알고리즘에 따라 템플릿 스크립트를 수정하기만 하면 됩니다.)

    Sidenote: If REPL allowed users to 'sudo' within the containers, then I could provide an embedded instance that would allow people to run various code designed to produce the signatures, associated public / private key pairs accompanying various pq-crypto algorithms etc. - but, alas, they restrict this feature; so, I can't [perhaps I could go with Katacoda]

    좋은 웹페이지 즐겨찾기