티스토리 뷰

Stream Cipher & Block Cipher

 

[ Stream Cipher ]

  : Plaintext와 같은 길이의 Key Stream을 생성해 Plaintext에 XOR 연산을 수행해 암호화.

  : 복호화는 동일한 방식으로 Key Stream을 XOR해 수행.

  : PRN(Pseudo Random Number)을 이용하여 난수를 생성.

    ( PRN은 실제 난수가 아닌, 난수처럼 보이는 수로 같은 시드를 입력하면 같은 난수를 생성하게 된다. )

 

[ Block Cipher ]

  : 각 Block에 Key에 따른 암호화를 하여 이어 붙여 만드는 암호화.

  : Key Bit의 크기와 Block Bit의 크기는 대체로 다름.

 

  · Feistel Cipher

    : Block Cipher의 일종으로 Round마다 Key가 존재하는 방식.

    : Plaintext를 반으로 나누어 Left, Right 각각을 Round를 거쳐 순차적으로 처리. Round가 끝날때마다 좌우가 바뀜.

    : Substitution CipherPermutation Cipher을 이용.

       ( Permutation Cipher의 경우 Monoalphabetic Cipher와 다르게 치환이 아닌 글자의 순서만 바꾸는 것으로, 글자의 집합이 전후 동일. )

    : DiffusionConfusion의 특성을 가지고 있음.

       ( Diffusion : 확산. 1비트가 바뀜에 따라 암호문 전체가 변경되도록. / Confusion : 혼돈. 암호문과 Key 사이의 관계를 모호하게 만듦. )

 

  · AES (Advanced Encryption Standard)

    : 4×4 모양인 State 자료구조를 이용하여 암호화 진행.

    : S-Box 연산을 이용.

       1) Substitute Byte : 8비트 입력 바이트를 S-BOX 테이블을 이용하여 다른 값으로 대체. S-Box와 Inverse S-Box 필요.

Substitute Byte

       2) Shift Rows : State 배열의 각 행을 회전시킴. 각 행을 다르게 Shift시키는 연산.

Shift Rows

       3) Mix Columns : State 배열의 각 열에 행렬 곱셈을 수행. GF(2^8) 행렬을 이용하며, Modulo값은 x^8 + x^4 + x^3 + x + 1로 수행한다.

Mix Columns

       4) Add Round Key : 현재 Round의 Key를 State 배열과 XOR 연산.

 

    : 첫 번째 Round에선 Bit에 맞게 Key Expansion을 하여 State에 저장 후 Add Round Key 과정 수행.

    : 두 번째부터는 Substitute Byte → Shift Rows → Mix Columns → Add Round Key 과정 수행.

    : 마지막 Round에서는 Mix Column을 제외한 과정만 수행.

    : 복호화는 역순으로 진행.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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 31
글 보관함