개발관련/other

AES 암호화 모드 (CBC ECB CTR OCB CFB)를 선택하는 방법

Rateye 2021. 9. 3. 10:43
728x90
반응형
질문 : AES 암호화 모드 (CBC ECB CTR OCB CFB)를 선택하는 방법은 무엇입니까?

어떤 상황에서 어떤 것이 선호됩니까?

다양한 모드에 대한 평가 기준 목록과 각 기준의 적용 가능성에 대한 논의를보고 싶습니다.

예를 들어 기준 중 하나는 암호화 및 암호 해독을위한 "코드 크기"라고 생각합니다. 이는 802.11 네트워크 어댑터와 같은 마이크로 코드 임베디드 시스템에 중요합니다. CBC를 구현하는 데 필요한 코드가 CTR에 필요한 코드보다 훨씬 작다면 (이건 사실인지 모르겠습니다. 단지 예일뿐입니다) 더 작은 코드의 모드가 선호되는 이유를 이해할 수 있습니다. 그러나 서버에서 실행되는 앱을 작성하고 사용중인 AES 라이브러리가 어쨌든 CBC와 CTR을 모두 구현하는 경우이 기준은 관련이 없습니다.

"평가 기준 및 각 기준의 적용 가능성 목록"이 의미하는 바를 참조하십시오.

이것은 실제로 프로그래밍과 관련이 없지만 알고리즘과 관련이 있습니다.

답변

  • 동일한 키로 둘 이상의 데이터 블록을 암호화하는 경우 ECB를 사용해서는 안됩니다.
  • CBC, OFB 및 CFB는 비슷하지만 OFB / CFB는 암호화 만 필요하고 암호 해독은 필요하지 않으므로 코드 공간을 절약 할 수 있기 때문에 더 좋습니다.
  • CBC / OFB / CFB 대신 좋은 병렬화 (즉, 속도)를 원할 경우 CTR이 사용됩니다.
  • XTS 모드는 임의 액세스 가능한 데이터 (예 : 하드 디스크 또는 RAM)를 인코딩하는 경우 가장 일반적입니다.
  • OCB는 단일 패스로 암호화 및 인증을 허용하므로 단연 최고의 모드입니다. 그러나 미국에는 특허가 있습니다.

 

당신이 정말로 알아야 할 유일한 것은 당신이 단지 하나의 블록을 암호화하지 않는 한 ECB는 사용되지 않는다는 것입니다. XTS는 스트림이 아닌 임의로 액세스 된 데이터를 암호화하는 경우에 사용해야합니다.

  • 암호화 할 때마다 항상 고유 한 IV 를 사용해야하며 무작위 이어야합니다. 임의적 임을 보장 할 수없는 경우 OCB를 사용하십시오. IV가 아닌 nonce 만 필요하며 뚜렷한 차이가 있기 때문입니다. 임시 값 은 사람들이 다음 항목을 추측 할 수 있다면 보안을 떨어 뜨리지 않습니다. IV 는이 문제를 일으킬 수 있습니다.
출처 : https://stackoverflow.com/questions/1220751/how-to-choose-an-aes-encryption-mode-cbc-ecb-ctr-ocb-cfb
728x90
반응형