![Linux 커널의 비동기 및 병렬 알고리즘](https://linux55.com/image/4547/Linux%20%EC%BB%A4%EB%84%90%EC%9D%98%20%EB%B9%84%EB%8F%99%EA%B8%B0%20%EB%B0%8F%20%EB%B3%91%EB%A0%AC%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98.png)
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
.