Auteur Sujet: MDS: Nouvelle vague de vulnérabilités d'exécution spéculative dans les CPU Intel  (Lu 17857 fois)

0 Membres et 1 Invité sur ce sujet

hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)
Le test a été réalisé sur un Core i3-4150 : 2 cœurs Hyper-Threading, donc au moins quand je suis en multi 8 bascule d'un processus à un autre.
En effet (ce sont bien 8 processus et non pas 8 threads), et sur ce test Ubuntu qui a CONFIG_HZ=250 (sur le kernel générique) est probablement légèrement moins impacté que Fedora par exemple qui a CONFIG_HZ=1000 donc devrait basculer plus souvent.

Par contre tu saurais peut-être me dire pourquoi avec OpenSSL, aes-128-cbc et aes-256-cbc voit ses performances doublées quand on passe de 2 threads à 4threads alors que le CPU n'a que 2 cœurs ! Là l'Hyper-Threading permet de doubler les performances.

Au contraire, avec aes-128-gcm etaes-256-gcm il n'y a aucun gain avec l''Hyper-Threading : les performances sont les mêmes quand on passe de 2 threads à 4threads.[/size]
Déjà, il faut faire attention, si la fréquence du CPU n'est pas fixée, augmenter la charge peut faire baisser le turbo.
L'hyperthreading est utile :
 - quand on a des tâches qui attendent la mémoire
 - quand on a trop de dépendances dans le flux d'instructions qui empêchent d'extraire le maximum de parallélisme
 - dans certains cas où certaines unités sont saturées et d'autres inutilisées (cas de deux tâches différentes, ce qui n'est pas le cas ici)

Ici, on est dans le second cas, ce qui s'explique en regardant les algorithmes :
 - https://fr.wikipedia.org/wiki/Mode_d%27op%C3%A9ration_(cryptographie)#Encha%C3%AEnement_des_blocs_:_%C2%AB_Cipher_Block_Chaining_%C2%BB_(CBC)
Citer
Un des points négatifs de CBC étant qu'il ne peut pas être parallélisé étant donné que le bloc courant nécessite que le précédent soit chiffré. Il est donc séquentiel.
- https://fr.wikipedia.org/wiki/Galois/Counter_Mode
Le GCM est dérivé du CTR : les opérations (AES+XOR) sur des blocs successifs peuvent être réalisées en même temps car il n'y a aucune dépendance.

D'ailleurs avec openssl, aes-128-ctr donne les même performances que aes-128-gcm (la limite d'exécution des instructions AES-NI probablement).
Mais le code AES-GCM fait aussi l'authentification (GHASH), alors que le code AES-CTR (comme AES-CBC) ne fait que chiffrer.
C'est pour ça que si on veut comparer les deux dans un contexte TLS, il faut faire :
 - openssl speed -elapsed -evp aes-128-cbc-hmac-sha1 (850Mo/s pour moi)
 - openssl speed -elapsed -evp aes-128-cbc-hmac-sha256 (440Mo/s pour moi)
 - openssl speed -elapsed -evp aes-128-gcm (5.5Go/s)
=> On voit tout l'intérêt du mode GCM.

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Compétemment hors sujet, mais tu en pense quoi de chacha20-poly1305 ?
Il semble plus récent et mieux adaptés pour des CPU sans support de l'AES.

Il est utilisé par quelques grands sites :

Liste de sites qui utilisent chacha20-poly1305 :
tls.imirhil.fr
fr.wikipedia.org
cdiscount.com
fr.libreoffice.org
videolan.org

Voici des tests avec un Serveur Xeon Irwindale @2.8Ghz  - 1 cœur – 2 threads
C'est un processeur Xeon dérivé du Pentium 4 (architecture NetBurst, gravé en 90 nm, il est trés proche du Pentium 4 Prescott 2M Extreme Edition : il a 31 étages de pipeline qui doit être vidé en cas de mauvaises prédictions).
OS: Lubuntu 19.04 64 bits - OpenSSL 1.1.1b

Là on voit que l'Hyper-Threading fait baisser les performances de manière dramatique :

openssl speed -elapsed -evp aes-128-cbc : 81,9 Mo/s
openssl speed -elapsed -evp aes-128-cbc --multi 2 : 36,5 Mo/s

openssl speed -elapsed -evp aes-256-cbc : 58,6 Mo/s
openssl speed -elapsed -evp aes-256-cbc --multi 2  : 3,2 Mo/s

openssl speed -elapsed -evp aes-128-gcm : 55,4 Mo/s
openssl speed -elapsed -evp aes-128-gcm --multi 2  : 5,2 Mo/s

openssl speed -elapsed -evp aes-256-gcm : 43,2 Mo/s
openssl speed -elapsed -evp aes-256-gcm --multi 2  : 4,2 Mo/s

openssl speed -elapsed -evp chacha20-poly1305 : 194 Mo/s
openssl speed -elapsed -evp chacha20-poly1305 --multi 2  : 224 Mo/s


(j'ai fais les tests avant de savoir qu'il faut rajouter -hmac-sha256 pour cbc)

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Descriptif du serveur Serveur Dell Poweredge SC1425 Rack 1U utilisé :

# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
Address sizes: 36 bits physical, 48 bits virtual
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 2
Core(s) per socket: 1
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 15
Model: 4
Model name: Intel(R) Xeon(TM) CPU 2.80GHz
Stepping: 10
CPU MHz: 2799.964
BogoMIPS: 5599.92
L1d cache: 16K
L2 cache: 2048K
NUMA node0 CPU(s): 0,1
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc pebs bts nopl cpuid pni dtes64 monitor ds_cpl cid cx16 xtpr lahf_lm pti

Les tests ont été fait sous Linux, mais la machine accepte Windows 10 (c'est l'une des plus vieux serveurs a accepter Windows 10, les générations d'avant refusent)


Pas de PCI Express sur ce serveur, mais du PCI 64bits utilisé par la carte Adaptec

Voici le lspci -tv :

# lspci -tv
-[0000:00]-+-00.0  Intel Corporation E7520 Memory Controller Hub
           +-02.0-[01-03]--+-00.0-[02]----04.0  Intel Corporation 82541GI Gigabit Ethernet Controller
           |               \-00.2-[03]--+-07.0  Adaptec ASC-39320(B) U320 w/HostRAID
           |                            \-07.1  Adaptec ASC-39320(B) U320 w/HostRAID
           +-1d.0  Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1
           +-1d.1  Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2
           +-1d.7  Intel Corporation 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller
           +-1e.0-[04]--+-03.0  Intel Corporation 82541GI Gigabit Ethernet Controller
           |            \-0d.0  Advanced Micro Devices, Inc. [AMD/ATI] RV100 [Radeon 7000 / Radeon VE]
           +-1f.0  Intel Corporation 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge
           \-1f.1  Intel Corporation 82801EB/ER (ICH5/ICH5R) IDE Controller

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
lspci -vv :
# lspci -vv
00:00.0 Host bridge: Intel Corporation E7520 Memory Controller Hub (rev 09)
        Subsystem: Dell PowerEdge SC1425
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Capabilities: [40] Vendor Specific Information: Len=05 <?>
        Kernel modules: e752x_edac

00:02.0 PCI bridge: Intel Corporation E7525/E7520/E7320 PCI Express Port A (rev 09) (prog-if 00 [Normal decode])
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx+
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 16
        Bus: primary=00, secondary=01, subordinate=03, sec-latency=0
        I/O behind bridge: 0000c000-0000efff
        Memory behind bridge: fe500000-feafffff
        Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
        BridgeCtl: Parity+ SERR+ NoISA+ VGA- MAbort- >Reset- FastB2B-
                PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
        Capabilities: [50] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [58] MSI: Enable- Count=1/2 Maskable- 64bit-
                Address: fee00000  Data: 0000
        Capabilities: [64] Express (v1) Root Port (Slot-), MSI 00
                DevCap: MaxPayload 256 bytes, PhantFunc 0
                        ExtTag- RBE-
                DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported-
                        RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
                        MaxPayload 256 bytes, MaxReadReq 128 bytes
                DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
                LnkCap: Port #2, Speed 2.5GT/s, Width x8, ASPM L0s, Exit Latency L0s <4us, L1 unlimited
                        ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp-
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk-
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s, Width x8, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
                RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal+ PMEIntEna+ CRSVisible-
                RootCap: CRSVisible-
                RootSta: PME ReqID 0000, PMEStatus- PMEPending-
        Capabilities: [100 v1] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
                AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
        Kernel driver in use: pcieport

00:1d.0 USB controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (rev 02) (prog-if 00 [UHCI])
        Subsystem: Dell PowerEdge SC1425
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Interrupt: pin A routed to IRQ 16
        Region 4: I/O ports at ace0 [size=32]
        Kernel driver in use: uhci_hcd

00:1d.1 USB controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (rev 02) (prog-if 00 [UHCI])
        Subsystem: Dell PowerEdge SC1425
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Interrupt: pin B routed to IRQ 19
        Region 4: I/O ports at acc0 [size=32]
        Kernel driver in use: uhci_hcd

00:1d.7 USB controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (rev 02) (prog-if 20 [EHCI])
        Subsystem: Dell PowerEdge SC1425
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Interrupt: pin D routed to IRQ 23
        Region 0: Memory at feb00000 (32-bit, non-prefetchable) [size=1K]
        Capabilities: [50] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [58] Debug port: BAR=1 offset=00a0
        Kernel driver in use: ehci-pci

00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev c2) (prog-if 00 [Normal decode])
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Bus: primary=00, secondary=04, subordinate=04, sec-latency=32
        I/O behind bridge: 0000b000-0000bfff
        Memory behind bridge: fe300000-fe4fffff
        Prefetchable memory behind bridge: f0000000-f7ffffff
        Secondary status: 66MHz- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
        BridgeCtl: Parity+ SERR+ NoISA- VGA+ MAbort- >Reset- FastB2B-
                PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-

00:1f.0 ISA bridge: Intel Corporation 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge (rev 02)
        Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Kernel driver in use: lpc_ich
        Kernel modules: intel_rng, lpc_ich

00:1f.1 IDE interface: Intel Corporation 82801EB/ER (ICH5/ICH5R) IDE Controller (rev 02) (prog-if 8a [ISA Compatibility mode controller, supports both channels switched to PCI native mode, supports bus mastering])
        Subsystem: Dell PowerEdge SC1425
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx+
        Latency: 0
        Interrupt: pin A routed to IRQ 18
        Region 0: I/O ports at 01f0 [size=8]
        Region 1: I/O ports at 03f4
        Region 2: I/O ports at 0170 [size=8]
        Region 3: I/O ports at 0374
        Region 4: I/O ports at fc00 [size=16]
        Region 5: Memory at 40000000 (32-bit, non-prefetchable) [size=1K]
        Kernel driver in use: ata_piix
        Kernel modules: pata_acpi

01:00.0 PCI bridge: Intel Corporation 6700PXH PCI Express-to-PCI Bridge A (rev 09) (prog-if 00 [Normal decode])
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Bus: primary=01, secondary=02, subordinate=02, sec-latency=32
        I/O behind bridge: 0000e000-0000efff
        Memory behind bridge: fe900000-feafffff
        Secondary status: 66MHz+ FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
        BridgeCtl: Parity+ SERR+ NoISA+ VGA- MAbort- >Reset- FastB2B-
                PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
        Capabilities: [44] Express (v1) PCI-Express to PCI/PCI-X Bridge, MSI 00
                DevCap: MaxPayload 256 bytes, PhantFunc 0
                        ExtTag- AttnBtn- AttnInd- PwrInd- RBE- SlotPowerLimit 0.000W
                DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported-
                        RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- BrConfRtry-
                        MaxPayload 256 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr- UncorrErr+ FatalErr- UnsuppReq+ AuxPwr- TransPend-
                LnkCap: Port #0, Speed 2.5GT/s, Width x8, ASPM L0s, Exit Latency L0s unlimited, L1 unlimited
                        ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp-
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk-
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s, Width x8, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
        Capabilities: [5c] MSI: Enable- Count=1/1 Maskable- 64bit+
                Address: 0000000000000000  Data: 0000
        Capabilities: [6c] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [d8] PCI-X bridge device
                Secondary Status: 64bit+ 133MHz+ SCD- USC- SCO- SRD- Freq=conv
                Status: Dev=01:00.0 64bit- 133MHz- SCD- USC- SCO- SRD-
                Upstream: Capacity=65535 CommitmentLimit=65535
                Downstream: Capacity=65535 CommitmentLimit=65535
        Capabilities: [100 v1] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
                AERCap: First Error Pointer: 14, GenCap- CGenEn- ChkCap- ChkEn-
        Capabilities: [300 v1] Power Budgeting <?>

01:00.2 PCI bridge: Intel Corporation 6700PXH PCI Express-to-PCI Bridge B (rev 09) (prog-if 00 [Normal decode])
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Bus: primary=01, secondary=03, subordinate=03, sec-latency=64
        I/O behind bridge: 0000c000-0000dfff
        Memory behind bridge: fe700000-fe8fffff
        Secondary status: 66MHz+ FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
        BridgeCtl: Parity+ SERR+ NoISA+ VGA- MAbort- >Reset- FastB2B-
                PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
        Capabilities: [44] Express (v1) PCI-Express to PCI/PCI-X Bridge, MSI 00
                DevCap: MaxPayload 256 bytes, PhantFunc 0
                        ExtTag- AttnBtn- AttnInd- PwrInd- RBE- SlotPowerLimit 0.000W
                DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported-
                        RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- BrConfRtry-
                        MaxPayload 256 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr- UncorrErr+ FatalErr- UnsuppReq+ AuxPwr- TransPend-
                LnkCap: Port #0, Speed 2.5GT/s, Width x8, ASPM L0s, Exit Latency L0s unlimited, L1 unlimited
                        ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp-
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk-
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s, Width x8, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
        Capabilities: [5c] MSI: Enable- Count=1/1 Maskable- 64bit+
                Address: 0000000000000000  Data: 0000
        Capabilities: [6c] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [d8] PCI-X bridge device
                Secondary Status: 64bit+ 133MHz+ SCD- USC- SCO- SRD- Freq=133MHz
                Status: Dev=01:00.2 64bit- 133MHz- SCD- USC- SCO- SRD-
                Upstream: Capacity=65535 CommitmentLimit=65535
                Downstream: Capacity=65535 CommitmentLimit=65535
        Capabilities: [100 v1] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
                AERCap: First Error Pointer: 14, GenCap- CGenEn- ChkCap- ChkEn-
        Capabilities: [300 v1] Power Budgeting <?>

02:04.0 Ethernet controller: Intel Corporation 82541GI Gigabit Ethernet Controller (rev 05)
        Subsystem: Dell PRO/1000 MT Network Connection
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
        Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 32 (63750ns min), Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 16
        Region 0: Memory at fe9e0000 (32-bit, non-prefetchable) [size=128K]
        Region 2: I/O ports at ecc0 [size=64]
        Capabilities: [dc] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=1 PME-
        Capabilities: [e4] PCI-X non-bridge device
                Command: DPERE- ERO+ RBC=512 OST=1
                Status: Dev=00:00.0 64bit- 133MHz- SCD- USC- DC=simple DMMRBC=2048 DMOST=1 DMCRS=8 RSCEM- 266MHz- 533MHz-
        Kernel driver in use: e1000
        Kernel modules: e1000

03:07.0 RAID bus controller: Adaptec ASC-39320(B) U320 w/HostRAID (rev 10)
        Subsystem: Dell ASC-39320(B) U320 w/HostRAID
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
        Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 64 (10000ns min, 6250ns max), Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 18
        Region 0: I/O ports at dc00 [disabled] [size=256]
        Region 1: Memory at fe7fe000 (64-bit, non-prefetchable) [size=8K]
        Region 3: I/O ports at d800 [disabled] [size=256]
        Expansion ROM at fe800000 [disabled] [size=512K]
        Capabilities: [dc] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [a0] MSI: Enable- Count=1/2 Maskable- 64bit+
                Address: 0000000000000000  Data: 0000
        Capabilities: [94] PCI-X non-bridge device
                Command: DPERE- ERO+ RBC=512 OST=8
                Status: Dev=03:07.0 64bit+ 133MHz+ SCD- USC- DC=simple DMMRBC=512 DMOST=8 DMCRS=16 RSCEM- 266MHz- 533MHz-
        Kernel driver in use: aic79xx
        Kernel modules: aic79xx

03:07.1 RAID bus controller: Adaptec ASC-39320(B) U320 w/HostRAID (rev 10)
        Subsystem: Dell ASC-39320(B) U320 w/HostRAID
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
        Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 64 (10000ns min, 6250ns max), Cache Line Size: 64 bytes
        Interrupt: pin B routed to IRQ 19
        Region 0: I/O ports at d400 [disabled] [size=256]
        Region 1: Memory at fe7fc000 (64-bit, non-prefetchable) [size=8K]
        Region 3: I/O ports at d000 [disabled] [size=256]
        Expansion ROM at fe700000 [disabled] [size=512K]
        Capabilities: [dc] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [a0] MSI: Enable- Count=1/2 Maskable- 64bit+
                Address: 0000000000000000  Data: 0000
        Capabilities: [94] PCI-X non-bridge device
                Command: DPERE- ERO+ RBC=512 OST=8
                Status: Dev=03:07.1 64bit+ 133MHz+ SCD- USC- DC=simple DMMRBC=512 DMOST=8 DMCRS=16 RSCEM- 266MHz- 533MHz-
        Kernel driver in use: aic79xx
        Kernel modules: aic79xx

04:03.0 Ethernet controller: Intel Corporation 82541GI Gigabit Ethernet Controller (rev 05)
        Subsystem: Dell PRO/1000 MT Network Connection
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
        Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 32 (63750ns min), Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 20
        Region 0: Memory at fe3e0000 (32-bit, non-prefetchable) [size=128K]
        Region 2: I/O ports at bcc0 [size=64]
        Capabilities: [dc] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=1 PME-
        Capabilities: [e4] PCI-X non-bridge device
                Command: DPERE- ERO+ RBC=512 OST=1
                Status: Dev=00:00.0 64bit- 133MHz- SCD- USC- DC=simple DMMRBC=2048 DMOST=1 DMCRS=8 RSCEM- 266MHz- 533MHz-
        Kernel driver in use: e1000
        Kernel modules: e1000

04:0d.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] RV100 [Radeon 7000 / Radeon VE] (prog-if 00 [VGA controller])
        Subsystem: Dell PowerEdge SC1425
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop+ ParErr- Stepping+ SERR+ FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 32 (2000ns min), Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 17
        Region 0: Memory at f0000000 (32-bit, prefetchable) [size=128M]
        Region 1: I/O ports at b800 [size=256]
        Region 2: Memory at fe3d0000 (32-bit, non-prefetchable) [size=64K]
        [virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
        Capabilities: [50] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Kernel driver in use: radeon
        Kernel modules: radeonfb, radeon

hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)
Compétemment hors sujet, mais tu en pense quoi de chacha20-poly1305 ?
Il semble plus récent et mieux adaptés pour des CPU sans support de l'AES.
Je ne suis pas expert sécurité, donc je me garderais de porter un jugement sur la résistance potentielle aux attaques de ce chiffrement.
C'est une solution récente (donc qui a à la fois bénéficié de l'avancée des recherches en cryptographie, mais sur laquelle on a forcèment moins de recul), conçue par un chercheur reconnu, et qui semble être à la mode.

Concernant les performances, c'est effectivement un bon choix dès qu'il n'y a pas d'AES accéléré. C'est même la seule option pour Wireguard par exemple (ce qui est plus critiquable car beaucoup de CPU ARMv8 ont les extensions crypto qui accélèrent l'AES, alors que chacha20-poly1305 doit se contenter d'une implèmentation qui certes utilise NEON mais est plus lente).

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Pour ceux qui se demandent si les précédentes vulnérabilités d'exécution spéculative ont été corrigées en hardware dans les nouveau CPU, voici la réponse :


jack

  • Professionnel des télécoms
  • *
  • Messages: 1 674
  • La Madeleine (59)
N'y a-t-il pas de nombreux "fix" hardware qui sont bien plus dommageable que les "fix" software ?
Je parle en terme de performance

underground78

  • Expert
  • Abonné Free fibre
  • *
  • Messages: 7 434
  • Orsay (91)
    • FreePON : suivi géographique du déploiement fibre EPON chez Free
N'y a-t-il pas de nombreux "fix" hardware qui sont bien plus dommageable que les "fix" software ?
Je parle en terme de performance
Ça m'étonnerait. L'objectif est justement de contourner le problème de sécurité tout en évitant la pénalité induite par le correctif logiciel.

Marco POLO

  • Abonné Free fibre
  • *
  • Messages: 2 132
  • FTTH 1 Gb/s sur Paris (75)
Attention : tu dois aussi mettre à jour le BIOS de ton PC pour que cela puisse fonctionner...
Ça, je ne sais pas comment faire. 

hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)
https://blogs.oracle.com/linux/an-update-on-meltdown-and-enhanced-ibrs.
Donc pour ce qui est des Cascade Lake :
 - Meltdown (Variant 3) et L1TF (Variant 5) sont donc corrigés (impossible de savoir si ça a coûté des performances)
 - Spectre (Variant 2) a un meilleur contournement HW ("Mitigation: Enhanced IBRS" une fois au boot), mais on a toujours "Filling RSB on context switch" et "Enabling conditional Indirect Branch Prediction Barrier" (donc un support SW nécessaire)
 - Speculative Store Bypass (Variant 4) n'est pas corrigé (il y a le support de SSBD dans le microcode intégré, Linux l'utilise pour certains processus uniquement)
 - d'après https://software.intel.com/security-software-guidance/insights/deep-dive-cpuid-enumeration-and-architectural-msrs#MDS-CPUID, les stepping 5 sont affectés par MSBDS et MLPDS, les stepping 6 et 7 ne sont pas affectés

Pour les CPU grand public, compte tenu des gammes c'est compliqué de rechercher l'information, je ne sais pas si certains ont la correction Meltdown/L1TF (flag RDCL_NO).
En tout cas, il n'existe aucun CPU avec une correction de Spectre, ni à priori de Speculative Store Bypass (par correction, j'entends quelque chose qui fonctionnerait sans code dans le kernel).

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
D'ailleurs avec openssl, aes-128-ctr donne les même performances que aes-128-gcm (la limite d'exécution des instructions AES-NI probablement).
Mais le code AES-GCM fait aussi l'authentification (GHASH), alors que le code AES-CTR (comme AES-CBC) ne fait que chiffrer.
C'est pour ça que si on veut comparer les deux dans un contexte TLS, il faut faire :
 - openssl speed -elapsed -evp aes-128-cbc-hmac-sha1 (850Mo/s pour moi)
 - openssl speed -elapsed -evp aes-128-cbc-hmac-sha256 (440Mo/s pour moi)
 - openssl speed -elapsed -evp aes-128-gcm (5.5Go/s)
=> On voit tout l'intérêt du mode GCM.

J'ai commencé mes tests sur un nouveau processeur (enfin un très vieux : AMD Sempron 2800+, Modèle Palermo 90nm sur Socket 754 : c'est le premier Sempron 64bits.


Coté système d'exploitation, j'ai mis un Ubuntu 19.04 64bits nouvellement installé.

Mes tests habituels passent bien :
openssl speed -elapsed -evp aes-128-cbc : 109,5 Mo/s
openssl speed -elapsed -evp aes-256-cbc : 81,4 Mo/s
openssl speed -elapsed -evp aes-128-gcm : 36,8 Mo/s
openssl speed -elapsed -evp aes-256-gcm : 28,2 Mo/s
openssl speed -elapsed -evp chacha20-poly1305 : 168,6 Mo/s

Exemple :
$ openssl speed -elapsed -evp aes-128-cbc
You have chosen to measure elapsed time instead of user CPU time.
Doing aes-128-cbc for 3s on 16 size blocks: 6409762 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 64 size blocks: 2032042 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 256 size blocks: 539577 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 1024 size blocks: 309662 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 8192 size blocks: 40109 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 16384 size blocks: 19996 aes-128-cbc's in 3.00s
OpenSSL 1.1.1b  26 Feb 2019
built on: Wed Apr  3 10:50:23 2019 UTC
options:bn(64,64) rc4(8x,int) des(int) aes(partial) blowfish(ptr)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-uEA50R/openssl-1.1.1b=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
aes-128-cbc      34185.40k    43350.23k    46043.90k   105697.96k   109524.31k   109204.82k

Mais impossible de faire :
openssl speed -elapsed -evp aes-128-cbc-hmac-sha1
openssl speed -elapsed -evp aes-128-cbc-hmac-sha256

$ openssl speed -elapsed -evp aes-128-cbc-hmac-sha1
speed: aes-128-cbc-hmac-sha1 is an unknown cipher or digest
$ openssl speed -elapsed -evp aes-128-cbc-hmac-sha256
speed: aes-128-cbc-hmac-sha256 is an unknown cipher or digest

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
J'ai essayé sur d'autres ordinateurs, en gardant toujours le même logiciel (Ubuntu 19.04) et semble que les ordinateurs sans les instructions AES n'arrivent pas a exécuter les deux tests ci-dessous :

openssl speed -elapsed -evp aes-128-cbc-hmac-sha1
openssl speed -elapsed -evp aes-128-cbc-hmac-sha256