Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Реалізація та тестування основних режимів стандартизованих алгоритмів БСШ (ISO/IEC 18033-3)

Автор:   •  Май 22, 2022  •  Лабораторная работа  •  4,485 Слов (18 Страниц)  •  250 Просмотры

Страница 1 из 18

Міністерство освіти і науки України

Харківський національний університет радіоелектроніки

Кафедра безпеки інформаційних технологій

Лабораторна робота №1

Тема «Реалізація та тестування основних режимів стандартизованих алгоритмів БСШ (ISO/IEC 18033-3)»

Виконав:                                                                Перевірив:
ст. гр. КБІКСу-19-1                                                Руженцев В. І.
Стеблянко Д. І.

Харків 2020


Мета роботи: Вивчити на практиці алгоритми блокового симетричного шифрування, що представлені в стандарті ISO/IEC 18033-3, а також режими їх роботи відповідно до стандарту ISO/IEC 18033-4. Реалізувати один з шифрів, а також один з режимів роботи для даного шифру (за варіантами).

Основні положення і схеми алгоритму Camellia

Алгоритм Camellia – це симетричний блоковий шифр, який може обробляти 128-бітові блоки даних з використанням ключів шифрування з довжинами 128, 192 і 256 бітів. Ці властивості ідентичні алгоритму AES.

Процес зашифрування для 128-бітового ключа виконується за 18 раундів і показаний на рис. 2.11. Перетворення 128-бітового блока P в 128-бітовий блок C визначається таким чином (L і R - змінні з 64-бітовою довжиною, а kw, k і kl є раундові ключі з 64-бітовою довжиною):

[pic 1]

[pic 2]

Рисунок 2.11 – Процедура зашифрування Сamellia для 128-бітового ключа

2.8.1.2 192-бітовий і 256-бітовий ключ

Процес зашифрування для 192-бітового або 256-бітового ключа діє на 24 раундах і показаний на рис. 2.12. Перетворення 128-бітового блока P в 128-бітовий блок C визначається таким чином (L і R - змінні з 64-бітовою довжиною, і kw, k і kl – раундові ключі з 64-бітовою довжиною):

[pic 3]

Процес розшифрування для 128-бітового ключа показаний на рис. 2.13, і є ідентичний до зашифрування, окрім зворотного положення і порядку раундових ключів.

Операція розшифрування визначається таким чином.

[pic 4]

[pic 5]

Рисунок 2 - Процедура зашифрування Camellia для 192-бітового і 256-бітового ключів

[pic 6]

Рисунок 2– Процедура розшифрування Camellia для 128-бітового ключа

Процес розшифрування для 192-бітового або 256-бітового ключа показаний на рис. 2.14 і є ідентичним до зашифрування, окрім зворотного положення і порядку раундових ключів.

Операція розшифрування визначається таким чином.

[pic 7]

Функції Camellia

Алгоритм Сamellia використовує набір функцій, а саме, F, FL, FL-1 і S-блоки, які визначені в стандарті ISO/IEC 18033-3:2005 (ДСТУ ISO/IEC 18033-3:200_).

Програмная реалізація

package main

import (

        "crypto/cipher"

        "encoding/binary"

        "strconv"

)

const BlockSize = 16

type KeySizeError int

func (k KeySizeError) Error() string {

        return "camellia: invalid key size " + strconv.Itoa(int(k))

}

type camelliaCipher struct {

        kw   [5]uint64

        k    [25]uint64

        ke   [7]uint64

        klen int

}

const (

        sigma1 = 0xA09E667F3BCC908B

        sigma2 = 0xB67AE8584CAA73B2

        sigma3 = 0xC6EF372FE94F82BE

        sigma4 = 0x54FF53A5F1D36F1C

        sigma5 = 0x10E527FADE682D1D

        sigma6 = 0xB05688C2B3E6C1FD

)

func init() {

        for i := range sbox1 {

                sbox2[i] = rotl8(sbox1[i], 1)

                sbox3[i] = rotl8(sbox1[i], 7)

                sbox4[i] = sbox1[rotl8(uint8(i), 1)]

        }

}

func rotl128(k [2]uint64, rot uint) (hi, lo uint64) {

        if rot > 64 {

                rot -= 64

                k[0], k[1] = k[1], k[0]

        }

        t := k[0] >> (64 - rot)

        hi = (k[0] << rot) | (k[1] >> (64 - rot))

...

Скачать:   txt (19.2 Kb)   pdf (296.4 Kb)   docx (234.5 Kb)  
Продолжить читать еще 17 страниц(ы) »
Доступно только на Essays.club