Linux 커널의 비동기 및 병렬 알고리즘

Linux 커널의 비동기 및 병렬 알고리즘

Linux 커널 구성에는 다음 옵션이 표시됩니다.

config CRYPTO_PCRYPT
        tristate "Parallel crypto engine"
        depends on SMP
        select PADATA
        select CRYPTO_MANAGER
        select CRYPTO_AEAD
        help
          This converts an arbitrary crypto algorithm into a parallel
          algorithm that executes in kernel threads.

config CRYPTO_CRYPTD
        tristate "Software async crypto daemon"
        select CRYPTO_BLKCIPHER
        select CRYPTO_HASH
        select CRYPTO_MANAGER
        select CRYPTO_WORKQUEUE
        help
          This is a generic software asynchronous crypto daemon that
          converts an arbitrary synchronous software crypto algorithm
          into an asynchronous algorithm that executes in a kernel thread.

암호화에서 임의 알고리즘, 비동기 알고리즘 및 병렬 알고리즘의 차이점은 무엇입니까?

답변1

  • 존재하다동기화실행 시 다른 작업을 계속하기 전에 해당 작업이 완료될 때까지 기다려야 합니다.
  • 존재하다비동기식실행하는 동안 이전 작업이 완료되기 전에 다른 작업을 계속할 수 있습니다.

이 용어는 암호화와 특별한 관련이 없습니다. 일반적으로 암호화 알고리즘에 대한 교과서 설명은 동기식도 비동기식도 아닙니다.구현하다알고리즘이 그 중 하나일 수 있습니다.

예를 들어 다음과 같은 상위 수준 설명을 고려해보세요.AES:

AES는 블록 암호이므로 각 128비트 입력 블록은 다음과 같은 변환을 거칩니다.

  • 키 확장
  • 초기 라운드
    • 휠 키 추가
  • 라운드 수(키 크기에 따라 10, 12 또는 14라운드 반복)
    • 하위 바이트
    • 이동하다
    • 혼합 열
    • 휠 키 추가
  • 최종 라운드
    • 하위 바이트
    • 이동하다
    • 휠 키 추가

에 따라비밀번호 모드사용 시 블록 암호화는 종속적이거나 독립적일 수 있습니다. 예를 들어 CBC(암호 블록 체인) 모드 암호화에서는 실제 AES 변환 전에 이전 블록의 암호문을 사용하여 다음 블록의 일반 텍스트를 변환합니다. 이 경우 이전 단계의 출력이 다음 단계의 입력으로 필요하므로 알고리즘 구현은 동기식이어야 합니다.

반면, ECB(Electronic Code Book) 모드에서는 각 블록이 개별적으로 암호화됩니다. 이는 알고리즘의 구현이 이전과 같이 동기식일 수도 있고, 비동기식일 수도 있으며, 이 경우 이전 블록의 AES 라운드가 진행 중이더라도 다음 블록의 암호화가 시작될 수 있음을 의미합니다.

이 예에서는 실행을 개별적으로 수행할 수 있습니다.실행 스레드각 블록마다 또는조립 라인즉, 알고리즘은 여러 개의 독립적인 부분으로 나누어집니다. 예를 들어, 이전 블록의 루프 반복이 진행되는 동안 다음 블록의 초기 루프가 실행될 수 있습니다. 파이프라이닝은 하드웨어 암호화 구현의 일반적인 기술입니다.

이것cryptd모듈은 동기 소프트웨어 암호화 알고리즘을 가져와서 커널 스레드에서 실행하여 비동기 알고리즘으로 변환하는 템플릿입니다.

이것동시에비동기 알고리즘의 실행은 다음과 같습니다.엇갈린, 단일 CPU 코어에서 실행되고 두 블록의 작업 간에 앞뒤로 전환하는 알고리즘, 또는평행선예를 들어, 알고리즘 실행은 여러 코어에서 동시에 발생하며 각 코어는 자체 청크를 처리합니다.

이것pcrypt병렬 암호화 템플릿은 암호화 알고리즘을 사용하여 암호화 변환을 병렬로 처리하도록 변환합니다.

제 생각에는평상복이러한 경우 이는 단순히 모듈의 아키텍처가 모든 암호화 알고리즘에 적용할 수 있을 만큼 일반적이라는 것을 의미합니다. 나는 그것이 단지 일시적일 뿐이라고 믿는다AEAD알고리즘은 다음과 같이 주어진다 pcrypt.

관련 정보