πŸ”’ 6. AES

κΉ€μ§€μœ€Β·2023λ…„ 10μ›” 18일

λ³΄μ•ˆ

λͺ©λ‘ 보기
2/15

DESλ₯Ό λ³΄μ™„ν•˜κΈ° μœ„ν•΄ NISTμ—μ„œ 곡λͺ¨ν•˜μ˜€λ‹€.
μ•ˆμ •μ„±, λΉ„μš©, κ΅¬ν˜„μ˜ νš¨μœ¨μ„±μ„ κΈ°μ€€μœΌλ‘œ AES μ•Œκ³ λ¦¬μ¦˜μ„ μ„ μ •ν•˜μ˜€λ‹€.

λΌμš΄λ“œ : μ•”ν˜Έν™”λ₯Ό μœ„ν•΄ λ°˜λ³΅λ˜λŠ” 것
λ§ˆμŠ€ν„°ν‚€ : μ•”ν˜Έν™”, λ³΅ν˜Έν™”μ— μ‚¬μš©λ˜λŠ” λΉ„λ°€ν‚€
λΌμš΄λ“œ ν‚€ : λΌμš΄λ“œλ§ˆλ‹€ μ‚¬μš©λ˜λŠ” ν‚€

  • 128λΉ„νŠΈ 평문 -> 128λΉ„νŠΈ μ•”ν˜Έλ¬Έ

  • λΌμš΄λ“œλŠ” 10, 12, 14κ°€ 있으며 각각의 λ§ˆμŠ€ν„° ν‚€μ˜ ν¬κΈ°λŠ” 128, 192, 256이닀.

  • ν•˜μ§€λ§Œ λͺ¨λ‘ λΌμš΄λ“œ ν‚€λŠ” 128λΉ„νŠΈλ₯Ό μ‚¬μš©ν•œλ‹€.

  • 각각의 λΌμš΄λ“œ ν‚€μ˜ μˆ˜λŠ” "λΌμš΄λ“œ+1" 이닀.



λ‹¨μœ„

  • λΉ„νŠΈ, λ°”μ΄νŠΈ, μ›Œλ“œ(4λ°”μ΄νŠΈ)

  • 블둝 : 128λΉ„νŠΈλ₯Ό 16λ°”μ΄νŠΈμ˜ λΈ”λ‘μœΌλ‘œ ν‘œν˜„

  • μŠ€ν…Œμ΄νŠΈ : 각 μ—°μ‚° μ‚¬μ΄μ˜ 데이터 블둝, (4X4 ν–‰λ ¬) 16λ°”μ΄νŠΈλ‘œ κ΅¬μ„±λœλ‹€. μ—΄ λ‹¨μœ„λ‘œ μ μš©λœλ‹€.

  • 블둝을 μŠ€ν…Œμ΄νŠΈλ‘œ λ³€ν™˜ν•˜λŠ” κ³Όμ •?



μ•”ν˜Έν™” κ³Όμ • (λŒ€μΉ˜, ShiftRows, MixColumns, ν‚€ λ§μ…ˆ)

(non-Feistel μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ μ—­ν•¨μˆ˜κ°€ μ‘΄μž¬ν•œλ‹€.)


  • λŒ€μΉ˜

    • 각 μŠ€ν…Œμ΄νŠΈλ§ˆλ‹€ λŒ€μΉ˜λ³€ν™˜μ„ ν•˜λŠ”λ°, ν•œ λ°”μ΄νŠΈλ₯Ό 4λΉ„νŠΈμ”© 2개둜 λ‚˜λˆ„μ–΄ 2개의 16μ§„μˆ˜λ₯Ό λ§Œλ“€κ³  SubBytes λ³€ν™˜ ν…Œμ΄λΈ”μ˜ ν–‰μ—΄μ—μ„œ μ°Ύμ•„ λŒ€μΉ˜ν•œλ‹€.

    • μ—­ν•¨μˆ˜λŠ” InvSubBytes

    • 각 λΌμš΄λ“œλ§ˆλ‹€ ν•œλ²ˆμ”© μ‹€ν–‰


  • ShiftRows μΉ˜ν™˜

    • μŠ€ν…Œμ΄νŠΈμ—μ„œ 각 행을 κΈ°μ€€μœΌλ‘œ λ°”μ΄νŠΈλ§ˆλ‹€ shifting (λΉ„νŠΈ X)

    • 각 ν–‰ 번호(수)만큼 μ™Όμͺ½μœΌλ‘œ μ΄λ™ν•œλ‹€.

    • μ—­ν•¨μˆ˜λŠ” InvShiftRows (였λ₯Έμͺ½μœΌλ‘œ μ΄λ™ν•œλ‹€.)

    • 각 λΌμš΄λ“œλ§ˆλ‹€ ν•œλ²ˆμ”© μ‹€ν–‰


  • MixColumns

    • λ°”μ΄νŠΈ μ•ˆμ˜ λΉ„νŠΈλ₯Ό λ°”κΎΈκΈ° μœ„ν•œ 연산이닀.

    • ν•œ μ—΄(4λ°”μ΄νŠΈ)μ”© μ •λ°©ν–‰λ ¬κ³Ό κ³±ν•΄ μƒˆλ‘œμš΄ 열을 λ§Œλ“ λ‹€.

    • μ‚¬μš©λ˜λŠ” μ •λ°©ν–‰λ ¬

    • μ—­ν•¨μˆ˜λŠ” InvMixColumns이닀.

    • λ§ˆμ§€λ§‰ λΌμš΄λ“œλ₯Ό μ œμ™Έν•˜κ³  각 λΌμš΄λ“œμ—μ„œ ν•œλ²ˆμ”© μ‹€ν–‰


  • AddRoundKey

    • ν•œ 열에 λΌμš΄λ“œ ν‚€ μ›Œλ“œλ₯Ό 더해 μƒˆλ‘œμš΄ 열을 λ§Œλ“ λ‹€.

    • λΌμš΄λ“œ ν‚€λŠ” 128λΉ„νŠΈμΈλ°, μ›Œλ“œ(32λΉ„νŠΈ)둜 4개의 행을가진 1ν•΄μ˜ μ—΄λ‘œ ν‘œν˜„ν•œλ‹€.

    • μ—­ν•¨μˆ˜λŠ” 자기 μžμ‹ μ΄λ‹€.

    • 각 λΌμš΄λ“œμ—μ„œ ν•œλ²ˆμ”© μ‹€ν–‰ν•˜κ³  pre-roundμ—μ„œ ν•œλ²ˆ 더 μ‹€ν–‰


  • λΌμš΄λ“œ ν‚€λŠ” μ›Œλ“œ λ‹¨μœ„λ₯Ό κ°–λŠ”λ‹€.
    128λΉ„νŠΈλ₯Ό μ›Œλ“œ λ‹¨μœ„λ‘œ 바ꡬ면 44μ›Œλ“œκ°€ ν•„μš”ν•˜λ‹¨.
profile
κΎΈμ€€ν•˜κ²Œ κ³΅λΆ€ν•˜κ³  κΈ°λ‘ν•˜λŠ” 개발자

0개의 λŒ“κΈ€