일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- TEST
- 계측
- Dialog
- data
- LifeCycle
- scroll
- appbar
- Button
- ScrollView
- textfield
- drift
- binding
- 앱
- Compose
- 테스트
- activity
- Kotlin
- intent
- tabbar
- 안드로이드
- CustomScrollView
- Flutter
- livedata
- viewmodel
- Coroutines
- android
- textview
- DART
- Navigation
- 앱바
- Today
- Total
Study Record
[암호] AES 블록암호 모드 본문
1. ECB 모드: Electric CodeBook Mode(전자 부호표 모드) - 현재 사용되지 않음
평문 블록을 암호화한 것이 그대로 암호문 블록이 된다. 패딩(Padding) 작업만 필요시 한다. 안전하지 않아 잘 사용되지 않는다. 입력하는 평문의 블록과 암호문의 블록이 동일하고 순서를 맞췄기 때문에 은행 정보를 전달할 때 송신자와 수신자를 바꾸거나 하는 공격을 당해도 그대로 실행될 수 있다.
재전송 공격이 가능하다.
2. CBC 모드: Cipher Block Chaning Mode(암호 블록 연쇄 모드) - 현재 사용 권장됨
CBC 모드에서는 1단계 앞에서 수행되어 결과로 출력된 암호문 블록에 평문 블록을 XOR 하고 나서 암호화를 수행한다.
각각의 암호문 블록은 단지 현재 평문 블록뿐만 아니라 그 이전의 평문 블록들의 영향도 받게 된다.
암호문을 만드는데 이전 평문의 암호문이 필요하기 때문에 전송 도중 암호문 하나가 변경되면 2개의 평문 블록에 영향을 미친다. 전송 도중 비트 손실이 생긴다면 손실된 암호문 이후의 전체 평문에 영향을 미친다.
IPsec 통신의 기밀성(비밀성)을 지키기 위해 CBC 모드를 사용한다.
- (예) 3 DES를를 CBC 모드로 사용한 3 DES-CBC
- (예) AES를 CBC 모드로 사용한 AES-CBC
인증을 수행하는 대칭 암호 시스템의 하나인 Kerberos Version 5에서도 사용하고 있음
SSL/TLS 통신 기밀성 보호 : AES-256-CBC (키 길이가 256비트인 경우)
하지만 속도 면에서 빠르지 않다.
(조건) 암호화 시스템 측
* IV 필요하다.
* 패딩(padding) 처리해주어야 한다.
(조건) 복호화 시스템 측
* 복호화 시스템이 알고 있어야 하는 값:
=> IV 값(암호화할 때 사용했던)
=> padding 값(암호화 할때 사용했던)
=> 암호화 키(암호화할 때 사용했던)
3. CFB 모드: Cipher-FeedBack Mode(암호 피드백 모드) - 현재 사용되지 않음
CFB 모드에서는 1단계 앞의 암호문 블록을 암호 알고리즘의 입력으로 사용한다.
xor 연산의 성질을 이용한다.( a xor b xor b = a )
스트림 암호로도 사용할 수 있다.
재전송 공격이 가능하다.
(조건)
* IV 필요하다.
* 패딩 처리할 필요가 없다.
☞ 스트림 암호에서의 CFB
4. OFB 모드: Output-FeedBack Mode(출력 피드백 모드) - 현재 사용되지 않음
CFB와 비슷하지만 "평문블록"과 "암호 알고리즘의 출력"을 XOR 해서 "암호문 블록"을 만든다.
스트림 암호에서 사용한다.
(조건)
* IV 필요하다.
* 패딩 처리가 필요하지 않다.
☞ 스트림 암호에서의 OFB
5. CTR 모드: CounTeR Mode(카운터 모드) - 현재 사용 권장됨
1씩 증가해 가는 카운터를 암호화해서 키 스트림을 만들어 내는 스트림 암호이다. 블록을 암호화할 때마다 1씩 증가해가는 카운터를 암호화해서 키 스트림을 만든다.
CTR 모드의 암호화의 복호화는 완전히 같은 구조이다.
프로그램으로 구현하는 것이 매우 간단하다.
CTR 모드에서는 블록을 임의의 순서로 암호화/복호화할 수 있다.
병렬 처리가 가능한 시스템에서는 CTR 모드를 이용하여 자료를 고속으로 처리할 수 있다.
복호화를 수행하면, 반전된 비트에 대응하는 평문 블록의 1비트만이 반전되고, 오류는 확대되지 않는다.
'암호' 카테고리의 다른 글
[암호] 공개키 암호 - 키 배송 문제 (0) | 2021.12.07 |
---|---|
[암호] 인코딩과 디코딩 (hURL CMD) (0) | 2021.12.07 |
크랙 전사전파일 만들기 - crunch , CeWL , john CMD (0) | 2021.12.02 |
[암호] 대칭키 암호 - 스트림, 블록(DES/AES) (0) | 2021.12.02 |
[암호] 파이썬 암호기술 기본 (0) | 2021.12.01 |